<?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>222568</bug_id>
          
          <creation_ts>2021-03-01 11:13:39 -0800</creation_ts>
          <short_desc>Web Inspector: Implement `frameURL` option for `devtools.inspectedWindow.eval` command</short_desc>
          <delta_ts>2022-01-13 09:11:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734502</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-01 11:13:39 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734514</commentid>
    <comment_count>1</comment_count>
      <attachid>421850</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-01 11:29:45 -0800</bug_when>
    <thetext>Created attachment 421850
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734535</commentid>
    <comment_count>2</comment_count>
      <attachid>421850</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-01 12:05:32 -0800</bug_when>
    <thetext>Comment on attachment 421850
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:99
&gt; +            frame = WI.networkManager.frames.find(frame =&gt; frame.url === frameURL);

Do we care about a situation where there&apos;s more than one `WI.Frame` with the same URL?  Is it an exact URL match, or just a prefix match (e.g. the actual URL can have a query parameter that the given `frameURL` doesn&apos;t have)?

Style: we always wrap arguments of arrow functions in `(` `)` even if there&apos;s only one

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:100
&gt; +            if (!frame) {

Style: no `{` `}` around single-line control flow

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:116
&gt; +        let evaluationContext = frame.pageExecutionContext;

I&apos;m pretty sure it&apos;s impossible for a `WI.Frame` to not have a `pageExecutionContext`, but perhaps we should check and return a `WI.WebInspectorExtension.ErrorCode.InternalError` or `WI.WebInspectorExtension.ErrorCode.ContextDestroyed` if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734560</commentid>
    <comment_count>3</comment_count>
      <attachid>421850</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-01 13:05:12 -0800</bug_when>
    <thetext>Comment on attachment 421850
Patch v1.0

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:99
&gt;&gt; +            frame = WI.networkManager.frames.find(frame =&gt; frame.url === frameURL);
&gt; 
&gt; Do we care about a situation where there&apos;s more than one `WI.Frame` with the same URL?  Is it an exact URL match, or just a prefix match (e.g. the actual URL can have a query parameter that the given `frameURL` doesn&apos;t have)?
&gt; 
&gt; Style: we always wrap arguments of arrow functions in `(` `)` even if there&apos;s only one

Two excellent questions for which I do not have an answer at this time. The documentation is unclear as to how strict the matching is and wether query parameters are part of that match. Along the same train of through, I should probably also be considering escaped vs. unescaped matching as well.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:100
&gt;&gt; +            if (!frame) {
&gt; 
&gt; Style: no `{` `}` around single-line control flow

I always forget to remove these when I reduce the number of lines within to 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734912</commentid>
    <comment_count>4</comment_count>
      <attachid>421850</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-02 10:16:29 -0800</bug_when>
    <thetext>Comment on attachment 421850
Patch v1.0

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:99
&gt;&gt;&gt; +            frame = WI.networkManager.frames.find(frame =&gt; frame.url === frameURL);
&gt;&gt; 
&gt;&gt; Do we care about a situation where there&apos;s more than one `WI.Frame` with the same URL?  Is it an exact URL match, or just a prefix match (e.g. the actual URL can have a query parameter that the given `frameURL` doesn&apos;t have)?
&gt;&gt; 
&gt;&gt; Style: we always wrap arguments of arrow functions in `(` `)` even if there&apos;s only one
&gt; 
&gt; Two excellent questions for which I do not have an answer at this time. The documentation is unclear as to how strict the matching is and wether query parameters are part of that match. Along the same train of through, I should probably also be considering escaped vs. unescaped matching as well.

Chromium&apos;s test suite doesn&apos;t test any interesting cases here, so it&apos;s up to us. I&apos;d prefer to remove string query parameters and normalize the URL if possible (to the extent that it would allow more matches).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734914</commentid>
    <comment_count>5</comment_count>
      <attachid>421850</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-02 10:20:07 -0800</bug_when>
    <thetext>Comment on attachment 421850
Patch v1.0

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:99
&gt;&gt;&gt; +            frame = WI.networkManager.frames.find(frame =&gt; frame.url === frameURL);
&gt;&gt; 
&gt;&gt; Do we care about a situation where there&apos;s more than one `WI.Frame` with the same URL?  Is it an exact URL match, or just a prefix match (e.g. the actual URL can have a query parameter that the given `frameURL` doesn&apos;t have)?
&gt;&gt; 
&gt;&gt; Style: we always wrap arguments of arrow functions in `(` `)` even if there&apos;s only one
&gt; 
&gt; Two excellent questions for which I do not have an answer at this time. The documentation is unclear as to how strict the matching is and wether query parameters are part of that match. Along the same train of through, I should probably also be considering escaped vs. unescaped matching as well.

The API does not define whether this should be a prefix match only, or an exact match (nor do any existing tests for the API). In the absence of such rules, the best thing to do is probably something along the lines of...
if options.frameURL has query params
    only exactly match
else
    try to exactly match
    fall back to stripping query params for matching if there was no strict match</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734984</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-02 13:11:31 -0800</bug_when>
    <thetext>(In reply to Patrick Angle from comment #5)
&gt; Comment on attachment 421850 [details]
&gt; Patch v1.0
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421850&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:99
&gt; &gt;&gt;&gt; +            frame = WI.networkManager.frames.find(frame =&gt; frame.url === frameURL);
&gt; &gt;&gt; 
&gt; &gt;&gt; Do we care about a situation where there&apos;s more than one `WI.Frame` with the same URL?  Is it an exact URL match, or just a prefix match (e.g. the actual URL can have a query parameter that the given `frameURL` doesn&apos;t have)?
&gt; &gt;&gt; 
&gt; &gt;&gt; Style: we always wrap arguments of arrow functions in `(` `)` even if there&apos;s only one
&gt; &gt; 
&gt; &gt; Two excellent questions for which I do not have an answer at this time. The documentation is unclear as to how strict the matching is and wether query parameters are part of that match. Along the same train of through, I should probably also be considering escaped vs. unescaped matching as well.
&gt; 
&gt; The API does not define whether this should be a prefix match only, or an
&gt; exact match (nor do any existing tests for the API). In the absence of such
&gt; rules, the best thing to do is probably something along the lines of...
&gt; if options.frameURL has query params
&gt;     only exactly match
&gt; else
&gt;     try to exactly match
&gt;     fall back to stripping query params for matching if there was no strict
&gt; match

Sounds reasonable!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735474</commentid>
    <comment_count>7</comment_count>
      <attachid>422140</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-03 13:12:21 -0800</bug_when>
    <thetext>Created attachment 422140
Patch v1.1 - Support fuzzier matching, fix eval error handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735595</commentid>
    <comment_count>8</comment_count>
      <attachid>422140</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-03 16:21:28 -0800</bug_when>
    <thetext>Comment on attachment 422140
Patch v1.1 - Support fuzzier matching, fix eval error handling

The code looks good, but I&apos;d like to see a test to exercise the fuzzy/hairy frameURL matching code path.

This can be a new TestWebKitAPI file based on WKInspectorExtensionHost.mm. I think it&apos;s worth creating a separate file as the helper delegates will likely need to be different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735596</commentid>
    <comment_count>9</comment_count>
      <attachid>422140</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-03 16:22:38 -0800</bug_when>
    <thetext>Comment on attachment 422140
Patch v1.1 - Support fuzzier matching, fix eval error handling

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:108
&gt; +                        let knownFrameURLWithoutQueryParamsOrFragmentIdentifier = knownFrame.url.slice(0, -knownFrameURLParts.search.length - knownFrameURLParts.hash.length);

FYI since you&apos;ve created a `URL` here, you could just `knownFrameURLParts.search = &quot;&quot;;` and `knownFrameURLParts.hash = &quot;&quot;;` and then compare `knownFrameURLParts.href === frameURL`.

I wanted to ask you to change from `new URL` to use `parseURL` (which is a WI utility), but if you do this then it&apos;s fine :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736674</commentid>
    <comment_count>10</comment_count>
      <attachid>422457</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-03-05 17:17:44 -0800</bug_when>
    <thetext>Created attachment 422457
WIP v1.2 - Test now crashes...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737180</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-08 11:14:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/75178876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825725</commentid>
    <comment_count>12</comment_count>
      <attachid>447633</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-12-20 13:52:44 -0800</bug_when>
    <thetext>Created attachment 447633
Patch v2.0 - Rebased, now-functional test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825729</commentid>
    <comment_count>13</comment_count>
      <attachid>447636</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-12-20 14:02:39 -0800</bug_when>
    <thetext>Created attachment 447636
Patch v2.1 - Adjust function naming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825759</commentid>
    <comment_count>14</comment_count>
      <attachid>447636</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-20 14:52:54 -0800</bug_when>
    <thetext>Comment on attachment 447636
Patch v2.1 - Adjust function naming

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:138
&gt; +            return {&quot;error&quot;: `Unable to evaluate script in unknown frame with URL: ${frameURL}`};

This error is visible to the extension, right?  Is the error message standardized and/or does this match other browsers?

Style: the `&quot;` are unnecessary for property keys that don&apos;t have whitespace :)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:152
&gt; +            WI.reportInternalError(&quot;evaluateScriptForExtension: No &apos;pageExecutionContext&apos; was present for frame with URL: &quot; + frame.url);

Is this actually an internal error?  Is it possible for an `&lt;iframe&gt;` to be created with some CSP/FeaturePolicy/etc. that disables JS?

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:409
&gt; +        if (frameURLParts.search.length || frameURLParts.hash.length)

I can understand not allowing matches based on the `hash`, but the `search` too?  That seems a bit restrictive given that lots of sites are implemented where the current &quot;view&quot; is based on the value of the `search`.

I wonder if we should just take the given `frameURL` as-is and just see if it exactly matches since that&apos;s what the extension explicitly asked for.  The only reasons I can think of not to do that is if the `url` of `WI.Frame` doesn&apos;t have a `search`/`hash` or if it doesn&apos;t match the behavior of other browsers.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:415
&gt; +            if (!knownFrameURLParts.search.length &amp;&amp; !knownFrameURLParts.hash.length)
&gt; +                return false;

Why would we disqualify a `WI.Frame` if it&apos;s `url` doesn&apos;t have a `search` or `hash`?  Isn&apos;t that a &quot;good&quot; thing?

ditto (:409)

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:398
&gt; +    auto *testPagePath = [NSBundle.mainBundle pathForResource:@&quot;WKInspectorExtensionEvaluateScriptOnPage&quot; ofType:@&quot;html&quot; inDirectory:@&quot;TestWebKitAPI.resources&quot;];
&gt; +    auto *testPageBaseURL = [NSURL fileURLWithPath:testPagePath.stringByDeletingLastPathComponent];
&gt; +    auto *testPageFileURL = [NSURL fileURLWithPath:testPagePath.lastPathComponent relativeToURL:testPageBaseURL];

NIT: This seems quite excessive.  Can we use something like `-[NSBundle URLForResource:withExtension:subdirectory:]` instead?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:467
&gt; +    [sharedInspectorExtension evaluateScript:@&quot;goto fail&quot; frameURL:nil contextSecurityOrigin:nil useContentScriptContext:false completionHandler:^(NSError *error, NSDictionary *result) {

NIT: Can we do a runtime failure instead?  Something like `[].x.x`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825782</commentid>
    <comment_count>15</comment_count>
      <attachid>447636</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-12-20 15:38:35 -0800</bug_when>
    <thetext>Comment on attachment 447636
Patch v2.1 - Adjust function naming

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:152
&gt;&gt; +            WI.reportInternalError(&quot;evaluateScriptForExtension: No &apos;pageExecutionContext&apos; was present for frame with URL: &quot; + frame.url);
&gt; 
&gt; Is this actually an internal error?  Is it possible for an `&lt;iframe&gt;` to be created with some CSP/FeaturePolicy/etc. that disables JS?

CSP can indeed precent unsafe script evaluation on a page, but I&apos;ve just tested this locally on a page with such a policy enforced and am still able to execute script from the Web Inspector console on the page. For FeaturePolicy, my understanding is that those APIs control what you can do in JavaScript, not wether JS is usable at all. Any error from running into a FeaturePolicy would therefor come from the :156-169 below as a result of execution.

However, in thinking through and testing this a bit further it is possible if a user has disabled JavaScript entirely that this will fail, so maybe it does need to be a non-internal error...

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:409
&gt;&gt; +        if (frameURLParts.search.length || frameURLParts.hash.length)
&gt; 
&gt; I can understand not allowing matches based on the `hash`, but the `search` too?  That seems a bit restrictive given that lots of sites are implemented where the current &quot;view&quot; is based on the value of the `search`.
&gt; 
&gt; I wonder if we should just take the given `frameURL` as-is and just see if it exactly matches since that&apos;s what the extension explicitly asked for.  The only reasons I can think of not to do that is if the `url` of `WI.Frame` doesn&apos;t have a `search`/`hash` or if it doesn&apos;t match the behavior of other browsers.

This behavior is based on the conversation from much earlier this year in comment #6. We start by attempting to strictly match the frame. (:404-406) Then, if the frameURL provided by the extension was not specific as to query params/hash we search more loosely for a matching frame (:412-420). This check exists because there is no need to spend the time comparing the provided frameURL against every known frame&apos;s URL sans `search` and `hash` because none of them will match under those conditions.

I defer to BJ who has been in the trenches on this for what behavior they think will be best here.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:415
&gt;&gt; +                return false;
&gt; 
&gt; Why would we disqualify a `WI.Frame` if it&apos;s `url` doesn&apos;t have a `search` or `hash`?  Isn&apos;t that a &quot;good&quot; thing?
&gt; 
&gt; ditto (:409)

Looking at this again, this is redundant anyways. A frame that hits this check will either not be a match anyways, or will have been returned as the match above on :406.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:398
&gt;&gt; +    auto *testPageFileURL = [NSURL fileURLWithPath:testPagePath.lastPathComponent relativeToURL:testPageBaseURL];
&gt; 
&gt; NIT: This seems quite excessive.  Can we use something like `-[NSBundle URLForResource:withExtension:subdirectory:]` instead?

Yeah, that works as well.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorExtension.mm:467
&gt;&gt; +    [sharedInspectorExtension evaluateScript:@&quot;goto fail&quot; frameURL:nil contextSecurityOrigin:nil useContentScriptContext:false completionHandler:^(NSError *error, NSDictionary *result) {
&gt; 
&gt; NIT: Can we do a runtime failure instead?  Something like `[].x.x`?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825785</commentid>
    <comment_count>16</comment_count>
      <attachid>447636</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-20 15:44:36 -0800</bug_when>
    <thetext>Comment on attachment 447636
Patch v2.1 - Adjust function naming

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:409
&gt;&gt;&gt; +        if (frameURLParts.search.length || frameURLParts.hash.length)
&gt;&gt; 
&gt;&gt; I can understand not allowing matches based on the `hash`, but the `search` too?  That seems a bit restrictive given that lots of sites are implemented where the current &quot;view&quot; is based on the value of the `search`.
&gt;&gt; 
&gt;&gt; I wonder if we should just take the given `frameURL` as-is and just see if it exactly matches since that&apos;s what the extension explicitly asked for.  The only reasons I can think of not to do that is if the `url` of `WI.Frame` doesn&apos;t have a `search`/`hash` or if it doesn&apos;t match the behavior of other browsers.
&gt; 
&gt; This behavior is based on the conversation from much earlier this year in comment #6. We start by attempting to strictly match the frame. (:404-406) Then, if the frameURL provided by the extension was not specific as to query params/hash we search more loosely for a matching frame (:412-420). This check exists because there is no need to spend the time comparing the provided frameURL against every known frame&apos;s URL sans `search` and `hash` because none of them will match under those conditions.
&gt; 
&gt; I defer to BJ who has been in the trenches on this for what behavior they think will be best here.

Ah I missed :404 (pun unintended).  I think it might be worth doing this in steps, where we first remove the `hash` and `.find()` before then removing the `search` too.  Might be overkill, but I think we should handle `search` and `hash` separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825807</commentid>
    <comment_count>17</comment_count>
      <attachid>447662</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-12-20 16:31:41 -0800</bug_when>
    <thetext>Created attachment 447662
Patch v2.2 - Address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826063</commentid>
    <comment_count>18</comment_count>
      <attachid>447662</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-21 11:21:56 -0800</bug_when>
    <thetext>Comment on attachment 447662
Patch v2.2 - Address review comments

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

r=me, nice work :)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:406
&gt; +        function findFrame(frameURL, adjustKnownFrameURL = null) {

Style: the ` = null` is unnecessary since `adjustKnownFrameURL` will default to `undefined` if not provided, which is handled in the same way by `?.` (we also prefer not providing default values for parameters)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:419
&gt; +        if (frameURLParts.search.length || frameURLParts.hash.length)

Hmm what if `frameURLParts` does have a `search` but not a `hash`?  Would we wanna try to remove the `hash` from `knownFrameURL` and see if we can match it then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826103</commentid>
    <comment_count>19</comment_count>
      <attachid>447751</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-12-21 13:56:35 -0800</bug_when>
    <thetext>Created attachment 447751
Patch v2.3 - Review nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830361</commentid>
    <comment_count>20</comment_count>
      <attachid>449002</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2022-01-12 15:09:49 -0800</bug_when>
    <thetext>Created attachment 449002
Patch v2.4 - rebased for commit-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830370</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-12 15:26:12 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 449002 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830543</commentid>
    <comment_count>22</comment_count>
      <attachid>449059</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-01-13 07:48:14 -0800</bug_when>
    <thetext>Created attachment 449059
Patch v2.5 - Rebase for commit-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830553</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-13 08:23:21 -0800</bug_when>
    <thetext>Committed r287979 (246008@main): &lt;https://commits.webkit.org/246008@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449059.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421850</attachid>
            <date>2021-03-01 11:29:45 -0800</date>
            <delta_ts>2021-03-03 13:12:20 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-222568-20210301112944.patch</filename>
            <type>text/plain</type>
            <size>4309</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
MWI5YjgxNDgzYTk4NThhMGI3NGE2OGY0ODIxMWM2YmUzNmVhZDYwLi44MDI5NmZjM2ZkNGE4YTZj
NWYxZDI4ZjljMWYyMjQxM2QzZjMzOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0wMy0wMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGV2YWx1
YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGluIGEgc3BlY2lmaWMgZnJhbWUgb24gdGhl
IHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQorICAgICAgICBmcmFtZSdzIFVSTC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIucHJvdG90eXBlLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgLSBTdXBw
b3J0IHRoZSBgZnJhbWVVUkxgIG9wdGlvbi4KKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbG9hZEZvckV4dGVuc2lvbik6CisgICAgICAgIC0g
RHJpdmUtYnkgd2hpdGVzcGFjZSBjb3JyZWN0aW9ucyBmcm9tIHByZXZpb3VzIHBhdGNoLgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIC0gRHJp
dmUtYnkgd2hpdGVzcGFjZSBjb3JyZWN0aW9uIGZyb20gcHJldmlvdXMgcGF0Y2guCisKIDIwMjEt
MDItMjUgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIg
SW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgcmVjZWl2aW5nIFdlYiBFeHRlbnNpb24gZXZlbnRz
IHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKaW5kZXggNDZlMzc3
NGQwNWRiZGVhNDA0ZjY3NGY4ODM2ODQ1MWI2NDc0OGY5MC4uYTBmNmZmZmU3NDBjMDhjZmM3MGQx
MzM0ZWNkOTk1NDNkYzJjZDQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC05NCwxMiArOTQsMTUgQEAgV0ku
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83NDE4MDM1NT4gaW1wbGVtZW50IGV4ZWN1dGlvbiBj
b250ZXh0IHNlbGVjdGlvbiBvcHRpb25zCisgICAgICAgIGxldCBmcmFtZSA9IFdJLm5ldHdvcmtN
YW5hZ2VyLm1haW5GcmFtZTsKICAgICAgICAgaWYgKGZyYW1lVVJMKSB7Ci0gICAgICAgICAgICBX
SS5yZXBvcnRJbnRlcm5hbEVycm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogdGhlICdm
cmFtZVVSTCcgb3B0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsK
KyAgICAgICAgICAgIGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVzLmZpbmQoZnJhbWUg
PT4gZnJhbWUudXJsID09PSBmcmFtZVVSTCk7CisgICAgICAgICAgICBpZiAoIWZyYW1lKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUu
SW52YWxpZFJlcXVlc3Q7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBG
SVhNRTogPHJkYXI6Ly9wcm9ibGVtLzc0MTgwMzU1PiBpbXBsZW1lbnQgZXhlY3V0aW9uIGNvbnRl
eHQgc2VsZWN0aW9uIG9wdGlvbnMKICAgICAgICAgaWYgKGNvbnRleHRTZWN1cml0eU9yaWdpbikg
ewogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3JpcHRGb3JF
eHRlbnNpb246IHRoZSAnY29udGV4dFNlY3VyaXR5T3JpZ2luJyBvcHRpb24gaXMgbm90IHlldCBp
bXBsZW1lbnRlZC4iKTsKICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOwpAQCAtMTEwLDcgKzExMyw3IEBAIFdJLldlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBl
dmFsdWF0aW9uQ29udGV4dCA9IFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRl
eHQ7CisgICAgICAgIGxldCBldmFsdWF0aW9uQ29udGV4dCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25D
b250ZXh0OwogICAgICAgICByZXR1cm4gZXZhbHVhdGlvbkNvbnRleHQudGFyZ2V0LlJ1bnRpbWVB
Z2VudC5ldmFsdWF0ZS5pbnZva2UoewogICAgICAgICAgICAgZXhwcmVzc2lvbjogc2NyaXB0U291
cmNlLAogICAgICAgICAgICAgb2JqZWN0R3JvdXA6ICJleHRlbnNpb24tZXZhbHVhdGlvbiIsCkBA
IC0xMjYsNyArMTI5LDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNs
YXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJl
dHVybiB3YXNUaHJvd24gPyB7ImVycm9yIjogcmVzdWx0T3JFcnJvci5kZXNjcmlwdGlvbn0gOiB7
InJlc3VsdCI6IHZhbHVlfTsKICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiBlcnJvci5kZXNj
cmlwdGlvbik7CiAgICAgfQotICAgIAorCiAgICAgcmVsb2FkRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9ID0ge30pCiAgICAg
ewogICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURN
YXAuZ2V0KGV4dGVuc2lvbklEKTsKQEAgLTE0NSwxNCArMTQ4LDEyIEBAIFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyIGV4dGVuCiAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JF
eHRlbnNpb246IHRoZSAnaW5qZWN0ZWRTY3JpcHQnIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVu
dGVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJv
ckNvZGUuTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0
IHRhcmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwogICAgICAgICBpZiAoIXRhcmdldC5o
YXNDb21tYW5kKCJQYWdlLnJlbG9hZCIpKQogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiB0YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7
Ci0gICAgICAgIAotICAgICAgICAKICAgICB9CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422140</attachid>
            <date>2021-03-03 13:12:21 -0800</date>
            <delta_ts>2021-03-05 17:17:42 -0800</delta_ts>
            <desc>Patch v1.1 - Support fuzzier matching, fix eval error handling</desc>
            <filename>bug-222568-20210303131220.patch</filename>
            <type>text/plain</type>
            <size>7802</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
MWI5YjgxNDgzYTk4NThhMGI3NGE2OGY0ODIxMWM2YmUzNmVhZDYwLi45ZGEzNzRmYTA2ZTgxZTlj
ODkxYjMyMmY0ZTM3MTlkMDc4M2E1YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0wMy0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGV2YWx1
YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGluIGEgc3BlY2lmaWMgZnJhbWUgb24gdGhl
IHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQorICAgICAgICBmcmFtZSdzIFVSTC4gRnJh
bWUgVVJMcyBhcmUgbWF0Y2hlZCBpbiB0d28gc3RlcHMgdGhhdCBmaXJzdCBsb29rIGZvciBhbiBl
eGFjdCBVUkwgbWF0Y2gsIGluY2x1ZGluZyBxdWVyeQorICAgICAgICBwYXJhbWV0ZXJzIGFuZCBm
cmFnbWVudCBpZGVudGlmaWVyLiBJZiBubyBtYXRjaCBpcyBmb3VuZCBhbmQgdGhlIHByb3ZpZGVk
IGBvcHRpb25zLmZyYW1lVVJMYCBkb2VzIG5vdCBoYXZlIGFueQorICAgICAgICBmcmFnbWVudCBp
ZGVudGlmZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBjaGVjayBpcyB0aGVuIG1hZGUgYWdhaW5z
dCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRpbWUgZXhjbHVkaW5nCisgICAgICAgIHRo
ZWlyIGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3Rv
dHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIC0gQWRkZWQgc3VwcG9y
dCBmb3IgdGhlIGBmcmFtZVVSTGAgb3B0aW9uLgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVsb2FkRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAtIERyaXZlLWJ5
IHdoaXRlc3BhY2UgY29ycmVjdGlvbnMgZnJvbSBwcmV2aW91cyBwYXRjaC4KKwogMjAyMS0wMi0y
NSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlh
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiMTkwNjMxNDg0OGU0
NmJiMGIwNmYwZWU4N2UyZDViOWFlOTgwNTMuLmE3ZDlkZTAwY2E4OTE4YmNkNzc5NjhmMTA5OTkw
MmI3YmY1NmI4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMDMgIFBhdHJp
Y2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElt
cGxlbWVudCBgZnJhbWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRvdy5l
dmFsYCBjb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlZCBpbnRlcm5hbCBlcnJvciBoYW5kbGluZyB0byBubyBsb25nZXIgY3Jhc2ggYnkg
YWxpZ25pbmcgaXQncyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBgcmVsb2FkYCBleHRlbnNpb24K
KyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24p
OgorCiAyMDIxLTAzLTAzICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+
CiAKICAgICAgICAgUHJlc2VydmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUg
YXBwIGhpZ2hsaWdodCByZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCA0NmUzNzc0ZDA1ZGJkZWE0MDRm
Njc0Zjg4MzY4NDUxYjY0NzQ4ZjkwLi45Y2EyYzE5ODMzMjZlZmJjOGExZTNmMTlmMDEzNzRhY2Ew
ZjAwZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIuanMKQEAgLTk0LDEyICs5NCwyNyBAQCBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ciBleHRlbgogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJv
ckNvZGUuSW52YWxpZFJlcXVlc3Q7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzc0MTgwMzU1PiBpbXBsZW1lbnQgZXhlY3V0aW9uIGNvbnRleHQgc2VsZWN0
aW9uIG9wdGlvbnMKKyAgICAgICAgbGV0IGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lOwogICAgICAgICBpZiAoZnJhbWVVUkwpIHsKLSAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2ZyYW1lVVJMJyBvcHRp
b24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAgICAgICAg
ZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZXMuZmluZCgoa25vd25GcmFtZSkgPT4ga25v
d25GcmFtZS51cmwgPT09IGZyYW1lVVJMKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZnJhbWVVUkxQYXJ0cyA9IG5ldyBVUkwoZnJhbWVVUkwpOworICAg
ICAgICAgICAgICAgIGlmICghZnJhbWVVUkxQYXJ0cy5zZWFyY2gubGVuZ3RoICYmICFmcmFtZVVS
TFBhcnRzLmhhc2gubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lID0gV0kubmV0
d29ya01hbmFnZXIuZnJhbWVzLmZpbmQoKGtub3duRnJhbWUpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBrbm93bkZyYW1lVVJMUGFydHMgPSBuZXcgVVJMKGtub3duRnJhbWUudXJs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha25vd25GcmFtZVVSTFBhcnRzLnNlYXJj
aC5sZW5ndGggJiYgIWtub3duRnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBrbm93bkZyYW1lVVJMV2l0aG91dFF1ZXJ5UGFyYW1zT3JGcmFnbWVudElkZW50aWZpZXIg
PSBrbm93bkZyYW1lLnVybC5zbGljZSgwLCAta25vd25GcmFtZVVSTFBhcnRzLnNlYXJjaC5sZW5n
dGggLSBrbm93bkZyYW1lVVJMUGFydHMuaGFzaC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGtub3duRnJhbWVVUkxXaXRob3V0UXVlcnlQYXJhbXNPckZyYWdtZW50SWRl
bnRpZmllciA9PT0gZnJhbWVVUkw7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVz
dDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1FOiA8cmRhcjov
L3Byb2JsZW0vNzQxODAzNTU+IGltcGxlbWVudCBleGVjdXRpb24gY29udGV4dCBzZWxlY3Rpb24g
b3B0aW9ucwogICAgICAgICBpZiAoY29udGV4dFNlY3VyaXR5T3JpZ2luKSB7CiAgICAgICAgICAg
ICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogdGhl
ICdjb250ZXh0U2VjdXJpdHlPcmlnaW4nIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLiIp
OwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUu
Tm90SW1wbGVtZW50ZWQ7CkBAIC0xMTAsNyArMTI1LDEyIEBAIFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4
dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBldmFsdWF0aW9uQ29u
dGV4dCA9IFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAg
IGxldCBldmFsdWF0aW9uQ29udGV4dCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0OworICAg
ICAgICBpZiAoIWV2YWx1YXRpb25Db250ZXh0KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRl
cm5hbEVycm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogTm8gJ3BhZ2VFeGVjdXRpb25D
b250ZXh0JyB3YXMgcHJlc2VudCBmb3IgZnJhbWUgd2l0aCBVUkw6ICIgKyBmcmFtZS51cmwpOwor
ICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuQ29u
dGV4dERlc3Ryb3llZDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBldmFsdWF0aW9uQ29u
dGV4dC50YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7CiAgICAgICAgICAgICBl
eHByZXNzaW9uOiBzY3JpcHRTb3VyY2UsCiAgICAgICAgICAgICBvYmplY3RHcm91cDogImV4dGVu
c2lvbi1ldmFsdWF0aW9uIiwKQEAgLTEyNiw3ICsxNDYsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBl
eHRlbgogICAgICAgICAgICAgcmV0dXJuIHdhc1Rocm93biA/IHsiZXJyb3IiOiByZXN1bHRPckVy
cm9yLmRlc2NyaXB0aW9ufSA6IHsicmVzdWx0IjogdmFsdWV9OwogICAgICAgICB9KS5jYXRjaCgo
ZXJyb3IpID0+IGVycm9yLmRlc2NyaXB0aW9uKTsKICAgICB9Ci0gICAgCisKICAgICByZWxvYWRG
b3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3Rl
ZFNjcmlwdH0gPSB7fSkKICAgICB7CiAgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRl
bnNpb25Gb3JFeHRlbnNpb25JRE1hcC5nZXQoZXh0ZW5zaW9uSUQpOwpAQCAtMTQ1LDE0ICsxNjUs
MTIgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoInJlbG9hZEZvckV4dGVuc2lvbjogdGhlICdpbmplY3RlZFNjcmlwdCcgb3B0aW9u
IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAg
ICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIlBhZ2UucmVsb2FkIikpCiAgICAgICAgICAg
ICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVz
dDsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmlu
dm9rZSh7aWdub3JlQ2FjaGV9KTsKLSAgICAgICAgCi0gICAgICAgIAogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCBhNDc0ZmEy
OTIyYWE2YzcyZGExMTg0NGU0YWVjYjJkMTViNDc5MzFlLi40ZTdlODQ5ODg5N2FjNzIxNmI1YWI1
M2ExYjVjMDRmNmQ3YmI5NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuY3BwCkBAIC0yNDcsOCArMjQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBh
cnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVhdGlvblJlc3VsdChyZXN1bHQpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGV4Y2VwdGlvbkRldGFpbHMgPSByZXN1bHQudmFsdWUoKS5lcnJvcigpOwotICAg
ICAgICAgICAgTE9HKEluc3BlY3RvciwgIkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxl
IGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlv
bkRldGFpbHMuc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51
bWJlciwgZXhjZXB0aW9uRGV0YWlscy5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVz
c2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJJbnRlcm5h
bCBlcnJvciBlbmNvdW50ZXJlZCB3aGlsZSBldmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5kOiAl
cyIsIEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZygqcGFyc2VkRXJyb3IpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxv
cHQsIHBhcnNlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422457</attachid>
            <date>2021-03-05 17:17:44 -0800</date>
            <delta_ts>2021-12-20 13:52:42 -0800</delta_ts>
            <desc>WIP v1.2 - Test now crashes...</desc>
            <filename>bug-222568-20210305171743.patch</filename>
            <type>text/plain</type>
            <size>21876</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
MWI5YjgxNDgzYTk4NThhMGI3NGE2OGY0ODIxMWM2YmUzNmVhZDYwLi45ZGEzNzRmYTA2ZTgxZTlj
ODkxYjMyMmY0ZTM3MTlkMDc4M2E1YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0wMy0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGV2YWx1
YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGluIGEgc3BlY2lmaWMgZnJhbWUgb24gdGhl
IHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQorICAgICAgICBmcmFtZSdzIFVSTC4gRnJh
bWUgVVJMcyBhcmUgbWF0Y2hlZCBpbiB0d28gc3RlcHMgdGhhdCBmaXJzdCBsb29rIGZvciBhbiBl
eGFjdCBVUkwgbWF0Y2gsIGluY2x1ZGluZyBxdWVyeQorICAgICAgICBwYXJhbWV0ZXJzIGFuZCBm
cmFnbWVudCBpZGVudGlmaWVyLiBJZiBubyBtYXRjaCBpcyBmb3VuZCBhbmQgdGhlIHByb3ZpZGVk
IGBvcHRpb25zLmZyYW1lVVJMYCBkb2VzIG5vdCBoYXZlIGFueQorICAgICAgICBmcmFnbWVudCBp
ZGVudGlmZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBjaGVjayBpcyB0aGVuIG1hZGUgYWdhaW5z
dCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRpbWUgZXhjbHVkaW5nCisgICAgICAgIHRo
ZWlyIGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3Rv
dHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIC0gQWRkZWQgc3VwcG9y
dCBmb3IgdGhlIGBmcmFtZVVSTGAgb3B0aW9uLgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVsb2FkRm9yRXh0ZW5zaW9uKToKKyAgICAgICAg
KFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAtIERyaXZlLWJ5
IHdoaXRlc3BhY2UgY29ycmVjdGlvbnMgZnJvbSBwcmV2aW91cyBwYXRjaC4KKwogMjAyMS0wMi0y
NSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBJbnNw
ZWN0b3I6IGFkZCBzdXBwb3J0IGZvciByZWNlaXZpbmcgV2ViIEV4dGVuc2lvbiBldmVudHMgdmlh
IF9XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiMTkwNjMxNDg0OGU0
NmJiMGIwNmYwZWU4N2UyZDViOWFlOTgwNTMuLmE3ZDlkZTAwY2E4OTE4YmNkNzc5NjhmMTA5OTkw
MmI3YmY1NmI4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMDMgIFBhdHJp
Y2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElt
cGxlbWVudCBgZnJhbWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRvdy5l
dmFsYCBjb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjI1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlZCBpbnRlcm5hbCBlcnJvciBoYW5kbGluZyB0byBubyBsb25nZXIgY3Jhc2ggYnkg
YWxpZ25pbmcgaXQncyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBgcmVsb2FkYCBleHRlbnNpb24K
KyAgICAgICAgY29tbWFuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24p
OgorCiAyMDIxLTAzLTAzICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+
CiAKICAgICAgICAgUHJlc2VydmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbiBvZiB0aGUg
YXBwIGhpZ2hsaWdodCByZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCA0NmUzNzc0ZDA1ZGJkZWE0MDRm
Njc0Zjg4MzY4NDUxYjY0NzQ4ZjkwLi5mZGQ5YjZlZGFhNTgxMDA1NzA3NjU4YTM0YmZhOTA1NGQw
ZDM1NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIuanMKQEAgLTk0LDEyICs5NCwyNyBAQCBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ciBleHRlbgogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJv
ckNvZGUuSW52YWxpZFJlcXVlc3Q7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzc0MTgwMzU1PiBpbXBsZW1lbnQgZXhlY3V0aW9uIGNvbnRleHQgc2VsZWN0
aW9uIG9wdGlvbnMKKyAgICAgICAgbGV0IGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZy
YW1lOwogICAgICAgICBpZiAoZnJhbWVVUkwpIHsKLSAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2ZyYW1lVVJMJyBvcHRp
b24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAgICAgICAg
ZnJhbWUgPSBXSS5uZXR3b3JrTWFuYWdlci5mcmFtZXMuZmluZCgoa25vd25GcmFtZSkgPT4ga25v
d25GcmFtZS51cmwgPT09IGZyYW1lVVJMKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZnJhbWVVUkxQYXJ0cyA9IG5ldyBVUkwoZnJhbWVVUkwpOworICAg
ICAgICAgICAgICAgIGlmICghZnJhbWVVUkxQYXJ0cy5zZWFyY2gubGVuZ3RoICYmICFmcmFtZVVS
TFBhcnRzLmhhc2gubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lID0gV0kubmV0
d29ya01hbmFnZXIuZnJhbWVzLmZpbmQoKGtub3duRnJhbWUpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBrbm93bkZyYW1lVVJMUGFydHMgPSBuZXcgVVJMKGtub3duRnJhbWUudXJs
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha25vd25GcmFtZVVSTFBhcnRzLnNlYXJj
aC5sZW5ndGggJiYgIWtub3duRnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxldCBrbm93bkZyYW1lVVJMV2l0aG91dFF1ZXJ5UGFyYW1zT3JGcmFnbWVudElkZW50aWZpZXIg
PSBrbm93bkZyYW1lLnVybC5zbGljZSgwLCAta25vd25GcmFtZVVSTFBhcnRzLnNlYXJjaC5sZW5n
dGggLSBrbm93bkZyYW1lVVJMUGFydHMuaGFzaC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGtub3duRnJhbWVVUkxXaXRob3V0UXVlcnlQYXJhbXNPckZyYWdtZW50SWRl
bnRpZmllciA9PT0gZnJhbWVVUkw7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6ICJUTVAgRVJST1IgTUVTU0FHRTogTm8gZnJhbWUg
d2FzIGZvdW5kIHVwb24gd2hpY2ggdGhlIHNjcmlwdCBjb3VsZCBiZSBldmFsdWF0ZWQuIn07CiAK
KyAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83NDE4MDM1NT4gaW1wbGVtZW50IGV4
ZWN1dGlvbiBjb250ZXh0IHNlbGVjdGlvbiBvcHRpb25zCiAgICAgICAgIGlmIChjb250ZXh0U2Vj
dXJpdHlPcmlnaW4pIHsKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2NvbnRleHRTZWN1cml0eU9yaWdpbicgb3B0aW9u
IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKQEAgLTExMCw3ICsxMjUs
MTIgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOwogICAgICAgICB9CiAK
LSAgICAgICAgbGV0IGV2YWx1YXRpb25Db250ZXh0ID0gV0kucnVudGltZU1hbmFnZXIuYWN0aXZl
RXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgbGV0IGV2YWx1YXRpb25Db250ZXh0ID0gZnJhbWUu
cGFnZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgIGlmICghZXZhbHVhdGlvbkNvbnRleHQpIHsK
KyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uOiBObyAncGFnZUV4ZWN1dGlvbkNvbnRleHQnIHdhcyBwcmVzZW50IGZvciBmcmFtZSB3
aXRoIFVSTDogIiArIGZyYW1lLnVybCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Db250ZXh0RGVzdHJveWVkOworICAgICAgICB9CisKICAg
ICAgICAgcmV0dXJuIGV2YWx1YXRpb25Db250ZXh0LnRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVh
dGUuaW52b2tlKHsKICAgICAgICAgICAgIGV4cHJlc3Npb246IHNjcmlwdFNvdXJjZSwKICAgICAg
ICAgICAgIG9iamVjdEdyb3VwOiAiZXh0ZW5zaW9uLWV2YWx1YXRpb24iLApAQCAtMTI2LDcgKzE0
Niw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gd2FzVGhy
b3duID8geyJlcnJvciI6IHJlc3VsdE9yRXJyb3IuZGVzY3JpcHRpb259IDogeyJyZXN1bHQiOiB2
YWx1ZX07CiAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gZXJyb3IuZGVzY3JpcHRpb24pOwog
ICAgIH0KLSAgICAKKwogICAgIHJlbG9hZEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwge2lnbm9y
ZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSA9IHt9KQogICAgIHsKICAgICAgICAg
bGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklETWFwLmdldChleHRl
bnNpb25JRCk7CkBAIC0xNDUsMTQgKzE2NSwxMiBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgog
ICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigicmVsb2FkRm9yRXh0ZW5zaW9uOiB0
aGUgJ2luamVjdGVkU2NyaXB0JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKICAg
ICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdElt
cGxlbWVudGVkOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGxldCB0YXJnZXQgPSBX
SS5hc3N1bWluZ01haW5UYXJnZXQoKTsKICAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgi
UGFnZS5yZWxvYWQiKSkKICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNp
b24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OwotICAgICAgICAKKwogICAgICAgICByZXR1cm4g
dGFyZ2V0LlBhZ2VBZ2VudC5yZWxvYWQuaW52b2tlKHtpZ25vcmVDYWNoZX0pOwotICAgICAgICAK
LSAgICAgICAgCiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCmluZGV4IDg0YTc4YjhjNjVi
YzFkZmMyZTE2YjZkNGU5ZWNiNDBhZjZiZmFjMTguLmFkNjk2ZDc4MmE1YmNiOTI3Zjk0Y2VmOTFk
ZTllYjkxNTEzMGQ0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQogICogc2NyaXB0U291cmNlIGlzIHRy
ZWF0ZWQgYXMgYSB0b3AtbGV2ZWwgZXZhbHVhdGlvbi4gQnkgZGVmYXVsdCwgdGhlIHNjcmlwdCBp
cyBldmFsdWF0ZWQgaW4gdGhlIGluc3BlY3RlZCBwYWdlJ3Mgc2NyaXB0IGNvbnRleHQuCiAgKiBU
aGUgaW5zcGVjdGVkIHBhZ2UgdWx0aW1hdGVseSBjb250cm9scyBpdHMgZXhlY3V0aW9uIGNvbnRl
eHQgYW5kIHRoZSByZXN1bHQgb2YgdGhpcyBldmFsdWF0aW9uLiBUaHVzLCB0aGUgcmVzdWx0IHNo
YWxsIGJlIHRyZWF0ZWQgYXMgdW50cnVzdGVkIGlucHV0LgogICovCi0tICh2b2lkKWV2YWx1YXRl
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKilmcmFtZVVS
TCBjb250ZXh0U2VjdXJpdHlPcmlnaW46KE5TVVJMICopY29udGV4dFNlY3VyaXR5T3JpZ2luIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIE5TRGljdGlvbmFyeSAq
IF9OdWxsYWJsZSByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClldmFsdWF0ZVNj
cmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICogX051bGxhYmxl
KWZyYW1lVVJMIGNvbnRleHRTZWN1cml0eU9yaWdpbjooTlNVUkwgKiBfTnVsbGFibGUpY29udGV4
dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRT
Y3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFi
bGUsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwog
CiAvKioKICAqIEBhYnN0cmFjdCBSZWxvYWRzIHRoZSBpbnNwZWN0ZWQgcGFnZSBvbiBiZWhhbGYg
b2YgdGhlIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcAppbmRleCBhNDc0ZmEyOTIyYWE2YzcyZGExMTg0NGU0YWVjYjJk
MTViNDc5MzFlLi41MjdiNTA4ZWFmMTQ1ODk1MWNkOTdiMjc2ZDdkYjFjODM1OTJjYjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0yNDcsOCAr
MjQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZh
bHVhdGlvblJlc3VsdChyZXN1bHQpKSB7Ci0gICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkRldGFp
bHMgPSByZXN1bHQudmFsdWUoKS5lcnJvcigpOwotICAgICAgICAgICAgTE9HKEluc3BlY3Rvciwg
IkludGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJv
bnRlbmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLnV0Zjgo
KS5kYXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5j
b2x1bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJJbnRlcm5hbCBlcnJvciBlbmNvdW50ZXJlZCB3aGls
ZSBldmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5kOiAlcyIsIEluc3BlY3Rvcjo6ZXh0ZW5zaW9u
RXJyb3JUb1N0cmluZygqcGFyc2VkRXJyb3IpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIHBhcnNlZEVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc5LDYgKzI3OCw5IEBAIHZvaWQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVs
bG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZCwKKy8vICAgICAgICBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpOb3RJbXBsZW1lbnRlZAogCiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1NzM1OGFjOTgwNGI5
ODU5YjcyZWIyNGQ4NmZjNWNhOWExYzI5NDguLmFkOGIyNzNhMWRkM2U2YjgyNWMwYjdiM2U2YTFh
N2FjZGVjMmMxYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODMsNiArMTgzLDkgQEAK
IAkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvLXBsYXlpbmctc2Nyb2xs
LWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW8tcGxheWluZy1z
Y3JvbGwtYXdheS5odG1sICovOyB9OwogCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFp
bklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
Nzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovOyB9OwogCQkyRTc3NjVDRjE2
QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1t
ICovOyB9OworCQkyRTg4OENBMTI1RjJCMzMxMDA1NzkxNEEgLyogV0tJbnNwZWN0b3JFeHRlbnNp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTg4
OEM5RTI1RjJCMzMwMDA1NzkxNEEgLyogV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi87IH07CisJ
CTJFODg4Q0EyMjVGMkU5MjAwMDU3OTE0QSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRl
U2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU4ODhDQTAyNUYyQjMzMTAwNTc5MTRBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9u
RXZhbHVhdGVTY3JpcHQuaHRtbCAqLzsgfTsKKwkJMkU4ODhDQTMyNUYyRTkyMDAwNTc5MTRBIC8q
IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRJbm5lckZyYW1lLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU4ODhDOUYy
NUYyQjMzMTAwNTc5MTRBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRJbm5l
ckZyYW1lLmh0bWwgKi87IH07CiAJCTJFOTJCOEY3MjE2NDkwRDQwMDVCNjRGMCAvKiByaWNoLXRl
eHQtYXR0cmlidXRlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFOTJCOEY2MjE2NDkwQzMwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0
cmlidXRlcy5odG1sICovOyB9OwogCQkyRTkyQjhGQTIxNjRBMEMxMDA1QjY0RjAgLyogRm9udEF0
dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTkyQjhGODIxNjQ5MEVBMDA1QjY0RjAgLyogRm9udEF0dHJpYnV0ZXMubW0gKi87IH07CiAJ
CTJFOTg5NjE1MUQ4RjA5MzgwMDczOTg5MiAvKiB0ZXh0LWFuZC1wYXNzd29yZC1pbnB1dHMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RTk4OTYxNDFEOEYwOTJCMDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwg
Ki87IH07CkBAIC0xNzE4LDYgKzE3MjEsOCBAQAogCQkJCUNFMTRGMUE0MTgxODczQjAwMDFDMjcw
NSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTQ2OEYyRjk0MjM2OERBRjEwMEY0Qjg2NCAvKiB3aW5kb3ctb3Blbi10
aGVuLWRvY3VtZW50LW9wZW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBNUUyMDI3
NTE1QjIxRjZFMDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTg4OENBMjI1RjJFOTIwMDA1NzkxNEEgLyogV0tJbnNw
ZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAor
CQkJCTJFODg4Q0EzMjVGMkU5MjAwMDU3OTE0QSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRlU2NyaXB0SW5uZXJGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJKTsKIAkJ
CW5hbWUgPSAiQ29weSBSZXNvdXJjZXMiOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkBAIC0xOTIwLDYgKzE5MjUsOSBAQAogCQkyRTc3NjVDQzE2QzREODBBMDBC
QTJCQjEgLyogbWFpbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IG1haW5JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNFMTZD
NEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gbWFpbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3
RUY3QUMxRjI2NkE4MTAwREZCNjdDIC8qIEFwcEtpdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBL
aXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU4ODhDOUUyNUYyQjMzMDAw
NTc5MTRBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTJFODg4QzlGMjVGMkIzMzEwMDU3OTE0QSAvKiBXS0luc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRlU2NyaXB0SW5uZXJGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdElubmVyRnJhbWUuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU4ODhDQTAyNUYyQjMzMTAwNTc5MTRB
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHQuaHRtbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU5MkI4RjYyMTY0OTBDMzAwNUI2NEYwIC8q
IHJpY2gtdGV4dC1hdHRyaWJ1dGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
cmljaC10ZXh0LWF0dHJpYnV0ZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFOTJCOEY4MjE2NDkwRUEwMDVCNjRGMCAvKiBGb250QXR0cmlidXRlcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTk4OTYxNDFEOEYwOTJCMDA3Mzk4OTIgLyogdGV4dC1h
bmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4
dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzUxMCw2ICszNTE4LDcgQEAKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBFNzQxMEIgLyogV0tD
b250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJOTlCNEY5QzUyNEVERUQ5NjAw
MDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJMkU4ODhDOUUyNUYyQjMz
MDAwNTc5MTRBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAogCQkJCTk5OUI3RUUyMjU1
MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gKi8sCiAJCQkJQTVB
NzI5RjAxRjYyMkE5QTAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJ
CURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFy
eUNyYXNoLm1tICovLApAQCAtNDA0OSw2ICs0MDU4LDggQEAKIAkJCQk1MTcxNEVCMzFDRjhDNzYx
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLywKIAkJCQk1MTIw
QzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwg
Ki8sCiAJCQkJMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8qIHdpZGUtYXV0b3BsYXlpbmctdmlk
ZW8td2l0aC1hdWRpby5odG1sICovLAorCQkJCTJFODg4Q0EwMjVGMkIzMzEwMDU3OTE0QSAvKiBX
S0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0Lmh0bWwgKi8sCisJCQkJMkU4ODhDOUYy
NUYyQjMzMTAwNTc5MTRBIC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRJbm5l
ckZyYW1lLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC01Njk0LDYgKzU3MDUsNyBAQAogCQkJCTUxRDEyNDk4MUU3NjNC
MDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
Q0U3RjFEMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3Rv
ckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkU4ODhDQTEyNUYyQjMzMTAwNTc5MTRB
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk5QjdFRTMy
NTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1QTcyOUYxMUY2MjJBQTcwMERFNUEyOCAvKiBXS05hdmlnYXRpb25SZXNwb25z
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCURGNEIyNzM5MjFBNDc3MjgwMDlCRDFDQSAvKiBXS05T
RGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2M5NmIzODVlOGViNzIzZDczNzM0NmMxZTM3
ZDAzZmUyYzdjNDVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMCwwICsxLDEzNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0LmgiCisjaW1w
b3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCitzdGF0aWMgYm9vbCBkaWRBdHRh
Y2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHJlc2V0R2xvYmFsU3RhdGUoKQor
eworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgcGVuZGlu
Z0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Cit9CisKK0BpbnRlcmZhY2UgVUlEZWxlZ2F0ZUZv
clRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNp
b24KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgTlNMb2coQCJJbnNw
ZWN0b3IgT3BlbiBub3ciKTsKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNw
ZWN0b3IpOworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKK30KKwor
QGVuZAorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdCkKK3sKKyAg
ICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVn
YXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBhdXRvIG5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIE5T
VVJMICp0ZXN0UGFnZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0IiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBOU0xvZyhA
IlVSTDogJUAsIiwgdGVzdFBhZ2VVUkwpOworICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJMOnRlc3RQ
YWdlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOnRlc3RQYWdlVVJMLlVSTEJ5RGVsZXRpbmdM
YXN0UGF0aENvbXBvbmVudF07CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgTlNMb2coQCJkaWRGaW5pc2hOYXZpZ2F0aW9uIik7
CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisgICAgTlNMb2coQCJk
aWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCIpOworCisgICAgYXV0byBmaXJzdElEID0gW05T
VVVJRCBVVUlEXS5VVUlEU3RyaW5nOworCisgICAgLy8gUmVnaXN0ZXIgYW4gZW1wdHkgZXh0ZW5z
aW9uLgorICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0luc3BlY3RvckV4dGVuc2lvbj4gaW5zcGVj
dG9yRXh0ZW5zaW9uOworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAg
IFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRp
c3BsYXlOYW1lOkAiVGVzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICog
X051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5z
aW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGV4dGVuc2lvbik7CisgICAgICAgIE5TTG9nKEAiUmVnaXN0ZXJlZDogJUAsICVAIiwgZXh0
ZW5zaW9uLCBlcnJvcik7CisgICAgICAgIGluc3BlY3RvckV4dGVuc2lvbiA9IGFkb3B0TlMoZXh0
ZW5zaW9uKTsKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCk7CisgICAgCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW2lu
c3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpAImxldCB6ID0gMTIzOyIgZnJhbWVVUkw6
bnVsbHB0ciBjb250ZXh0U2VjdXJpdHlPcmlnaW46bnVsbHB0ciB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dDpmYWxzZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Is
IE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdWx0KTsKKyAgICAgICAgTlNMb2co
QCJSZXN1bHQ6ICVAIiwgcmVzdWx0KTsKKyAgICAgICAgTlNMb2coQCJFcnJvcjogJUAiLCBlcnJv
cik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7
CisKKyAgICAvLyBOb3JtYWwgRmFpbGVkIENhbGwKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQgPSBmYWxzZTsKKyAgICBbaW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1YXRlU2NyaXB0OkAiZ290
byBmYWlsIiBmcmFtZVVSTDpudWxscHRyIGNvbnRleHRTZWN1cml0eU9yaWdpbjpudWxscHRyIHVz
ZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvciwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIHJlc3VsdCkgeworICAg
ICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3Ip
OworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOwor
CisgICAgLy8gU3RyaWN0IEZyYW1lIFVSTCBNYXRjaGluZyBTdWNlc3NmdWwgQ2FsbAorLy8gICAg
TlNVUkwgKmlmcmFtZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0SW5uZXJGcmFtZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Cisv
LyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKy8vICAgIFtpbnNwZWN0b3JF
eHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6QCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh1bmlxdWVG
cmFtZVZhbHVlKS5pbm5lclRleHQiIGZyYW1lVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAP3F1ZXJ5PXBhcmFtI2ZyYWdtZW50IiwgW2lmcmFt
ZVVSTCBhYnNvbHV0ZVN0cmluZ11dXSBjb250ZXh0U2VjdXJpdHlPcmlnaW46bnVsbHB0ciB1c2VD
b250ZW50U2NyaXB0Q29udGV4dDpmYWxzZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBf
TnVsbGFibGUgZXJyb3IsIE5TRGljdGlvbmFyeSAqIF9OdWxsYWJsZSByZXN1bHQpIHsKKy8vICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisvLyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3Vs
dCk7CisvLyAgICAgICAgRVhQRUNUX1NUUkVRKCJJbm5lckZyYW1lIiwgWygoTlNTdHJpbmcqKSBb
W3Jlc3VsdCBhbGxWYWx1ZXNdIG9iamVjdEF0SW5kZXg6IDBdKSBVVEY4U3RyaW5nXSk7CisvLwor
Ly8gICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisvLyAgICB9XTsKKy8v
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447633</attachid>
            <date>2021-12-20 13:52:44 -0800</date>
            <delta_ts>2021-12-20 14:02:37 -0800</delta_ts>
            <desc>Patch v2.0 - Rebased, now-functional test</desc>
            <filename>bug-222568-20211220135243.patch</filename>
            <type>text/plain</type>
            <size>22192</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MjQ0NmI2YjhhODU4N2FkY2I3MmE1M2U4MDI4MTA3NjViMGRlOGJlLi40OGUzZGUzNzc1ZGM1N2E4
YTFiNmIyMGQzMTkzMjUyODY1YWM2MmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMS0xMi0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGV2YWx1YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGlu
IGEgc3BlY2lmaWMgZnJhbWUgb24gdGhlIHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQor
ICAgICAgICBmcmFtZSdzIFVSTC4gRnJhbWUgVVJMcyBhcmUgbWF0Y2hlZCBpbiB0d28gc3RlcHMs
IGZpcnN0IGxvb2tpbmcgZm9yIGFuIGV4YWN0IFVSTCBtYXRjaCwgaW5jbHVkaW5nIHF1ZXJ5Cisg
ICAgICAgIHBhcmFtZXRlcnMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIG5vIG1hdGNoIGlz
IGZvdW5kIGFuZCB0aGUgcHJvdmlkZWQgYG9wdGlvbnMuZnJhbWVVUkxgIGRvZXMgbm90IGhhdmUg
YW55CisgICAgICAgIGZyYWdtZW50IGlkZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBj
aGVjayBpcyB0aGVuIG1hZGUgYWdhaW5zdCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRp
bWUKKyAgICAgICAgZXhjbHVkaW5nIHRoZWlyIGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHF1ZXJ5
IHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6
CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5y
ZWxvYWRGb3JFeHRlbnNpb24pOgorICAgICAgICAtIERyaXZlLWJ5IHJlbW92YWwgb2YgdHJhaWxp
bmcgc3BhY2VzLgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5w
cm90b3R5cGUuX2ZyYW1lRXhlY3V0aW9uQ29udGV4dEZvckZyYW1lVVJMKToKKwogMjAyMS0xMi0x
NiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTczCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0OTU1
MTlmZTk5YzNjZDFlY2U0MTI2NjI0MjdiODAxYmFmZWRlZDguLjQ1ZWVlODRlNTcxMDRiNDA2ZTI0
YjViNzFhNWMwYTI0OTQ5NzA3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTIt
MjAgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEltcGxlbWVudCBgZnJhbWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3Rl
ZFdpbmRvdy5ldmFsYCBjb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorCisgICAgICAgIENvcnJlY3QgdGhlIEFQSSB0
byBpbmRpY2F0ZSB0aGF0IGBmcmFtZVVSTGAgYW5kIGBjb250ZXh0U2VjdXJpdHlPcmlnaW5gIGFy
ZSBudWxsYWJsZSBwYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaDoKKwogMjAyMS0xMi0yMCAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eSBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCBkYjU1ZjdmMGVmN2VmM2E0
YzY5YmQxNjhlMzNkYjFmMTIxYWFhYzMzLi5kYTQxZWYyZWU4NDdhODU3N2M5YjZiMTNkMzQwM2I0
MTliOGZkNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3Rv
ckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKQEAgLTEzMywxMSArMTMzLDkgQEAgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
RXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6
IDxyZGFyOi8vcHJvYmxlbS83NDE4MDM1NT4gaW1wbGVtZW50IGV4ZWN1dGlvbiBjb250ZXh0IHNl
bGVjdGlvbiBvcHRpb25zCi0gICAgICAgIGlmIChmcmFtZVVSTCkgewotICAgICAgICAgICAgV0ku
cmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb246IHRoZSAnZnJh
bWVVUkwnIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLiIpOwotICAgICAgICAgICAgcmV0
dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7Ci0g
ICAgICAgIH0KKyAgICAgICAgbGV0IGZyYW1lID0gdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0
Rm9yRnJhbWVVUkwoZnJhbWVVUkwpOworICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuIHsiZXJyb3IiOiBgVW5hYmxlIHRvIGV2YWx1YXRlIHNjcmlwdCBpbiB1bmtub3duIGZy
YW1lIHdpdGggVVJMOiAke2ZyYW1lVVJMfWB9OwogCiAgICAgICAgIGlmIChjb250ZXh0U2VjdXJp
dHlPcmlnaW4pIHsKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2NvbnRleHRTZWN1cml0eU9yaWdpbicgb3B0aW9uIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CkBAIC0xNDksNyArMTQ3LDEyIEBAIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBldmFs
dWF0aW9uQ29udGV4dCA9IFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQ7
CisgICAgICAgIGxldCBldmFsdWF0aW9uQ29udGV4dCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25Db250
ZXh0OworICAgICAgICBpZiAoIWV2YWx1YXRpb25Db250ZXh0KSB7CisgICAgICAgICAgICBXSS5y
ZXBvcnRJbnRlcm5hbEVycm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogTm8gJ3BhZ2VF
eGVjdXRpb25Db250ZXh0JyB3YXMgcHJlc2VudCBmb3IgZnJhbWUgd2l0aCBVUkw6ICIgKyBmcmFt
ZS51cmwpOworICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJv
ckNvZGUuQ29udGV4dERlc3Ryb3llZDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBldmFs
dWF0aW9uQ29udGV4dC50YXJnZXQuUnVudGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7CiAgICAg
ICAgICAgICBleHByZXNzaW9uOiBzY3JpcHRTb3VyY2UsCiAgICAgICAgICAgICBvYmplY3RHcm91
cDogImV4dGVuc2lvbi1ldmFsdWF0aW9uIiwKQEAgLTE2NSw3ICsxNjgsNyBAQCBXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlciBleHRlbgogICAgICAgICAgICAgcmV0dXJuIHdhc1Rocm93biA/IHsiZXJyb3IiOiBy
ZXN1bHRPckVycm9yLmRlc2NyaXB0aW9ufSA6IHsicmVzdWx0IjogdmFsdWV9OwogICAgICAgICB9
KS5jYXRjaCgoZXJyb3IpID0+IGVycm9yLmRlc2NyaXB0aW9uKTsKICAgICB9Ci0gICAgCisKICAg
ICByZWxvYWRGb3JFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50
LCBpbmplY3RlZFNjcmlwdH0gPSB7fSkKICAgICB7CiAgICAgICAgIGxldCBleHRlbnNpb24gPSB0
aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcC5nZXQoZXh0ZW5zaW9uSUQpOwpAQCAtMTg0
LDE0ICsxODcsMTQgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNz
IFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIFdJLnJl
cG9ydEludGVybmFsRXJyb3IoInJlbG9hZEZvckV4dGVuc2lvbjogdGhlICdpbmplY3RlZFNjcmlw
dCcgb3B0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4g
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFy
Z2V0KCk7CiAgICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIlBhZ2UucmVsb2FkIikpCiAg
ICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZh
bGlkUmVxdWVzdDsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRhcmdldC5QYWdlQWdlbnQu
cmVsb2FkLmludm9rZSh7aWdub3JlQ2FjaGV9KTsKICAgICB9Ci0gICAgCisKICAgICBzaG93RXh0
ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklELCBvcHRpb25zID0ge30pCiAgICAgewogICAgICAgICBs
ZXQgdGFiQ29udGVudFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVu
c2lvblRhYklETWFwLmdldChleHRlbnNpb25UYWJJRCk7CkBAIC0zOTMsNiArMzk2LDMwIEBAIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgIHJldHVybiB7YW5jaG9yVGFiVHlwZSwgYW5j
aG9yVGFiSW5kZXgsIGRpc3RhbmNlRnJvbUFuY2hvclRhYn07CiAgICAgfQogCisgICAgX2ZyYW1l
RXhlY3V0aW9uQ29udGV4dEZvckZyYW1lVVJMKGZyYW1lVVJMKQorICAgIHsKKyAgICAgICAgaWYg
KCFmcmFtZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJh
bWU7CisKKyAgICAgICAgbGV0IGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJhbWVzLmZpbmQo
KGtub3duRnJhbWUpID0+IGtub3duRnJhbWUudXJsID09PSBmcmFtZVVSTCk7CisgICAgICAgIGlm
IChmcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgICAgICBsZXQgZnJhbWVV
UkxQYXJ0cyA9IG5ldyBVUkwoZnJhbWVVUkwpOworICAgICAgICBpZiAoZnJhbWVVUkxQYXJ0cy5z
ZWFyY2gubGVuZ3RoIHx8IGZyYW1lVVJMUGFydHMuaGFzaC5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gV0kubmV0d29ya01hbmFnZXIuZnJhbWVzLmZp
bmQoKGtub3duRnJhbWUpID0+IHsKKyAgICAgICAgICAgIGxldCBrbm93bkZyYW1lVVJMUGFydHMg
PSBuZXcgVVJMKGtub3duRnJhbWUudXJsKTsKKyAgICAgICAgICAgIGlmICgha25vd25GcmFtZVVS
TFBhcnRzLnNlYXJjaC5sZW5ndGggJiYgIWtub3duRnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGtub3duRnJhbWVV
UkxQYXJ0cy5zZWFyY2ggPSAiIjsKKyAgICAgICAgICAgIGtub3duRnJhbWVVUkxQYXJ0cy5oYXNo
ID0gIiI7CisgICAgICAgICAgICByZXR1cm4ga25vd25GcmFtZVVSTFBhcnRzLnRvU3RyaW5nKCkg
PT09IGZyYW1lVVJMOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBfaGFuZGxlTWFpblJlc291
cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNN
YWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBhNWM0NTdkODJhOGY3ZjExZDk0ODQz
YTk3ZTQyMTJiMmUzYTVlYjA0Li41YzE4OWFiY2MzOTc1MzcxYjhkZmQ4ZTU3OWEzNWM2M2ZlMWYz
NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC02Myw3ICs2Myw3IEBAIFdLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcygxMi4wKSkKICAqIHNjcmlwdFNvdXJjZSBpcyB0cmVhdGVkIGFzIGEgdG9wLWxl
dmVsIGV2YWx1YXRpb24uIEJ5IGRlZmF1bHQsIHRoZSBzY3JpcHQgaXMgZXZhbHVhdGVkIGluIHRo
ZSBpbnNwZWN0ZWQgcGFnZSdzIHNjcmlwdCBjb250ZXh0LgogICogVGhlIGluc3BlY3RlZCBwYWdl
IHVsdGltYXRlbHkgY29udHJvbHMgaXRzIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCB0aGUgcmVzdWx0
IG9mIHRoaXMgZXZhbHVhdGlvbi4gVGh1cywgdGhlIHJlc3VsdCBzaGFsbCBiZSB0cmVhdGVkIGFz
IHVudHJ1c3RlZCBpbnB1dC4KICAqLwotLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5
T3JpZ2luOihOU1VSTCAqKWNvbnRleHRTZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICogX051bGxhYmxlLCBpZCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwor
LSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6
KE5TVVJMICogX051bGxhYmxlKWZyYW1lVVJMIGNvbnRleHRTZWN1cml0eU9yaWdpbjooTlNVUkwg
KiBfTnVsbGFibGUpY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0
OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KE5TRXJyb3IgKiBfTnVsbGFibGUsIGlkIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC8q
KgogICogQGFic3RyYWN0IEV2YWx1YXRlcyBKYXZhU2NyaXB0IGluIHRoZSBjb250ZXh0IG9mIGEg
V2ViIEluc3BlY3RvciB0YWIgY3JlYXRlZCBieSB0aGlzIF9XS0luc3BlY3RvckV4dGVuc2lvbi4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2M2Qz
MzA3YzkwNjgzNjczZTZmMjlmZjlhOTlhMDEyNGQyMjUwNjk1Li5jODg0Yzk2YzQ2ZDIwOTZlMzEx
NjQ1NWEyZGY3MzhjMjhiNjllMGUwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTItMjAgIFBhdHJpY2sgQW5n
bGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVu
dCBgZnJhbWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRvdy5ldmFsYCBj
b21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjI1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZXZhbHVhdGluZyBzY3JpcHQgb24gYW4gaW5zcGVjdGVkIHBh
Z2UgZnJvbSBhbiBleHRlbnNpb24sIGluY2x1ZGluZyBldmFsdWF0aW5nIG9uIGFuIGlubmVyCisg
ICAgICAgIGZyYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKFRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRP
blBhZ2VJbm5lckZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTIwICBUaW0gTmd1eWVuICA8
bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZThhODIwODE1OGIz
YWQxZWM4Y2JiM2E0MmUyNDgwOGU2ZDM3MTA1YS4uMjRkNjNkMWJhNjQ3NzQ5M2U5NmNkNmI2YWU4
ZDQwZTczNzFhYjA1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OSw2ICsxNjksOCBA
QAogCQkyRUIyOUQ1RTFGNzYyREI5MDAyM0E1RjEgLyogZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRUIyOUQ1RDFGNzYyREE1MDAyM0E1RjEgLyogZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRt
bCAqLzsgfTsKIAkJMkVCRDlEMEEyMTM0NzMwRDAwMkRBNzU4IC8qIHZpZGVvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDRDMyRjcy
MDY1QjcyQTAwNjRBNEJFIC8qIHZpZGVvLmh0bWwgKi87IH07CiAJCTJFQzcwMzRBMjZBRjVFODgw
MDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUM3MDM0OTI2QUY1RTg4MDAyQjJEMzcgLyogS2V5Ym9h
cmRFdmVudFRlc3RzLm1tICovOyB9OworCQkyRUQ4ODgyMzI3NzEyNUFCMDBEQjdFOTkgLyogV0tJ
bnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDg4ODIxMjc3MTFGMTIw
MERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwg
Ki87IH07CisJCTJFRDg4ODI0Mjc3MTI1QUIwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lv
bkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDg4ODIyMjc3MTIwM0EwMERCN0U5
OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5o
dG1sICovOyB9OwogCQkyRUZGMDZDMzFEODg2MjFFMDAwNEJCMzAgLyogbGFyZ2UtdmlkZW8tb2Zm
c2NyZWVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkVGRjA2QzIxRDg4NjIxMjAwMDRCQjMwIC8qIGxhcmdlLXZpZGVvLW9mZnNjcmVl
bi5odG1sICovOyB9OwogCQkyRUZGMDZDNTFEODg2Nzc2MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVv
LXNvdXJjZS1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAvKiBjaGFuZ2Utdmlk
ZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi87IH07CiAJCTJFRkYwNkM3MUQ4ODZBNTgwMDA0QkIz
MCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkM2MUQ4ODZBNTYwMDA0QkIz
MCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1sICovOyB9OwpAQCAtMTYyMSw2ICsx
NjIzLDggQEAKIAkJCQlDRTE0RjFBNDE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk0NjhG
MkY5NDIzNjhEQUYxMDBGNEI4NjQgLyogd2luZG93LW9wZW4tdGhlbi1kb2N1bWVudC1vcGVuLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQTVFMjAyNzUxNUIyMUY2RTAwQzEzRTE0IC8q
IFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJMkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGVTY3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRUQ4ODgyNDI3
NzEyNUFCMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFn
ZUlubmVyRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQluYW1lID0g
IkNvcHkgUmVzb3VyY2VzIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwpAQCAtMTg0NCw2ICsxODQ4LDggQEAKIAkJMkVCMjlENUQxRjc2MkRBNTAwMjNBNUYxIC8q
IGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJFQzcwMzQ5MjZBRjVFODgwMDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50VGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLZXlib2FyZEV2ZW50VGVzdHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFQ0ZGNTU0MUQ5QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5n
Q29udHJvbHNUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0
ZVNjcmlwdE9uUGFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0
ZVNjcmlwdE9uUGFnZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUQ4ODgy
MjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9u
UGFnZUlubmVyRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFRkYwNkMyMUQ4ODYyMTIwMDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIz
MCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12
aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hh
bmdlLXZpZGVvLXNvdXJjZS1vbi1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MjI0LDYgKzQyMzAsOCBAQAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBX
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJCTUxMjBDODNCMUU2NzRFMzUw
MDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLywKIAkJCQkyRTEz
MUMxNzFEODNBOTdFMDAxQkEzNkMgLyogd2lkZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgKi8sCisJCQkJMkVEODg4MjEyNzcxMUYxMjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0
ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCAqLywKKwkJCQkyRUQ4ODgyMjI3NzEyMDNB
MDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVy
RnJhbWUuaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDY2ZDkzMTZlM2Y0
OWE5MWY4ODJkNWFlZjRiZTY5MDFhMTA1ZTFkYmUuLmFmYmJlZjA4NTUzMThkNTBkOWU0YmE4MzI0
NTNlYWNlZTdmYjQ1ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMzAsNiArMzAs
NyBAQAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiVGVzdENv
Y29hLmgiCiAjaW1wb3J0ICJUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9y
dCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CkBAIC0zODIsNCArMzgzLDEyOSBAQCBURVNUKFdLSW5zcGVjdG9yRXh0
ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiQ2FuUmV0dXJuUHJvbWlzZXMpCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOwog
fQogCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdE9uUGFnZSkKK3sK
KyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29u
ZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlF
UzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0Nv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisKKyAgICBhdXRvICp0ZXN0UGFnZVBhdGggPSBbTlNCdW5kbGUubWFpbkJ1bmRsZSBw
YXRoRm9yUmVzb3VyY2U6QCJXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdl
IiBvZlR5cGU6QCJodG1sIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CisgICAgYXV0byAqdGVzdFBhZ2VCYXNlVVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDp0ZXN0
UGFnZVBhdGguc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKKyAgICBhdXRvICp0
ZXN0UGFnZUZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnRlc3RQYWdlUGF0aC5sYXN0
UGF0aENvbXBvbmVudCByZWxhdGl2ZVRvVVJMOnRlc3RQYWdlQmFzZVVSTF07CisKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IGxvYWRGaWxlVVJMOnRlc3RQYWdlRmlsZVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDp0ZXN0
UGFnZUZpbGVVUkwuVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKKyAgICBbbmF2aWdh
dGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0
dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uSUQgPSBbTlNV
VUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgYXV0byBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVy
ID0gQCJvcmcud2Via2l0LlRlc3RXZWJLaXRBUEkuRm91cnRoRXh0ZW5zaW9uIjsKKyAgICBhdXRv
IGV4dGVuc2lvbkRpc3BsYXlOYW1lID0gQCJGb3VydGhFeHRlbnNpb24iOworCisgICAgLy8gUmVn
aXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9
IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJ
RDpleHRlbnNpb25JRCBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyOmV4dGVuc2lvbkJ1bmRsZUlk
ZW50aWZpZXIgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0Vycm9yICplcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICpleHRlbnNpb24pIHsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0
ZW5zaW9uKTsKKyAgICAgICAgc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uID0gZXh0ZW5zaW9uOwor
CisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisg
ICAgYXV0byBleHRlbnNpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckV4dGVuc2lvbkRl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBbc2hhcmVkSW5z
cGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRlOmV4dGVuc2lvbkRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIC8vIENyZWF0ZSBhbmQgc2hvdyBhbiBleHRlbnNpb24gdGFiLgorICAgIGF1dG8gaWNvblVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZvdXJ0aEV4dGVuc2lv
bi9JbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmciXTsKKyAgICBhdXRvIHNvdXJj
ZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZvdXJ0aEV4dGVu
c2lvbi9JbnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwiXTsKKworICAgIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24g
Y3JlYXRlVGFiV2l0aE5hbWU6QCJGb3VydGhFeHRlbnNpb24tVGFiIiB0YWJJY29uVVJMOmljb25V
Ukwgc291cmNlVVJMOnNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9y
LCBOU1N0cmluZyAqZXh0ZW5zaW9uVGFiSWRlbnRpZmllcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb25UYWJJZGVudGlmaWVy
KTsKKyAgICAgICAgc2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllciA9IGV4dGVuc2lvblRhYklk
ZW50aWZpZXI7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCk7CisKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBkaWRT
aG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIHNob3dFeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRFeHRlbnNpb25UYWJJZGVu
dGlmaWVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkU2hv
d0V4dGVuc2lvblRhYldhc0NhbGxlZCk7CisKKyAgICBhdXRvIG1haW5GcmFtZVNlY3JldFN0cmlu
ZyA9IEAiNDItbWFpbkZyYW1lIjsKKyAgICBhdXRvIGlubmVyRnJhbWVTZWNyZXRTdHJpbmcgPSBA
IjQyLWlubmVyRnJhbWUiOworICAgIGF1dG8gc2NyaXB0U291cmNlID0gQCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc2VjcmV0JykuaW5uZXJUZXh0IjsKKworICAgIC8vIFRlc3QgbWFpbiBmcmFt
ZSBldmFsdWF0aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAg
IFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlIGZy
YW1lVVJMOm5pbCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFy
eSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIG1haW5G
cmFtZVNlY3JldFN0cmluZyk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBUZXN0IG1haW4gZnJhbWUgZXZhbHVhdGlvbiBmYWls
dXJlLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJ
bnNwZWN0b3JFeHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6QCJnb3RvIGZhaWwiIGZyYW1lVVJMOm5p
bCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNl
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFyeSAqcmVzdWx0
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVM
TChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCk7CisKKyAgICAvLyBUZXN0IGxvb3NlIGZyYW1lVVJMIGV2YWx1YXRpb24uCisgICAgYXV0
byAqdGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2Ny
aXB0T25QYWdlSW5uZXJGcmFtZS5odG1sIiwgW1t0ZXN0UGFnZUZpbGVVUkwgVVJMQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XSBhYnNvbHV0ZVN0cmluZ11dXTsKKworICAgIHBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gZXZh
bHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlIGZyYW1lVVJMOnRlc3RQYWdlSW5uZXJGcmFtZUZpbGVV
UkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOm5pbCB1c2VDb250ZW50U2NyaXB0Q29udGV4dDpmYWxz
ZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBOU0RpY3Rpb25hcnkgKnJlc3Vs
dCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVM
TChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVzdWx0LCBpbm5lckZyYW1lU2Vj
cmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkKTsKKworICAgIC8vIFRlc3Qgc3RyaWN0IGZyYW1lVVJMIGV2YWx1YXRpb24uCisgICAg
YXV0byAqdGVzdFBhZ2VJbm5lckZyYW1lU3RyaWN0RmlsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA/cXVlcnk9cGFyYW0jZnJhZ21lbnQi
LCBbdGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCBhYnNvbHV0ZVN0cmluZ11dXTsKKworICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRl
bnNpb24gZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlIGZyYW1lVVJMOnRlc3RQYWdlSW5uZXJG
cmFtZVN0cmljdEZpbGVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOm5pbCB1c2VDb250ZW50U2Ny
aXB0Q29udGV4dDpmYWxzZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBOU0Rp
Y3Rpb25hcnkgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9OT1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVzdWx0
LCBpbm5lckZyYW1lU2VjcmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFVucmVnaXN0ZXIgdGhlIHRlc3QgZXh0
ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2Vi
VmlldyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0ZW5zaW9uOnNoYXJlZEluc3BlY3RvckV4dGVu
c2lvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBlcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0
ZVNjcmlwdE9uUGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzOGRmYmJiODI1YWM1YmI3NmQ5NDNhMDAw
NDBhMzI5MGM1MmRlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2Uu
aHRtbApAQCAtMCwwICsxLDggQEAKKzxodG1sPgorICAgIDxoZWFkPlRlc3QgcGFnZSB0byBiZSBp
bnNwZWN0ZWQ8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgcGFnZSB0byBiZSBp
bnNwZWN0ZWQuPC9wPgorICAgICAgICA8cCBpZD0ic2VjcmV0Ij40Mi1tYWluRnJhbWU8L3A+Cisg
ICAgICAgIDxpZnJhbWUgc3JjPSIuL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRP
blBhZ2VJbm5lckZyYW1lLmh0bWw/cXVlcnk9cGFyYW0jZnJhZ21lbnQiPjwvaWZyYW1lPgorICAg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVy
RnJhbWUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zY2ZjMTkxNjJiZjg2NTM1NWU4ZjJmNjg0YWNmY2UxNjliYTFhNGE5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sCkBAIC0wLDAgKzEs
NyBAQAorPGh0bWw+CisgICAgPGhlYWQ+VGVzdCBpbm5lciBmcmFtZSB0byBiZSBpbnNwZWN0ZWQ8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgaW5uZXIgZnJhbWUgdG8gYmUgaW5z
cGVjdGVkLjwvcD4KKyAgICAgICAgPHAgaWQ9InNlY3JldCI+NDItaW5uZXJGcmFtZTwvcD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447636</attachid>
            <date>2021-12-20 14:02:39 -0800</date>
            <delta_ts>2021-12-20 16:31:39 -0800</delta_ts>
            <desc>Patch v2.1 - Adjust function naming</desc>
            <filename>bug-222568-20211220140238.patch</filename>
            <type>text/plain</type>
            <size>22144</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MjQ0NmI2YjhhODU4N2FkY2I3MmE1M2U4MDI4MTA3NjViMGRlOGJlLi5hMzQ3MjBmMWFjZjJhYzQ1
M2YzM2EzYTNmODBjODBhNTNiZjFiMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMS0xMi0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGV2YWx1YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGlu
IGEgc3BlY2lmaWMgZnJhbWUgb24gdGhlIHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQor
ICAgICAgICBmcmFtZSdzIFVSTC4gRnJhbWUgVVJMcyBhcmUgbWF0Y2hlZCBpbiB0d28gc3RlcHMs
IGZpcnN0IGxvb2tpbmcgZm9yIGFuIGV4YWN0IFVSTCBtYXRjaCwgaW5jbHVkaW5nIHF1ZXJ5Cisg
ICAgICAgIHBhcmFtZXRlcnMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIG5vIG1hdGNoIGlz
IGZvdW5kIGFuZCB0aGUgcHJvdmlkZWQgYG9wdGlvbnMuZnJhbWVVUkxgIGRvZXMgbm90IGhhdmUg
YW55CisgICAgICAgIGZyYWdtZW50IGlkZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBj
aGVjayBpcyB0aGVuIG1hZGUgYWdhaW5zdCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRp
bWUKKyAgICAgICAgZXhjbHVkaW5nIHRoZWlyIGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHF1ZXJ5
IHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6
CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5y
ZWxvYWRGb3JFeHRlbnNpb24pOgorICAgICAgICAtIERyaXZlLWJ5IHJlbW92YWwgb2YgdHJhaWxp
bmcgc3BhY2VzLgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5w
cm90b3R5cGUuX2ZyYW1lRm9yRnJhbWVVUkwpOgorCiAyMDIxLTEyLTE2ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQxNzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTQ5NTUxOWZlOTljM2NkMWVjZTQx
MjY2MjQyN2I4MDFiYWZlZGVkOC4uNDVlZWU4NGU1NzEwNGI0MDZlMjRiNWI3MWE1YzBhMjQ5NDk3
MDc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0yMCAgUGF0cmljayBBbmds
ZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50
IGBmcmFtZVVSTGAgb3B0aW9uIGZvciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNv
bW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MjU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
dyB0ZXN0OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLm1tCisKKyAgICAgICAgQ29ycmVjdCB0aGUgQVBJIHRvIGluZGljYXRlIHRoYXQg
YGZyYW1lVVJMYCBhbmQgYGNvbnRleHRTZWN1cml0eU9yaWdpbmAgYXJlIG51bGxhYmxlIHBhcmFt
ZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbi5oOgorCiAyMDIxLTEyLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXByb3ZlIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
IGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyLmpzCmluZGV4IGRiNTVmN2YwZWY3ZWYzYTRjNjliZDE2OGUzM2RiMWYx
MjFhYWFjMzMuLjFkNGJlNWNkMmZiZGEzYjU0YzQzZWVlZGNhODhhYjNmMjg0YzZjYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5qcwpAQCAtMTMzLDExICsxMzMsOSBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAg
ICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxp
ZFJlcXVlc3Q7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVt
Lzc0MTgwMzU1PiBpbXBsZW1lbnQgZXhlY3V0aW9uIGNvbnRleHQgc2VsZWN0aW9uIG9wdGlvbnMK
LSAgICAgICAgaWYgKGZyYW1lVVJMKSB7Ci0gICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVy
cm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogdGhlICdmcmFtZVVSTCcgb3B0aW9uIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKLSAgICAgICAgfQorICAgICAg
ICBsZXQgZnJhbWUgPSB0aGlzLl9mcmFtZUZvckZyYW1lVVJMKGZyYW1lVVJMKTsKKyAgICAgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgICAgIHJldHVybiB7ImVycm9yIjogYFVuYWJsZSB0byBldmFs
dWF0ZSBzY3JpcHQgaW4gdW5rbm93biBmcmFtZSB3aXRoIFVSTDogJHtmcmFtZVVSTH1gfTsKIAog
ICAgICAgICBpZiAoY29udGV4dFNlY3VyaXR5T3JpZ2luKSB7CiAgICAgICAgICAgICBXSS5yZXBv
cnRJbnRlcm5hbEVycm9yKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogdGhlICdjb250ZXh0
U2VjdXJpdHlPcmlnaW4nIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVkLiIpOwpAQCAtMTQ5
LDcgKzE0NywxMiBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3Mg
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAgcmV0dXJu
IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBsZXQgZXZhbHVhdGlvbkNvbnRleHQgPSBXSS5ydW50aW1lTWFuYWdl
ci5hY3RpdmVFeGVjdXRpb25Db250ZXh0OworICAgICAgICBsZXQgZXZhbHVhdGlvbkNvbnRleHQg
PSBmcmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgaWYgKCFldmFsdWF0aW9uQ29u
dGV4dCkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb246IE5vICdwYWdlRXhlY3V0aW9uQ29udGV4dCcgd2FzIHByZXNlbnQgZm9y
IGZyYW1lIHdpdGggVVJMOiAiICsgZnJhbWUudXJsKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAg
IH0KKwogICAgICAgICByZXR1cm4gZXZhbHVhdGlvbkNvbnRleHQudGFyZ2V0LlJ1bnRpbWVBZ2Vu
dC5ldmFsdWF0ZS5pbnZva2UoewogICAgICAgICAgICAgZXhwcmVzc2lvbjogc2NyaXB0U291cmNl
LAogICAgICAgICAgICAgb2JqZWN0R3JvdXA6ICJleHRlbnNpb24tZXZhbHVhdGlvbiIsCkBAIC0x
NjUsNyArMTY4LDcgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNz
IFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVy
biB3YXNUaHJvd24gPyB7ImVycm9yIjogcmVzdWx0T3JFcnJvci5kZXNjcmlwdGlvbn0gOiB7InJl
c3VsdCI6IHZhbHVlfTsKICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiBlcnJvci5kZXNjcmlw
dGlvbik7CiAgICAgfQotICAgIAorCiAgICAgcmVsb2FkRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5qZWN0ZWRTY3JpcHR9ID0ge30pCiAgICAgewog
ICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAu
Z2V0KGV4dGVuc2lvbklEKTsKQEAgLTE4NCwxNCArMTg3LDE0IEBAIFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
IGV4dGVuCiAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJyZWxvYWRGb3JFeHRl
bnNpb246IHRoZSAnaW5qZWN0ZWRTY3JpcHQnIG9wdGlvbiBpcyBub3QgeWV0IGltcGxlbWVudGVk
LiIpOwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNv
ZGUuTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbGV0IHRh
cmdldCA9IFdJLmFzc3VtaW5nTWFpblRhcmdldCgpOwogICAgICAgICBpZiAoIXRhcmdldC5oYXND
b21tYW5kKCJQYWdlLnJlbG9hZCIpKQogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7Ci0gICAgICAgIAorCiAgICAgICAg
IHJldHVybiB0YXJnZXQuUGFnZUFnZW50LnJlbG9hZC5pbnZva2Uoe2lnbm9yZUNhY2hlfSk7CiAg
ICAgfQotICAgIAorCiAgICAgc2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25UYWJJRCwgb3B0aW9u
cyA9IHt9KQogICAgIHsKICAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fZXh0ZW5z
aW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC5nZXQoZXh0ZW5zaW9uVGFiSUQp
OwpAQCAtMzkzLDYgKzM5NiwzMCBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICBy
ZXR1cm4ge2FuY2hvclRhYlR5cGUsIGFuY2hvclRhYkluZGV4LCBkaXN0YW5jZUZyb21BbmNob3JU
YWJ9OwogICAgIH0KIAorICAgIF9mcmFtZUZvckZyYW1lVVJMKGZyYW1lVVJMKQorICAgIHsKKyAg
ICAgICAgaWYgKCFmcmFtZVVSTCkKKyAgICAgICAgICAgIHJldHVybiBXSS5uZXR3b3JrTWFuYWdl
ci5tYWluRnJhbWU7CisKKyAgICAgICAgbGV0IGZyYW1lID0gV0kubmV0d29ya01hbmFnZXIuZnJh
bWVzLmZpbmQoKGtub3duRnJhbWUpID0+IGtub3duRnJhbWUudXJsID09PSBmcmFtZVVSTCk7Cisg
ICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgICAgICBs
ZXQgZnJhbWVVUkxQYXJ0cyA9IG5ldyBVUkwoZnJhbWVVUkwpOworICAgICAgICBpZiAoZnJhbWVV
UkxQYXJ0cy5zZWFyY2gubGVuZ3RoIHx8IGZyYW1lVVJMUGFydHMuaGFzaC5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gV0kubmV0d29ya01hbmFnZXIu
ZnJhbWVzLmZpbmQoKGtub3duRnJhbWUpID0+IHsKKyAgICAgICAgICAgIGxldCBrbm93bkZyYW1l
VVJMUGFydHMgPSBuZXcgVVJMKGtub3duRnJhbWUudXJsKTsKKyAgICAgICAgICAgIGlmICgha25v
d25GcmFtZVVSTFBhcnRzLnNlYXJjaC5sZW5ndGggJiYgIWtub3duRnJhbWVVUkxQYXJ0cy5oYXNo
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGtu
b3duRnJhbWVVUkxQYXJ0cy5zZWFyY2ggPSAiIjsKKyAgICAgICAgICAgIGtub3duRnJhbWVVUkxQ
YXJ0cy5oYXNoID0gIiI7CisgICAgICAgICAgICByZXR1cm4ga25vd25GcmFtZVVSTFBhcnRzLnRv
U3RyaW5nKCkgPT09IGZyYW1lVVJMOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBfaGFuZGxl
TWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFldmVudC50
YXJnZXQuaXNNYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAppbmRleCBhNWM0NTdkODJhOGY3
ZjExZDk0ODQzYTk3ZTQyMTJiMmUzYTVlYjA0Li41YzE4OWFiY2MzOTc1MzcxYjhkZmQ4ZTU3OWEz
NWM2M2ZlMWYzNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCkBAIC02Myw3ICs2Myw3IEBAIFdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcygxMi4wKSkKICAqIHNjcmlwdFNvdXJjZSBpcyB0cmVhdGVkIGFz
IGEgdG9wLWxldmVsIGV2YWx1YXRpb24uIEJ5IGRlZmF1bHQsIHRoZSBzY3JpcHQgaXMgZXZhbHVh
dGVkIGluIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIHNjcmlwdCBjb250ZXh0LgogICogVGhlIGluc3Bl
Y3RlZCBwYWdlIHVsdGltYXRlbHkgY29udHJvbHMgaXRzIGV4ZWN1dGlvbiBjb250ZXh0IGFuZCB0
aGUgcmVzdWx0IG9mIHRoaXMgZXZhbHVhdGlvbi4gVGh1cywgdGhlIHJlc3VsdCBzaGFsbCBiZSB0
cmVhdGVkIGFzIHVudHJ1c3RlZCBpbnB1dC4KICAqLwotLSAodm9pZClldmFsdWF0ZVNjcmlwdDoo
TlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGV4
dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRleHRTZWN1cml0eU9yaWdpbiB1c2VDb250ZW50
U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0Q29udGV4dCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlLCBpZCByZXN1bHQpKWNvbXBsZXRpb25I
YW5kbGVyOworLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2Ug
ZnJhbWVVUkw6KE5TVVJMICogX051bGxhYmxlKWZyYW1lVVJMIGNvbnRleHRTZWN1cml0eU9yaWdp
bjooTlNVUkwgKiBfTnVsbGFibGUpY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIGlkIHJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXI7CiAKIC8qKgogICogQGFic3RyYWN0IEV2YWx1YXRlcyBKYXZhU2NyaXB0IGluIHRoZSBjb250
ZXh0IG9mIGEgV2ViIEluc3BlY3RvciB0YWIgY3JlYXRlZCBieSB0aGlzIF9XS0luc3BlY3RvckV4
dGVuc2lvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA2M2QzMzA3YzkwNjgzNjczZTZmMjlmZjlhOTlhMDEyNGQyMjUwNjk1Li5jODg0Yzk2YzQ2
ZDIwOTZlMzExNjQ1NWEyZGY3MzhjMjhiNjllMGUwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMTItMjAgIFBh
dHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEltcGxlbWVudCBgZnJhbWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRv
dy5ldmFsYCBjb21tYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZXZhbHVhdGluZyBzY3JpcHQgb24gYW4gaW5z
cGVjdGVkIHBhZ2UgZnJvbSBhbiBleHRlbnNpb24sIGluY2x1ZGluZyBldmFsdWF0aW5nIG9uIGFu
IGlubmVyCisgICAgICAgIGZyYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTIwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZThh
ODIwODE1OGIzYWQxZWM4Y2JiM2E0MmUyNDgwOGU2ZDM3MTA1YS4uMjRkNjNkMWJhNjQ3NzQ5M2U5
NmNkNmI2YWU4ZDQwZTczNzFhYjA1YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2OSw2
ICsxNjksOCBAQAogCQkyRUIyOUQ1RTFGNzYyREI5MDAyM0E1RjEgLyogZHVtcC1kYXRhdHJhbnNm
ZXItdHlwZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRUIyOUQ1RDFGNzYyREE1MDAyM0E1RjEgLyogZHVtcC1kYXRhdHJhbnNmZXIt
dHlwZXMuaHRtbCAqLzsgfTsKIAkJMkVCRDlEMEEyMTM0NzMwRDAwMkRBNzU4IC8qIHZpZGVvLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdDRDMyRjcyMDY1QjcyQTAwNjRBNEJFIC8qIHZpZGVvLmh0bWwgKi87IH07CiAJCTJFQzcwMzRB
MjZBRjVFODgwMDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUM3MDM0OTI2QUY1RTg4MDAyQjJEMzcg
LyogS2V5Ym9hcmRFdmVudFRlc3RzLm1tICovOyB9OworCQkyRUQ4ODgyMzI3NzEyNUFCMDBEQjdF
OTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDg4ODIx
Mjc3MTFGMTIwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25Q
YWdlLmh0bWwgKi87IH07CisJCTJFRDg4ODI0Mjc3MTI1QUIwMERCN0U5OSAvKiBXS0luc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRDg4ODIyMjc3MTIw
M0EwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5u
ZXJGcmFtZS5odG1sICovOyB9OwogCQkyRUZGMDZDMzFEODg2MjFFMDAwNEJCMzAgLyogbGFyZ2Ut
dmlkZW8tb2Zmc2NyZWVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2QzIxRDg4NjIxMjAwMDRCQjMwIC8qIGxhcmdlLXZpZGVv
LW9mZnNjcmVlbi5odG1sICovOyB9OwogCQkyRUZGMDZDNTFEODg2Nzc2MDAwNEJCMzAgLyogY2hh
bmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAvKiBj
aGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi87IH07CiAJCTJFRkYwNkM3MUQ4ODZB
NTgwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkM2MUQ4ODZB
NTYwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1sICovOyB9OwpAQCAt
MTYyMSw2ICsxNjIzLDggQEAKIAkJCQlDRTE0RjFBNDE4MTg3M0IwMDAxQzI3MDUgLyogV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk0NjhGMkY5NDIzNjhEQUYxMDBGNEI4NjQgLyogd2luZG93LW9wZW4tdGhlbi1kb2N1bWVu
dC1vcGVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQTVFMjAyNzUxNUIyMUY2RTAw
QzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJMkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5z
aW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQky
RUQ4ODgyNDI3NzEyNUFCMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNj
cmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCSk7CiAJ
CQluYW1lID0gIkNvcHkgUmVzb3VyY2VzIjsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwpAQCAtMTg0NCw2ICsxODQ4LDggQEAKIAkJMkVCMjlENUQxRjc2MkRBNTAw
MjNBNUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFQzcwMzQ5MjZBRjVFODgwMDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLZXlib2FyZEV2ZW50VGVzdHMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQ0ZGNTU0MUQ5QjEyRjgwMEI1NTM5NCAvKiBO
b3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0
ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5z
aW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFRkYwNkMyMUQ4ODYyMTIwMDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZz
Y3JlZW4uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1vZmZz
Y3JlZW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRkYwNkM0MUQ4ODY3
NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8q
IGNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MjI0LDYgKzQyMzAsOCBAQAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJCTUxMjBDODNC
MUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLywK
IAkJCQkyRTEzMUMxNzFEODNBOTdFMDAxQkEzNkMgLyogd2lkZS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgKi8sCisJCQkJMkVEODg4MjEyNzcxMUYxMjAwREI3RTk5IC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCAqLywKKwkJCQkyRUQ4ODgy
MjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9u
UGFnZUlubmVyRnJhbWUuaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IDY2
ZDkzMTZlM2Y0OWE5MWY4ODJkNWFlZjRiZTY5MDFhMTA1ZTFkYmUuLmFmYmJlZjA4NTUzMThkNTBk
OWU0YmE4MzI0NTNlYWNlZTdmYjQ1ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAt
MzAsNiArMzAsNyBAQAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9y
dCAiVGVzdENvY29hLmgiCiAjaW1wb3J0ICJUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5o
IgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXRpbGl0aWVz
LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0zODIsNCArMzgzLDEyOSBAQCBURVNUKFdLSW5z
cGVjdG9yRXh0ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiQ2FuUmV0dXJuUHJv
bWlzZXMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQpOwogfQogCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdE9u
UGFnZSkKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3
ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9w
dE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBh
dXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvICp0ZXN0UGFnZVBhdGggPSBbTlNCdW5kbGUubWFp
bkJ1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2Ny
aXB0T25QYWdlIiBvZlR5cGU6QCJodG1sIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisgICAgYXV0byAqdGVzdFBhZ2VCYXNlVVJMID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDp0ZXN0UGFnZVBhdGguc3RyaW5nQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKKyAg
ICBhdXRvICp0ZXN0UGFnZUZpbGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnRlc3RQYWdl
UGF0aC5sYXN0UGF0aENvbXBvbmVudCByZWxhdGl2ZVRvVVJMOnRlc3RQYWdlQmFzZVVSTF07CisK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOworICAg
IFt3ZWJWaWV3IGxvYWRGaWxlVVJMOnRlc3RQYWdlRmlsZVVSTCBhbGxvd2luZ1JlYWRBY2Nlc3NU
b1VSTDp0ZXN0UGFnZUZpbGVVUkwuVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKKyAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIGF1dG8gZXh0ZW5zaW9u
SUQgPSBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgYXV0byBleHRlbnNpb25CdW5kbGVJ
ZGVudGlmaWVyID0gQCJvcmcud2Via2l0LlRlc3RXZWJLaXRBUEkuRm91cnRoRXh0ZW5zaW9uIjsK
KyAgICBhdXRvIGV4dGVuc2lvbkRpc3BsYXlOYW1lID0gQCJGb3VydGhFeHRlbnNpb24iOworCisg
ICAgLy8gUmVnaXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVu
c2lvbldpdGhJRDpleHRlbnNpb25JRCBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyOmV4dGVuc2lv
bkJ1bmRsZUlkZW50aWZpZXIgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICpleHRl
bnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9U
X05VTEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uID0gZXh0
ZW5zaW9uOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQpOworCisgICAgYXV0byBleHRlbnNpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckV4
dGVuc2lvbkRlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbiBuZXddKTsKKyAgICBb
c2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIHNldERlbGVnYXRlOmV4dGVuc2lvbkRlbGVnYXRlLmdl
dCgpXTsKKworICAgIC8vIENyZWF0ZSBhbmQgc2hvdyBhbiBleHRlbnNpb24gdGFiLgorICAgIGF1
dG8gaWNvblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0ZvdXJ0
aEV4dGVuc2lvbi9JbnNwZWN0b3JFeHRlbnNpb24tVGFiSWNvbi0zMHgzMC5wbmciXTsKKyAgICBh
dXRvIHNvdXJjZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdC1yZXNvdXJjZTovL0Zv
dXJ0aEV4dGVuc2lvbi9JbnNwZWN0b3JFeHRlbnNpb24tYmFzaWMtdGFiLmh0bWwiXTsKKworICAg
IHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JF
eHRlbnNpb24gY3JlYXRlVGFiV2l0aE5hbWU6QCJGb3VydGhFeHRlbnNpb24tVGFiIiB0YWJJY29u
VVJMOmljb25VUkwgc291cmNlVVJMOnNvdXJjZVVSTCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJy
b3IgKmVycm9yLCBOU1N0cmluZyAqZXh0ZW5zaW9uVGFiSWRlbnRpZmllcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb25UYWJJ
ZGVudGlmaWVyKTsKKyAgICAgICAgc2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllciA9IGV4dGVu
c2lvblRhYklkZW50aWZpZXI7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCk7CisKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
KyAgICBkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3
IF9pbnNwZWN0b3JdIHNob3dFeHRlbnNpb25UYWJXaXRoSWRlbnRpZmllcjpzaGFyZWRFeHRlbnNp
b25UYWJJZGVudGlmaWVyLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZGlkU2hvd0V4dGVuc2lvblRhYldhc0NhbGxlZCk7CisKKyAgICBhdXRvIG1haW5GcmFtZVNl
Y3JldFN0cmluZyA9IEAiNDItbWFpbkZyYW1lIjsKKyAgICBhdXRvIGlubmVyRnJhbWVTZWNyZXRT
dHJpbmcgPSBAIjQyLWlubmVyRnJhbWUiOworICAgIGF1dG8gc2NyaXB0U291cmNlID0gQCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2VjcmV0JykuaW5uZXJUZXh0IjsKKworICAgIC8vIFRlc3Qg
bWFpbiBmcmFtZSBldmFsdWF0aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZh
bHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6c2NyaXB0
U291cmNlIGZyYW1lVVJMOm5pbCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRT
Y3JpcHRDb250ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5T
RGljdGlvbmFyeSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1
bHQsIG1haW5GcmFtZVNlY3JldFN0cmluZyk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBUZXN0IG1haW4gZnJhbWUgZXZhbHVh
dGlvbiBmYWlsdXJlLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAg
IFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6QCJnb3RvIGZhaWwiIGZy
YW1lVVJMOm5pbCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFy
eSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBUZXN0IGxvb3NlIGZyYW1lVVJMIGV2YWx1YXRpb24u
CisgICAgYXV0byAqdGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUBXS0luc3BlY3RvckV4dGVuc2lvbkV2
YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sIiwgW1t0ZXN0UGFnZUZpbGVVUkwgVVJM
QnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBhYnNvbHV0ZVN0cmluZ11dXTsKKworICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRl
bnNpb24gZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlIGZyYW1lVVJMOnRlc3RQYWdlSW5uZXJG
cmFtZUZpbGVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOm5pbCB1c2VDb250ZW50U2NyaXB0Q29u
dGV4dDpmYWxzZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBOU0RpY3Rpb25h
cnkgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVzdWx0LCBpbm5l
ckZyYW1lU2VjcmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0Nh
bGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFRlc3Qgc3RyaWN0IGZyYW1lVVJMIGV2YWx1YXRp
b24uCisgICAgYXV0byAqdGVzdFBhZ2VJbm5lckZyYW1lU3RyaWN0RmlsZVVSTCA9IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA/cXVlcnk9cGFyYW0j
ZnJhZ21lbnQiLCBbdGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCBhYnNvbHV0ZVN0cmluZ11dXTsK
KworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtzaGFyZWRJbnNw
ZWN0b3JFeHRlbnNpb24gZXZhbHVhdGVTY3JpcHQ6c2NyaXB0U291cmNlIGZyYW1lVVJMOnRlc3RQ
YWdlSW5uZXJGcmFtZVN0cmljdEZpbGVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOm5pbCB1c2VD
b250ZW50U2NyaXB0Q29udGV4dDpmYWxzZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVy
cm9yLCBOU0RpY3Rpb25hcnkgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFV
QUwocmVzdWx0LCBpbm5lckZyYW1lU2VjcmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFVucmVnaXN0ZXIgdGhl
IHRlc3QgZXh0ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
ICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0ZW5zaW9uOnNoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBlcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzOGRmYmJiODI1YWM1YmI3
NmQ5NDNhMDAwNDBhMzI5MGM1MmRlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3Jp
cHRPblBhZ2UuaHRtbApAQCAtMCwwICsxLDggQEAKKzxodG1sPgorICAgIDxoZWFkPlRlc3QgcGFn
ZSB0byBiZSBpbnNwZWN0ZWQ8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgcGFn
ZSB0byBiZSBpbnNwZWN0ZWQuPC9wPgorICAgICAgICA8cCBpZD0ic2VjcmV0Ij40Mi1tYWluRnJh
bWU8L3A+CisgICAgICAgIDxpZnJhbWUgc3JjPSIuL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw/cXVlcnk9cGFyYW0jZnJhZ21lbnQiPjwvaWZy
YW1lPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9u
UGFnZUlubmVyRnJhbWUuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2ZjMTkxNjJiZjg2NTM1NWU4ZjJmNjg0YWNmY2UxNjliYTFhNGE5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sCkBA
IC0wLDAgKzEsNyBAQAorPGh0bWw+CisgICAgPGhlYWQ+VGVzdCBpbm5lciBmcmFtZSB0byBiZSBp
bnNwZWN0ZWQ8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgaW5uZXIgZnJhbWUg
dG8gYmUgaW5zcGVjdGVkLjwvcD4KKyAgICAgICAgPHAgaWQ9InNlY3JldCI+NDItaW5uZXJGcmFt
ZTwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447662</attachid>
            <date>2021-12-20 16:31:41 -0800</date>
            <delta_ts>2021-12-21 13:56:33 -0800</delta_ts>
            <desc>Patch v2.2 - Address review comments</desc>
            <filename>bug-222568-20211220163140.patch</filename>
            <type>text/plain</type>
            <size>22242</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MjQ0NmI2YjhhODU4N2FkY2I3MmE1M2U4MDI4MTA3NjViMGRlOGJlLi4zYjIyNWI5ODU5MzQyYmEy
ZWU4NDU0N2ZiY2U0YzRmMzc3NmQxOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0xMi0yMCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGV2YWx1YXRpbmcgc2NyaXB0IGZyb20gYW4gZXh0ZW5zaW9uIGlu
IGEgc3BlY2lmaWMgZnJhbWUgb24gdGhlIHBhZ2UgYnkgcmVmZXJyaW5nIHRvIGl0IGJ5IHRoZQor
ICAgICAgICBmcmFtZSdzIFVSTC4gRnJhbWUgVVJMcyBhcmUgbWF0Y2hlZCBpbiB0aHJlZSBzdGVw
cywgZmlyc3QgbG9va2luZyBmb3IgYW4gZXhhY3QgVVJMIG1hdGNoLCBpbmNsdWRpbmcgcXVlcnkK
KyAgICAgICAgcGFyYW1ldGVycyBhbmQgZnJhZ21lbnQgaWRlbnRpZmllci4gSWYgbm8gbWF0Y2gg
aXMgZm91bmQgYW5kIHRoZSBwcm92aWRlZCBgb3B0aW9ucy5mcmFtZVVSTGAgZG9lcyBub3QgaGF2
ZSBhbnkKKyAgICAgICAgZnJhZ21lbnQgaWRlbnRpZmllciBvciBxdWVyeSBwYXJhbWV0ZXJzLCBh
IGNoZWNrIGlzIHRoZW4gbWFkZSBhZ2FpbnN0IGVhY2gga25vd24gZnJhbWUgYWdhaW4sIHRoaXMg
dGltZQorICAgICAgICBleGNsdWRpbmcgdGhlaXIgZnJhZ21lbnQgaWRlbnRpZmllci4gSWYgdGhh
dCBjaGVjayBzdGlsbCBmYWlscyB0byBmaW5kIGEgZnJhbWUgZm9yIHRoZSBVUkwsIHdlIHBlcmZv
cm0gb25lIG1vcmUKKyAgICAgICAgcGFzcywgdGhpcyB0aW1lIGV4Y2x1ZGluZyB0aGUgZnJhZ21l
bnQgaWRlbnRpZmllciBhbmQgcXVlcnkgcGFyYW1ldGVycyBmb3IgZWFjaCBrbm93biBmcmFtZS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIucHJvdG90eXBlLmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbG9hZEZvckV4dGVu
c2lvbik6CisgICAgICAgIC0gRHJpdmUtYnkgcmVtb3ZhbCBvZiB0cmFpbGluZyBzcGFjZXMuCisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5fZnJh
bWVGb3JGcmFtZVVSTCk6CisKIDIwMjEtMTItMTYgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDE3MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NDk1NTE5ZmU5OWMzY2QxZWNlNDEyNjYyNDI3YjgwMWJh
ZmVkZWQ4Li40NWVlZTg0ZTU3MTA0YjQwNmUyNGI1YjcxYTVjMGEyNDk0OTcwNzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgYGZyYW1lVVJMYCBv
cHRpb24gZm9yIGBkZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cuZXZhbGAgY29tbWFuZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3Q6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0K
KworICAgICAgICBDb3JyZWN0IHRoZSBBUEkgdG8gaW5kaWNhdGUgdGhhdCBgZnJhbWVVUkxgIGFu
ZCBgY29udGV4dFNlY3VyaXR5T3JpZ2luYCBhcmUgbnVsbGFibGUgcGFyYW1ldGVycy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisKIDIw
MjEtMTItMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIElt
cHJvdmUgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkgbG9nZ2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanMKaW5kZXggZGI1NWY3ZjBlZjdlZjNhNGM2OWJkMTY4ZTMzZGIxZjEyMWFhYWMzMy4uOWIx
ZjY0NTQ1NjdjOWFmMzI4NzdjOWVjYjZhYjMxMGQzOWQ3MTk1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0x
MzMsMTAgKzEzMywxMCBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xh
c3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAgcmV0
dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CiAg
ICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzc0MTgwMzU1PiBp
bXBsZW1lbnQgZXhlY3V0aW9uIGNvbnRleHQgc2VsZWN0aW9uIG9wdGlvbnMKLSAgICAgICAgaWYg
KGZyYW1lVVJMKSB7Ci0gICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJldmFsdWF0
ZVNjcmlwdEZvckV4dGVuc2lvbjogdGhlICdmcmFtZVVSTCcgb3B0aW9uIGlzIG5vdCB5ZXQgaW1w
bGVtZW50ZWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgbGV0IGZyYW1lID0gdGhpcy5fZnJh
bWVGb3JGcmFtZVVSTChmcmFtZVVSTCk7CisgICAgICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAg
ICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiBO
byBmcmFtZSBtYXRjaGVkIHByb3ZpZGVkIGZyYW1lVVJMOiAiICsgZnJhbWVVUkwpOworICAgICAg
ICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJl
cXVlc3Q7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29udGV4dFNlY3VyaXR5T3JpZ2luKSB7
CkBAIC0xNDksNyArMTQ5LDEyIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIg
PSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAg
ICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRl
ZDsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBldmFsdWF0aW9uQ29udGV4dCA9IFdJLnJ1bnRp
bWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgIGxldCBldmFsdWF0aW9u
Q29udGV4dCA9IGZyYW1lLnBhZ2VFeGVjdXRpb25Db250ZXh0OworICAgICAgICBpZiAoIWV2YWx1
YXRpb25Db250ZXh0KSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJldmFs
dWF0ZVNjcmlwdEZvckV4dGVuc2lvbjogTm8gJ3BhZ2VFeGVjdXRpb25Db250ZXh0JyB3YXMgcHJl
c2VudCBmb3IgZnJhbWUgd2l0aCBVUkw6ICIgKyBmcmFtZS51cmwpOworICAgICAgICAgICAgcmV0
dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuQ29udGV4dERlc3Ryb3llZDsK
KyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBldmFsdWF0aW9uQ29udGV4dC50YXJnZXQuUnVu
dGltZUFnZW50LmV2YWx1YXRlLmludm9rZSh7CiAgICAgICAgICAgICBleHByZXNzaW9uOiBzY3Jp
cHRTb3VyY2UsCiAgICAgICAgICAgICBvYmplY3RHcm91cDogImV4dGVuc2lvbi1ldmFsdWF0aW9u
IiwKQEAgLTE2NSw3ICsxNzAsNyBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAg
ICAgcmV0dXJuIHdhc1Rocm93biA/IHsiZXJyb3IiOiByZXN1bHRPckVycm9yLmRlc2NyaXB0aW9u
fSA6IHsicmVzdWx0IjogdmFsdWV9OwogICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IGVycm9y
LmRlc2NyaXB0aW9uKTsKICAgICB9Ci0gICAgCisKICAgICByZWxvYWRGb3JFeHRlbnNpb24oZXh0
ZW5zaW9uSUQsIHtpZ25vcmVDYWNoZSwgdXNlckFnZW50LCBpbmplY3RlZFNjcmlwdH0gPSB7fSkK
ICAgICB7CiAgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNp
b25JRE1hcC5nZXQoZXh0ZW5zaW9uSUQpOwpAQCAtMTg0LDE0ICsxODksMTQgQEAgV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoInJlbG9h
ZEZvckV4dGVuc2lvbjogdGhlICdpbmplY3RlZFNjcmlwdCcgb3B0aW9uIGlzIG5vdCB5ZXQgaW1w
bGVtZW50ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAgICAgICAgIGlmICghdGFy
Z2V0Lmhhc0NvbW1hbmQoIlBhZ2UucmVsb2FkIikpCiAgICAgICAgICAgICByZXR1cm4gV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKLSAgICAgICAgCisK
ICAgICAgICAgcmV0dXJuIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9rZSh7aWdub3JlQ2Fj
aGV9KTsKICAgICB9Ci0gICAgCisKICAgICBzaG93RXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklE
LCBvcHRpb25zID0ge30pCiAgICAgewogICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0aGlz
Ll9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLmdldChleHRlbnNp
b25UYWJJRCk7CkBAIC0zOTMsNiArMzk4LDM5IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAg
ICAgICAgIHJldHVybiB7YW5jaG9yVGFiVHlwZSwgYW5jaG9yVGFiSW5kZXgsIGRpc3RhbmNlRnJv
bUFuY2hvclRhYn07CiAgICAgfQogCisgICAgX2ZyYW1lRm9yRnJhbWVVUkwoZnJhbWVVUkwpCisg
ICAgeworICAgICAgICBpZiAoIWZyYW1lVVJMKQorICAgICAgICAgICAgcmV0dXJuIFdJLm5ldHdv
cmtNYW5hZ2VyLm1haW5GcmFtZTsKKworICAgICAgICBmdW5jdGlvbiBmaW5kRnJhbWUoZnJhbWVV
UkwsIGFkanVzdEtub3duRnJhbWVVUkwgPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gV0ku
bmV0d29ya01hbmFnZXIuZnJhbWVzLmZpbmQoKGtub3duRnJhbWUpID0+IHsKKyAgICAgICAgICAg
ICAgICBsZXQga25vd25GcmFtZVVSTCA9IG5ldyBVUkwoa25vd25GcmFtZS51cmwpOworICAgICAg
ICAgICAgICAgIGFkanVzdEtub3duRnJhbWVVUkw/Lihrbm93bkZyYW1lVVJMKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4ga25vd25GcmFtZVVSTC50b1N0cmluZygpID09PSBmcmFtZVVSTDsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZyYW1lID0gZmluZEZyYW1l
KGZyYW1lVVJMKTsKKyAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIGZyYW1l
OworCisgICAgICAgIGxldCBmcmFtZVVSTFBhcnRzID0gbmV3IFVSTChmcmFtZVVSTCk7CisgICAg
ICAgIGlmIChmcmFtZVVSTFBhcnRzLnNlYXJjaC5sZW5ndGggfHwgZnJhbWVVUkxQYXJ0cy5oYXNo
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGZyYW1lID0gZmlu
ZEZyYW1lKGZyYW1lVVJMLCAoa25vd25GcmFtZVVSTCkgPT4geworICAgICAgICAgICAga25vd25G
cmFtZVVSTC5oYXNoID0gIiI7CisgICAgICAgIH0pOworICAgICAgICBpZiAoZnJhbWUpCisgICAg
ICAgICAgICByZXR1cm4gZnJhbWU7CisKKyAgICAgICAgcmV0dXJuIGZpbmRGcmFtZShmcmFtZVVS
TCwgKGtub3duRnJhbWVVUkwpID0+IHsKKyAgICAgICAgICAgIGtub3duRnJhbWVVUkwuaGFzaCA9
ICIiOworICAgICAgICAgICAga25vd25GcmFtZVVSTC5zZWFyY2ggPSAiIjsKKyAgICAgICAgfSk7
CisgICAgfQorCiAgICAgX2hhbmRsZU1haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
LmgKaW5kZXggYTVjNDU3ZDgyYThmN2YxMWQ5NDg0M2E5N2U0MjEyYjJlM2E1ZWIwNC4uNWMxODlh
YmNjMzk3NTM3MWI4ZGZkOGU1NzlhMzVjNjNmZTFmMzY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaApA
QCAtNjMsNyArNjMsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTIuMCkpCiAgKiBzY3Jp
cHRTb3VyY2UgaXMgdHJlYXRlZCBhcyBhIHRvcC1sZXZlbCBldmFsdWF0aW9uLiBCeSBkZWZhdWx0
LCB0aGUgc2NyaXB0IGlzIGV2YWx1YXRlZCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UncyBzY3JpcHQg
Y29udGV4dC4KICAqIFRoZSBpbnNwZWN0ZWQgcGFnZSB1bHRpbWF0ZWx5IGNvbnRyb2xzIGl0cyBl
eGVjdXRpb24gY29udGV4dCBhbmQgdGhlIHJlc3VsdCBvZiB0aGlzIGV2YWx1YXRpb24uIFRodXMs
IHRoZSByZXN1bHQgc2hhbGwgYmUgdHJlYXRlZCBhcyB1bnRydXN0ZWQgaW5wdXQuCiAgKi8KLS0g
KHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihO
U1VSTCAqKWZyYW1lVVJMIGNvbnRleHRTZWN1cml0eU9yaWdpbjooTlNVUkwgKiljb250ZXh0U2Vj
dXJpdHlPcmlnaW4gdXNlQ29udGVudFNjcmlwdENvbnRleHQ6KEJPT0wpdXNlQ29udGVudFNjcmlw
dENvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwg
aWQgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5T
U3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VSTCAqIF9OdWxsYWJsZSlmcmFtZVVS
TCBjb250ZXh0U2VjdXJpdHlPcmlnaW46KE5TVVJMICogX051bGxhYmxlKWNvbnRleHRTZWN1cml0
eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0Q29u
dGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlLCBpZCBy
ZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAvKioKICAqIEBhYnN0cmFjdCBFdmFsdWF0ZXMg
SmF2YVNjcmlwdCBpbiB0aGUgY29udGV4dCBvZiBhIFdlYiBJbnNwZWN0b3IgdGFiIGNyZWF0ZWQg
YnkgdGhpcyBfV0tJbnNwZWN0b3JFeHRlbnNpb24uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjNkMzMwN2M5MDY4MzY3M2U2ZjI5ZmY5YTk5YTAx
MjRkMjI1MDY5NS4uYzg4NGM5NmM0NmQyMDk2ZTMxMTY0NTVhMmRmNzM4YzI4YjY5ZTBlMCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIxLTEyLTIwICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgYGZyYW1lVVJMYCBvcHRpb24gZm9yIGBk
ZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cuZXZhbGAgY29tbWFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY292ZXJhZ2UgZm9yIGV2YWx1
YXRpbmcgc2NyaXB0IG9uIGFuIGluc3BlY3RlZCBwYWdlIGZyb20gYW4gZXh0ZW5zaW9uLCBpbmNs
dWRpbmcgZXZhbHVhdGluZyBvbiBhbiBpbm5lcgorICAgICAgICBmcmFtZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRl
bnNpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sOiBBZGRl
ZC4KKwogMjAyMS0xMi0yMCAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU4YTgyMDgxNThiM2FkMWVjOGNiYjNhNDJlMjQ4MDhlNmQzNzEw
NWEuLjI0ZDYzZDFiYTY0Nzc0OTNlOTZjZDZiNmFlOGQ0MGU3MzcxYWIwNWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNjksNiArMTY5LDggQEAKIAkJMkVCMjlENUUxRjc2MkRCOTAwMjNB
NUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCMjlENUQxRjc2MkRBNTAwMjNBNUYx
IC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi87IH07CiAJCTJFQkQ5RDBBMjEzNDcz
MEQwMDJEQTc1OCAvKiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0QzMkY3MjA2NUI3MkEwMDY0QTRCRSAvKiB2aWRlby5o
dG1sICovOyB9OwogCQkyRUM3MDM0QTI2QUY1RTg4MDAyQjJEMzcgLyogS2V5Ym9hcmRFdmVudFRl
c3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVD
NzAzNDkyNkFGNUU4ODAwMkIyRDM3IC8qIEtleWJvYXJkRXZlbnRUZXN0cy5tbSAqLzsgfTsKKwkJ
MkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVT
Y3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRl
bnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sICovOyB9OworCQkyRUQ4ODgyNDI3NzEyNUFC
MDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVy
RnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25F
dmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLzsgfTsKIAkJMkVGRjA2QzMxRDg4
NjIxRTAwMDRCQjMwIC8qIGxhcmdlLXZpZGVvLW9mZnNjcmVlbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkMyMUQ4ODYyMTIw
MDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKIAkJMkVGRjA2QzUx
RDg4Njc3NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tY2xpY2suaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZGMDZD
NDFEODg2NzcwMDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sICov
OyB9OwogCQkyRUZGMDZDNzFEODg2QTU4MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1v
bi1lbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUZGMDZDNjFEODg2QTU2MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1v
bi1lbmQuaHRtbCAqLzsgfTsKQEAgLTE2MjEsNiArMTYyMyw4IEBACiAJCQkJQ0UxNEYxQTQxODE4
NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNDY4RjJGOTQyMzY4REFGMTAwRjRCODY0IC8qIHdp
bmRvdy1vcGVuLXRoZW4tZG9jdW1lbnQtb3Blbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUE1RTIwMjc1MTVCMjFGNkUwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRp
YS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFRDg4ODIzMjc3MTI1QUIwMERCN0U5
OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJMkVEODg4MjQyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJDb3B5IFJlc291cmNlcyI7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTE4NDQsNiArMTg0OCw4IEBA
CiAJCTJFQjI5RDVEMUY3NjJEQTUwMDIzQTVGMSAvKiBkdW1wLWRhdGF0cmFuc2Zlci10eXBlcy5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImR1bXAtZGF0YXRyYW5zZmVyLXR5cGVz
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUM3MDM0OTI2QUY1RTg4MDAy
QjJEMzcgLyogS2V5Ym9hcmRFdmVudFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS2V5
Ym9hcmRFdmVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUNGRjU1
NDFEOUIxMkY4MDBCNTUzOTQgLyogTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEODg4MjEyNzcxMUYxMjAwREI3RTk5
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEODg4MjIyNzcxMjAzQTAwREI3RTk5IC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUZGMDZDMjFEODg2MjEyMDAwNEJC
MzAgLyogbGFyZ2UtdmlkZW8tb2Zmc2NyZWVuLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAibGFyZ2UtdmlkZW8tb2Zmc2NyZWVuLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRUZGMDZDNDFEODg2NzcwMDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1v
bi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoYW5nZS12aWRlby1z
b3VyY2Utb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRkYw
NkM2MUQ4ODZBNTYwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIyNCw2ICs0MjMwLDggQEAKIAkJ
CQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIu
aHRtbCAqLywKIAkJCQk1MTIwQzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLmh0bWwgKi8sCiAJCQkJMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8qIHdp
ZGUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAorCQkJCTJFRDg4ODIxMjc3
MTFGMTIwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdl
Lmh0bWwgKi8sCisJCQkJMkVEODg4MjIyNzcxMjAzQTAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0
ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQppbmRleCA2NmQ5MzE2ZTNmNDlhOTFmODgyZDVhZWY0YmU2OTAxYTEwNWUx
ZGJlLi5hNmExMzAxZTA3NTAzYzg4Nzg4Y2I4MTM2Njg0NjY3MWQxOWViZmVlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb24ubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkRlcHJlY2F0ZWRH
bG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgogI2ltcG9ydCAiVGVzdEluc3Bl
Y3RvclVSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgpAQCAtMzgyLDQg
KzM4MywxMjcgQEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbiwgRXZhbHVhdGVTY3JpcHRJbkV4
dGVuc2lvblRhYkNhblJldHVyblByb21pc2VzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKIH0KIAorVEVTVChXS0luc3BlY3RvckV4dGVu
c2lvbiwgRXZhbHVhdGVTY3JpcHRPblBhZ2UpCit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOwor
CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
YXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JF
eHRlbnNpb24gbmV3XSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byAqdGVzdFBh
Z2VGaWxlVVJMID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJXS0luc3Bl
Y3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9h
ZEZpbGVVUkw6dGVzdFBhZ2VGaWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOnRlc3RQYWdl
RmlsZVVSTC5VUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworICAgIFtuYXZpZ2F0aW9u
RGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW1t3ZWJWaWV3IF9p
bnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisgICAgYXV0byBleHRlbnNpb25JRCA9IFtOU1VVSUQg
VVVJRF0uVVVJRFN0cmluZzsKKyAgICBhdXRvIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIgPSBA
Im9yZy53ZWJraXQuVGVzdFdlYktpdEFQSS5Gb3VydGhFeHRlbnNpb24iOworICAgIGF1dG8gZXh0
ZW5zaW9uRGlzcGxheU5hbWUgPSBAIkZvdXJ0aEV4dGVuc2lvbiI7CisKKyAgICAvLyBSZWdpc3Rl
ciB0aGUgdGVzdCBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmV4
dGVuc2lvbklEIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI6ZXh0ZW5zaW9uQnVuZGxlSWRlbnRp
ZmllciBkaXNwbGF5TmFtZTpleHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRXJyb3IgKmVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKmV4dGVuc2lvbikgeworICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNp
b24pOworICAgICAgICBzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gPSBleHRlbnNpb247CisKKyAg
ICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICBh
dXRvIGV4dGVuc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdh
dGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIG5ld10pOworICAgIFtzaGFyZWRJbnNwZWN0
b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6ZXh0ZW5zaW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAg
Ly8gQ3JlYXRlIGFuZCBzaG93IGFuIGV4dGVuc2lvbiB0YWIuCisgICAgYXV0byBpY29uVVJMID0g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5zaW9uL0lu
c3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyJdOworICAgIGF1dG8gc291cmNlVVJM
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5zaW9u
L0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCJdOworCisgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBjcmVh
dGVUYWJXaXRoTmFtZTpAIkZvdXJ0aEV4dGVuc2lvbi1UYWIiIHRhYkljb25VUkw6aWNvblVSTCBz
b3VyY2VVUkw6c291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5T
U3RyaW5nICpleHRlbnNpb25UYWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIpOwor
ICAgICAgICBzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRlbnRp
ZmllcjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
KTsKKworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNob3dF
eHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0g
c2hvd0V4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZp
ZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRTaG93RXh0
ZW5zaW9uVGFiV2FzQ2FsbGVkKTsKKworICAgIGF1dG8gbWFpbkZyYW1lU2VjcmV0U3RyaW5nID0g
QCI0Mi1tYWluRnJhbWUiOworICAgIGF1dG8gaW5uZXJGcmFtZVNlY3JldFN0cmluZyA9IEAiNDIt
aW5uZXJGcmFtZSI7CisgICAgYXV0byBzY3JpcHRTb3VyY2UgPSBAImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzZWNyZXQnKS5pbm5lclRleHQiOworCisgICAgLy8gVGVzdCBtYWluIGZyYW1lIGV2
YWx1YXRpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3No
YXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVV
Ukw6bmlsIGNvbnRleHRTZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6
ZmFsc2UgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpy
ZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9U
X05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwgbWFpbkZyYW1l
U2VjcmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkKTsKKworICAgIC8vIFRlc3QgbWFpbiBmcmFtZSBldmFsdWF0aW9uIGZhaWx1cmUu
CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3Bl
Y3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpAIltdLngueCIgZnJhbWVVUkw6bmlsIGNvbnRl
eHRTZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6ZmFsc2UgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpyZXN1bHQpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9y
KTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsK
KworICAgIC8vIFRlc3QgbG9vc2UgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRvICp0ZXN0
UGFnZUlubmVyRnJhbWVGaWxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBh
Z2VJbm5lckZyYW1lLmh0bWwiLCBbW3Rlc3RQYWdlRmlsZVVSTCBVUkxCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdIGFic29sdXRlU3RyaW5nXV1dOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNj
cmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCBjb250
ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNlIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFyeSAqcmVzdWx0KSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIGlubmVyRnJhbWVTZWNyZXRTdHJp
bmcpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQp
OworCisgICAgLy8gVGVzdCBzdHJpY3QgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRvICp0
ZXN0UGFnZUlubmVyRnJhbWVTdHJpY3RGaWxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQD9xdWVyeT1wYXJhbSNmcmFnbWVudCIsIFt0ZXN0
UGFnZUlubmVyRnJhbWVGaWxlVVJMIGFic29sdXRlU3RyaW5nXV1dOworCisgICAgcGVuZGluZ0Nh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBl
dmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1lU3Ry
aWN0RmlsZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFy
eSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNU
X05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIGlubmVy
RnJhbWVTZWNyZXRTdHJpbmcpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVW5yZWdpc3RlciB0aGUgdGVzdCBleHRlbnNpb24u
CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9p
bnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246c2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0
T25QYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM4ZGZiYmI4MjVhYzViYjc2ZDk0M2EwMDA0MGEzMjkw
YzUyZGU5NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sCkBA
IC0wLDAgKzEsOCBAQAorPGh0bWw+CisgICAgPGhlYWQ+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3Rl
ZDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3Rl
ZC48L3A+CisgICAgICAgIDxwIGlkPSJzZWNyZXQiPjQyLW1haW5GcmFtZTwvcD4KKyAgICAgICAg
PGlmcmFtZSBzcmM9Ii4vV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlu
bmVyRnJhbWUuaHRtbD9xdWVyeT1wYXJhbSNmcmFnbWVudCI+PC9pZnJhbWU+CisgICAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4
dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNj
ZmMxOTE2MmJmODY1MzU1ZThmMmY2ODRhY2ZjZTE2OWJhMWE0YTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwKQEAgLTAsMCArMSw3IEBACis8
aHRtbD4KKyAgICA8aGVhZD5UZXN0IGlubmVyIGZyYW1lIHRvIGJlIGluc3BlY3RlZDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBpbm5lciBmcmFtZSB0byBiZSBpbnNwZWN0ZWQu
PC9wPgorICAgICAgICA8cCBpZD0ic2VjcmV0Ij40Mi1pbm5lckZyYW1lPC9wPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447751</attachid>
            <date>2021-12-21 13:56:35 -0800</date>
            <delta_ts>2022-01-12 15:09:49 -0800</delta_ts>
            <desc>Patch v2.3 - Review nits</desc>
            <filename>bug-222568-20211221135634.patch</filename>
            <type>text/plain</type>
            <size>22295</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
ZGRiNjlmMzQ2MzNhNGJlMDM1NzU5MzZmYTRiZWEwZGE2ZGYxOGZmLi43Nzk4ZmVlY2Y5MTMyOGE0
YTdiZWQxYTdlYjRkYmZmYTY0YThjODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0xMi0yMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBOZXcgdGVzdDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBldmFsdWF0aW5nIHNjcmlwdCBmcm9tIGFuIGV4dGVuc2lvbiBpbiBh
IHNwZWNpZmljIGZyYW1lIG9uIHRoZSBwYWdlIGJ5IHJlZmVycmluZyB0byBpdCBieSB0aGUKKyAg
ICAgICAgZnJhbWUncyBVUkwuIEZyYW1lIFVSTHMgYXJlIG1hdGNoZWQgaW4gdGhyZWUgc3RlcHMs
IGZpcnN0IGxvb2tpbmcgZm9yIGFuIGV4YWN0IFVSTCBtYXRjaCwgaW5jbHVkaW5nIHF1ZXJ5Cisg
ICAgICAgIHBhcmFtZXRlcnMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIG5vIG1hdGNoIGlz
IGZvdW5kIGFuZCB0aGUgcHJvdmlkZWQgYG9wdGlvbnMuZnJhbWVVUkxgIGRvZXMgbm90IGhhdmUg
YW55CisgICAgICAgIGZyYWdtZW50IGlkZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBj
aGVjayBpcyB0aGVuIG1hZGUgYWdhaW5zdCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRp
bWUKKyAgICAgICAgZXhjbHVkaW5nIHRoZWlyIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIHRoYXQg
Y2hlY2sgc3RpbGwgZmFpbHMgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgVVJMLCB3ZSBwZXJmb3Jt
IG9uZSBtb3JlCisgICAgICAgIHBhc3MsIHRoaXMgdGltZSBleGNsdWRpbmcgdGhlIGZyYWdtZW50
IGlkZW50aWZpZXIgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGVhY2gga25vd24gZnJhbWUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNp
b24pOgorICAgICAgICAtIERyaXZlLWJ5IHJlbW92YWwgb2YgdHJhaWxpbmcgc3BhY2VzLgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2ZyYW1l
Rm9yRnJhbWVVUkwpOgorCiAyMDIxLTEyLTIxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBzeW1saW5rcyBmb3IgYWx0ZXJuYXRlIHJvb3QgZnJhbWV3
b3JrIGxvY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MmYwYzgyZmNmZmY0ZWFmOGZlMzMxZWIzN2ZkYjM4
MGUyNGY3MWNmLi5hZWE2MzdmMjE0ZTMwM2IzODQyZDEyMjQ0MjQ4MDEzYTU4MGZiN2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTIxICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xl
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgYGZyYW1lVVJM
YCBvcHRpb24gZm9yIGBkZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cuZXZhbGAgY29tbWFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIE5ldyB0ZXN0OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
CisKKyAgICAgICAgQ29ycmVjdCB0aGUgQVBJIHRvIGluZGljYXRlIHRoYXQgYGZyYW1lVVJMYCBh
bmQgYGNvbnRleHRTZWN1cml0eU9yaWdpbmAgYXJlIG51bGxhYmxlIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oOgorCiAy
MDIxLTEyLTIxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhcmRlbiBQQ00gYW5kIElUUCBkYXRhYmFzZXMgYWdhaW5zdCBjcmFzaGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5qcwppbmRleCBkYjU1ZjdmMGVmN2VmM2E0YzY5YmQxNjhlMzNkYjFmMTIxYWFhYzMzLi5iZmMy
NjRhZmEzOTQ5OTc1MzQ4Njg2MjhmOTNkZjJhODU4ZTNlZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKQEAgLTEz
MywxMCArMTMzLDEwIEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFz
cyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1
cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKICAg
ICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzQxODAzNTU+IGlt
cGxlbWVudCBleGVjdXRpb24gY29udGV4dCBzZWxlY3Rpb24gb3B0aW9ucwotICAgICAgICBpZiAo
ZnJhbWVVUkwpIHsKLSAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRl
U2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2ZyYW1lVVJMJyBvcHRpb24gaXMgbm90IHlldCBpbXBs
ZW1lbnRlZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
RXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAgICBsZXQgZnJhbWUgPSB0aGlzLl9mcmFt
ZUZvckZyYW1lVVJMKGZyYW1lVVJMKTsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb246IE5v
IGZyYW1lIG1hdGNoZWQgcHJvdmlkZWQgZnJhbWVVUkw6ICIgKyBmcmFtZVVSTCk7CisgICAgICAg
ICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVx
dWVzdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb250ZXh0U2VjdXJpdHlPcmlnaW4pIHsK
QEAgLTE0OSw3ICsxNDksMTIgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9
IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAg
IHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVk
OwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IGV2YWx1YXRpb25Db250ZXh0ID0gV0kucnVudGlt
ZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgbGV0IGV2YWx1YXRpb25D
b250ZXh0ID0gZnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRleHQ7CisgICAgICAgIGlmICghZXZhbHVh
dGlvbkNvbnRleHQpIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1
YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiBObyAncGFnZUV4ZWN1dGlvbkNvbnRleHQnIHdhcyBwcmVz
ZW50IGZvciBmcmFtZSB3aXRoIFVSTDogIiArIGZyYW1lLnVybCk7CisgICAgICAgICAgICByZXR1
cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Db250ZXh0RGVzdHJveWVkOwor
ICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGV2YWx1YXRpb25Db250ZXh0LnRhcmdldC5SdW50
aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHsKICAgICAgICAgICAgIGV4cHJlc3Npb246IHNjcmlw
dFNvdXJjZSwKICAgICAgICAgICAgIG9iamVjdEdyb3VwOiAiZXh0ZW5zaW9uLWV2YWx1YXRpb24i
LApAQCAtMTY1LDcgKzE3MCw3IEBAIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIg
PSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyIGV4dGVuCiAgICAgICAgICAg
ICByZXR1cm4gd2FzVGhyb3duID8geyJlcnJvciI6IHJlc3VsdE9yRXJyb3IuZGVzY3JpcHRpb259
IDogeyJyZXN1bHQiOiB2YWx1ZX07CiAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gZXJyb3Iu
ZGVzY3JpcHRpb24pOwogICAgIH0KLSAgICAKKwogICAgIHJlbG9hZEZvckV4dGVuc2lvbihleHRl
bnNpb25JRCwge2lnbm9yZUNhY2hlLCB1c2VyQWdlbnQsIGluamVjdGVkU2NyaXB0fSA9IHt9KQog
ICAgIHsKICAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbkZvckV4dGVuc2lv
bklETWFwLmdldChleHRlbnNpb25JRCk7CkBAIC0xODQsMTQgKzE4OSwxNCBAQCBXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlciBleHRlbgogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigicmVsb2Fk
Rm9yRXh0ZW5zaW9uOiB0aGUgJ2luamVjdGVkU2NyaXB0JyBvcHRpb24gaXMgbm90IHlldCBpbXBs
ZW1lbnRlZC4iKTsKICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
RXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKTsKICAgICAgICAgaWYgKCF0YXJn
ZXQuaGFzQ29tbWFuZCgiUGFnZS5yZWxvYWQiKSkKICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OwotICAgICAgICAKKwog
ICAgICAgICByZXR1cm4gdGFyZ2V0LlBhZ2VBZ2VudC5yZWxvYWQuaW52b2tlKHtpZ25vcmVDYWNo
ZX0pOwogICAgIH0KLSAgICAKKwogICAgIHNob3dFeHRlbnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQs
IG9wdGlvbnMgPSB7fSkKICAgICB7CiAgICAgICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMu
X2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5zaW9uVGFiSURNYXAuZ2V0KGV4dGVuc2lv
blRhYklEKTsKQEAgLTM5Myw2ICszOTgsNDIgQEAgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAg
ICAgICAgcmV0dXJuIHthbmNob3JUYWJUeXBlLCBhbmNob3JUYWJJbmRleCwgZGlzdGFuY2VGcm9t
QW5jaG9yVGFifTsKICAgICB9CiAKKyAgICBfZnJhbWVGb3JGcmFtZVVSTChmcmFtZVVSTCkKKyAg
ICB7CisgICAgICAgIGlmICghZnJhbWVVUkwpCisgICAgICAgICAgICByZXR1cm4gV0kubmV0d29y
a01hbmFnZXIubWFpbkZyYW1lOworCisgICAgICAgIGZ1bmN0aW9uIGZpbmRGcmFtZShmcmFtZVVS
TCwgYWRqdXN0S25vd25GcmFtZVVSTCkgeworICAgICAgICAgICAgcmV0dXJuIFdJLm5ldHdvcmtN
YW5hZ2VyLmZyYW1lcy5maW5kKChrbm93bkZyYW1lKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0
IGtub3duRnJhbWVVUkwgPSBuZXcgVVJMKGtub3duRnJhbWUudXJsKTsKKyAgICAgICAgICAgICAg
ICBhZGp1c3RLbm93bkZyYW1lVVJMPy4oa25vd25GcmFtZVVSTCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGtub3duRnJhbWVVUkwudG9TdHJpbmcoKSA9PT0gZnJhbWVVUkw7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBmcmFtZSA9IGZpbmRGcmFtZShmcmFtZVVS
TCk7CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKworICAg
ICAgICBsZXQgZnJhbWVVUkxQYXJ0cyA9IG5ldyBVUkwoZnJhbWVVUkwpOworICAgICAgICBpZiAo
ZnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisg
ICAgICAgIGZyYW1lID0gZmluZEZyYW1lKGZyYW1lVVJMLCAoa25vd25GcmFtZVVSTCkgPT4gewor
ICAgICAgICAgICAga25vd25GcmFtZVVSTC5oYXNoID0gIiI7CisgICAgICAgIH0pOworICAgICAg
ICBpZiAoZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisKKyAgICAgICAgaWYgKGZy
YW1lVVJMUGFydHMuc2VhcmNoLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisg
ICAgICAgIHJldHVybiBmaW5kRnJhbWUoZnJhbWVVUkwsIChrbm93bkZyYW1lVVJMKSA9PiB7Cisg
ICAgICAgICAgICBrbm93bkZyYW1lVVJMLmhhc2ggPSAiIjsKKyAgICAgICAgICAgIGtub3duRnJh
bWVVUkwuc2VhcmNoID0gIiI7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIF9oYW5kbGVNYWlu
UmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIWV2ZW50LnRhcmdl
dC5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCmluZGV4IGE1YzQ1N2Q4MmE4ZjdmMTFk
OTQ4NDNhOTdlNDIxMmIyZTNhNWViMDQuLjVjMTg5YWJjYzM5NzUzNzFiOGRmZDhlNTc5YTM1YzYz
ZmUxZjM2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgV0tfQ0xBU1Nf
QVZBSUxBQkxFKG1hY29zKDEyLjApKQogICogc2NyaXB0U291cmNlIGlzIHRyZWF0ZWQgYXMgYSB0
b3AtbGV2ZWwgZXZhbHVhdGlvbi4gQnkgZGVmYXVsdCwgdGhlIHNjcmlwdCBpcyBldmFsdWF0ZWQg
aW4gdGhlIGluc3BlY3RlZCBwYWdlJ3Mgc2NyaXB0IGNvbnRleHQuCiAgKiBUaGUgaW5zcGVjdGVk
IHBhZ2UgdWx0aW1hdGVseSBjb250cm9scyBpdHMgZXhlY3V0aW9uIGNvbnRleHQgYW5kIHRoZSBy
ZXN1bHQgb2YgdGhpcyBldmFsdWF0aW9uLiBUaHVzLCB0aGUgcmVzdWx0IHNoYWxsIGJlIHRyZWF0
ZWQgYXMgdW50cnVzdGVkIGlucHV0LgogICovCi0tICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZXh0U2Vj
dXJpdHlPcmlnaW46KE5TVVJMICopY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3Jp
cHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIGlkIHJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXI7CistICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFt
ZVVSTDooTlNVUkwgKiBfTnVsbGFibGUpZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihO
U1VSTCAqIF9OdWxsYWJsZSljb250ZXh0U2VjdXJpdHlPcmlnaW4gdXNlQ29udGVudFNjcmlwdENv
bnRleHQ6KEJPT0wpdXNlQ29udGVudFNjcmlwdENvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgaWQgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsK
IAogLyoqCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVzIEphdmFTY3JpcHQgaW4gdGhlIGNvbnRleHQg
b2YgYSBXZWIgSW5zcGVjdG9yIHRhYiBjcmVhdGVkIGJ5IHRoaXMgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ1Mzk0OGNkZDRkM2E5ZWZjYmFjMzZiN2FhMWIxOTEyMGRlZDZjNzguLjAwMjA2Mjg1ZWIyODYx
NDFmZjE1MzY5OWE2MjZmMWE2YThhYjg5Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0xMi0yMSAgUGF0cmlj
ayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1w
bGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZvciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2
YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAg
ICBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZXZhbHVhdGluZyBzY3JpcHQgb24gYW4gaW5zcGVjdGVk
IHBhZ2UgZnJvbSBhbiBleHRlbnNpb24sIGluY2x1ZGluZyBldmFsdWF0aW5nIG9uIGFuIGlubmVy
CisgICAgICAgIGZyYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRl
bnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3Jp
cHRPblBhZ2VJbm5lckZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTIxICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGEgd2F5IHRvIHNw
ZWNpZnkgYSBjdXN0b20gcGl4ZWwgdG9sZXJhbmNlIGluIGEgcmVmIHRlc3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODZhNmU1ZTdkMTlhMzYzNGI3OGQ3ODUxZjFjNTQ4YTc3NjE4MTgzZS4u
MWNmZTFkYmQxNmU0YTUwZDE3YzNhYzRiZGJkMTg0YWQyYzRmZmE2OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE2OSw2ICsxNjksOCBAQAogCQkyRUIyOUQ1RTFGNzYyREI5MDAyM0E1RjEg
LyogZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUIyOUQ1RDFGNzYyREE1MDAyM0E1RjEgLyog
ZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCAqLzsgfTsKIAkJMkVCRDlEMEEyMTM0NzMwRDAw
MkRBNzU4IC8qIHZpZGVvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDdDRDMyRjcyMDY1QjcyQTAwNjRBNEJFIC8qIHZpZGVvLmh0bWwg
Ki87IH07CiAJCTJFQzcwMzRBMjZBRjVFODgwMDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50VGVzdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUM3MDM0
OTI2QUY1RTg4MDAyQjJEMzcgLyogS2V5Ym9hcmRFdmVudFRlc3RzLm1tICovOyB9OworCQkyRUQ4
ODgyMzI3NzEyNUFCMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlw
dE9uUGFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFRDg4ODIxMjc3MTFGMTIwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lv
bkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwgKi87IH07CisJCTJFRDg4ODI0Mjc3MTI1QUIwMERC
N0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFt
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFRDg4ODIyMjc3MTIwM0EwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sICovOyB9OwogCQkyRUZGMDZDMzFEODg2MjFF
MDAwNEJCMzAgLyogbGFyZ2UtdmlkZW8tb2Zmc2NyZWVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGRjA2QzIxRDg4NjIxMjAwMDRC
QjMwIC8qIGxhcmdlLXZpZGVvLW9mZnNjcmVlbi5odG1sICovOyB9OwogCQkyRUZGMDZDNTFEODg2
Nzc2MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkM0MUQ4
ODY3NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi87IH07
CiAJCTJFRkYwNkM3MUQ4ODZBNTgwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVu
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFRkYwNkM2MUQ4ODZBNTYwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVu
ZC5odG1sICovOyB9OwpAQCAtMTYyMyw2ICsxNjI1LDggQEAKIAkJCQlDRTE0RjFBNDE4MTg3M0Iw
MDAxQzI3MDUgLyogV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMQ3Jhc2guaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk0NjhGMkY5NDIzNjhEQUYxMDBGNEI4NjQgLyogd2luZG93
LW9wZW4tdGhlbi1kb2N1bWVudC1vcGVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
QTVFMjAyNzUxNUIyMUY2RTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8q
IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKKwkJCQkyRUQ4ODgyNDI3NzEyNUFCMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQluYW1lID0gIkNvcHkgUmVzb3VyY2VzIjsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTg0Niw2ICsxODUwLDggQEAKIAkJ
MkVCMjlENUQxRjc2MkRBNTAwMjNBNUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQzcwMzQ5MjZBRjVFODgwMDJCMkQz
NyAvKiBLZXlib2FyZEV2ZW50VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLZXlib2Fy
ZEV2ZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFQ0ZGNTU0MUQ5
QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyog
V0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
V0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0
b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRkYwNkMyMUQ4ODYyMTIwMDA0QkIzMCAv
KiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNs
aWNrLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hhbmdlLXZpZGVvLXNvdXJj
ZS1vbi1jbGljay5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2QzYx
RDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1lbmQuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjI4LDYgKzQyMzQsOCBAQAogCQkJCTUx
NzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1s
ICovLAogCQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMuaHRtbCAqLywKIAkJCQkyRTEzMUMxNzFEODNBOTdFMDAxQkEzNkMgLyogd2lkZS1h
dXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8sCisJCQkJMkVEODg4MjEyNzcxMUYx
MjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRt
bCAqLywKKwkJCQkyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tCmluZGV4IDY2ZDkzMTZlM2Y0OWE5MWY4ODJkNWFlZjRiZTY5MDFhMTA1ZTFkYmUu
LmE2YTEzMDFlMDc1MDNjODg3ODhjYjgxMzY2ODQ2NjcxZDE5ZWJmZWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2Jh
bFZhbHVlcy5oIgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAjaW1wb3J0ICJUZXN0SW5zcGVjdG9y
VVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0zODIsNCArMzgz
LDEyNyBAQCBURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBFdmFsdWF0ZVNjcmlwdEluRXh0ZW5z
aW9uVGFiQ2FuUmV0dXJuUHJvbWlzZXMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOwogfQogCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9u
LCBFdmFsdWF0ZVNjcmlwdE9uUGFnZSkKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5f
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRv
IHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVu
c2lvbiBuZXddKTsKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvICp0ZXN0UGFnZUZp
bGVVUkwgPSBbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAIldLSW5zcGVjdG9y
RXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkRmls
ZVVSTDp0ZXN0UGFnZUZpbGVVUkwgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6dGVzdFBhZ2VGaWxl
VVJMLlVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CisgICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRvIGV4dGVuc2lvbklEID0gW05TVVVJRCBVVUlE
XS5VVUlEU3RyaW5nOworICAgIGF1dG8gZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciA9IEAib3Jn
LndlYmtpdC5UZXN0V2ViS2l0QVBJLkZvdXJ0aEV4dGVuc2lvbiI7CisgICAgYXV0byBleHRlbnNp
b25EaXNwbGF5TmFtZSA9IEAiRm91cnRoRXh0ZW5zaW9uIjsKKworICAgIC8vIFJlZ2lzdGVyIHRo
ZSB0ZXN0IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
KyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5z
aW9uSUQgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjpleHRlbnNpb25CdW5kbGVJZGVudGlmaWVy
IGRpc3BsYXlOYW1lOmV4dGVuc2lvbkRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNF
cnJvciAqZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqZXh0ZW5zaW9uKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7
CisgICAgICAgIHNoYXJlZEluc3BlY3RvckV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIGF1dG8g
ZXh0ZW5zaW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZUZv
clRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gbmV3XSk7CisgICAgW3NoYXJlZEluc3BlY3RvckV4
dGVuc2lvbiBzZXREZWxlZ2F0ZTpleHRlbnNpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBD
cmVhdGUgYW5kIHNob3cgYW4gZXh0ZW5zaW9uIHRhYi4KKyAgICBhdXRvIGljb25VUkwgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9Gb3VydGhFeHRlbnNpb24vSW5zcGVj
dG9yRXh0ZW5zaW9uLVRhYkljb24tMzB4MzAucG5nIl07CisgICAgYXV0byBzb3VyY2VVUkwgPSBb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3QtcmVzb3VyY2U6Ly9Gb3VydGhFeHRlbnNpb24vSW5z
cGVjdG9yRXh0ZW5zaW9uLWJhc2ljLXRhYi5odG1sIl07CisKKyAgICBwZW5kaW5nQ2FsbGJhY2tX
YXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIGNyZWF0ZVRh
YldpdGhOYW1lOkAiRm91cnRoRXh0ZW5zaW9uLVRhYiIgdGFiSWNvblVSTDppY29uVVJMIHNvdXJj
ZVVSTDpzb3VyY2VVUkwgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNTdHJp
bmcgKmV4dGVuc2lvblRhYklkZW50aWZpZXIpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uVGFiSWRlbnRpZmllcik7CisgICAg
ICAgIHNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIgPSBleHRlbnNpb25UYWJJZGVudGlmaWVy
OworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOwor
CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgZGlkU2hvd0V4dGVu
c2lvblRhYldhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93
RXh0ZW5zaW9uVGFiV2l0aElkZW50aWZpZXI6c2hhcmVkRXh0ZW5zaW9uVGFiSWRlbnRpZmllci5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFNob3dFeHRlbnNp
b25UYWJXYXNDYWxsZWQpOworCisgICAgYXV0byBtYWluRnJhbWVTZWNyZXRTdHJpbmcgPSBAIjQy
LW1haW5GcmFtZSI7CisgICAgYXV0byBpbm5lckZyYW1lU2VjcmV0U3RyaW5nID0gQCI0Mi1pbm5l
ckZyYW1lIjsKKyAgICBhdXRvIHNjcmlwdFNvdXJjZSA9IEAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3NlY3JldCcpLmlubmVyVGV4dCI7CisKKyAgICAvLyBUZXN0IG1haW4gZnJhbWUgZXZhbHVh
dGlvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVk
SW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1YXRlU2NyaXB0OnNjcmlwdFNvdXJjZSBmcmFtZVVSTDpu
aWwgY29udGV4dFNlY3VyaXR5T3JpZ2luOm5pbCB1c2VDb250ZW50U2NyaXB0Q29udGV4dDpmYWxz
ZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBOU0RpY3Rpb25hcnkgKnJlc3Vs
dCkgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVM
TChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTlNfRVFVQUwocmVzdWx0LCBtYWluRnJhbWVTZWNy
ZXRTdHJpbmcpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQpOworCisgICAgLy8gVGVzdCBtYWluIGZyYW1lIGV2YWx1YXRpb24gZmFpbHVyZS4KKyAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVkSW5zcGVjdG9y
RXh0ZW5zaW9uIGV2YWx1YXRlU2NyaXB0OkAiW10ueC54IiBmcmFtZVVSTDpuaWwgY29udGV4dFNl
Y3VyaXR5T3JpZ2luOm5pbCB1c2VDb250ZW50U2NyaXB0Q29udGV4dDpmYWxzZSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBOU0RpY3Rpb25hcnkgKnJlc3VsdCkgeworICAgICAg
ICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOwor
CisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisg
ICAgLy8gVGVzdCBsb29zZSBmcmFtZVVSTCBldmFsdWF0aW9uLgorICAgIGF1dG8gKnRlc3RQYWdl
SW5uZXJGcmFtZUZpbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlu
bmVyRnJhbWUuaHRtbCIsIFtbdGVzdFBhZ2VGaWxlVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF0gYWJzb2x1dGVTdHJpbmddXV07CisKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1YXRlU2NyaXB0
OnNjcmlwdFNvdXJjZSBmcmFtZVVSTDp0ZXN0UGFnZUlubmVyRnJhbWVGaWxlVVJMIGNvbnRleHRT
ZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6ZmFsc2UgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpyZXN1bHQpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdWx0KTsK
KyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwgaW5uZXJGcmFtZVNlY3JldFN0cmluZyk7
CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisK
KyAgICAvLyBUZXN0IHN0cmljdCBmcmFtZVVSTCBldmFsdWF0aW9uLgorICAgIGF1dG8gKnRlc3RQ
YWdlSW5uZXJGcmFtZVN0cmljdEZpbGVVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAP3F1ZXJ5PXBhcmFtI2ZyYWdtZW50IiwgW3Rlc3RQYWdl
SW5uZXJGcmFtZUZpbGVVUkwgYWJzb2x1dGVTdHJpbmddXV07CisKKyAgICBwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uIGV2YWx1
YXRlU2NyaXB0OnNjcmlwdFNvdXJjZSBmcmFtZVVSTDp0ZXN0UGFnZUlubmVyRnJhbWVTdHJpY3RG
aWxlVVJMIGNvbnRleHRTZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6
ZmFsc2UgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpy
ZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9U
X05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwgaW5uZXJGcmFt
ZVNlY3JldFN0cmluZyk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KKyAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lvbjpzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMzhkZmJiYjgyNWFjNWJiNzZkOTQzYTAwMDQwYTMyOTBjNTJk
ZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwKQEAgLTAs
MCArMSw4IEBACis8aHRtbD4KKyAgICA8aGVhZD5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC9o
ZWFkPgorICAgIDxib2R5PgorICAgICAgICA8cD5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkLjwv
cD4KKyAgICAgICAgPHAgaWQ9InNlY3JldCI+NDItbWFpbkZyYW1lPC9wPgorICAgICAgICA8aWZy
YW1lIHNyYz0iLi9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJG
cmFtZS5odG1sP3F1ZXJ5PXBhcmFtI2ZyYWdtZW50Ij48L2lmcmFtZT4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmYzE5
MTYyYmY4NjUzNTVlOGYyZjY4NGFjZmNlMTY5YmExYTRhOQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25F
dmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1s
PgorICAgIDxoZWFkPlRlc3QgaW5uZXIgZnJhbWUgdG8gYmUgaW5zcGVjdGVkPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8cD5UZXN0IGlubmVyIGZyYW1lIHRvIGJlIGluc3BlY3RlZC48L3A+
CisgICAgICAgIDxwIGlkPSJzZWNyZXQiPjQyLWlubmVyRnJhbWU8L3A+CisgICAgPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="473504"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449002</attachid>
            <date>2022-01-12 15:09:49 -0800</date>
            <delta_ts>2022-01-13 07:48:12 -0800</delta_ts>
            <desc>Patch v2.4 - rebased for commit-queue</desc>
            <filename>frameURL-v2.4.patch</filename>
            <type>text/plain</type>
            <size>36305</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">Y29tbWl0IGUyNWI2ZmU1ODE3NzYwNDA5N2RjMjUyNGUxYmQ5YjU5M2QyZWU2NTUKQXV0aG9yOiBC
SiBCdXJnIDxiYnVyZ0BhcHBsZS5jb20+CkRhdGU6ICAgV2VkIEphbiAxMiAxNDoxOToyOCAyMDIy
IC0wODAwCgogICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NjgKICAgIAogICAgUGF0Y2ggYnkgUGF0
cmljayBBbmdsZSA8cGFuZ2xlQGFwcGxlLmNvbT4gb24gMjAyMS0xMi0yMQogICAgUmV2aWV3ZWQg
YnkgRGV2aW4gUm91c3NvLgogICAgCiAgICBTb3VyY2UvV2ViSW5zcGVjdG9yVUk6CiAgICAKICAg
IE5ldyB0ZXN0OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLm1tCiAgICAKICAgIEFkZCBzdXBwb3J0IGZvciBldmFsdWF0aW5nIHNjcmlw
dCBmcm9tIGFuIGV4dGVuc2lvbiBpbiBhIHNwZWNpZmljIGZyYW1lIG9uIHRoZSBwYWdlIGJ5IHJl
ZmVycmluZyB0byBpdCBieSB0aGUKICAgIGZyYW1lJ3MgVVJMLiBGcmFtZSBVUkxzIGFyZSBtYXRj
aGVkIGluIHRocmVlIHN0ZXBzLCBmaXJzdCBsb29raW5nIGZvciBhbiBleGFjdCBVUkwgbWF0Y2gs
IGluY2x1ZGluZyBxdWVyeQogICAgcGFyYW1ldGVycyBhbmQgZnJhZ21lbnQgaWRlbnRpZmllci4g
SWYgbm8gbWF0Y2ggaXMgZm91bmQgYW5kIHRoZSBwcm92aWRlZCBgb3B0aW9ucy5mcmFtZVVSTGAg
ZG9lcyBub3QgaGF2ZSBhbnkKICAgIGZyYWdtZW50IGlkZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1l
dGVycywgYSBjaGVjayBpcyB0aGVuIG1hZGUgYWdhaW5zdCBlYWNoIGtub3duIGZyYW1lIGFnYWlu
LCB0aGlzIHRpbWUKICAgIGV4Y2x1ZGluZyB0aGVpciBmcmFnbWVudCBpZGVudGlmaWVyLiBJZiB0
aGF0IGNoZWNrIHN0aWxsIGZhaWxzIHRvIGZpbmQgYSBmcmFtZSBmb3IgdGhlIFVSTCwgd2UgcGVy
Zm9ybSBvbmUgbW9yZQogICAgcGFzcywgdGhpcyB0aW1lIGV4Y2x1ZGluZyB0aGUgZnJhZ21lbnQg
aWRlbnRpZmllciBhbmQgcXVlcnkgcGFyYW1ldGVycyBmb3IgZWFjaCBrbm93biBmcmFtZS4KICAg
IAogICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIuanM6CiAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90
b3R5cGUuZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24pOgogICAgKFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbG9hZEZvckV4dGVuc2lvbik6CiAgICAtIERy
aXZlLWJ5IHJlbW92YWwgb2YgdHJhaWxpbmcgc3BhY2VzLgogICAgKFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLl9mcmFtZUZvckZyYW1lVVJMKToKICAgIAogICAg
U291cmNlL1dlYktpdDoKICAgIAogICAgTmV3IHRlc3Q6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KICAgIAogICAgQ29ycmVjdCB0
aGUgQVBJIHRvIGluZGljYXRlIHRoYXQgYGZyYW1lVVJMYCBhbmQgYGNvbnRleHRTZWN1cml0eU9y
aWdpbmAgYXJlIG51bGxhYmxlIHBhcmFtZXRlcnMuCiAgICAKICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaDoKICAgIAogICAgVG9vbHM6CiAgICAKICAgIEFk
ZCB0ZXN0IGNvdmVyYWdlIGZvciBldmFsdWF0aW5nIHNjcmlwdCBvbiBhbiBpbnNwZWN0ZWQgcGFn
ZSBmcm9tIGFuIGV4dGVuc2lvbiwgaW5jbHVkaW5nIGV2YWx1YXRpbmcgb24gYW4gaW5uZXIKICAg
IGZyYW1lLgogICAgCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgogICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOgogICAgKFRFU1QpOgogICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2Uu
aHRtbDogQWRkZWQuCiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbDogQWRkZWQu
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNzFiNjA4M2EzYTMyLi5kNzQwNWYxZGJmNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwxMCArMSwzMiBAQAorMjAyMi0wMS0xMiAg
UGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZvciBgZGV2dG9vbHMuaW5zcGVjdGVkV2lu
ZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKwor
ICAgICAgICBOZXcgdGVzdDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBldmFsdWF0
aW5nIHNjcmlwdCBmcm9tIGFuIGV4dGVuc2lvbiBpbiBhIHNwZWNpZmljIGZyYW1lIG9uIHRoZSBw
YWdlIGJ5IHJlZmVycmluZyB0byBpdCBieSB0aGUKKyAgICAgICAgZnJhbWUncyBVUkwuIEZyYW1l
IFVSTHMgYXJlIG1hdGNoZWQgaW4gdGhyZWUgc3RlcHMsIGZpcnN0IGxvb2tpbmcgZm9yIGFuIGV4
YWN0IFVSTCBtYXRjaCwgaW5jbHVkaW5nIHF1ZXJ5CisgICAgICAgIHBhcmFtZXRlcnMgYW5kIGZy
YWdtZW50IGlkZW50aWZpZXIuIElmIG5vIG1hdGNoIGlzIGZvdW5kIGFuZCB0aGUgcHJvdmlkZWQg
YG9wdGlvbnMuZnJhbWVVUkxgIGRvZXMgbm90IGhhdmUgYW55CisgICAgICAgIGZyYWdtZW50IGlk
ZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBjaGVjayBpcyB0aGVuIG1hZGUgYWdhaW5z
dCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRpbWUKKyAgICAgICAgZXhjbHVkaW5nIHRo
ZWlyIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIHRoYXQgY2hlY2sgc3RpbGwgZmFpbHMgdG8gZmlu
ZCBhIGZyYW1lIGZvciB0aGUgVVJMLCB3ZSBwZXJmb3JtIG9uZSBtb3JlCisgICAgICAgIHBhc3Ms
IHRoaXMgdGltZSBleGNsdWRpbmcgdGhlIGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHF1ZXJ5IHBh
cmFtZXRlcnMgZm9yIGVhY2gga25vd24gZnJhbWUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAg
IChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNpb24pOgorICAgICAgICAtIERyaXZlLWJ5
IHJlbW92YWwgb2YgdHJhaWxpbmcgc3BhY2VzLgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2ZyYW1lRm9yRnJhbWVVUkwpOgorCiAyMDIyLTAx
LTEyICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0
ZSBXZWIgSW5zcGVjdG9yIHRvIG5vdCB1c2UgbGVnYWN5IHdlYmtpdC1wcmVmaXhlZCB0cmFuc2l0
aW9uIGV2ZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1MTE5CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgogCiAgICAg
ICAgIENhbWUgYWNyb3NzIHRoaXMgd2hpbGUgd29ya2luZyBvbiBidWcgMjM1MTEzLCB3ZSBzaG91
bGRuJ3QgYmUgdXNpbmcgd2Via2l0LXByZWZpeGVkIGV2ZW50cy4KIAogICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKaW5kZXggZGI1NWY3ZjBlZjdlLi5i
ZmMyNjRhZmEzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMTI2LDc5ICsxMjYsODQgQEAgV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNv
bnRyb2xsZXIgZXh0ZW4KICAgICB9CiAKICAgICBldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihl
eHRlbnNpb25JRCwgc2NyaXB0U291cmNlLCB7ZnJhbWVVUkwsIGNvbnRleHRTZWN1cml0eU9yaWdp
biwgdXNlQ29udGVudFNjcmlwdENvbnRleHR9ID0ge30pCiAgICAgewogICAgICAgICBsZXQgZXh0
ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklE
KTsKICAgICAgICAgaWYgKCFleHRlbnNpb24pIHsKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVy
bmFsRXJyb3IoIlVuYWJsZSB0byBldmFsdWF0ZSBzY3JpcHQgZm9yIGV4dGVuc2lvbiB3aXRoIHVu
a25vd24gSUQ6ICIgKyBleHRlbnNpb25JRCk7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCi0g
ICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzQxODAzNTU+IGltcGxlbWVudCBleGVj
dXRpb24gY29udGV4dCBzZWxlY3Rpb24gb3B0aW9ucwotICAgICAgICBpZiAoZnJhbWVVUkwpIHsK
LSAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uOiB0aGUgJ2ZyYW1lVVJMJyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsK
LSAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5v
dEltcGxlbWVudGVkOworICAgICAgICBsZXQgZnJhbWUgPSB0aGlzLl9mcmFtZUZvckZyYW1lVVJM
KGZyYW1lVVJMKTsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAgICAgICAgICAgV0kucmVwb3J0
SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb246IE5vIGZyYW1lIG1hdGNo
ZWQgcHJvdmlkZWQgZnJhbWVVUkw6ICIgKyBmcmFtZVVSTCk7CisgICAgICAgICAgICByZXR1cm4g
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChjb250ZXh0U2VjdXJpdHlPcmlnaW4pIHsKICAgICAgICAgICAg
IFdJLnJlcG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUg
J2NvbnRleHRTZWN1cml0eU9yaWdpbicgb3B0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7
CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5O
b3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh1c2VDb250ZW50U2NyaXB0
Q29udGV4dCkgewogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVT
Y3JpcHRGb3JFeHRlbnNpb246IHRoZSAndXNlQ29udGVudFNjcmlwdENvbnRleHQnIG9wdGlvbiBp
cyBub3QgeWV0IGltcGxlbWVudGVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KIAotICAg
ICAgICBsZXQgZXZhbHVhdGlvbkNvbnRleHQgPSBXSS5ydW50aW1lTWFuYWdlci5hY3RpdmVFeGVj
dXRpb25Db250ZXh0OworICAgICAgICBsZXQgZXZhbHVhdGlvbkNvbnRleHQgPSBmcmFtZS5wYWdl
RXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgaWYgKCFldmFsdWF0aW9uQ29udGV4dCkgeworICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNp
b246IE5vICdwYWdlRXhlY3V0aW9uQ29udGV4dCcgd2FzIHByZXNlbnQgZm9yIGZyYW1lIHdpdGgg
VVJMOiAiICsgZnJhbWUudXJsKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb24uRXJyb3JDb2RlLkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIH0KKwogICAgICAg
ICByZXR1cm4gZXZhbHVhdGlvbkNvbnRleHQudGFyZ2V0LlJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5p
bnZva2UoewogICAgICAgICAgICAgZXhwcmVzc2lvbjogc2NyaXB0U291cmNlLAogICAgICAgICAg
ICAgb2JqZWN0R3JvdXA6ICJleHRlbnNpb24tZXZhbHVhdGlvbiIsCiAgICAgICAgICAgICBpbmNs
dWRlQ29tbWFuZExpbmVBUEk6IHRydWUsCiAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiB0cnVl
LAogICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSwKICAgICAgICAgICAgIHNhdmVS
ZXN1bHQ6IGZhbHNlLAogICAgICAgICAgICAgY29udGV4dElkOiBldmFsdWF0aW9uQ29udGV4dC5p
ZCwKICAgICAgICAgfSkudGhlbigocGF5bG9hZCkgPT4gewogICAgICAgICAgICAgbGV0IHJlc3Vs
dE9yRXJyb3IgPSBwYXlsb2FkLnJlc3VsdDsKICAgICAgICAgICAgIGxldCB3YXNUaHJvd24gPSBw
YXlsb2FkLndhc1Rocm93bjsKICAgICAgICAgICAgIGxldCB7dHlwZSwgdmFsdWV9ID0gcmVzdWx0
T3JFcnJvcjsKICAgICAgICAgICAgIHJldHVybiB3YXNUaHJvd24gPyB7ImVycm9yIjogcmVzdWx0
T3JFcnJvci5kZXNjcmlwdGlvbn0gOiB7InJlc3VsdCI6IHZhbHVlfTsKICAgICAgICAgfSkuY2F0
Y2goKGVycm9yKSA9PiBlcnJvci5kZXNjcmlwdGlvbik7CiAgICAgfQotICAgIAorCiAgICAgcmVs
b2FkRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCB7aWdub3JlQ2FjaGUsIHVzZXJBZ2VudCwgaW5q
ZWN0ZWRTY3JpcHR9ID0ge30pCiAgICAgewogICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5f
ZXh0ZW5zaW9uRm9yRXh0ZW5zaW9uSURNYXAuZ2V0KGV4dGVuc2lvbklEKTsKICAgICAgICAgaWYg
KCFleHRlbnNpb24pIHsKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJs
ZSB0byBldmFsdWF0ZSBzY3JpcHQgZm9yIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIgKyBl
eHRlbnNpb25JRCk7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1F
OiA8d2Via2l0Lm9yZy9iLzIyMjMyOD4gSW1wbGVtZW50IGB1c2VyQWdlbnRgIGFuZCBgaW5qZWN0
ZWRTY3JpcHRgIG9wdGlvbnMgZm9yIGBkZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cucmVsb2FkYCBj
b21tYW5kCiAgICAgICAgIGlmICh1c2VyQWdlbnQpIHsKICAgICAgICAgICAgIFdJLnJlcG9ydElu
dGVybmFsRXJyb3IoInJlbG9hZEZvckV4dGVuc2lvbjogdGhlICd1c2VyQWdlbnQnIG9wdGlvbiBp
cyBub3QgeWV0IGltcGxlbWVudGVkLiIpOwogICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbi5FcnJvckNvZGUuTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQpIHsKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFs
RXJyb3IoInJlbG9hZEZvckV4dGVuc2lvbjogdGhlICdpbmplY3RlZFNjcmlwdCcgb3B0aW9uIGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQuIik7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5Ob3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICBsZXQgdGFyZ2V0ID0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCk7CiAgICAg
ICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIlBhZ2UucmVsb2FkIikpCiAgICAgICAgICAgICBy
ZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsK
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIHRhcmdldC5QYWdlQWdlbnQucmVsb2FkLmludm9r
ZSh7aWdub3JlQ2FjaGV9KTsKICAgICB9Ci0gICAgCisKICAgICBzaG93RXh0ZW5zaW9uVGFiKGV4
dGVuc2lvblRhYklELCBvcHRpb25zID0ge30pCiAgICAgewogICAgICAgICBsZXQgdGFiQ29udGVu
dFZpZXcgPSB0aGlzLl9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFw
LmdldChleHRlbnNpb25UYWJJRCk7CiAgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpIHsKICAg
ICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byBzaG93IGV4dGVuc2lv
biB0YWIgd2l0aCB1bmtub3duIGV4dGVuc2lvblRhYklEOiAiICsgZXh0ZW5zaW9uVGFiSUQpOwog
ICAgICAgICAgICAgcmV0dXJuIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52
YWxpZFJlcXVlc3Q7CiAgICAgICAgIH0KIAogICAgICAgICB0YWJDb250ZW50Vmlldy52aXNpYmxl
ID0gdHJ1ZTsKICAgICAgICAgbGV0IHN1Y2Nlc3MgPSBXSS50YWJCcm93c2VyLnNob3dUYWJGb3JD
b250ZW50Vmlldyh0YWJDb250ZW50VmlldywgewpAQCAtMzg2LDIwICszOTEsNTYgQEAgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgICAgICAgICByZXR1cm4ge2FuY2hvclRhYlR5cGUs
IGFuY2hvclRhYkluZGV4LCBkaXN0YW5jZUZyb21BbmNob3JUYWJ9OwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIGFuY2hvciB0YWIgaXMgbm93IGhpZGRlbiB1
cG9uIHJlc3RvcmluZywgcGxhY2UgdGhlIGV4dGVuc2lvbiBhdCB0aGUgZW5kLgogICAgICAgICAv
LyBUaGlzIGNvdWxkIGhhcHBlbiBpZiBhIHNtYWxsZXIgc2V0IG9mIHRhYnMgYXJlIGVuYWJsZWQg
Zm9yIHRoZSBpbnNwZWN0aW9uIHRhcmdldC4KICAgICAgICAgYW5jaG9yVGFiSW5kZXggPSB2aXNp
YmxlVGFiQmFySXRlbXMubGVuZ3RoIC0gMTsKICAgICAgICAgcmV0dXJuIHthbmNob3JUYWJUeXBl
LCBhbmNob3JUYWJJbmRleCwgZGlzdGFuY2VGcm9tQW5jaG9yVGFifTsKICAgICB9CiAKKyAgICBf
ZnJhbWVGb3JGcmFtZVVSTChmcmFtZVVSTCkKKyAgICB7CisgICAgICAgIGlmICghZnJhbWVVUkwp
CisgICAgICAgICAgICByZXR1cm4gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworCisgICAg
ICAgIGZ1bmN0aW9uIGZpbmRGcmFtZShmcmFtZVVSTCwgYWRqdXN0S25vd25GcmFtZVVSTCkgewor
ICAgICAgICAgICAgcmV0dXJuIFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lcy5maW5kKChrbm93bkZy
YW1lKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGtub3duRnJhbWVVUkwgPSBuZXcgVVJMKGtu
b3duRnJhbWUudXJsKTsKKyAgICAgICAgICAgICAgICBhZGp1c3RLbm93bkZyYW1lVVJMPy4oa25v
d25GcmFtZVVSTCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtub3duRnJhbWVVUkwudG9TdHJp
bmcoKSA9PT0gZnJhbWVVUkw7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCBmcmFtZSA9IGZpbmRGcmFtZShmcmFtZVVSTCk7CisgICAgICAgIGlmIChmcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgICAgICBsZXQgZnJhbWVVUkxQYXJ0cyA9IG5l
dyBVUkwoZnJhbWVVUkwpOworICAgICAgICBpZiAoZnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGZyYW1lID0gZmluZEZyYW1lKGZy
YW1lVVJMLCAoa25vd25GcmFtZVVSTCkgPT4geworICAgICAgICAgICAga25vd25GcmFtZVVSTC5o
YXNoID0gIiI7CisgICAgICAgIH0pOworICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICBy
ZXR1cm4gZnJhbWU7CisKKyAgICAgICAgaWYgKGZyYW1lVVJMUGFydHMuc2VhcmNoLmxlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiBmaW5kRnJhbWUoZnJh
bWVVUkwsIChrbm93bkZyYW1lVVJMKSA9PiB7CisgICAgICAgICAgICBrbm93bkZyYW1lVVJMLmhh
c2ggPSAiIjsKKyAgICAgICAgICAgIGtub3duRnJhbWVVUkwuc2VhcmNoID0gIiI7CisgICAgICAg
IH0pOworICAgIH0KKwogICAgIF9oYW5kbGVNYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHVubGVzcyBvbmUg
b3IgbW9yZSBleHRlbnNpb25zIGFyZSByZWdpc3RlcmVkLgogICAgICAgICBpZiAoIXRoaXMuX2V4
dGVuc2lvbkZvckV4dGVuc2lvbklETWFwLnNpemUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3RlZFBhZ2VEaWROYXZpZ2F0ZShXSS5u
ZXR3b3JrTWFuYWdlci5tYWluRnJhbWUudXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzFkYzEyN2EzZTJhLi5l
MGZhMDRkZmRkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDEwICsxLDIzIEBACisyMDIyLTAxLTEyICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJ
bXBsZW1lbnQgYGZyYW1lVVJMYCBvcHRpb24gZm9yIGBkZXZ0b29scy5pbnNwZWN0ZWRXaW5kb3cu
ZXZhbGAgY29tbWFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAg
ICAgIE5ldyB0ZXN0OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tCisKKyAgICAgICAgQ29ycmVjdCB0aGUgQVBJIHRvIGluZGljYXRl
IHRoYXQgYGZyYW1lVVJMYCBhbmQgYGNvbnRleHRTZWN1cml0eU9yaWdpbmAgYXJlIG51bGxhYmxl
IHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbi5oOgorCiAyMDIyLTAxLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgV2ViS2l0U3dpZnQgd2hlbiBidWlsZGlu
ZyB3aXRoIG1ha2Ugb3IgYnVpbGQtd2Via2l0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwOTMKIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgogCiAgICAgICAgIEZvciB2YXJpb3VzIGludGVybmFsIHJlYXNvbnMsIHdl
IGhhdmUgdG8gaGF2ZSBubyBkZXBlbmN5IGJldHdlZW4gdGhlIHR3bywKICAgICAgICAgYnV0IHdl
IGNvbW1hbmQgbGluZSBidWlsZGVycyB3YW50IHRvIGJ1aWxkIGFuZCB0ZXN0IGl0IGp1c3QgbGlr
ZSBldmVyeW9uZSBlbHNlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKaW5kZXggYTVjNDU3ZDgyYThmLi41
YzE4OWFiY2MzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTU2LDIxICs1NiwyMSBAQCBXS19D
TEFTU19BVkFJTEFCTEUobWFjb3MoMTIuMCkpCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVzIEphdmFT
Y3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGluc3BlY3RlZCBwYWdlIG9uIGJlaGFsZiBvZiB0
aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgogICogQHBhcmFtIHNjcmlwdFNvdXJjZSBUaGUgSmF2
YVNjcmlwdCBjb2RlIHRvIGJlIGV2YWx1YXRlZC4KICAqIEBwYXJhbSBmcmFtZVVSTCBVUkwgZm9y
IHRoZSBmcmFtZSBpbiB3aGljaCB0byBldmFsdWF0ZSB0aGUgc2NyaXB0LiBJZiBuaWwgaXMgcGFz
c2VkLCB0aGUgbWFpbiBmcmFtZSB3aWxsIGJlIHVzZWQuCiAgKiBAcGFyYW0gY29udGV4dFNlY3Vy
aXR5T3JpZ2luIElmIHNwZWNpZmllZCwgZXZhbHVhdGUgdGhlIHNjcmlwdCBpbiB0aGUgY29udGVu
dCBzY3JpcHQgY29udGV4dCBvZiBhIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uCiAgKiBAcGFy
YW0gdXNlc0NvbnRlbnRTY3JpcHRDb250ZXh0IElmIFlFUywgZXZhbHVhdGUgdGhlIHNjcmlwdCBp
biB0aGUgY29udGV4dCBvZiB0aGUgZXh0ZW5zaW9uJ3MgY29udGVudCBzY3JpcHRzLgogICogQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gdGhlIG9wZXJhdGlv
biBjb21wbGV0ZXMgb3IgZmFpbHMuCiAgKiBAZGlzY3Vzc2lvbiBUaGUgY29tcGxldGlvbkhhbmRs
ZXIgaXMgcGFzc2VkIGFuIE5TSlNPTlNlcmlhbGl6YXRpb24tY29tcGF0aWJsZSBOU09iamVjdCBy
ZXByZXNlbnRpbmcgdGhlIGV2YWx1YXRpb24gcmVzdWx0LCBvciBhbiBlcnJvci4KICAqIHNjcmlw
dFNvdXJjZSBpcyB0cmVhdGVkIGFzIGEgdG9wLWxldmVsIGV2YWx1YXRpb24uIEJ5IGRlZmF1bHQs
IHRoZSBzY3JpcHQgaXMgZXZhbHVhdGVkIGluIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIHNjcmlwdCBj
b250ZXh0LgogICogVGhlIGluc3BlY3RlZCBwYWdlIHVsdGltYXRlbHkgY29udHJvbHMgaXRzIGV4
ZWN1dGlvbiBjb250ZXh0IGFuZCB0aGUgcmVzdWx0IG9mIHRoaXMgZXZhbHVhdGlvbi4gVGh1cywg
dGhlIHJlc3VsdCBzaGFsbCBiZSB0cmVhdGVkIGFzIHVudHJ1c3RlZCBpbnB1dC4KICAqLwotLSAo
dm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5T
VVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRleHRTZWN1
cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2NyaXB0
Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlLCBp
ZCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNT
dHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICogX051bGxhYmxlKWZyYW1lVVJM
IGNvbnRleHRTZWN1cml0eU9yaWdpbjooTlNVUkwgKiBfTnVsbGFibGUpY29udGV4dFNlY3VyaXR5
T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250
ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIGlkIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC8qKgogICogQGFic3RyYWN0IEV2YWx1YXRlcyBK
YXZhU2NyaXB0IGluIHRoZSBjb250ZXh0IG9mIGEgV2ViIEluc3BlY3RvciB0YWIgY3JlYXRlZCBi
eSB0aGlzIF9XS0luc3BlY3RvckV4dGVuc2lvbi4KICAqIEBwYXJhbSBzY3JpcHRTb3VyY2UgVGhl
IEphdmFTY3JpcHQgY29kZSB0byBiZSBldmFsdWF0ZWQuCiAgKiBAcGFyYW0gdGFiSWRlbnRpZmll
ciBJZGVudGlmaWVyIGZvciB0aGUgV2ViIEluc3BlY3RvciB0YWIgaW4gd2hpY2ggdG8gZXZhbHVh
dGUgSmF2YVNjcmlwdC4KICAqIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGlu
dm9rZSB3aGVuIHRoZSBvcGVyYXRpb24gY29tcGxldGVzIG9yIGZhaWxzLgogICogQGRpc2N1c3Np
b24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCBhbiBOU0pTT05TZXJpYWxpemF0aW9u
LWNvbXBhdGlibGUgTlNPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBldmFsdWF0aW9uIHJlc3VsdCwg
b3IgYW4gZXJyb3IuCiAgKiBzY3JpcHRTb3VyY2UgaXMgdHJlYXRlZCBhcyBhIHRvcC1sZXZlbCBl
dmFsdWF0aW9uLgogICovCiAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlw
dFNvdXJjZSBpblRhYldpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKXRhYklkZW50aWZpZXIgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgaWQgcmVzdWx0KSlj
b21wbGV0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBjMTk2NzEyY2M2ZDEuLjdjZTUyODI0OTcxNyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwxMCArMSwyNiBAQAorMjAy
Mi0wMS0xMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZvciBgZGV2dG9vbHMuaW5z
cGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZXZhbHVhdGluZyBzY3JpcHQg
b24gYW4gaW5zcGVjdGVkIHBhZ2UgZnJvbSBhbiBleHRlbnNpb24sIGluY2x1ZGluZyBldmFsdWF0
aW5nIG9uIGFuIGlubmVyCisgICAgICAgIGZyYW1lLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAg
ICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAx
LTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdT
XSBBY2NlcHQgR2l0SHViIGhvb2tzIChQYXJ0IDEpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMzMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3
MzQ1MjY5PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFha2FzaCBKYWluLgogCiAgICAgICAgIFRy
aWdnZXIgYSBzdWJzZXQgb2YgcXVldWVzIGZvciBpbmNvbWluZyBHaXRIdWIgcHVsbC1yZXF1ZXN0
cy4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMWZhMWViZmFlYzUuLmI4ZDc0MmFkNTM1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MiwyMCArMTYyLDIyIEBACiAJCTJFNjkx
QUVGMUQ3OURFODQwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctY2xpY2stdG8t
cGF1c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTY5MUFFRTFENzlERTZGMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLWF1dG9wbGF5
aW5nLWNsaWNrLXRvLXBhdXNlLmh0bWwgKi87IH07CiAJCTJFNjkxQUYxMUQ3OUU1MUEwMDEyOTQw
NyAvKiBsYXJnZS12aWRlb3MtYXV0b3BsYXlpbmctc2Nyb2xsLXRvLXZpZGVvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRjAx
RDc5RTUxNDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1hdXRvcGxheWluZy1zY3JvbGwtdG8tdmlk
ZW8uaHRtbCAqLzsgfTsKIAkJMkU2OTFBRjMxRDc5RTc1RTAwMTI5NDA3IC8qIGxhcmdlLXZpZGVv
LXBsYXlpbmctc2Nyb2xsLWF3YXkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFGMjFENzlFNzU0MDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW8tcGxheWluZy1zY3JvbGwtYXdheS5odG1sICovOyB9OwogCQkyRTc3NjVDRDE2QzREODBB
MDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovOyB9
OwogCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJC
MSAvKiBtYWluTWFjLm1tICovOyB9OwogCQkyRTkyQjhGNzIxNjQ5MEQ0MDA1QjY0RjAgLyogcmlj
aC10ZXh0LWF0dHJpYnV0ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTkyQjhGNjIxNjQ5MEMzMDA1QjY0RjAgLyogcmljaC10ZXh0
LWF0dHJpYnV0ZXMuaHRtbCAqLzsgfTsKIAkJMkU5ODk2MTUxRDhGMDkzODAwNzM5ODkyIC8qIHRl
eHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFOTg5NjE0MUQ4RjA5MkIwMDczOTg5MiAvKiB0ZXh0
LWFuZC1wYXNzd29yZC1pbnB1dHMuaHRtbCAqLzsgfTsKIAkJMkVCMjlENUUxRjc2MkRCOTAwMjNB
NUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCMjlENUQxRjc2MkRBNTAwMjNBNUYx
IC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi87IH07CiAJCTJFQkQ5RDBBMjEzNDcz
MEQwMDJEQTc1OCAvKiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0QzMkY3MjA2NUI3MkEwMDY0QTRCRSAvKiB2aWRlby5o
dG1sICovOyB9OwogCQkyRUM3MDM0QTI2QUY1RTg4MDAyQjJEMzcgLyogS2V5Ym9hcmRFdmVudFRl
c3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVD
NzAzNDkyNkFGNUU4ODAwMkIyRDM3IC8qIEtleWJvYXJkRXZlbnRUZXN0cy5tbSAqLzsgfTsKKwkJ
MkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVT
Y3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRl
bnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sICovOyB9OworCQkyRUQ4ODgyNDI3NzEyNUFC
MDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVy
RnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25F
dmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLzsgfTsKIAkJMkVGRjA2QzMxRDg4
NjIxRTAwMDRCQjMwIC8qIGxhcmdlLXZpZGVvLW9mZnNjcmVlbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkMyMUQ4ODYyMTIw
MDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKIAkJMkVGRjA2QzUx
RDg4Njc3NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tY2xpY2suaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZGMDZD
NDFEODg2NzcwMDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sICov
OyB9OwogCQkyRUZGMDZDNzFEODg2QTU4MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1v
bi1lbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRUZGMDZDNjFEODg2QTU2MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1v
bi1lbmQuaHRtbCAqLzsgfTsKIAkJMkVGRjA2Q0QxRDhBNDI5QTAwMDRCQjMwIC8qIGlucHV0LWZp
ZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZGMDZDQzFEOEE0MjkxMDAwNEJCMzAgLyog
aW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudC5odG1sICovOyB9OwogCQkzMTI4QTgx
MzIzNzYzRkFDMDBEOTBENDAgLyogbGluay13aXRoLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOEE4MTIyMzc2M0YwQjAw
RDkwRDQwIC8qIGxpbmstd2l0aC1pbWFnZS5odG1sICovOyB9OwogCQkzMTI4QTgxNTIzNzY0MTMz
MDBEOTBENDAgLyogaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4QTgxNDIzNzY0MEZEMDBEOTBENDAgLyogaW1hZ2UuaHRt
bCAqLzsgfTsKIAkJMzEzQzNBMDIyMUU1NjdDMzAwREJBODZFIC8qIFN5c3RlbVByZXZpZXdCbG9i
TmFtaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEzQzNBMDEyMUU1Njc3QTAwREJBODZFIC8qIFN5c3RlbVByZXZpZXdCbG9iTmFt
aW5nLmh0bWwgKi87IH07CiAJCTMxOTAzQzkxMjc2NTA3NzQwMDM2MzQ3MiAvKiBjb2xvci1zY2hl
bWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTkwM0M5MDI3NjRGRTE0MDAzNjM0NzIgLyogY29sb3Itc2NoZW1lLmh0bWwgKi87IH07
CiAJCTMxQjc2RTQ1MjMyOTlCREMwMDdGRUQyQyAvKiBzeXN0ZW0tcHJldmlldy10cmlnZ2VyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFCNzZFNDQyMzI5OUJBMzAwN0ZFRDJDIC8qIHN5c3RlbS1wcmV2aWV3LXRyaWdnZXIuaHRtbCAq
LzsgfTsKIAkJMzFFOUJEQTEyNDdGNEM2MjAwMkU1MUEyIC8qIFdlYkdMUHJlcGFyZURpc3BsYXlP
bldlYlRocmVhZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxRTlCREEwMjQ3RjRDNjIwMDJFNTFBMiAvKiBXZWJHTFByZXBhcmVEaXNwbGF5T25XZWJU
aHJlYWQubW0gKi87IH07CkBAIC0xNjI3LDIwICsxNjI5LDIyIEBACiAJCQkJMUMyQjgxODYxQzg5
MjU5RDAwQTU1MjlGIC8qIHdlYmZvbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkz
MUU5QkRBMzI0N0Y1NzI5MDAyRTUxQTIgLyogd2ViZ2wuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1MTcxNEVCNDFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTcxNEVCNTFDRjhDNzhDMDA0
NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1MzY3NzAzNjFDQzgxQjYxMDBENDI1QjEgLyogV2ViU2NyaXB0T2JqZWN0RGVz
Y3JpcHRpb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MTIwQzgzRTFFNjc2NzhG
MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJMkUxMzFDMTgxRDgzQTk4QTAwMUJBMzZDIC8qIHdpZGUtYXV0b3BsYXlp
bmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNFMTRG
MUE0MTgxODczQjAwMDFDMjcwNSAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFz
aC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ2OEYyRjk0MjM2OERBRjEwMEY0Qjg2
NCAvKiB3aW5kb3ctb3Blbi10aGVuLWRvY3VtZW50LW9wZW4uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlBNUUyMDI3NTE1QjIxRjZFMDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdX
aXRoTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRUQ4ODgyMzI3NzEyNUFC
MDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFRDg4ODI0Mjc3MTI1QUIwMERCN0U5OSAvKiBX
S0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCW5hbWUgPSAiQ29weSBSZXNvdXJjZXMiOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CiAvKiBFbmQg
UEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCQkwMENEOUY2MjE1QkUzMTJDMDAyREEyQ0UgLyogQmFja0Zvcndh
cmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmFja0Zv
cndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNDFBMUUzMzIxNkZG
REJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFB1YmxpY1N1ZmZpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA0NTFBNUE2MjM1RTQzOEUwMDlERjk0NSAvKiBCdW1wUG9pbnRlckFsbG9jYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdW1wUG9pbnRlckFsbG9jYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODUwLDIwICsxODU0LDIyIEBA
CiAJCTJFNjkxQUYyMUQ3OUU3NTQwMDEyOTQwNyAvKiBsYXJnZS12aWRlby1wbGF5aW5nLXNjcm9s
bC1hd2F5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tcGxh
eWluZy1zY3JvbGwtYXdheS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3
NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBtYWluSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG1haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFN0VGN0FDMUYyNjZBODEwMERGQjY3QyAvKiBBcHBLaXRTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXBwS2l0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJF
OTJCOEY2MjE2NDkwQzMwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0cmlidXRlcy5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJpY2gtdGV4dC1hdHRyaWJ1dGVzLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTkyQjhGODIxNjQ5MEVBMDA1QjY0RjAgLyogRm9u
dEF0dHJpYnV0ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
b250QXR0cmlidXRlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU5ODk2MTQx
RDhGMDkyQjAwNzM5ODkyIC8qIHRleHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInRleHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVCMjlENUQxRjc2MkRBNTAwMjNBNUYxIC8qIGR1
bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
ZHVtcC1kYXRhdHJhbnNmZXItdHlwZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFQzcwMzQ5MjZBRjVFODgwMDJCMkQzNyAvKiBLZXlib2FyZEV2ZW50VGVzdHMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBLZXlib2FyZEV2ZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFQ0ZGNTU0MUQ5QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5v
d1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNj
cmlwdE9uUGFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNj
cmlwdE9uUGFnZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRUQ4ODgyMjI3
NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFn
ZUlubmVyRnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVT
Y3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFRkYwNkMyMUQ4ODYyMTIwMDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFRkYwNkM0MUQ4ODY3NzAwMDA0QkIzMCAv
KiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWNsaWNrLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRl
by1zb3VyY2Utb24tZW5kLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hhbmdl
LXZpZGVvLXNvdXJjZS1vbi1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFRkYwNkNDMUQ4QTQyOTEwMDA0QkIzMCAvKiBpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRv
Y3VtZW50Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW5wdXQtZmllbGQtaW4t
c2Nyb2xsYWJsZS1kb2N1bWVudC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkVGRjA2RDIxRDhBRURCQjAwMDRCQjMwIC8qIFRlc3RXS1dlYlZpZXcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdFdLV2ViVmlldy5oOyBwYXRoID0gY29jb2EvVGVzdFdL
V2ViVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUZGMDZEMzFEOEFFREJC
MDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRlc3RXS1dlYlZpZXcubW07IHBhdGggPSBjb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUZGMDZENjFEOEFGMzRBMDAwNEJC
MzAgLyogV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOEE4MTIyMzc2M0YwQjAwRDkwRDQwIC8qIGxpbmstd2l0aC1p
bWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gImxpbmstd2l0aC1pbWFnZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOEE4MTQyMzc2NDBGRDAwRDkwRDQwIC8qIGltYWdlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBpbWFnZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTND
M0EwMTIxRTU2NzdBMDBEQkE4NkUgLyogU3lzdGVtUHJldmlld0Jsb2JOYW1pbmcuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFN5c3RlbVByZXZpZXdCbG9iTmFtaW5nLmh0bWw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjQ1LDIwICs0MjUxLDIyIEBACiAJCQkJNTc0
MjE3ODkyNDAwQUVEMDAwMkIzMDNEIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRp
YWwtbGEtZHVwbGljYXRlLWNyZWRlbnRpYWwuaHRtbCAqLywKIAkJCQk1NzQyMTc4NzI0MDBBQkZE
MDAyQjMwM0QgLyogd2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvci5o
dG1sICovLAogCQkJCTU3MDNCQjhDMjQ2M0Y4NzIwMDQ3NUZCMiAvKiB3ZWItYXV0aGVudGljYXRp
b24tbWFrZS1jcmVkZW50aWFsLWxhLW5vLWF0dGVzdGF0aW9uLmh0bWwgKi8sCiAJCQkJNTdFREZD
NUIyNDVBMThGNTAwOTU5NTIxIC8qIHdlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
bGEtbm8tbW9jay5odG1sICovLAogCQkJCTU3NDIxNzhEMjQwMEQyNkMwMDJCMzAzRCAvKiB3ZWIt
YXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLmh0bWwgKi8sCiAJCQkJNDZBNDRBNTMy
NUE3ODJERDAwRjYxRTE2IC8qIHdlYmF1ZGlvLWNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZS5odG1s
ICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJCTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1
MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLywKIAkJCQkyRTEzMUMxNzFE
ODNBOTdFMDAxQkEzNkMgLyogd2lkZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwg
Ki8sCisJCQkJMkVEODg4MjEyNzcxMUYxMjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9u
RXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCAqLywKKwkJCQkyRUQ4ODgyMjI3NzEyMDNBMDBEQjdF
OTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUu
aHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKIAkJfTsKIAkJQTE3QTVBMzEyMkE4ODc2MTAwNjVDNUYwIC8qIFRlc3RSdW5uZXJT
aGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUEx
N0E1QTMzMjJBODg3Q0UwMDY1QzVGMCAvKiBzcGkgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFRlc3RS
dW5uZXJTaGFyZWQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQppbmRleCA2NmQ5MzE2ZTNmNDku
LmE2YTEzMDFlMDc1MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0yMywyMCArMjMs
MjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0
ICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogI2ltcG9y
dCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAjaW1w
b3J0ICJUZXN0SW5zcGVjdG9yVVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4
dGVuc2lvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMzc1LDExICszNzYsMTM0IEBAIFRFU1QoV0tJ
bnNwZWN0b3JFeHRlbnNpb24sIEV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWJDYW5SZXR1cm5Q
cm9taXNlcykKICAgICAvLyBVbnJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KICAgICBwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKICAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0g
dW5yZWdpc3RlckV4dGVuc2lvbjpzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24uZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKIAogICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVl
OwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkKTsKIH0KIAorVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbiwgRXZhbHVhdGVTY3Jp
cHRPblBhZ2UpCit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Cisg
ICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJh
c0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0g
YWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb24gbmV3XSk7Cisg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byAqdGVzdFBhZ2VGaWxlVVJMID0gW05TQnVu
ZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1
YXRlU2NyaXB0T25QYWdlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlE
ZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6dGVzdFBhZ2VG
aWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOnRlc3RQYWdlRmlsZVVSTC5VUkxCeURlbGV0
aW5nTGFzdFBhdGhDb21wb25lbnRdOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxs
ZWQpOworCisgICAgYXV0byBleHRlbnNpb25JRCA9IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsK
KyAgICBhdXRvIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIgPSBAIm9yZy53ZWJraXQuVGVzdFdl
YktpdEFQSS5Gb3VydGhFeHRlbnNpb24iOworICAgIGF1dG8gZXh0ZW5zaW9uRGlzcGxheU5hbWUg
PSBAIkZvdXJ0aEV4dGVuc2lvbiI7CisKKyAgICAvLyBSZWdpc3RlciB0aGUgdGVzdCBleHRlbnNp
b24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3
IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmV4dGVuc2lvbklEIGV4dGVuc2lv
bkJ1bmRsZUlkZW50aWZpZXI6ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciBkaXNwbGF5TmFtZTpl
eHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yLCBf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKmV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworICAgICAgICBzaGFy
ZWRJbnNwZWN0b3JFeHRlbnNpb24gPSBleHRlbnNpb247CisKKyAgICAgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICBhdXRvIGV4dGVuc2lvbkRlbGVn
YXRlID0gYWRvcHROUyhbSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVj
dG9yRXh0ZW5zaW9uIG5ld10pOworICAgIFtzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gc2V0RGVs
ZWdhdGU6ZXh0ZW5zaW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gQ3JlYXRlIGFuZCBzaG93
IGFuIGV4dGVuc2lvbiB0YWIuCisgICAgYXV0byBpY29uVVJMID0gW05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lvbi1U
YWJJY29uLTMweDMwLnBuZyJdOworICAgIGF1dG8gc291cmNlVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5zaW9uL0luc3BlY3RvckV4dGVuc2lv
bi1iYXNpYy10YWIuaHRtbCJdOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBjcmVhdGVUYWJXaXRoTmFtZTpAIkZv
dXJ0aEV4dGVuc2lvbi1UYWIiIHRhYkljb25VUkw6aWNvblVSTCBzb3VyY2VVUkw6c291cmNlVVJM
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TU3RyaW5nICpleHRlbnNpb25U
YWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIpOworICAgICAgICBzaGFyZWRFeHRl
bnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRlbnRpZmllcjsKKworICAgICAgICBw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNob3dFeHRlbnNpb25UYWJXYXNDYWxs
ZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd0V4dGVuc2lvblRhYldp
dGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRTaG93RXh0ZW5zaW9uVGFiV2FzQ2FsbGVk
KTsKKworICAgIGF1dG8gbWFpbkZyYW1lU2VjcmV0U3RyaW5nID0gQCI0Mi1tYWluRnJhbWUiOwor
ICAgIGF1dG8gaW5uZXJGcmFtZVNlY3JldFN0cmluZyA9IEAiNDItaW5uZXJGcmFtZSI7CisgICAg
YXV0byBzY3JpcHRTb3VyY2UgPSBAImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWNyZXQnKS5p
bm5lclRleHQiOworCisgICAgLy8gVGVzdCBtYWluIGZyYW1lIGV2YWx1YXRpb24uCisgICAgcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVu
c2lvbiBldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVVUkw6bmlsIGNvbnRleHRTZWN1
cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6ZmFsc2UgY29tcGxldGlvbkhh
bmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpyZXN1bHQpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdWx0KTsKKyAg
ICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwgbWFpbkZyYW1lU2VjcmV0U3RyaW5nKTsKKwor
ICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAg
IC8vIFRlc3QgbWFpbiBmcmFtZSBldmFsdWF0aW9uIGZhaWx1cmUuCisgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFs
dWF0ZVNjcmlwdDpAIltdLngueCIgZnJhbWVVUkw6bmlsIGNvbnRleHRTZWN1cml0eU9yaWdpbjpu
aWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6ZmFsc2UgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vy
cm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFRlc3QgbG9v
c2UgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRvICp0ZXN0UGFnZUlubmVyRnJhbWVGaWxl
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
QFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwi
LCBbW3Rlc3RQYWdlRmlsZVVSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIGFic29s
dXRlU3RyaW5nXV1dOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Cisg
ICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2Ug
ZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46
bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNF
cnJvciAqZXJyb3IsIE5TRGljdGlvbmFyeSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVD
VF9OU19FUVVBTChyZXN1bHQsIGlubmVyRnJhbWVTZWNyZXRTdHJpbmcpOworCisgICAgICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVGVzdCBz
dHJpY3QgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRvICp0ZXN0UGFnZUlubmVyRnJhbWVT
dHJpY3RGaWxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQD9xdWVyeT1wYXJhbSNmcmFnbWVudCIsIFt0ZXN0UGFnZUlubmVyRnJhbWVGaWxl
VVJMIGFic29sdXRlU3RyaW5nXV1dOworCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
ZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpzY3Jp
cHRTb3VyY2UgZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1lU3RyaWN0RmlsZVVSTCBjb250ZXh0
U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNlIGNvbXBsZXRp
b25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFyeSAqcmVzdWx0KSB7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIGlubmVyRnJhbWVTZWNyZXRTdHJpbmcp
OworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOwor
CisgICAgLy8gVW5yZWdpc3RlciB0aGUgdGVzdCBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0
ZXJFeHRlbnNpb246c2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKwor
ICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30KKwog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFs
dWF0ZVNjcmlwdE9uUGFnZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMzhkZmJiYjgyNWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbApAQCAtMCwwICsxLDggQEAKKzxo
dG1sPgorICAgIDxoZWFkPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L2hlYWQ+CisgICAgPGJv
ZHk+CisgICAgICAgIDxwPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQuPC9wPgorICAgICAgICA8
cCBpZD0ic2VjcmV0Ij40Mi1tYWluRnJhbWU8L3A+CisgICAgICAgIDxpZnJhbWUgc3JjPSIuL1dL
SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw/cXVl
cnk9cGFyYW0jZnJhZ21lbnQiPjwvaWZyYW1lPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNj
cmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjNjZmMxOTE2MmJmOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlw
dE9uUGFnZUlubmVyRnJhbWUuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxodG1sPgorICAgIDxoZWFk
PlRlc3QgaW5uZXIgZnJhbWUgdG8gYmUgaW5zcGVjdGVkPC9oZWFkPgorICAgIDxib2R5PgorICAg
ICAgICA8cD5UZXN0IGlubmVyIGZyYW1lIHRvIGJlIGluc3BlY3RlZC48L3A+CisgICAgICAgIDxw
IGlkPSJzZWNyZXQiPjQyLWlubmVyRnJhbWU8L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449059</attachid>
            <date>2022-01-13 07:48:14 -0800</date>
            <delta_ts>2022-01-13 09:11:35 -0800</delta_ts>
            <desc>Patch v2.5 - Rebase for commit-queue</desc>
            <filename>bug-222568-20220113074813.patch</filename>
            <type>text/plain</type>
            <size>22302</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
NzJhNzFiZmNlY2U3MWVlNTk4OTFhMTYwOWNlZTgwZWZhNmM5Nzk2Li5kM2U2MWY5NzdkN2U4OWQx
ODMxMGIxMzNhMmNiODVjOTc2MWJlNGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMi0wMS0xMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZv
ciBgZGV2dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBOZXcgdGVzdDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBldmFsdWF0aW5nIHNjcmlwdCBmcm9tIGFuIGV4dGVuc2lvbiBpbiBh
IHNwZWNpZmljIGZyYW1lIG9uIHRoZSBwYWdlIGJ5IHJlZmVycmluZyB0byBpdCBieSB0aGUKKyAg
ICAgICAgZnJhbWUncyBVUkwuIEZyYW1lIFVSTHMgYXJlIG1hdGNoZWQgaW4gdGhyZWUgc3RlcHMs
IGZpcnN0IGxvb2tpbmcgZm9yIGFuIGV4YWN0IFVSTCBtYXRjaCwgaW5jbHVkaW5nIHF1ZXJ5Cisg
ICAgICAgIHBhcmFtZXRlcnMgYW5kIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIG5vIG1hdGNoIGlz
IGZvdW5kIGFuZCB0aGUgcHJvdmlkZWQgYG9wdGlvbnMuZnJhbWVVUkxgIGRvZXMgbm90IGhhdmUg
YW55CisgICAgICAgIGZyYWdtZW50IGlkZW50aWZpZXIgb3IgcXVlcnkgcGFyYW1ldGVycywgYSBj
aGVjayBpcyB0aGVuIG1hZGUgYWdhaW5zdCBlYWNoIGtub3duIGZyYW1lIGFnYWluLCB0aGlzIHRp
bWUKKyAgICAgICAgZXhjbHVkaW5nIHRoZWlyIGZyYWdtZW50IGlkZW50aWZpZXIuIElmIHRoYXQg
Y2hlY2sgc3RpbGwgZmFpbHMgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgVVJMLCB3ZSBwZXJmb3Jt
IG9uZSBtb3JlCisgICAgICAgIHBhc3MsIHRoaXMgdGltZSBleGNsdWRpbmcgdGhlIGZyYWdtZW50
IGlkZW50aWZpZXIgYW5kIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGVhY2gga25vd24gZnJhbWUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLnByb3RvdHlwZS5ldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWxvYWRGb3JFeHRlbnNp
b24pOgorICAgICAgICAtIERyaXZlLWJ5IHJlbW92YWwgb2YgdHJhaWxpbmcgc3BhY2VzLgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2ZyYW1l
Rm9yRnJhbWVVUkwpOgorCiAyMDIyLTAxLTEyICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxl
LmNvbT4KIAogICAgICAgICBbWGNvZGVdIENvbmZpZ3VyZSBlYWNoIHByb2plY3QgZm9yIHRoZSBs
ZWdhY3kgYnVpbGQgc3lzdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMwNTc0YWZhNjQ4ZWUzYzQ3YjdhOWViNWQ4
ZWFkZWEyNDQ2NzE4OTQuLjgyYjkwOTM0YmIzNzg2NmI2ZjdhOWZhZjhmNzk3NTdiZTIyOWYzNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTMgIFBhdHJpY2sgQW5nbGUgIDxw
YW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBgZnJh
bWVVUkxgIG9wdGlvbiBmb3IgYGRldnRvb2xzLmluc3BlY3RlZFdpbmRvdy5ldmFsYCBjb21tYW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1NjgK
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgTmV3IHRlc3Q6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNp
b24ubW0KKworICAgICAgICBDb3JyZWN0IHRoZSBBUEkgdG8gaW5kaWNhdGUgdGhhdCBgZnJhbWVV
UkxgIGFuZCBgY29udGV4dFNlY3VyaXR5T3JpZ2luYCBhcmUgbnVsbGFibGUgcGFyYW1ldGVycy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6
CisKIDIwMjItMDEtMTIgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUENNOiBTYW1lLXNpdGUgdHJpZ2dlcmluZyBldmVudHMgc2hvdWxkIHN1cHBvcnQgZXBo
ZW1lcmFsIG1lYXN1cmVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwppbmRleCBkYjU1ZjdmMGVmN2VmM2E0YzY5YmQx
NjhlMzNkYjFmMTIxYWFhYzMzLi5iZmMyNjRhZmEzOTQ5OTc1MzQ4Njg2MjhmOTNkZjJhODU4ZTNl
ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIuanMKQEAgLTEzMywxMCArMTMzLDEwIEBAIFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVy
IGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9y
Q29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiA8cmRh
cjovL3Byb2JsZW0vNzQxODAzNTU+IGltcGxlbWVudCBleGVjdXRpb24gY29udGV4dCBzZWxlY3Rp
b24gb3B0aW9ucwotICAgICAgICBpZiAoZnJhbWVVUkwpIHsKLSAgICAgICAgICAgIFdJLnJlcG9y
dEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiB0aGUgJ2ZyYW1lVVJM
JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKLSAgICAgICAgICAgIHJldHVybiBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOworICAgICAg
ICBsZXQgZnJhbWUgPSB0aGlzLl9mcmFtZUZvckZyYW1lVVJMKGZyYW1lVVJMKTsKKyAgICAgICAg
aWYgKCFmcmFtZSkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiZXZhbHVh
dGVTY3JpcHRGb3JFeHRlbnNpb246IE5vIGZyYW1lIG1hdGNoZWQgcHJvdmlkZWQgZnJhbWVVUkw6
ICIgKyBmcmFtZVVSTCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uLkVycm9yQ29kZS5JbnZhbGlkUmVxdWVzdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChj
b250ZXh0U2VjdXJpdHlPcmlnaW4pIHsKQEAgLTE0OSw3ICsxNDksMTIgQEAgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRy
b2xsZXIgZXh0ZW4KICAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
RXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IGV2YWx1
YXRpb25Db250ZXh0ID0gV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dDsK
KyAgICAgICAgbGV0IGV2YWx1YXRpb25Db250ZXh0ID0gZnJhbWUucGFnZUV4ZWN1dGlvbkNvbnRl
eHQ7CisgICAgICAgIGlmICghZXZhbHVhdGlvbkNvbnRleHQpIHsKKyAgICAgICAgICAgIFdJLnJl
cG9ydEludGVybmFsRXJyb3IoImV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uOiBObyAncGFnZUV4
ZWN1dGlvbkNvbnRleHQnIHdhcyBwcmVzZW50IGZvciBmcmFtZSB3aXRoIFVSTDogIiArIGZyYW1l
LnVybCk7CisgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9y
Q29kZS5Db250ZXh0RGVzdHJveWVkOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGV2YWx1
YXRpb25Db250ZXh0LnRhcmdldC5SdW50aW1lQWdlbnQuZXZhbHVhdGUuaW52b2tlKHsKICAgICAg
ICAgICAgIGV4cHJlc3Npb246IHNjcmlwdFNvdXJjZSwKICAgICAgICAgICAgIG9iamVjdEdyb3Vw
OiAiZXh0ZW5zaW9uLWV2YWx1YXRpb24iLApAQCAtMTY1LDcgKzE3MCw3IEBAIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyIGV4dGVuCiAgICAgICAgICAgICByZXR1cm4gd2FzVGhyb3duID8geyJlcnJvciI6IHJl
c3VsdE9yRXJyb3IuZGVzY3JpcHRpb259IDogeyJyZXN1bHQiOiB2YWx1ZX07CiAgICAgICAgIH0p
LmNhdGNoKChlcnJvcikgPT4gZXJyb3IuZGVzY3JpcHRpb24pOwogICAgIH0KLSAgICAKKwogICAg
IHJlbG9hZEZvckV4dGVuc2lvbihleHRlbnNpb25JRCwge2lnbm9yZUNhY2hlLCB1c2VyQWdlbnQs
IGluamVjdGVkU2NyaXB0fSA9IHt9KQogICAgIHsKICAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRo
aXMuX2V4dGVuc2lvbkZvckV4dGVuc2lvbklETWFwLmdldChleHRlbnNpb25JRCk7CkBAIC0xODQs
MTQgKzE4OSwxNCBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3Mg
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICAgICAgV0kucmVw
b3J0SW50ZXJuYWxFcnJvcigicmVsb2FkRm9yRXh0ZW5zaW9uOiB0aGUgJ2luamVjdGVkU2NyaXB0
JyBvcHRpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4iKTsKICAgICAgICAgICAgIHJldHVybiBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLk5vdEltcGxlbWVudGVkOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIGxldCB0YXJnZXQgPSBXSS5hc3N1bWluZ01haW5UYXJn
ZXQoKTsKICAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgiUGFnZS5yZWxvYWQiKSkKICAg
ICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFs
aWRSZXF1ZXN0OwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gdGFyZ2V0LlBhZ2VBZ2VudC5y
ZWxvYWQuaW52b2tlKHtpZ25vcmVDYWNoZX0pOwogICAgIH0KLSAgICAKKwogICAgIHNob3dFeHRl
bnNpb25UYWIoZXh0ZW5zaW9uVGFiSUQsIG9wdGlvbnMgPSB7fSkKICAgICB7CiAgICAgICAgIGxl
dCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2V4dGVuc2lvblRhYkNvbnRlbnRWaWV3Rm9yRXh0ZW5z
aW9uVGFiSURNYXAuZ2V0KGV4dGVuc2lvblRhYklEKTsKQEAgLTM5Myw2ICszOTgsNDIgQEAgV0ku
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVu
c2lvbkNvbnRyb2xsZXIgZXh0ZW4KICAgICAgICAgcmV0dXJuIHthbmNob3JUYWJUeXBlLCBhbmNo
b3JUYWJJbmRleCwgZGlzdGFuY2VGcm9tQW5jaG9yVGFifTsKICAgICB9CiAKKyAgICBfZnJhbWVG
b3JGcmFtZVVSTChmcmFtZVVSTCkKKyAgICB7CisgICAgICAgIGlmICghZnJhbWVVUkwpCisgICAg
ICAgICAgICByZXR1cm4gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lOworCisgICAgICAgIGZ1
bmN0aW9uIGZpbmRGcmFtZShmcmFtZVVSTCwgYWRqdXN0S25vd25GcmFtZVVSTCkgeworICAgICAg
ICAgICAgcmV0dXJuIFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lcy5maW5kKChrbm93bkZyYW1lKSA9
PiB7CisgICAgICAgICAgICAgICAgbGV0IGtub3duRnJhbWVVUkwgPSBuZXcgVVJMKGtub3duRnJh
bWUudXJsKTsKKyAgICAgICAgICAgICAgICBhZGp1c3RLbm93bkZyYW1lVVJMPy4oa25vd25GcmFt
ZVVSTCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtub3duRnJhbWVVUkwudG9TdHJpbmcoKSA9
PT0gZnJhbWVVUkw7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBm
cmFtZSA9IGZpbmRGcmFtZShmcmFtZVVSTCk7CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAg
ICAgIHJldHVybiBmcmFtZTsKKworICAgICAgICBsZXQgZnJhbWVVUkxQYXJ0cyA9IG5ldyBVUkwo
ZnJhbWVVUkwpOworICAgICAgICBpZiAoZnJhbWVVUkxQYXJ0cy5oYXNoLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGZyYW1lID0gZmluZEZyYW1lKGZyYW1lVVJM
LCAoa25vd25GcmFtZVVSTCkgPT4geworICAgICAgICAgICAga25vd25GcmFtZVVSTC5oYXNoID0g
IiI7CisgICAgICAgIH0pOworICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICByZXR1cm4g
ZnJhbWU7CisKKyAgICAgICAgaWYgKGZyYW1lVVJMUGFydHMuc2VhcmNoLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHJldHVybiBmaW5kRnJhbWUoZnJhbWVVUkws
IChrbm93bkZyYW1lVVJMKSA9PiB7CisgICAgICAgICAgICBrbm93bkZyYW1lVVJMLmhhc2ggPSAi
IjsKKyAgICAgICAgICAgIGtub3duRnJhbWVVUkwuc2VhcmNoID0gIiI7CisgICAgICAgIH0pOwor
ICAgIH0KKwogICAgIF9oYW5kbGVNYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5o
CmluZGV4IGE1YzQ1N2Q4MmE4ZjdmMTFkOTQ4NDNhOTdlNDIxMmIyZTNhNWViMDQuLjVjMTg5YWJj
YzM5NzUzNzFiOGRmZDhlNTc5YTM1YzYzZmUxZjM2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAg
LTYzLDcgKzYzLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEyLjApKQogICogc2NyaXB0
U291cmNlIGlzIHRyZWF0ZWQgYXMgYSB0b3AtbGV2ZWwgZXZhbHVhdGlvbi4gQnkgZGVmYXVsdCwg
dGhlIHNjcmlwdCBpcyBldmFsdWF0ZWQgaW4gdGhlIGluc3BlY3RlZCBwYWdlJ3Mgc2NyaXB0IGNv
bnRleHQuCiAgKiBUaGUgaW5zcGVjdGVkIHBhZ2UgdWx0aW1hdGVseSBjb250cm9scyBpdHMgZXhl
Y3V0aW9uIGNvbnRleHQgYW5kIHRoZSByZXN1bHQgb2YgdGhpcyBldmFsdWF0aW9uLiBUaHVzLCB0
aGUgcmVzdWx0IHNoYWxsIGJlIHRyZWF0ZWQgYXMgdW50cnVzdGVkIGlucHV0LgogICovCi0tICh2
b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNV
UkwgKilmcmFtZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46KE5TVVJMICopY29udGV4dFNlY3Vy
aXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIGlk
IHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0
cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKiBfTnVsbGFibGUpZnJhbWVVUkwg
Y29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqIF9OdWxsYWJsZSljb250ZXh0U2VjdXJpdHlP
cmlnaW4gdXNlQ29udGVudFNjcmlwdENvbnRleHQ6KEJPT0wpdXNlQ29udGVudFNjcmlwdENvbnRl
eHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgaWQgcmVz
dWx0KSljb21wbGV0aW9uSGFuZGxlcjsKIAogLyoqCiAgKiBAYWJzdHJhY3QgRXZhbHVhdGVzIEph
dmFTY3JpcHQgaW4gdGhlIGNvbnRleHQgb2YgYSBXZWIgSW5zcGVjdG9yIHRhYiBjcmVhdGVkIGJ5
IHRoaXMgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkzMmIyYTI2MzA3OTc3MDE1YmZmZjUxN2EyNGY4MjM0
YTkzZWJkM2YuLmY3NWNlMjgwOGQyZmY4Y2ZjZDZlOWViYmEzN2FmYzMyZGFjMWZiNTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wMS0xMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGBmcmFtZVVSTGAgb3B0aW9uIGZvciBgZGV2
dG9vbHMuaW5zcGVjdGVkV2luZG93LmV2YWxgIGNvbW1hbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjU2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IERldmluIFJvdXNzby4KKworICAgICAgICBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZXZhbHVhdGlu
ZyBzY3JpcHQgb24gYW4gaW5zcGVjdGVkIHBhZ2UgZnJvbSBhbiBleHRlbnNpb24sIGluY2x1ZGlu
ZyBldmFsdWF0aW5nIG9uIGFuIGlubmVyCisgICAgICAgIGZyYW1lLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lv
bi5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWw6IEFkZGVkLgor
CiAyMDIyLTAxLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRVdTXSBMb2FkIGNvbnRyaWJ1dG9ycyBmcm9tIHN0YW5kLWFsb25lIGNsYXNzCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGFmYWNkZDU4YjQwMDcwODczNTRlNDM4N2FlMDFkNTE0MDll
OTI4NzkuLjYwNDUyMzY4Mzk4NWVmYTIxMmI1MjlmMDhhNzliNDFiNTE2MjlhMzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNjksNiArMTY5LDggQEAKIAkJMkVCMjlENUUxRjc2MkRCOTAw
MjNBNUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVCMjlENUQxRjc2MkRBNTAwMjNB
NUYxIC8qIGR1bXAtZGF0YXRyYW5zZmVyLXR5cGVzLmh0bWwgKi87IH07CiAJCTJFQkQ5RDBBMjEz
NDczMEQwMDJEQTc1OCAvKiB2aWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Q0QzMkY3MjA2NUI3MkEwMDY0QTRCRSAvKiB2aWRl
by5odG1sICovOyB9OwogCQkyRUM3MDM0QTI2QUY1RTg4MDAyQjJEMzcgLyogS2V5Ym9hcmRFdmVu
dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkVDNzAzNDkyNkFGNUU4ODAwMkIyRDM3IC8qIEtleWJvYXJkRXZlbnRUZXN0cy5tbSAqLzsgfTsK
KwkJMkVEODg4MjMyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVh
dGVTY3JpcHRPblBhZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRUQ4ODgyMTI3NzExRjEyMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JF
eHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sICovOyB9OworCQkyRUQ4ODgyNDI3NzEy
NUFCMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlu
bmVyRnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRUQ4ODgyMjI3NzEyMDNBMDBEQjdFOTkgLyogV0tJbnNwZWN0b3JFeHRlbnNp
b25FdmFsdWF0ZVNjcmlwdE9uUGFnZUlubmVyRnJhbWUuaHRtbCAqLzsgfTsKIAkJMkVGRjA2QzMx
RDg4NjIxRTAwMDRCQjMwIC8qIGxhcmdlLXZpZGVvLW9mZnNjcmVlbi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFRkYwNkMyMUQ4ODYy
MTIwMDA0QkIzMCAvKiBsYXJnZS12aWRlby1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKIAkJMkVGRjA2
QzUxRDg4Njc3NjAwMDRCQjMwIC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tY2xpY2suaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRUZG
MDZDNDFEODg2NzcwMDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJjZS1vbi1jbGljay5odG1s
ICovOyB9OwogCQkyRUZGMDZDNzFEODg2QTU4MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJj
ZS1vbi1lbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRUZGMDZDNjFEODg2QTU2MDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJj
ZS1vbi1lbmQuaHRtbCAqLzsgfTsKQEAgLTE2MzQsNiArMTYzNiw4IEBACiAJCQkJQ0UxNEYxQTQx
ODE4NzNCMDAwMUMyNzA1IC8qIFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNDY4RjJGOTQyMzY4REFGMTAwRjRCODY0IC8q
IHdpbmRvdy1vcGVuLXRoZW4tZG9jdW1lbnQtb3Blbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUE1RTIwMjc1MTVCMjFGNkUwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhN
ZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFRDg4ODIzMjc3MTI1QUIwMERC
N0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkVEODg4MjQyNzcxMjVBQjAwREI3RTk5IC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJDb3B5IFJlc291cmNlcyI7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTE4NTcsNiArMTg2MSw4
IEBACiAJCTJFQjI5RDVEMUY3NjJEQTUwMDIzQTVGMSAvKiBkdW1wLWRhdGF0cmFuc2Zlci10eXBl
cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImR1bXAtZGF0YXRyYW5zZmVyLXR5
cGVzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUM3MDM0OTI2QUY1RTg4
MDAyQjJEMzcgLyogS2V5Ym9hcmRFdmVudFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
S2V5Ym9hcmRFdmVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUNG
RjU1NDFEOUIxMkY4MDBCNTUzOTQgLyogTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb3dQbGF5aW5nQ29udHJvbHNUZXN0
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEODg4MjEyNzcxMUYxMjAwREI3
RTk5IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2UuaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEODg4MjIyNzcxMjAzQTAwREI3RTk5IC8qIFdL
SW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFt
ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRUZGMDZDMjFEODg2MjEyMDAw
NEJCMzAgLyogbGFyZ2UtdmlkZW8tb2Zmc2NyZWVuLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAibGFyZ2UtdmlkZW8tb2Zmc2NyZWVuLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRUZGMDZDNDFEODg2NzcwMDAwNEJCMzAgLyogY2hhbmdlLXZpZGVvLXNvdXJj
ZS1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoYW5nZS12aWRl
by1zb3VyY2Utb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJF
RkYwNkM2MUQ4ODZBNTYwMDA0QkIzMCAvKiBjaGFuZ2UtdmlkZW8tc291cmNlLW9uLWVuZC5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5k
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDI1Miw2ICs0MjU4LDggQEAK
IAkJCQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVw
LTIuaHRtbCAqLywKIAkJCQk1MTIwQzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLmh0bWwgKi8sCiAJCQkJMkUxMzFDMTcxRDgzQTk3RTAwMUJBMzZDIC8q
IHdpZGUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovLAorCQkJCTJFRDg4ODIx
Mjc3MTFGMTIwMERCN0U5OSAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25Q
YWdlLmh0bWwgKi8sCisJCQkJMkVEODg4MjIyNzcxMjAzQTAwREI3RTk5IC8qIFdLSW5zcGVjdG9y
RXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwgKi8sCiAJCQkpOwog
CQkJbmFtZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbQppbmRleCA2NmQ5MzE2ZTNmNDlhOTFmODgyZDVhZWY0YmU2OTAxYTEw
NWUxZGJlLi5hNmExMzAxZTA3NTAzYzg4Nzg4Y2I4MTM2Njg0NjY3MWQxOWViZmVlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJ
bnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIkRlcHJlY2F0
ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgogI2ltcG9ydCAiVGVzdElu
c3BlY3RvclVSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgpAQCAtMzgy
LDQgKzM4MywxMjcgQEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbiwgRXZhbHVhdGVTY3JpcHRJ
bkV4dGVuc2lvblRhYkNhblJldHVyblByb21pc2VzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKIH0KIAorVEVTVChXS0luc3BlY3RvckV4
dGVuc2lvbiwgRXZhbHVhdGVTY3JpcHRPblBhZ2UpCit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgp
OworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVy
ZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0
b3JFeHRlbnNpb24gbmV3XSk7CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byAqdGVz
dFBhZ2VGaWxlVVJMID0gW05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJXS0lu
c3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlIiB3aXRoRXh0ZW5zaW9uOkAiaHRt
bCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcg
bG9hZEZpbGVVUkw6dGVzdFBhZ2VGaWxlVVJMIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOnRlc3RQ
YWdlRmlsZVVSTC5VUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdOworICAgIFtuYXZpZ2F0
aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW1t3ZWJWaWV3
IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisgICAgYXV0byBleHRlbnNpb25JRCA9IFtOU1VV
SUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBhdXRvIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIg
PSBAIm9yZy53ZWJraXQuVGVzdFdlYktpdEFQSS5Gb3VydGhFeHRlbnNpb24iOworICAgIGF1dG8g
ZXh0ZW5zaW9uRGlzcGxheU5hbWUgPSBAIkZvdXJ0aEV4dGVuc2lvbiI7CisKKyAgICAvLyBSZWdp
c3RlciB0aGUgdGVzdCBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
ZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElE
OmV4dGVuc2lvbklEIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI6ZXh0ZW5zaW9uQnVuZGxlSWRl
bnRpZmllciBkaXNwbGF5TmFtZTpleHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRXJyb3IgKmVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKmV4dGVuc2lvbikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRl
bnNpb24pOworICAgICAgICBzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gPSBleHRlbnNpb247CisK
KyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAg
ICBhdXRvIGV4dGVuc2lvbkRlbGVnYXRlID0gYWRvcHROUyhbSW5zcGVjdG9yRXh0ZW5zaW9uRGVs
ZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uIG5ld10pOworICAgIFtzaGFyZWRJbnNw
ZWN0b3JFeHRlbnNpb24gc2V0RGVsZWdhdGU6ZXh0ZW5zaW9uRGVsZWdhdGUuZ2V0KCldOworCisg
ICAgLy8gQ3JlYXRlIGFuZCBzaG93IGFuIGV4dGVuc2lvbiB0YWIuCisgICAgYXV0byBpY29uVVJM
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5zaW9u
L0luc3BlY3RvckV4dGVuc2lvbi1UYWJJY29uLTMweDMwLnBuZyJdOworICAgIGF1dG8gc291cmNl
VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0LXJlc291cmNlOi8vRm91cnRoRXh0ZW5z
aW9uL0luc3BlY3RvckV4dGVuc2lvbi1iYXNpYy10YWIuaHRtbCJdOworCisgICAgcGVuZGluZ0Nh
bGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBj
cmVhdGVUYWJXaXRoTmFtZTpAIkZvdXJ0aEV4dGVuc2lvbi1UYWIiIHRhYkljb25VUkw6aWNvblVS
TCBzb3VyY2VVUkw6c291cmNlVVJMIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3Is
IE5TU3RyaW5nICpleHRlbnNpb25UYWJJZGVudGlmaWVyKSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvblRhYklkZW50aWZpZXIp
OworICAgICAgICBzaGFyZWRFeHRlbnNpb25UYWJJZGVudGlmaWVyID0gZXh0ZW5zaW9uVGFiSWRl
bnRpZmllcjsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkKTsKKworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGRpZFNo
b3dFeHRlbnNpb25UYWJXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rv
cl0gc2hvd0V4dGVuc2lvblRhYldpdGhJZGVudGlmaWVyOnNoYXJlZEV4dGVuc2lvblRhYklkZW50
aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRTaG93
RXh0ZW5zaW9uVGFiV2FzQ2FsbGVkKTsKKworICAgIGF1dG8gbWFpbkZyYW1lU2VjcmV0U3RyaW5n
ID0gQCI0Mi1tYWluRnJhbWUiOworICAgIGF1dG8gaW5uZXJGcmFtZVNlY3JldFN0cmluZyA9IEAi
NDItaW5uZXJGcmFtZSI7CisgICAgYXV0byBzY3JpcHRTb3VyY2UgPSBAImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdzZWNyZXQnKS5pbm5lclRleHQiOworCisgICAgLy8gVGVzdCBtYWluIGZyYW1l
IGV2YWx1YXRpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAg
W3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJh
bWVVUkw6bmlsIGNvbnRleHRTZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRl
eHQ6ZmFsc2UgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5
ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
Tk9UX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05TX0VRVUFMKHJlc3VsdCwgbWFpbkZy
YW1lU2VjcmV0U3RyaW5nKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFRlc3QgbWFpbiBmcmFtZSBldmFsdWF0aW9uIGZhaWx1
cmUuCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZElu
c3BlY3RvckV4dGVuc2lvbiBldmFsdWF0ZVNjcmlwdDpAIltdLngueCIgZnJhbWVVUkw6bmlsIGNv
bnRleHRTZWN1cml0eU9yaWdpbjpuaWwgdXNlQ29udGVudFNjcmlwdENvbnRleHQ6ZmFsc2UgY29t
cGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvciwgTlNEaWN0aW9uYXJ5ICpyZXN1bHQpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVy
cm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
KTsKKworICAgIC8vIFRlc3QgbG9vc2UgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRvICp0
ZXN0UGFnZUlubmVyRnJhbWVGaWxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQFdLSW5zcGVjdG9yRXh0ZW5zaW9uRXZhbHVhdGVTY3JpcHRP
blBhZ2VJbm5lckZyYW1lLmh0bWwiLCBbW3Rlc3RQYWdlRmlsZVVSTCBVUkxCeURlbGV0aW5nTGFz
dFBhdGhDb21wb25lbnRdIGFic29sdXRlU3RyaW5nXV1dOworCisgICAgcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lvbiBldmFsdWF0
ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1lRmlsZVVSTCBj
b250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0OmZhbHNlIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlvbmFyeSAqcmVzdWx0KSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJl
c3VsdCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIGlubmVyRnJhbWVTZWNyZXRT
dHJpbmcpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQpOworCisgICAgLy8gVGVzdCBzdHJpY3QgZnJhbWVVUkwgZXZhbHVhdGlvbi4KKyAgICBhdXRv
ICp0ZXN0UGFnZUlubmVyRnJhbWVTdHJpY3RGaWxlVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQD9xdWVyeT1wYXJhbSNmcmFnbWVudCIsIFt0
ZXN0UGFnZUlubmVyRnJhbWVGaWxlVVJMIGFic29sdXRlU3RyaW5nXV1dOworCisgICAgcGVuZGlu
Z0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW3NoYXJlZEluc3BlY3RvckV4dGVuc2lv
biBldmFsdWF0ZVNjcmlwdDpzY3JpcHRTb3VyY2UgZnJhbWVVUkw6dGVzdFBhZ2VJbm5lckZyYW1l
U3RyaWN0RmlsZVVSTCBjb250ZXh0U2VjdXJpdHlPcmlnaW46bmlsIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0OmZhbHNlIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IsIE5TRGljdGlv
bmFyeSAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OU19FUVVBTChyZXN1bHQsIGlu
bmVyRnJhbWVTZWNyZXRTdHJpbmcpOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVW5yZWdpc3RlciB0aGUgdGVzdCBleHRlbnNp
b24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3
IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246c2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9u
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJ
bnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2Ny
aXB0T25QYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjM4ZGZiYmI4MjVhYzViYjc2ZDk0M2EwMDA0MGEz
MjkwYzUyZGU5NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFnZS5odG1s
CkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+CisgICAgPGhlYWQ+VGVzdCBwYWdlIHRvIGJlIGluc3Bl
Y3RlZDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBwYWdlIHRvIGJlIGluc3Bl
Y3RlZC48L3A+CisgICAgICAgIDxwIGlkPSJzZWNyZXQiPjQyLW1haW5GcmFtZTwvcD4KKyAgICAg
ICAgPGlmcmFtZSBzcmM9Ii4vV0tJbnNwZWN0b3JFeHRlbnNpb25FdmFsdWF0ZVNjcmlwdE9uUGFn
ZUlubmVyRnJhbWUuaHRtbD9xdWVyeT1wYXJhbSNmcmFnbWVudCI+PC9pZnJhbWU+CisgICAgPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFt
ZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbkV2YWx1YXRlU2NyaXB0T25QYWdlSW5uZXJGcmFtZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjZmMxOTE2MmJmODY1MzU1ZThmMmY2ODRhY2ZjZTE2OWJhMWE0YTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRXZhbHVhdGVTY3JpcHRPblBhZ2VJbm5lckZyYW1lLmh0bWwKQEAgLTAsMCArMSw3IEBA
Cis8aHRtbD4KKyAgICA8aGVhZD5UZXN0IGlubmVyIGZyYW1lIHRvIGJlIGluc3BlY3RlZDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBpbm5lciBmcmFtZSB0byBiZSBpbnNwZWN0
ZWQuPC9wPgorICAgICAgICA8cCBpZD0ic2VjcmV0Ij40Mi1pbm5lckZyYW1lPC9wPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="475051"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>