<?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>191820</bug_id>
          
          <creation_ts>2018-11-17 20:39:15 -0800</creation_ts>
          <short_desc>Web Inspector: Add support for forcing color scheme appearance in DOM tree</short_desc>
          <delta_ts>2018-11-27 13:16:18 -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="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1480037</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-17 20:39:15 -0800</bug_when>
    <thetext>Add a navigation button to force light or dark appearance (whatever is the opposite of the default appearance).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480038</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-17 20:39:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/46153172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480039</commentid>
    <comment_count>2</comment_count>
      <attachid>355225</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-17 20:53:14 -0800</bug_when>
    <thetext>Created attachment 355225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480040</commentid>
    <comment_count>3</comment_count>
      <attachid>355226</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-17 20:53:37 -0800</bug_when>
    <thetext>Created attachment 355226
Screenshot With Patch Applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480042</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-17 20:55:01 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480047</commentid>
    <comment_count>5</comment_count>
      <attachid>355225</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-17 22:39:15 -0800</bug_when>
    <thetext>Comment on attachment 355225
Patch

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

Can you add tests for this?  A few basic ones checking that `getDefaultAppearance` is valid and `setForcedAppearance` doesn&apos;t throw an error.  Is it possible for us to check any styling on the page (maybe even a media query being active) to see if `setForcedAppearance` actually worked?

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:213
&gt; +                { &quot;name&quot;: &quot;result&quot;, &quot;$ref&quot;: &quot;AppearanceName&quot;, &quot;description&quot;: &quot;Appearance name that is active when no appearance is forced.&quot; }

NIT: I think the name `appearance` would be better

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:322
&gt; +                { &quot;name&quot;: &quot;appearance&quot;, &quot;$ref&quot;: &quot;AppearanceName&quot;, &quot;description&quot;: &quot;Name of the appearance that is active when no appearance is forced.&quot; }

NIT: this description doesn&apos;t seem accurate

&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:695
&gt; +    m_frontendDispatcher-&gt;defaultAppearanceChanged(useDarkAppearance ? Inspector::Protocol::Page::AppearanceName::Dark : Inspector::Protocol::Page::AppearanceName::Light);

This isn&apos;t very flexible if other appearances get added, but I think that&apos;s very unlikely to happen, so I guess I&apos;m fine with this

&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:828
&gt; +    if (appearanceName == &quot;Light&quot;_str)

NIT: I think just `_s` is enough

&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:830
&gt; +    else if (appearanceName == &quot;Dark&quot;_str)

Ditto (828)

&gt; Source/WebCore/page/Page.cpp:2536
&gt; +    appearanceDidChange();

Should we only call this if `valueOverride !== m_useDarkAppearanceOverride`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:151
&gt; +        this.dispatchEventToListeners(WI.CSSManager.Event.ForcedAppearanceDidChange, {appearanceName: this._forcedAppearanceName});

Should this fire inside the callback of `PageAgent.setForcedAppearance`?  It seems a bit &quot;premature&quot; to dispatch this event considering you haven&apos;t even called into the backend yet.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:155
&gt; +        this.mediaQueryResultChanged();

Ditto (151)

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:158
&gt; +    canForceAppearance()

NIT: make this a getter?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:325
&gt; +    defaultAppearanceDidChange(protocolName)

NIT: please add `// Called from WI.PageObserver.`

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:648
&gt; +    Light: Symbol(&quot;light&quot;),
&gt; +    Dark: Symbol(&quot;dark&quot;),

Personally, I think using a symbol is a bit unnecessary over a plain string (extra work to make it unique), but if you feel strongly about using them then that&apos;s fine

&gt; Source/WebInspectorUI/UserInterface/Protocol/PageObserver.js:52
&gt; +        WI.cssManager.defaultAppearanceDidChange(appearanceName);

I&apos;d rather you keep the naming consistent between all of the classes (e.g. `InspectorInstrumentation`, `InspectorPageAgent`, `PageObserver`, and `PageManager` should all use `defaultAppearanceChanged`) so it makes searching/following code much easier

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:77
&gt; +        WI.cssManager.addEventListener(WI.CSSManager.Event.DefaultAppearanceDidChange, this._defaultAppearanceDidChange, this);

NIT: I prefer to prefix all event listeners with `_handle*`

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:605
&gt; +        if (WI.cssManager.forcedAppearanceName &amp;&amp; this._forceAppearanceButtonNavigationItem)

If the user forces Dark mode, then changes to Dark mode via System Preferences, we&apos;d still have the navigation item enabled?  This is a tricky situation.  On one hand, if the user has forced an appearance, the item should stay active no matter what (e.g. if they go from light to dark to light, it should still be enabled after the last switch).  On the other, if the user switches to dark mode, they have to click the item twice to force enable light mode.  Frankly, I&apos;m not sure which is more useful/important/sensible.

Could we do something like un-force if the default appearance changes to be the forced appearance, but still save that value so that if they change the default appearance back, it would re-force using the saved value?  Additionally, when in the changed appearance mode, clicking the navigation item would override the saved value with the current opposite of the default appearance?

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:627
&gt; +        this._forceAppearanceButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._toggleAppearance, this);

Ditto (77)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480048</commentid>
    <comment_count>6</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-17 22:40:18 -0800</bug_when>
    <thetext>(In reply to Timothy Hatcher from comment #3)
&gt; Created attachment 355226 [details]
&gt; Screenshot With Patch Applied
I love this icon 😍

Have you tried looking at it in non-retina?  I feel like the three-dots might not be clear (or even visible) 😞</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480108</commentid>
    <comment_count>7</comment_count>
      <attachid>355225</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-18 20:14:23 -0800</bug_when>
    <thetext>Comment on attachment 355225
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:695
&gt;&gt; +    m_frontendDispatcher-&gt;defaultAppearanceChanged(useDarkAppearance ? Inspector::Protocol::Page::AppearanceName::Dark : Inspector::Protocol::Page::AppearanceName::Light);
&gt; 
&gt; This isn&apos;t very flexible if other appearances get added, but I think that&apos;s very unlikely to happen, so I guess I&apos;m fine with this

Yeah, we would need to cross that bridge when needed. But it likely won&apos;t happen soon.

&gt;&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:828
&gt;&gt; +    if (appearanceName == &quot;Light&quot;_str)
&gt; 
&gt; NIT: I think just `_s` is enough

Cool!

&gt;&gt; Source/WebCore/page/Page.cpp:2536
&gt;&gt; +    appearanceDidChange();
&gt; 
&gt; Should we only call this if `valueOverride !== m_useDarkAppearanceOverride`?

Yeah, added.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:151
&gt;&gt; +        this.dispatchEventToListeners(WI.CSSManager.Event.ForcedAppearanceDidChange, {appearanceName: this._forcedAppearanceName});
&gt; 
&gt; Should this fire inside the callback of `PageAgent.setForcedAppearance`?  It seems a bit &quot;premature&quot; to dispatch this event considering you haven&apos;t even called into the backend yet.

PageAgent does not fire an event for forced appearance in this patch, only when the default changes. I moved this code into a then() on PageAgent.setForcedAppearance() promise.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:155
&gt;&gt; +        this.mediaQueryResultChanged();
&gt; 
&gt; Ditto (151)

Ditto.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:158
&gt;&gt; +    canForceAppearance()
&gt; 
&gt; NIT: make this a getter?

This matches the canForcePseudoClasses() below. Also questions should be functions, not getters.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:325
&gt;&gt; +    defaultAppearanceDidChange(protocolName)
&gt; 
&gt; NIT: please add `// Called from WI.PageObserver.`

Added.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:648
&gt;&gt; +    Dark: Symbol(&quot;dark&quot;),
&gt; 
&gt; Personally, I think using a symbol is a bit unnecessary over a plain string (extra work to make it unique), but if you feel strongly about using them then that&apos;s fine

Directly using protocol types in the managers has been an issue for us for a while. This forces us to map the enums and have a hard separation between manager and agent. View and model code should not touch agent types.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/PageObserver.js:52
&gt;&gt; +        WI.cssManager.defaultAppearanceDidChange(appearanceName);
&gt; 
&gt; I&apos;d rather you keep the naming consistent between all of the classes (e.g. `InspectorInstrumentation`, `InspectorPageAgent`, `PageObserver`, and `PageManager` should all use `defaultAppearanceChanged`) so it makes searching/following code much easier

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:77
&gt;&gt; +        WI.cssManager.addEventListener(WI.CSSManager.Event.DefaultAppearanceDidChange, this._defaultAppearanceDidChange, this);
&gt; 
&gt; NIT: I prefer to prefix all event listeners with `_handle*`

Meh, most things are event listeners really. Also code calls this function directly, and even isn&apos;t a param. So I left this as-is.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:605
&gt;&gt; +        if (WI.cssManager.forcedAppearanceName &amp;&amp; this._forceAppearanceButtonNavigationItem)
&gt; 
&gt; If the user forces Dark mode, then changes to Dark mode via System Preferences, we&apos;d still have the navigation item enabled?  This is a tricky situation.  On one hand, if the user has forced an appearance, the item should stay active no matter what (e.g. if they go from light to dark to light, it should still be enabled after the last switch).  On the other, if the user switches to dark mode, they have to click the item twice to force enable light mode.  Frankly, I&apos;m not sure which is more useful/important/sensible.
&gt; 
&gt; Could we do something like un-force if the default appearance changes to be the forced appearance, but still save that value so that if they change the default appearance back, it would re-force using the saved value?  Additionally, when in the changed appearance mode, clicking the navigation item would override the saved value with the current opposite of the default appearance?

I handle it as you stated and I think that is sufficient. Users are not likely going to be toggling both system setting and our button at the same time, so adding more complexity to unforce and reforce is not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480110</commentid>
    <comment_count>8</comment_count>
      <attachid>355249</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-18 20:15:10 -0800</bug_when>
    <thetext>Created attachment 355249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480111</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-18 20:17:12 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #5)
&gt; Comment on attachment 355225 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355225&amp;action=review
&gt; 
&gt; Can you add tests for this?  A few basic ones checking that
&gt; `getDefaultAppearance` is valid and `setForcedAppearance` doesn&apos;t throw an
&gt; error.  Is it possible for us to check any styling on the page (maybe even a
&gt; media query being active) to see if `setForcedAppearance` actually worked?

I&apos;ll try to write a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480284</commentid>
    <comment_count>10</comment_count>
      <attachid>355249</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-19 13:15:37 -0800</bug_when>
    <thetext>Comment on attachment 355249
Patch

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

This looks nice. All it needs are tests for the new protocol commands + events.

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:210
&gt; +            &quot;name&quot;: &quot;getDefaultAppearance&quot;,

This also is not used, should we just get rid of it?

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:324
&gt; +        {
&gt; +            &quot;name&quot;: &quot;forcedAppearanceDidChange&quot;,
&gt; +            &quot;description&quot;: &quot;Fired when page&apos;s forced appearance changes.&quot;,
&gt; +            &quot;parameters&quot;: [
&gt; +                { &quot;name&quot;: &quot;appearance&quot;, &quot;$ref&quot;: &quot;Appearance&quot;, &quot;description&quot;: &quot;Name of the appearance that is forced.&quot; }
&gt; +            ]
&gt; +        },

This is not added to the PageObserver below. Lets remove it?

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:606
&gt; +        if (WI.cssManager.forcedAppearance &amp;&amp; this._forceAppearanceButtonNavigationItem)
&gt; +            return;

If I&apos;m on a page with default Light appearance the button is created with &quot;Default Light, Toggle Dark&quot;.
If I then navigate to a page with a default Dark appearance, the button does not look like it is updated. So are its tooltips incorrect?

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:620
&gt; +            console.error(&quot;Uknown default appearance name:&quot;, defaultAppearance);

Typo: &quot;Uknown&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480358</commentid>
    <comment_count>11</comment_count>
      <attachid>355304</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-19 19:13:32 -0800</bug_when>
    <thetext>Created attachment 355304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480359</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-19 19:13:57 -0800</bug_when>
    <thetext>Added a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480360</commentid>
    <comment_count>13</comment_count>
      <attachid>355249</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-19 19:28:49 -0800</bug_when>
    <thetext>Comment on attachment 355249
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Page.json:210
&gt;&gt; +            &quot;name&quot;: &quot;getDefaultAppearance&quot;,
&gt; 
&gt; This also is not used, should we just get rid of it?

Yep, will remove.

&gt;&gt; Source/JavaScriptCore/inspector/protocol/Page.json:324
&gt;&gt; +        },
&gt; 
&gt; This is not added to the PageObserver below. Lets remove it?

Yep, will remove.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:606
&gt;&gt; +            return;
&gt; 
&gt; If I&apos;m on a page with default Light appearance the button is created with &quot;Default Light, Toggle Dark&quot;.
&gt; If I then navigate to a page with a default Dark appearance, the button does not look like it is updated. So are its tooltips incorrect?

A page&apos;s default appearance is the same between navigations. It only changes when the user picks a new appearance in system preferences.

A document might not use dark appearance, and still be &quot;light&quot;, unless it uses supported-color-schemes and/or the prefers-color-scheme media query. But the page is still default &quot;dark&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480361</commentid>
    <comment_count>14</comment_count>
      <attachid>355305</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-19 19:32:09 -0800</bug_when>
    <thetext>Created attachment 355305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481916</commentid>
    <comment_count>15</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2018-11-27 08:35:34 -0800</bug_when>
    <thetext>Can we get this reviewed and landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481961</commentid>
    <comment_count>16</comment_count>
      <attachid>355305</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-27 10:40:52 -0800</bug_when>
    <thetext>Comment on attachment 355305
Patch

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

r=me, super awesome job!

It&apos;d be great for WebInspector development if there was a way to do a similar thing for WebInspector within WebInspector, just like how we can force the layout direction.  You could do this for dark mode via System Preferences or by inspector^2, but that&apos;s a bit more annoying :P

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:206
&gt; +                { &quot;name&quot;: &quot;appearance&quot;, &quot;$ref&quot;: &quot;Appearance&quot;, &quot;description&quot;: &quot;Appearance name to force. Empty string disables the override.&quot; }

Considering that we are using a specified type `Appearance`, perhaps we should add a `Default` to the list of values.  If this value was a _real_ enum, an &quot;empty string&quot; would be invalid, so even though that works here because it&apos;s just a `String`, it&apos;d be more &quot;correct&quot; (somewhat similar to `WI.LayoutDirection`).  You&apos;d also be able to use this in the frontend by passing actual specific values instead of empty strings.

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:312
&gt; +            &quot;name&quot;: &quot;defaultAppearanceDidChange&quot;,

NIT: I hate it when events have &quot;Did&quot; in the name, as it&apos;s almost always unnecessary.  I&apos;d prefer this be called `defaultAppearanceChanged`.

&gt; Source/JavaScriptCore/inspector/protocol/Page.json:315
&gt; +                { &quot;name&quot;: &quot;appearance&quot;, &quot;$ref&quot;: &quot;Appearance&quot;, &quot;description&quot;: &quot;Name of the appearance that is active (not considering any forced appearance.)&quot; }

NIT: the &quot;.&quot; should go after the &quot;)&quot;

&gt; Source/WebCore/inspector/agents/InspectorPageAgent.cpp:821
&gt; +void InspectorPageAgent::setForcedAppearance(ErrorString&amp;, const String&amp; appearance)

See Page.json:206 for using the actual protocol type instead of a `String`

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:151
&gt; +        PageAgent.setForcedAppearance(protocolName).then(() =&gt; {

Should we do any error logging?  I&apos;d also prefer a callback if there&apos;s no reason to use the promise (e.g. returning it for chaining).

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:159
&gt; +        return window.PageAgent &amp;&amp; !!PageAgent.setForcedAppearance &amp;&amp; this._defaultAppearance;

I think the new approach for feature checking is to use `InspectorBackend.domains.Page.setForcedAppearance`.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:644
&gt; +    DefaultAppearanceDidChange: &quot;css-manager-default-appearance-did-change&quot;,
&gt; +    ForcedAppearanceDidChange: &quot;css-manager-forced-appearance-did-change&quot;,

See Page.json:312

&gt; LayoutTests/inspector/css/force-page-appearance.html:30
&gt; +            InspectorTest.expectEqual(getProperty(&quot;color&quot;).rawValue, &quot;rgb(0, 0, 0)&quot;);

These checks could use comments, as otherwise it&apos;s a bit confusing to read the expected value and understand what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482071</commentid>
    <comment_count>17</comment_count>
      <attachid>355305</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 13:16:16 -0800</bug_when>
    <thetext>Comment on attachment 355305
Patch

Clearing flags on attachment: 355305

Committed r238570: &lt;https://trac.webkit.org/changeset/238570&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482072</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 13:16:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355225</attachid>
            <date>2018-11-17 20:53:14 -0800</date>
            <delta_ts>2018-11-18 20:15:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191820-20181117205313.patch</filename>
            <type>text/plain</type>
            <size>28875</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5iZTFjMWNlZjUyMWNiYmEy
NTBhOTQ4MzFkYjFlMDhiZDEyNTVhZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29s
b3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NDYxNTMxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZGVkIHNldEZvcmNlZEFwcGVhcmFu
Y2UgYW5kIGdldERlZmF1bHRBcHBlYXJhbmNlLgorICAgICAgICBBbHNvIGFkZGVkIHRoZSBkZWZh
dWx0QXBwZWFyYW5jZUNoYW5nZWQgZXZlbnQgYW5kIEFwcGVhcmFuY2VOYW1lIGVudW0uCisKIDIw
MTgtMTEtMTUgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERl
bGV0ZSBvbGQgLnhjZmlsZWxpc3QgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZjY2NzM3NjZkMzAyNzZj
MzVlNTRjNzNjMzA3MGQxYzk0MjZmZTVhLi5hNTg2MmE2NjVlZDA0OTk1NWU1ZmJmYjI0ODJjMTIy
MDhkMGQ1ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTgtMTEtMTcgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEFkZCBzdXBwb3J0IGZvciBmb3JjaW5nIGNvbG9yIHNjaGVtZSBhcHBlYXJhbmNlIGluIERPTSB0
cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
ODIwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQ2MTUzMTcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGVmYXVsdEFwcGVhcmFuY2VDaGFuZ2VkSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKTogRmlyZSBkZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQo
KSBvbiBtYWNPUyBNYWphdmUuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRpc2FibGUpOiBDYWxsIHNldEZvcmNlZEFwcGVhcmFuY2UoKSB3aXRoIGVtcHR5IHN0cmluZy4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGVmYXVsdEFwcGVhcmFuY2VD
aGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNl
dEZvcmNlZEFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6Z2V0RGVmYXVsdEFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZSk6IENhbGwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KTogUmV0dXJuIG92ZXJy
aWRlIHZhbHVlIGlmIG5vdCBudWxsb3B0LgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VXNl
RGFya0FwcGVhcmFuY2VPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KTog
QWRkZWQuCisKIDIwMTgtMTEtMTUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgogCiAgICAgICAgIERyYWdJbWFnZSBzaG91bGQgaGF2ZSBhIGNvbXBsZXRlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY4NDI4YmY5Y2NkMThi
NTY0NWY2ZTA2YmM4NzJlY2IyM2UxY2IyNmYuLjM4ZWNlYTdmNWMyNTQ0ZTc1ZDM4NGRiMzM5Nzdi
ZTNkMzM2NTY2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDE4LTExLTE3ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZm9yY2luZyBjb2xvciBzY2hlbWUgYXBw
ZWFyYW5jZSBpbiBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTgyMAorICAgICAgICByZGFyOi8vcHJvYmxlbS80NjE1MzE3MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOiBVcGRhdGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkNTU01h
bmFnZXIpOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRlZmF1bHRBcHBl
YXJhbmNlTmFtZSk6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZ2V0
IGZvcmNlZEFwcGVhcmFuY2VOYW1lKTogQWRkZWQuCisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnBy
b3RvdHlwZS5zZXQgZm9yY2VkQXBwZWFyYW5jZU5hbWUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkNT
U01hbmFnZXIucHJvdG90eXBlLmNhbkZvcmNlQXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAgICAo
V0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UpOiBBZGRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9BcHBlYXJhbmNlLnN2ZzogQWRkZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanM6CisgICAg
ICAgIChXSS5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlLmRlZmF1bHRBcHBlYXJhbmNlQ2hhbmdlZCk6
IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkRPTVRy
ZWVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIChX
SS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5n
ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdG9n
Z2xlQXBwZWFyYW5jZSk6IEFkZGVkLgorCiAyMDE4LTExLTE0ICBNYXR0IEJha2VyICA8bWF0dGJh
a2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUYWJsZSBzaG91bGQgcmVj
YWxjdWxhdGUgc2Nyb2xsYWJsZSBoZWlnaHQgd2hlbiByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCmluZGV4IDJhYTQ4OGVm
NjVjODZjYmFmNzkwZTM3OTgzYWI5NWQzOTA5ODcyN2IuLmQ4NGJhNTgxZGFkZjg3Yjk5Y2QxYTk4
OTQ2YTE2MWFiZDhiMGFkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCkBAIC0yMSw2ICsyMSwxMiBAQAogICAgICAgICAgICAg
ImVudW0iOiBbIk5vbmUiLCAiTGF4IiwgIlN0cmljdCJdLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlNhbWUtU2l0ZSBwb2xpY3kgb2YgYSBjb29raWUuIgogICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiQXBwZWFyYW5jZU5hbWUiLAorICAgICAgICAgICAgInR5
cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJMaWdodCIsICJEYXJrIl0sCisg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGFnZSBhcHBlYXJhbmNlIG5hbWUuIgorICAgICAg
ICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiRnJhbWUiLAogICAgICAgICAgICAg
InR5cGUiOiAib2JqZWN0IiwKQEAgLTE5Myw2ICsxOTksMjAgQEAKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm1lZGlhIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1lZGlh
IHR5cGUgdG8gZW11bGF0ZS4gRW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoZSBvdmVycmlkZS4iIH0K
ICAgICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUi
OiAic2V0Rm9yY2VkQXBwZWFyYW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9y
Y2VzIHRoZSBnaXZlbiBhcHBlYXJhbmNlIGZvciB0aGUgcGFnZS4iLAorICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhcHBlYXJhbmNlIiwgIiRy
ZWYiOiAiQXBwZWFyYW5jZU5hbWUiLCAiZGVzY3JpcHRpb24iOiAiQXBwZWFyYW5jZSBuYW1lIHRv
IGZvcmNlLiBFbXB0eSBzdHJpbmcgZGlzYWJsZXMgdGhlIG92ZXJyaWRlLiIgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJnZXREZWZh
dWx0QXBwZWFyYW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHRo
ZSBkZWZhdWx0IGFwcGVhcmFuY2Ugb2YgdGhlIHBhZ2UuIiwKKyAgICAgICAgICAgICJyZXR1cm5z
IjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVzdWx0IiwgIiRyZWYiOiAiQXBwZWFy
YW5jZU5hbWUiLCAiZGVzY3JpcHRpb24iOiAiQXBwZWFyYW5jZSBuYW1lIHRoYXQgaXMgYWN0aXZl
IHdoZW4gbm8gYXBwZWFyYW5jZSBpcyBmb3JjZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAg
IH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIjogImdldENvbXBvc2l0aW5nQm9yZGVy
c1Zpc2libGUiLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB0aGUgdmlz
aWJpbGl0eSBvZiBjb21wb3NpdGluZyBib3JkZXJzLiIsCkBAIC0yOTQsNiArMzE0LDEzIEBACiAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZy
YW1lSWQiLCAiJHJlZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2Yg
dGhlIGZyYW1lIHRoYXQgaGFzIGNsZWFyZWQgaXRzIHNjaGVkdWxlZCBuYXZpZ2F0aW9uLiIgfQog
ICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6
ICJkZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkZpcmVkIHdoZW4gcGFnZSdzIGRlZmF1bHQgYXBwZWFyYW5jZSBjaGFuZ2VzLCBldmVuIGlmIHRo
ZXJlIGlzIGEgZm9yY2VkIGFwcGVhcmFuY2UuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXBwZWFyYW5jZSIsICIkcmVmIjogIkFwcGVh
cmFuY2VOYW1lIiwgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGFwcGVhcmFuY2UgdGhhdCBp
cyBhY3RpdmUgd2hlbiBubyBhcHBlYXJhbmNlIGlzIGZvcmNlZC4iIH0KKyAgICAgICAgICAgIF0K
ICAgICAgICAgfQogICAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMWViNzJjZjJkNDVmODhlNTUzYjJh
ZmZiY2UwZTFjYWE3YmNmMjE2Ny4uMTIxMzU4YjIwZTU1YWU3OWMwZTk3OTIwNzlhOTU3MGYxNTk2
NDQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTc4Miw2ICs3ODIsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1l
bnRpbmcKICAgICAgICAgaW5zcGVjdG9yUGFnZUFnZW50LT5mcmFtZUNsZWFyZWRTY2hlZHVsZWRO
YXZpZ2F0aW9uKGZyYW1lKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRl
ZmF1bHRBcHBlYXJhbmNlQ2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclBhZ2VBZ2VudCgpKQorICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmRlZmF1bHRBcHBl
YXJhbmNlQ2hhbmdlZCh1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgaWYgKCFzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggZDkxZDBjMjEzMTZlN2Y2YzZiNTgyMmU3MDUyZjZhNDUyODJmZWQ0Ni4uNzgz
OTEyOWFiZjVhZTM4NjQ4NDQ4ZGE0MzVmZGYwN2RmZGRkMDA1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjEzLDYg
KzIxMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBmcmFtZVN0b3BwZWRMb2FkaW5nKEZy
YW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJiwg
U2Vjb25kcyBkZWxheSk7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2
aWdhdGlvbihGcmFtZSYpOworICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlQ2hhbmdl
ZChQYWdlJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKQEAgLTM4Niw2ICszODcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGZyYW1lU3RvcHBlZExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYp
OwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbkltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEZyYW1lJiwgU2Vjb25kcyBkZWxheSk7CiAgICAgc3RhdGljIHZvaWQgZnJh
bWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJik7CisgICAgc3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VDaGFuZ2VkSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZv
aWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAg
IHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTEzNSw2
ICsxMTM3LDEyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVD
bGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYgZnJhCiAgICAgICAgIGZyYW1lQ2xlYXJl
ZFNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiB9
CiAKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVhcmFu
Y2VDaGFuZ2VkKFBhZ2UmIHBhZ2UsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCit7CisgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgZGVmYXVsdEFwcGVhcmFuY2VD
aGFuZ2VkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgdXNlRGFya0FwcGVh
cmFuY2UpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQogewog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IGQwZTAyMTM3YjFjOGUyOTUwOTI5MTBlNTI2MDY2ZDc4M2E2ZDkzNTMuLmU2NmJjYjgyNzcyMWZk
MjFlMzllY2Q4ZDk3YWZlYjQ5ZDg2OGFkMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMwMCw2ICszMDAs
MTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAg
YXV0byBzdG9wd2F0Y2ggPSBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpOwogICAg
IHN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBzdG9wd2F0Y2gtPnN0YXJ0KCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwCisg
ICAgZGVmYXVsdEFwcGVhcmFuY2VDaGFuZ2VkKG1fcGFnZS5kZWZhdWx0VXNlRGFya0FwcGVhcmFu
Y2UoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJy
b3JTdHJpbmcmKQpAQCAtMzEwLDYgKzMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpk
aXNhYmxlKEVycm9yU3RyaW5nJikKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgc2V0U2hv
d1BhaW50UmVjdHModW51c2VkLCBmYWxzZSk7CiAgICAgc2V0RW11bGF0ZWRNZWRpYSh1bnVzZWQs
IGVtcHR5U3RyaW5nKCkpOworICAgIHNldEZvcmNlZEFwcGVhcmFuY2UodW51c2VkLCBlbXB0eVN0
cmluZygpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmlu
ZyYsIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgYm9vbCogb3B0
aW9uYWxSZXZhbGlkYXRlQWxsUmVzb3VyY2VzKQpAQCAtNjg1LDYgKzY5MCwxMSBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYg
ZnJhbWUpCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5h
dmlnYXRpb24oZnJhbWVJZCgmZnJhbWUpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRlZmF1bHRBcHBlYXJhbmNlQ2hhbmdlZChib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQodXNlRGFya0Fw
cGVhcmFuY2UgPyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlTmFtZTo6RGFy
ayA6IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2VOYW1lOjpMaWdodCk7Cit9
CisKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewogICAgIGlmICghbV9lbmFibGVkIHx8ICFt
X3Nob3dQYWludFJlY3RzKQpAQCAtODA4LDYgKzgxOCwyOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEp
CiAgICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGFwcGVhcmFuY2VOYW1lKQoreworICAgIGlmIChhcHBlYXJhbmNlTmFtZSA9PSBtX2ZvcmNlZEFw
cGVhcmFuY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZm9yY2VkQXBwZWFyYW5jZSA9IGFw
cGVhcmFuY2VOYW1lOworCisgICAgaWYgKGFwcGVhcmFuY2VOYW1lID09ICJMaWdodCJfc3RyKQor
ICAgICAgICBtX3BhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShmYWxzZSk7CisgICAg
ZWxzZSBpZiAoYXBwZWFyYW5jZU5hbWUgPT0gIkRhcmsiX3N0cikKKyAgICAgICAgbV9wYWdlLnNl
dFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUodHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBtX3Bh
Z2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om51bGxvcHQpOworfQorCit2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0RGVmYXVsdEFwcGVhcmFuY2UoRXJyb3JTdHJpbmcmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlTmFtZSogb3V0QXBwZWFyYW5jZU5h
bWUpCit7CisgICAgaWYgKG1fcGFnZS5kZWZhdWx0VXNlRGFya0FwcGVhcmFuY2UoKSkKKyAgICAg
ICAgKm91dEFwcGVhcmFuY2VOYW1lID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFy
YW5jZU5hbWU6OkRhcms7CisgICAgZWxzZQorICAgICAgICAqb3V0QXBwZWFyYW5jZU5hbWUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlTmFtZTo6TGlnaHQ7Cit9CisKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJiBtZWRpYSkK
IHsKICAgICBpZiAoIW1fZW11bGF0ZWRNZWRpYS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA2NzA5
ZjUyYmUwMzQzMmIyYzU1ZWI5NDcxYmM0YzBkYjI1ZDA4NmM3Li4xZGJmZDRjZTI5OWU1OWQzNGZk
YTk0NWJjMjAzMTMxNzNlMDM0YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykgZmluYWw7
CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
ZmluYWw7CisgICAgdm9pZCBzZXRGb3JjZWRBcHBlYXJhbmNlKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBnZXREZWZhdWx0QXBwZWFyYW5jZShFcnJvclN0cmlu
ZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2VOYW1lKiBvdXRBcHBlYXJh
bmNlTmFtZSkgZmluYWw7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVy
cm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBmaW5hbDsKICAgICB2b2lkIHNldENvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHNu
YXBzaG90Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFN0cmluZyogb3V0RGF0YVVSTCkg
ZmluYWw7CkBAIC0xMTYsNiArMTE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZnJhbWVTdG9wcGVk
TG9hZGluZyhGcmFtZSYpOwogICAgIHZvaWQgZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1l
JiwgU2Vjb25kcyBkZWxheSk7CiAgICAgdm9pZCBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0
aW9uKEZyYW1lJik7CisgICAgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQoYm9vbCB1c2VE
YXJrQXBwZWFyYW5jZSk7CiAgICAgdm9pZCBhcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJik7CiAg
ICAgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAg
dm9pZCBkaWRMYXlvdXQoKTsKQEAgLTE2MCw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0ZpcnN0TGF5b3V0QWZ0ZXJPbkxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG93UGFp
bnRSZWN0cyB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZW11bGF0ZWRNZWRpYTsKKyAgICBTdHJp
bmcgbV9mb3JjZWRBcHBlYXJhbmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggOTUwYmFlMDNkNTAzMTVjMzg5NGU0YjUxOWNhYWZjMjZlNzA0MTdl
My4uYmVhNzQyNzUwZjA4MGRjZTk3NjdhZTMwMDE3ZGRlYmM0YWI4ZjUwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0yNTE0LDYgKzI1MTQsOCBAQCB2b2lkIFBhZ2U6OnNldFVzZURhcmtBcHBlYXJh
bmNlKGJvb2wgdmFsdWUpCiAKICAgICBtX3VzZURhcmtBcHBlYXJhbmNlID0gdmFsdWU7CiAKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlQ2hhbmdlZCgqdGhp
cywgdmFsdWUpOworCiAgICAgYXBwZWFyYW5jZURpZENoYW5nZSgpOwogfQogCkBAIC0yNTIyLDkg
KzI1MjQsMTggQEAgYm9vbCBQYWdlOjp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmlldyB8fCAhZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uodmlldy0+bWVkaWFUeXBlKCksICJzY3JlZW4iKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJp
ZGUpCisgICAgICAgIHJldHVybiBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUudmFsdWUoKTsK
ICAgICByZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsKIH0KIAordm9pZCBQYWdlOjpzZXRVc2VE
YXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmFsdWVPdmVycmlkZSkK
K3sKKyAgICBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUgPSB2YWx1ZU92ZXJyaWRlOworCisg
ICAgYXBwZWFyYW5jZURpZENoYW5nZSgpOworfQorCiB2b2lkIFBhZ2U6OnNldEZ1bGxzY3JlZW5J
bnNldHMoY29uc3QgRmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKICAgICBpZiAoaW5zZXRzID09
IG1fZnVsbHNjcmVlbkluc2V0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZjg5NDAwYWIxOGQwZDM0YWZj
M2Y4NWNmNWVjODZkMGMyNjBjNDk1My4uNzg0YzNlNDFjNjAyM2FjN2Q5OTkzZDJlMWI4MjUxMTM1
ZjlmZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM1OCw2ICszNTgsOCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCk7CisgICAgYm9v
bCBkZWZhdWx0VXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3VzZURhcmtBcHBl
YXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6b3B0
aW9uYWw8Ym9vbD4pOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCB0
ZXh0QXV0b3NpemluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ1dpZHRo
OyB9CkBAIC03OTEsNiArNzkzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1fdXNlU3lz
dGVtQXBwZWFyYW5jZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZURhcmtBcHBlYXJhbmNlIHsg
ZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgZmxvYXQgbV90ZXh0QXV0
b3NpemluZ1dpZHRoIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXgg
MDIyZTk3NTY3NWQxNzgwNTUyMmU4OTJkMGZiMTY0ZTc1MDllNTdjYS4uZWY2OTJhNDBmYTk4YzYx
NDIzNzM5ZjYzMjk4ODAyYzNiZDk5YjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzCkBAIC00MDMsNiArNDAzLDggQEAgbG9jYWxpemVkU3RyaW5nc1siRm9jdXMgb24gU3VidHJl
ZSJdID0gIkZvY3VzIG9uIFN1YnRyZWUiOwogbG9jYWxpemVkU3RyaW5nc1siRm9jdXNlZCJdID0g
IkZvY3VzZWQiOwogbG9jYWxpemVkU3RyaW5nc1siRm9udCJdID0gIkZvbnQiOwogbG9jYWxpemVk
U3RyaW5nc1siRm9udHMiXSA9ICJGb250cyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJGb3JjZSBEYXJr
IEFwcGVhcmFuY2UiXSA9ICJGb3JjZSBEYXJrIEFwcGVhcmFuY2UiOworbG9jYWxpemVkU3RyaW5n
c1siRm9yY2UgTGlnaHQgQXBwZWFyYW5jZSJdID0gIkZvcmNlIExpZ2h0IEFwcGVhcmFuY2UiOwog
bG9jYWxpemVkU3RyaW5nc1siRm9yY2UgUHJpbnQgTWVkaWEgU3R5bGVzIl0gPSAiRm9yY2UgUHJp
bnQgTWVkaWEgU3R5bGVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZvcmNlZCBMYXlvdXQiXSA9ICJG
b3JjZWQgTGF5b3V0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkZvcmNlZCBQc2V1ZG8tQ2xhc3NlcyJd
ID0gIkZvcmNlZCBQc2V1ZG8tQ2xhc3NlcyI7CkBAIC05NDQsNiArOTQ2LDcgQEAgbG9jYWxpemVk
U3RyaW5nc1siVW5rbm93biBub2RlIl0gPSAiVW5rbm93biBub2RlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlVuc3VwcG9ydGVkIHByb3BlcnR5IG5hbWUiXSA9ICJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBu
YW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVuc3VwcG9ydGVkIHByb3BlcnR5IHZhbHVlIl0gPSAi
VW5zdXBwb3J0ZWQgcHJvcGVydHkgdmFsdWUiOwogbG9jYWxpemVkU3RyaW5nc1siVW50aXRsZWQi
XSA9ICJVbnRpdGxlZCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNl
Il0gPSAiVXNlIERlZmF1bHQgQXBwZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVm
YXVsdCBNZWRpYSBTdHlsZXMiXSA9ICJVc2UgRGVmYXVsdCBNZWRpYSBTdHlsZXMiOwogbG9jYWxp
emVkU3RyaW5nc1siVXNlIHRoZSByZXNvdXJjZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2Vz
Il0gPSAiVXNlIHRoZSByZXNvdXJjZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIlVzZXIgQWdlbnQiXSA9ICJVc2VyIEFnZW50IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9D
U1NNYW5hZ2VyLmpzCmluZGV4IDQ4OTA2N2I5ZThlYzkxZDFhNDA0NWNkMTJjN2ZmZWM0YzMwNTYy
ZDguLjU4OGY5NzBjYmIwZDM1ZWU1YjQxNzdhNGQ5MjhkYzc0YjY3MThiOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ1NTTWFuYWdlci5qcwpAQCAtNDUsNiArNDUsOCBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3Mg
Q1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRl
bnRpZmllck1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRGcmFtZVVSTE1h
cCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX25vZGVTdHlsZXNNYXAgPSB7fTsKKyAgICAgICAg
dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2VOYW1lID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZm9yY2Vk
QXBwZWFyYW5jZU5hbWUgPSBudWxsOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5
KTogTGVnYWN5IGJhY2tlbmRzIGRpZCBub3Qgc2VuZCBzdHlsZXNoZWV0CiAgICAgICAgIC8vIGFk
ZGVkL3JlbW92ZWQgZXZlbnRzIGFuZCBtdXN0IGJlIGZldGNoZWQgbWFudWFsbHkuCkBAIC0xMDcs
NiArMTA5LDU3IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHJldHVybiBbLi4udGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAu
dmFsdWVzKCldOwogICAgIH0KIAorICAgIGdldCBkZWZhdWx0QXBwZWFyYW5jZU5hbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlTmFtZTsKKyAgICB9CisK
KyAgICBnZXQgZm9yY2VkQXBwZWFyYW5jZU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2ZvcmNlZEFwcGVhcmFuY2VOYW1lOworICAgIH0KKworICAgIHNldCBmb3JjZWRBcHBlYXJh
bmNlTmFtZShuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmNhbkZvcmNlQXBwZWFyYW5j
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBwcm90b2NvbE5hbWUgPSAi
IjsKKworICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgY2FzZSBXSS5DU1NNYW5hZ2Vy
LkFwcGVhcmFuY2VOYW1lLkxpZ2h0OgorICAgICAgICAgICAgcHJvdG9jb2xOYW1lID0gUGFnZUFn
ZW50LkFwcGVhcmFuY2VOYW1lLkxpZ2h0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1lLkRhcms6CisgICAgICAgICAgICBwcm90
b2NvbE5hbWUgPSBQYWdlQWdlbnQuQXBwZWFyYW5jZU5hbWUuRGFyazsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgbnVsbDoKKyAgICAgICAgY2FzZSB1bmRlZmluZWQ6CisgICAg
ICAgIGNhc2UgIiI6CisgICAgICAgICAgICBwcm90b2NvbE5hbWUgPSAiIjsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBBYm9ydCBmb3IgdW5r
bm93biB2YWx1ZXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9mb3JjZWRBcHBlYXJhbmNlTmFtZSA9IG5hbWUgfHwgbnVsbDsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5DU1NNYW5hZ2VyLkV2ZW50LkZvcmNlZEFwcGVh
cmFuY2VEaWRDaGFuZ2UsIHthcHBlYXJhbmNlTmFtZTogdGhpcy5fZm9yY2VkQXBwZWFyYW5jZU5h
bWV9KTsKKworICAgICAgICBQYWdlQWdlbnQuc2V0Rm9yY2VkQXBwZWFyYW5jZShwcm90b2NvbE5h
bWUpOworCisgICAgICAgIHRoaXMubWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKKyAgICB9CisK
KyAgICBjYW5Gb3JjZUFwcGVhcmFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdpbmRvdy5Q
YWdlQWdlbnQgJiYgISFQYWdlQWdlbnQuc2V0Rm9yY2VkQXBwZWFyYW5jZSAmJiB0aGlzLl9kZWZh
dWx0QXBwZWFyYW5jZU5hbWU7CisgICAgfQorCiAgICAgY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB3aW5kb3cuQ1NTQWdlbnQgJiYgISFDU1NBZ2VudC5mb3Jj
ZVBzZXVkb1N0YXRlOwpAQCAtMjY5LDYgKzMyMiwzMSBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3Mg
Q1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1
bHRDaGFuZ2VkKCk7CiAgICAgfQogCisgICAgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UocHJv
dG9jb2xOYW1lKQorICAgIHsKKyAgICAgICAgbGV0IGFwcGVhcmFuY2VOYW1lID0gbnVsbDsKKwor
ICAgICAgICBzd2l0Y2ggKHByb3RvY29sTmFtZSkgeworICAgICAgICBjYXNlIFBhZ2VBZ2VudC5B
cHBlYXJhbmNlTmFtZS5MaWdodDoKKyAgICAgICAgICAgIGFwcGVhcmFuY2VOYW1lID0gV0kuQ1NT
TWFuYWdlci5BcHBlYXJhbmNlTmFtZS5MaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUGFnZUFnZW50LkFwcGVhcmFuY2VOYW1lLkRhcms6CisgICAgICAgICAgICBhcHBl
YXJhbmNlTmFtZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZU5hbWUuRGFyazsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJVbmtub3duIGRlZmF1bHQgYXBwZWFyYW5jZSBuYW1lOiIsIHByb3RvY29sTmFtZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJh
bmNlTmFtZSA9IGFwcGVhcmFuY2VOYW1lOworCisgICAgICAgIHRoaXMubWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5D
U1NNYW5hZ2VyLkV2ZW50LkRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlLCB7YXBwZWFyYW5jZU5h
bWV9KTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIG1lZGlhUXVlcnlSZXN1bHRD
aGFuZ2VkKCkKQEAgLTU2MSw2ICs2MzksMTMgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIFdJLkNTU01hbmFnZXIuRXZlbnQgPSB7CiAgICAgU3R5
bGVTaGVldEFkZGVkOiAiY3NzLW1hbmFnZXItc3R5bGUtc2hlZXQtYWRkZWQiLAogICAgIFN0eWxl
U2hlZXRSZW1vdmVkOiAiY3NzLW1hbmFnZXItc3R5bGUtc2hlZXQtcmVtb3ZlZCIsCisgICAgRGVm
YXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2U6ICJjc3MtbWFuYWdlci1kZWZhdWx0LWFwcGVhcmFuY2Ut
ZGlkLWNoYW5nZSIsCisgICAgRm9yY2VkQXBwZWFyYW5jZURpZENoYW5nZTogImNzcy1tYW5hZ2Vy
LWZvcmNlZC1hcHBlYXJhbmNlLWRpZC1jaGFuZ2UiLAorfTsKKworV0kuQ1NTTWFuYWdlci5BcHBl
YXJhbmNlTmFtZSA9IHsKKyAgICBMaWdodDogU3ltYm9sKCJsaWdodCIpLAorICAgIERhcms6IFN5
bWJvbCgiZGFyayIpLAogfTsKIAogV0kuQ1NTTWFuYWdlci5Qc2V1ZG9FbGVtZW50TmFtZXMgPSBb
ImJlZm9yZSIsICJhZnRlciJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVhcmFuY2Uuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVhcmFuY2Uuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMzk0ZmI5
MWVkMDc1YWQwODBlMzY3ZDViNzM0NjRjMTEwNjM4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQXBwZWFyYW5jZS5zdmcKQEAg
LTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEt
LSBDb3B5cmlnaHQgwqkgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9u
PSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHBhdGggZmlsbD0iY3VycmVudENvbG9y
IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0gMy45OTExOTg5MyAxIEwgMTIuMDA4Nzk3MyAxIEMg
MTMuMDQ4OTA0IDEgMTMuNDI2MDczMyAxLjEwODI5NDY3IDEzLjgwNjMyMjcgMS4zMTE2NTg2NyBD
IDE0LjE4NjU2MjcgMS41MTUwMTMzMyAxNC40ODQ5ODY3IDEuODEzNDM3MzMgMTQuNjg4MzQxMyAy
LjE5MzY3NzMzIEMgMTQuODkxNzA1MyAyLjU3MzkyNjY3IDE1IDIuOTUxMDk2IDE1IDMuOTkxMjAy
NjcgTCAxNSAxMi4wMDg4MDExIEMgMTUgMTMuMDQ4OTA1OSAxNC44OTE3MDUzIDEzLjQyNjA3MzMg
MTQuNjg4MzQxMyAxMy44MDYzMTk5IEMgMTQuNDg0OTg2NyAxNC4xODY1NjY5IDE0LjE4NjU2Mjcg
MTQuNDg0OTg2OSAxMy44MDYzMjI3IDE0LjY4ODM0NTIgQyAxMy40MjYwNzMzIDE0Ljg5MTcwMzUg
MTMuMDQ4OTA0IDE1IDEyLjAwODc5NzMgMTUgTCAzLjk5MTE5ODkzIDE1IEMgMi45NTEwOTQxMyAx
NSAyLjU3MzkyNjY3IDE0Ljg5MTcwMzUgMi4xOTM2ODAxMyAxNC42ODgzNDUyIEMgMS44MTM0MzMx
MyAxNC40ODQ5ODY5IDEuNTE1MDEzMDUgMTQuMTg2NTY2OSAxLjMxMTY1NDg0IDEzLjgwNjMxOTkg
QyAxLjEwODI5NjUzIDEzLjQyNjA3MzMgMSAxMy4wNDg5MDU5IDEgMTIuMDA4ODAxMSBMIDEgMy45
OTEyMDI2NyBDIDEgMi45NTEwOTYgMS4xMDgyOTY1MyAyLjU3MzkyNjY3IDEuMzExNjU0ODQgMi4x
OTM2NzczMyBDIDEuNTE1MDEzMDUgMS44MTM0MzczMyAxLjgxMzQzMzEzIDEuNTE1MDEzMzMgMi4x
OTM2ODAxMyAxLjMxMTY1ODY3IEMgMi41NzM5MjY2NyAxLjEwODI5NDY3IDIuOTUxMDk0MTMgMSAz
Ljk5MTE5ODkzIDEgWiBNIDMuNSA0IEwgMTIuNSA0IEMgMTMuMzI4NDI3MSA0IDE0IDQuNjcxNTcy
ODggMTQgNS41IEwgMTQgMTIuNSBDIDE0IDEzLjMyODQyNzEgMTMuMzI4NDI3MSAxNCAxMi41IDE0
IEwgMy41IDE0IEMgMi42NzE1NzI4OCAxNCAyIDEzLjMyODQyNzEgMiAxMi41IEwgMiA1LjUgQyAy
IDQuNjcxNTcyODggMi42NzE1NzI4OCA0IDMuNSA0IFogTSA0LjEgNSBMIDExLjkgNSBDIDEyLjUw
NzUxMzIgNSAxMyA1LjQ5MjQ4Njc4IDEzIDYuMSBMIDEzIDExLjkgQyAxMyAxMi41MDc1MTMyIDEy
LjUwNzUxMzIgMTMgMTEuOSAxMyBMIDQuMSAxMyBDIDMuNDkyNDg2NzggMTMgMyAxMi41MDc1MTMy
IDMgMTEuOSBMIDMgNi4xIEMgMyA1LjQ5MjQ4Njc4IDMuNDkyNDg2NzggNSA0LjEgNSBaIE0gMyAy
IEwgNCAyIEwgNCAzIEwgMyAzIEwgMyAyIFogTSA1IDIgTCA2IDIgTCA2IDMgTCA1IDMgTCA1IDIg
WiBNIDcgMiBMIDggMiBMIDggMyBMIDcgMyBMIDcgMiBaIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VP
YnNlcnZlci5qcwppbmRleCAzMTQ2OGE3YjJhOTI2MWYxMTE4YzYwZjVmM2IxNDI1MjFhYjgzZWVj
Li4yOGYzNzU5MTFkMjFkYzkyZTUxZjNmZGJjMTI3M2FiNmM1OThlYWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFn
ZU9ic2VydmVyLmpzCkBAIC00Nyw2ICs0NywxMSBAQCBXSS5QYWdlT2JzZXJ2ZXIgPSBjbGFzcyBQ
YWdlT2JzZXJ2ZXIKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIuZnJhbWVEaWREZXRhY2goZnJh
bWVJZCk7CiAgICAgfQogCisgICAgZGVmYXVsdEFwcGVhcmFuY2VDaGFuZ2VkKGFwcGVhcmFuY2VO
YW1lKQorICAgIHsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZURpZENo
YW5nZShhcHBlYXJhbmNlTmFtZSk7CisgICAgfQorCiAgICAgZnJhbWVTdGFydGVkTG9hZGluZyhm
cmFtZUlkKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUNvbnRlbnRWaWV3LmpzCmluZGV4IDJkZDkxOTQ2ZWFkNTliOGQxNjA2ODBjOTJlOGNmYTA1ZTY4
MDE5NTguLmY4ODZjMTAzMWJkY2Y1YjA3N2M2ODc5OGU0MjNjNzAwOTZhNjMwMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTc0LDYgKzc0LDggQEAgV0kuRE9NVHJlZUNvbnRl
bnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZl
bnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwogICAgICAg
ICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVudC5DaGFy
YWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKIAorICAgICAg
ICBXSS5jc3NNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuQ1NTTWFuYWdlci5FdmVudC5EZWZh
dWx0QXBwZWFyYW5jZURpZENoYW5nZSwgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2Us
IHRoaXMpOworCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZyA9IG5l
dyBXSS5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5vZGUtcGF0aCIsIG51bGwpOwogCiAgICAgICAg
IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyA9IG51bGw7CkBAIC04MSw2ICs4Myw5IEBAIFdJ
LkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJ
LkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRHdXR0ZXJFbmFibGVkID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdCcmVha3BvaW50Tm9kZUlkZW50aWZpZXJzID0gbmV3
IFNldDsKIAorICAgICAgICBpZiAoV0kuY3NzTWFuYWdlci5jYW5Gb3JjZUFwcGVhcmFuY2UoKSkK
KyAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKCk7CisKICAgICAg
ICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0ZWQpIHsKICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVu
dC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERp
ZENoYW5nZSwgdGhpcyk7CiAKQEAgLTEwMCw2ICsxMDUsOSBAQCBXSS5ET01UcmVlQ29udGVudFZp
ZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAg
IHsKICAgICAgICAgbGV0IGl0ZW1zID0gW3RoaXMuX3Nob3dQcmludFN0eWxlc0J1dHRvbk5hdmln
YXRpb25JdGVtLCB0aGlzLl9zaG93c1NoYWRvd0RPTUJ1dHRvbk5hdmlnYXRpb25JdGVtXTsKIAor
ICAgICAgICBpZiAodGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0pCisg
ICAgICAgICAgICBpdGVtcy51bnNoaWZ0KHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmln
YXRpb25JdGVtKTsKKwogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEuMykKICAgICAg
ICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQgJiYgUGFnZUFnZW50LnNldFNob3dSdWxlcnMpCiAgICAg
ICAgICAgICBpdGVtcy51bnNoaWZ0KHRoaXMuX3Nob3dSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRl
bSk7CkBAIC01ODIsNiArNTkwLDcxIEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERP
TVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX3No
b3dQcmludFN0eWxlc0NoYW5nZWQoKTsKICAgICB9CiAKKyAgICBfZGVmYXVsdEFwcGVhcmFuY2VE
aWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgbGV0IGRlZmF1bHRBcHBlYXJhbmNlTmFtZSA9IFdJ
LmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2VOYW1lOworICAgICAgICBpZiAoIWRlZmF1bHRB
cHBlYXJhbmNlTmFtZSkgeworICAgICAgICAgICAgdGhpcy5fbGFzdEtub3duRGVmYXVsdEFwcGVh
cmFuY2VOYW1lID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRv
bk5hdmlnYXRpb25JdGVtID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24ndCB1cGRh
dGUgdGhlIG5hdmlnYXRpb24gaXRlbSBpZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBmb3JjZWQgYXBw
ZWFyYW5jZS4KKyAgICAgICAgLy8gVGhlIHVzZXIgd2lsbCBuZWVkIHRvIHRvZ2dsZSBpdCBvZmYg
dG8gdXBkYXRlIGl0IGJhc2VkIG9uIHRoZSBuZXcgZGVmYXVsdCBhcHBlYXJhbmNlLgorICAgICAg
ICBpZiAoV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlTmFtZSAmJiB0aGlzLl9mb3JjZUFw
cGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG51bGw7CisK
KyAgICAgICAgc3dpdGNoIChkZWZhdWx0QXBwZWFyYW5jZU5hbWUpIHsKKyAgICAgICAgY2FzZSBX
SS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1lLkxpZ2h0OgorICAgICAgICAgICAgdGhpcy5fZm9y
Y2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25O
YXZpZ2F0aW9uSXRlbSgiYXBwZWFyYW5jZSIsIFdJLlVJU3RyaW5nKCJGb3JjZSBEYXJrIEFwcGVh
cmFuY2UiKSwgV0kuVUlTdHJpbmcoIlVzZSBEZWZhdWx0IEFwcGVhcmFuY2UiKSwgIkltYWdlcy9B
cHBlYXJhbmNlLnN2ZyIsIDE2LCAxNik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1lLkRhcms6CisgICAgICAgICAgICB0aGlzLl9m
b3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJhcHBlYXJhbmNlIiwgV0kuVUlTdHJpbmcoIkZvcmNlIExpZ2h0IEFw
cGVhcmFuY2UiKSwgV0kuVUlTdHJpbmcoIlVzZSBEZWZhdWx0IEFwcGVhcmFuY2UiKSwgIkltYWdl
cy9BcHBlYXJhbmNlLnN2ZyIsIDE2LCAxNik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0pIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVrbm93biBkZWZhdWx0IGFwcGVhcmFu
Y2UgbmFtZToiLCBkZWZhdWx0QXBwZWFyYW5jZU5hbWUpOworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1z
RGlkQ2hhbmdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2xhc3RLbm93bkRlZmF1bHRBcHBlYXJhbmNlTmFtZSA9IGRlZmF1bHRBcHBlYXJhbmNlTmFt
ZTsKKworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5h
ZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3RvZ2dsZUFwcGVhcmFuY2UsIHRoaXMpOworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFu
Y2VCdXR0b25OYXZpZ2F0aW9uSXRlbS52aXNpYmlsaXR5UHJpb3JpdHkgPSBXSS5OYXZpZ2F0aW9u
SXRlbS5WaXNpYmlsaXR5UHJpb3JpdHkuTG93OworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFu
Y2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSAhIVdJLmNzc01hbmFnZXIuZm9yY2Vk
QXBwZWFyYW5jZU5hbWU7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKTsKKyAgICB9CisK
KyAgICBfdG9nZ2xlQXBwZWFyYW5jZShldmVudCkKKyAgICB7CisgICAgICAgIC8vIFVzZSB0aGUg
bGFzdCBrbm93biBkZWZhdWx0IGFwcGVhcmFuY2UsIHNpbmNlIHRoYXQgaXMgdGhlIGFwcGVhcmFu
Y2UgdGhpcyBuYXZpZ2F0aW9uIGl0ZW0gd2FzIGdlbmVyYXRlZCBmb3IuCisgICAgICAgIGxldCBh
cHBlYXJhbmNlTmFtZVRvRm9yY2UgPSBudWxsOworICAgICAgICBzd2l0Y2ggKHRoaXMuX2xhc3RL
bm93bkRlZmF1bHRBcHBlYXJhbmNlTmFtZSkgeworICAgICAgICBjYXNlIFdJLkNTU01hbmFnZXIu
QXBwZWFyYW5jZU5hbWUuTGlnaHQ6CisgICAgICAgICAgICBhcHBlYXJhbmNlTmFtZVRvRm9yY2Ug
PSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1lLkRhcms7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1lLkRhcms6CisgICAgICAg
ICAgICBhcHBlYXJhbmNlTmFtZVRvRm9yY2UgPSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2VOYW1l
LkxpZ2h0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xl
LmFzc2VydChhcHBlYXJhbmNlTmFtZVRvRm9yY2UpOworICAgICAgICBXSS5jc3NNYW5hZ2VyLmZv
cmNlZEFwcGVhcmFuY2VOYW1lID0gV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlTmFtZSA9
PSBhcHBlYXJhbmNlTmFtZVRvRm9yY2UgPyBudWxsIDogYXBwZWFyYW5jZU5hbWVUb0ZvcmNlOwor
CisgICAgICAgIC8vIFdoZW4gbm8gbG9uZ2VyIGZvcmNpbmcgYW4gYXBwZWFyYW5jZSwgaWYgdGhl
IGxhc3Qga25vd24gZGVmYXVsdCBhcHBlYXJhbmNlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJy
ZW50CisgICAgICAgIC8vIGRlZmF1bHQgYXBwZWFyYW5jZSwgdGhlbiB1cGRhdGUgdGhlIG5hdmln
YXRpb24gYnV0dG9uIG5vdy4gT3RoZXJ3aXNlIGp1c3QgdG9nZ2xlIHRoZSBhY3RpdmF0ZWQgc3Rh
dGUuCisgICAgICAgIGlmICghV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlTmFtZSAmJiB0
aGlzLl9sYXN0S25vd25EZWZhdWx0QXBwZWFyYW5jZU5hbWUgIT09IFdJLmNzc01hbmFnZXIuZGVm
YXVsdEFwcGVhcmFuY2VOYW1lKQorICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2VE
aWRDaGFuZ2UoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJh
bmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gISFXSS5jc3NNYW5hZ2VyLmZvcmNl
ZEFwcGVhcmFuY2VOYW1lOworICAgIH0KKwogICAgIF9zaG93UnVsZXJzQ2hhbmdlZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
ID0gV0kuc2V0dGluZ3Muc2hvd1J1bGVycy52YWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>355226</attachid>
            <date>2018-11-17 20:53:37 -0800</date>
            <delta_ts>2018-11-17 20:53:37 -0800</delta_ts>
            <desc>Screenshot With Patch Applied</desc>
            <filename>Screen Shot 2018-11-17 at 8.52.30 PM.png</filename>
            <type>image/png</type>
            <size>10719</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAbIAAACUCAYAAAD28ayDAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAW
JQAAFiUBSVIk8AAAAZ1pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6
eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYg
eG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4K
ICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhp
Zj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhE
aW1lbnNpb24+NDM0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZ
RGltZW5zaW9uPjE0ODwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0
aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqNbC1oAAAAHGlET1QAAAACAAAAAAAAAEoA
AAAoAAAASgAAAEoAABtYwR7WlQAAGyRJREFUeAHsnQmgVcMfx+cVoihLkrJml6XFUrbKruw7RbZQ
lOy7ZJddCNmyhkiEv7WyFlqEImtkKUKobPX+9zPP7zbvdJdzzr333XPO+/3o3XvOmZkz53tm5ju/
ZeZWtG/frrKy0piK1H+VZqExpk7qX+oEUpH6vzJ1vqIy9Zk6mzq2fzgQ4WvqvJRhKKOCEzZz6pOE
lI5UyuGi86myJK/eX/HX9qf977/BwY4rOv7o+OuHfyratds6RTVVNAPV8K2KpqpTG9eqzvPNkRRh
wVtcrUx9qUixEulsOVJY6oTlNSk9db6KC4U8bQG2UMlCCXKVro3o/atwqPZX8df2Z7uP9j8df2rv
+Jsisvap91+lFaUHyNRxRWWdlKaUog5hlkVcsyiZzVd1gb/oE4uO/mMvO8F0yiE3jJQuDyLU+wN1
WhR/bX/a/3T80fHXP/+0a9cOZSnFLVUakDueVvFN6q/VtNCP3Kv/8ZEQkr1UlSM9IDuMVWk1h9R1
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
QmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355249</attachid>
            <date>2018-11-18 20:15:10 -0800</date>
            <delta_ts>2018-11-19 19:13:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191820-20181118201509.patch</filename>
            <type>text/plain</type>
            <size>29064</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5kNDUzNWQ2NjYxYjEzYjYw
ODQyZDEwNDEzMWMxZDJmOGE4ODMxZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29s
b3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NDYxNTMxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZGVkIHNldEZvcmNlZEFwcGVhcmFu
Y2UgYW5kIGdldERlZmF1bHRBcHBlYXJhbmNlLgorICAgICAgICBBbHNvIGFkZGVkIHRoZSBkZWZh
dWx0QXBwZWFyYW5jZURpZENoYW5nZSBldmVudCBhbmQgQXBwZWFyYW5jZU5hbWUgZW51bS4KKwog
MjAxOC0xMS0xNSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RGVsZXRlIG9sZCAueGNmaWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBmNjY3Mzc2NmQzMDI3
NmMzNWU1NGM3M2MzMDcwZDFjOTQyNmZlNWEuLjg5NzViYmI2Y2ViMDA5NzVmOGYxYmIxYzA4Mjhj
MWJhNWJmNzAwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOC0xMS0xNyAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9N
IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDYxNTMxNzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxlKTogRmlyZSBkZWZhdWx0QXBwZWFyYW5jZURp
ZENoYW5nZSgpIG9uIG1hY09TIE1hamF2ZS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlzYWJsZSk6IENhbGwgc2V0Rm9yY2VkQXBwZWFyYW5jZSgpIHdpdGggZW1wdHkg
c3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWZhdWx0QXBw
ZWFyYW5jZURpZENoYW5nZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRGb3JjZWRBcHBlYXJhbmNlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmdldERlZmF1bHRBcHBlYXJhbmNlKTogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBwYWdl
L1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2Up
OiBDYWxsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFu
Z2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0KTog
UmV0dXJuIG92ZXJyaWRlIHZhbHVlIGlmIG5vdCBudWxsb3B0LgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSk6IEFkZGVkLgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGVmYXVsdFVzZURhcmtBcHBlYXJh
bmNlIGNvbnN0KTogQWRkZWQuCisKIDIwMTgtMTEtMTUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtp
cnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIERyYWdJbWFnZSBzaG91bGQgaGF2ZSBhIGNvbXBs
ZXRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY4
NDI4YmY5Y2NkMThiNTY0NWY2ZTA2YmM4NzJlY2IyM2UxY2IyNmYuLmRkMTJhNjQyZWY3ZTRmZjRm
MzNiYTNiYjM0ZjUxODJiMTk0ZTFkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI4IEBACisyMDE4LTExLTE3ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZm9yY2luZyBjb2xv
ciBzY2hlbWUgYXBwZWFyYW5jZSBpbiBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTgyMAorICAgICAgICByZGFyOi8vcHJvYmxlbS80
NjE1MzE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOiBVcGRhdGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qczoKKyAgICAg
ICAgKFdJLkNTU01hbmFnZXIpOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZ2V0
IGRlZmF1bHRBcHBlYXJhbmNlKTogQWRkZWQuCisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3Rv
dHlwZS5nZXQgZm9yY2VkQXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTTWFuYWdl
ci5wcm90b3R5cGUuc2V0IGZvcmNlZEFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdJLkNT
U01hbmFnZXIucHJvdG90eXBlLmNhbkZvcmNlQXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAgICAo
V0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UpOiBBZGRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9BcHBlYXJhbmNlLnN2ZzogQWRkZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanM6CisgICAg
ICAgIChXSS5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlLmRlZmF1bHRBcHBlYXJhbmNlQ2hhbmdlZCk6
IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkRPTVRy
ZWVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIChX
SS5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5n
ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdG9n
Z2xlQXBwZWFyYW5jZSk6IEFkZGVkLgorCiAyMDE4LTExLTE0ICBNYXR0IEJha2VyICA8bWF0dGJh
a2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBUYWJsZSBzaG91bGQgcmVj
YWxjdWxhdGUgc2Nyb2xsYWJsZSBoZWlnaHQgd2hlbiByZXNpemVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCmluZGV4IDJhYTQ4OGVm
NjVjODZjYmFmNzkwZTM3OTgzYWI5NWQzOTA5ODcyN2IuLjc5NTBmNzgzNDUyYmNhM2JiMzVjMTRj
ZjExZmRlMjJjYWVjNDAzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvUGFnZS5qc29uCkBAIC0yMSw2ICsyMSwxMiBAQAogICAgICAgICAgICAg
ImVudW0iOiBbIk5vbmUiLCAiTGF4IiwgIlN0cmljdCJdLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlNhbWUtU2l0ZSBwb2xpY3kgb2YgYSBjb29raWUuIgogICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAiaWQiOiAiQXBwZWFyYW5jZSIsCisgICAgICAgICAgICAidHlwZSI6
ICJzdHJpbmciLAorICAgICAgICAgICAgImVudW0iOiBbIkxpZ2h0IiwgIkRhcmsiXSwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJQYWdlIGFwcGVhcmFuY2UgbmFtZS4iCisgICAgICAgIH0s
CiAgICAgICAgIHsKICAgICAgICAgICAgICJpZCI6ICJGcmFtZSIsCiAgICAgICAgICAgICAidHlw
ZSI6ICJvYmplY3QiLApAQCAtMTkzLDYgKzE5OSwyMCBAQAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibWVkaWEiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTWVkaWEgdHlw
ZSB0byBlbXVsYXRlLiBFbXB0eSBzdHJpbmcgZGlzYWJsZXMgdGhlIG92ZXJyaWRlLiIgfQogICAg
ICAgICAgICAgXQogICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJz
ZXRGb3JjZWRBcHBlYXJhbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGb3JjZXMg
dGhlIGdpdmVuIGFwcGVhcmFuY2UgZm9yIHRoZSBwYWdlLiIsCisgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFwcGVhcmFuY2UiLCAiJHJlZiI6
ICJBcHBlYXJhbmNlIiwgImRlc2NyaXB0aW9uIjogIkFwcGVhcmFuY2UgbmFtZSB0byBmb3JjZS4g
RW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoZSBvdmVycmlkZS4iIH0KKyAgICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZ2V0RGVmYXVsdEFwcGVh
cmFuY2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB0aGUgZGVmYXVs
dCBhcHBlYXJhbmNlIG9mIHRoZSBwYWdlLiIsCisgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICIkcmVmIjogIkFwcGVhcmFuY2UiLCAi
ZGVzY3JpcHRpb24iOiAiQXBwZWFyYW5jZSBuYW1lIHRoYXQgaXMgYWN0aXZlIHdoZW4gbm8gYXBw
ZWFyYW5jZSBpcyBmb3JjZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCiAgICAgICAg
IHsKICAgICAgICAgICAgICJuYW1lIjogImdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUiLAog
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZGljYXRlcyB0aGUgdmlzaWJpbGl0eSBvZiBj
b21wb3NpdGluZyBib3JkZXJzLiIsCkBAIC0yOTQsNiArMzE0LDIwIEBACiAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAiJHJl
ZiI6ICJOZXR3b3JrLkZyYW1lSWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIGZyYW1lIHRo
YXQgaGFzIGNsZWFyZWQgaXRzIHNjaGVkdWxlZCBuYXZpZ2F0aW9uLiIgfQogICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJmb3JjZWRBcHBl
YXJhbmNlRGlkQ2hhbmdlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVu
IHBhZ2UncyBmb3JjZWQgYXBwZWFyYW5jZSBjaGFuZ2VzLiIsCisgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFwcGVhcmFuY2UiLCAiJHJlZiI6
ICJBcHBlYXJhbmNlIiwgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGFwcGVhcmFuY2UgdGhh
dCBpcyBmb3JjZWQuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogImRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVuIHBhZ2UncyBkZWZhdWx0IGFwcGVhcmFuY2Ug
Y2hhbmdlcywgZXZlbiBpZiB0aGVyZSBpcyBhIGZvcmNlZCBhcHBlYXJhbmNlLiIsCisgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFwcGVhcmFu
Y2UiLCAiJHJlZiI6ICJBcHBlYXJhbmNlIiwgImRlc2NyaXB0aW9uIjogIk5hbWUgb2YgdGhlIGFw
cGVhcmFuY2UgdGhhdCBpcyBhY3RpdmUgKG5vdCBjb25zaWRlcmluZyBhbnkgZm9yY2VkIGFwcGVh
cmFuY2UuKSIgfQorICAgICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCAxZWI3MmNmMmQ0NWY4OGU1NTNiMmFmZmJjZTBlMWNhYTdiY2YyMTY3Li41OWE4YjA4Nzc1
Yzk1MDg0ZDFiZmFmMzI4N2ZiYWZkNzk0ZjMwYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNzgyLDYgKzc4
MiwxMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1
bGVkTmF2aWdhdGlvbkltcGwoSW5zdHJ1bWVudGluZwogICAgICAgICBpbnNwZWN0b3JQYWdlQWdl
bnQtPmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWUpOwogfQogCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGJvb2wgdXNlRGFya0FwcGVh
cmFuY2UpCit7CisgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogaW5zcGVjdG9yUGFnZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICAgICAgaW5z
cGVjdG9yUGFnZUFnZW50LT5kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFy
YW5jZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNh
Y2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAg
aWYgKCFzX2luc3RydW1lbnRpbmdBZ2VudHNTZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDkxZDBjMjEzMTZlN2Y2
YzZiNTgyMmU3MDUyZjZhNDUyODJmZWQ0Ni4uNWQyZmIzZDU2MmI2MGFiZjQ1MGQwZmEyYTRmMDNh
YTBlZjk0ZDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjEzLDYgKzIxMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBmcmFtZVN0b3BwZWRMb2FkaW5nKEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJh
bWVTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJiwgU2Vjb25kcyBkZWxheSk7CiAgICAgc3RhdGlj
IHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYpOworICAgIHN0YXRp
YyB2b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKFBhZ2UmLCBib29sIHVzZURhcmtBcHBl
YXJhbmNlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2Um
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMzg2LDYg
KzM4Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTdG9wcGVkTG9hZGluZ0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVT
Y2hlZHVsZWROYXZpZ2F0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBTZWNv
bmRzIGRlbGF5KTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0
aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGJvb2wg
dXNlRGFya0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVz
b3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTExMzUsNiArMTEzNywxMiBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRp
b24oRnJhbWUmIGZyYQogICAgICAgICBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uSW1w
bCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKFBhZ2UmIHBhZ2Us
IGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CisgICAgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2VJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCB1c2VEYXJrQXBwZWFyYW5jZSk7Cit9CisKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZDBlMDIxMzdiMWM4ZTI5NTA5
MjkxMGU1MjYwNjZkNzgzYTZkOTM1My4uMDQ5Y2YwNWVjYjI4MDI0NWI4MTY2MGYwMGYxODIzMzRi
YzY1MjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzAwLDYgKzMwMCwxMCBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKICAgICBhdXRvIHN0b3B3YXRjaCA9IG1f
ZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CiAgICAgc3RvcHdhdGNoLT5yZXNldCgp
OwogICAgIHN0b3B3YXRjaC0+c3RhcnQoKTsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDAKKyAgICBkZWZhdWx0QXBwZWFyYW5j
ZURpZENoYW5nZShtX3BhZ2UuZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkpOworI2VuZGlmCiB9
CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKQEAgLTMx
MCw2ICszMTQsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmlu
ZyYpCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwogICAgIHNldFNob3dQYWludFJlY3RzKHVudXNl
ZCwgZmFsc2UpOwogICAgIHNldEVtdWxhdGVkTWVkaWEodW51c2VkLCBlbXB0eVN0cmluZygpKTsK
KyAgICBzZXRGb3JjZWRBcHBlYXJhbmNlKHVudXNlZCwgZW1wdHlTdHJpbmcoKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBib29sKiBv
cHRpb25hbFJlbG9hZEZyb21PcmlnaW4sIGNvbnN0IGJvb2wqIG9wdGlvbmFsUmV2YWxpZGF0ZUFs
bFJlc291cmNlcykKQEAgLTY4NSw2ICs2OTAsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmIGZyYW1lKQogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5mcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lSWQo
JmZyYW1lKSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWZhdWx0QXBwZWFyYW5j
ZURpZENoYW5nZShib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSA/IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2U6OkRhcmsgOiBJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlOjpMaWdodCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0KQogewogICAgIGlmICghbV9lbmFibGVkIHx8ICFtX3Nob3dQYWludFJlY3RzKQpAQCAt
ODA4LDYgKzgxOCwyOSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRp
YShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAgICAgICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFw
cGVhcmFuY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGFwcGVhcmFuY2UpCit7CisgICAg
aWYgKGFwcGVhcmFuY2UgPT0gbV9mb3JjZWRBcHBlYXJhbmNlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2ZvcmNlZEFwcGVhcmFuY2UgPSBhcHBlYXJhbmNlOworCisgICAgaWYgKGFwcGVhcmFu
Y2UgPT0gIkxpZ2h0Il9zKQorICAgICAgICBtX3BhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZShmYWxzZSk7CisgICAgZWxzZSBpZiAoYXBwZWFyYW5jZSA9PSAiRGFyayJfcykKKyAgICAg
ICAgbV9wYWdlLnNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUodHJ1ZSk7CisgICAgZWxzZQor
ICAgICAgICBtX3BhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om51bGxvcHQp
OworfQorCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0RGVmYXVsdEFwcGVhcmFuY2UoRXJy
b3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlKiBvdXRBcHBl
YXJhbmNlKQoreworICAgIGlmIChtX3BhZ2UuZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkpCisg
ICAgICAgICpvdXRBcHBlYXJhbmNlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFy
YW5jZTo6RGFyazsKKyAgICBlbHNlCisgICAgICAgICpvdXRBcHBlYXJhbmNlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZTo6TGlnaHQ7Cit9CisKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJiBtZWRpYSkKIHsKICAgICBpZiAo
IW1fZW11bGF0ZWRNZWRpYS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA2NzA5ZjUyYmUwMzQzMmIy
YzU1ZWI5NDcxYmM0YzBkYjI1ZDA4NmM3Li5hYzI2NGY2YmFhOTQyZWJjM2Q0YWVjMDJiNjViZGRl
YzNhMTA4NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBzZXRT
aG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdykgZmluYWw7CiAgICAgdm9pZCBz
ZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAg
dm9pZCBzZXRGb3JjZWRBcHBlYXJhbmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmlu
YWw7CisgICAgdm9pZCBnZXREZWZhdWx0QXBwZWFyYW5jZShFcnJvclN0cmluZyYsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2UqIG91dEFwcGVhcmFuY2UpIGZpbmFsOwogICAg
IHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91
dF9wYXJhbSkgZmluYWw7CiAgICAgdm9pZCBzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVy
cm9yU3RyaW5nJiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBzbmFwc2hvdE5vZGUoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpIGZpbmFsOwpAQCAtMTE2LDYgKzEx
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmcoRnJhbWUmKTsKICAg
ICB2b2lkIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYsIFNlY29uZHMgZGVsYXkpOwog
ICAgIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYpOworICAgIHZv
aWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAg
ICAgdm9pZCBhcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nJik7CiAgICAgdm9pZCBkaWRQYWludChS
ZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdm9pZCBkaWRMYXlvdXQoKTsK
QEAgLTE2MCw2ICsxNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0ZpcnN0TGF5b3V0QWZ0
ZXJPbkxvYWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG93UGFpbnRSZWN0cyB7IGZhbHNlIH07
CiAgICAgU3RyaW5nIG1fZW11bGF0ZWRNZWRpYTsKKyAgICBTdHJpbmcgbV9mb3JjZWRBcHBlYXJh
bmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
OTUwYmFlMDNkNTAzMTVjMzg5NGU0YjUxOWNhYWZjMjZlNzA0MTdlMy4uMjhjY2JlMDg4NjUzODBk
MDkxNzkyYTBiZjQ4MWE4ZDdiMDA4YzY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNTE0LDYg
KzI1MTQsOCBAQCB2b2lkIFBhZ2U6OnNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wgdmFsdWUpCiAK
ICAgICBtX3VzZURhcmtBcHBlYXJhbmNlID0gdmFsdWU7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKCp0aGlzLCB2YWx1ZSk7CisKICAg
ICBhcHBlYXJhbmNlRGlkQ2hhbmdlKCk7CiB9CiAKQEAgLTI1MjIsOSArMjUyNCwyMSBAQCBib29s
IFBhZ2U6OnVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
YWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCF2aWV3IHx8ICFlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2aWV3LT5tZWRpYVR5cGUoKSwgInNjcmVlbiIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSkKKyAgICAgICAgcmV0
dXJuIG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZS52YWx1ZSgpOwogICAgIHJldHVybiBtX3Vz
ZURhcmtBcHBlYXJhbmNlOwogfQogCit2b2lkIFBhZ2U6OnNldFVzZURhcmtBcHBlYXJhbmNlT3Zl
cnJpZGUoc3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZU92ZXJyaWRlKQoreworICAgIGlmICh2YWx1
ZU92ZXJyaWRlID09IG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV91c2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlID0gdmFsdWVPdmVycmlkZTsKKwor
ICAgIGFwcGVhcmFuY2VEaWRDaGFuZ2UoKTsKK30KKwogdm9pZCBQYWdlOjpzZXRGdWxsc2NyZWVu
SW5zZXRzKGNvbnN0IEZsb2F0Qm94RXh0ZW50JiBpbnNldHMpCiB7CiAgICAgaWYgKGluc2V0cyA9
PSBtX2Z1bGxzY3JlZW5JbnNldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGY4OTQwMGFiMThkMGQzNGFm
YzNmODVjZjVlYzg2ZDBjMjYwYzQ5NTMuLjc4NGMzZTQxYzYwMjNhYzdkOTk5M2QyZTFiODI1MTEz
NWY5ZmY3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zNTgsNiArMzU4LDggQEAgcHVibGljOgogICAg
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wpOworICAgIGJv
b2wgZGVmYXVsdFVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2VEYXJrQXBw
ZWFyYW5jZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om9w
dGlvbmFsPGJvb2w+KTsKIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgZmxvYXQg
dGV4dEF1dG9zaXppbmdXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEF1dG9zaXppbmdXaWR0
aDsgfQpAQCAtNzkxLDYgKzc5Myw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBtX3VzZVN5
c3RlbUFwcGVhcmFuY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV91c2VEYXJrQXBwZWFyYW5jZSB7
IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3VzZURhcmtBcHBlYXJhbmNlT3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IG1fdGV4dEF1
dG9zaXppbmdXaWR0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IDAyMmU5NzU2NzVkMTc4MDU1MjJlODkyZDBmYjE2NGU3NTA5ZTU3Y2EuLmVmNjkyYTQwZmE5OGM2
MTQyMzczOWY2MzI5ODgwMmMzYmQ5OWIyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcwpAQCAtNDAzLDYgKzQwMyw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIkZvY3VzIG9uIFN1YnRy
ZWUiXSA9ICJGb2N1cyBvbiBTdWJ0cmVlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZvY3VzZWQiXSA9
ICJGb2N1c2VkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkZvbnQiXSA9ICJGb250IjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkZvbnRzIl0gPSAiRm9udHMiOworbG9jYWxpemVkU3RyaW5nc1siRm9yY2UgRGFy
ayBBcHBlYXJhbmNlIl0gPSAiRm9yY2UgRGFyayBBcHBlYXJhbmNlIjsKK2xvY2FsaXplZFN0cmlu
Z3NbIkZvcmNlIExpZ2h0IEFwcGVhcmFuY2UiXSA9ICJGb3JjZSBMaWdodCBBcHBlYXJhbmNlIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkZvcmNlIFByaW50IE1lZGlhIFN0eWxlcyJdID0gIkZvcmNlIFBy
aW50IE1lZGlhIFN0eWxlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGb3JjZWQgTGF5b3V0Il0gPSAi
Rm9yY2VkIExheW91dCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGb3JjZWQgUHNldWRvLUNsYXNzZXMi
XSA9ICJGb3JjZWQgUHNldWRvLUNsYXNzZXMiOwpAQCAtOTQ0LDYgKzk0Niw3IEBAIGxvY2FsaXpl
ZFN0cmluZ3NbIlVua25vd24gbm9kZSJdID0gIlVua25vd24gbm9kZSI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lIl0gPSAiVW5zdXBwb3J0ZWQgcHJvcGVydHkg
bmFtZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVbnN1cHBvcnRlZCBwcm9wZXJ0eSB2YWx1ZSJdID0g
IlVuc3VwcG9ydGVkIHByb3BlcnR5IHZhbHVlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVudGl0bGVk
Il0gPSAiVW50aXRsZWQiOworbG9jYWxpemVkU3RyaW5nc1siVXNlIERlZmF1bHQgQXBwZWFyYW5j
ZSJdID0gIlVzZSBEZWZhdWx0IEFwcGVhcmFuY2UiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlIERl
ZmF1bHQgTWVkaWEgU3R5bGVzIl0gPSAiVXNlIERlZmF1bHQgTWVkaWEgU3R5bGVzIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlVzZSB0aGUgcmVzb3VyY2UgY2FjaGUgd2hlbiBsb2FkaW5nIHJlc291cmNl
cyJdID0gIlVzZSB0aGUgcmVzb3VyY2UgY2FjaGUgd2hlbiBsb2FkaW5nIHJlc291cmNlcyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJVc2VyIEFnZW50Il0gPSAiVXNlciBBZ2VudCI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5h
Z2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
Q1NTTWFuYWdlci5qcwppbmRleCA0ODkwNjdiOWU4ZWM5MWQxYTQwNDVjZDEyYzdmZmVjNGMzMDU2
MmQ4Li4zMjczYWZjMzIyYmVmM2IzNTFiYWU3NDI2NjkwNWUxMDRiNDRiYjIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0NTU01hbmFnZXIuanMKQEAgLTQ1LDYgKzQ1LDggQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNz
IENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElk
ZW50aWZpZXJNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxN
YXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9ub2RlU3R5bGVzTWFwID0ge307CisgICAgICAg
IHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZm9yY2VkQXBw
ZWFyYW5jZSA9IG51bGw7CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBMZWdh
Y3kgYmFja2VuZHMgZGlkIG5vdCBzZW5kIHN0eWxlc2hlZXQKICAgICAgICAgLy8gYWRkZWQvcmVt
b3ZlZCBldmVudHMgYW5kIG11c3QgYmUgZmV0Y2hlZCBtYW51YWxseS4KQEAgLTEwNyw2ICsxMDks
NTYgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgcmV0dXJuIFsuLi50aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC52YWx1ZXMo
KV07CiAgICAgfQogCisgICAgZ2V0IGRlZmF1bHRBcHBlYXJhbmNlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTsKKyAgICB9CisKKyAgICBnZXQgZm9yY2Vk
QXBwZWFyYW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZm9yY2VkQXBwZWFyYW5j
ZTsKKyAgICB9CisKKyAgICBzZXQgZm9yY2VkQXBwZWFyYW5jZShuYW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLmNhbkZvcmNlQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGxldCBwcm90b2NvbE5hbWUgPSAiIjsKKworICAgICAgICBzd2l0Y2ggKG5hbWUp
IHsKKyAgICAgICAgY2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuTGlnaHQ6CisgICAgICAg
ICAgICBwcm90b2NvbE5hbWUgPSBQYWdlQWdlbnQuQXBwZWFyYW5jZS5MaWdodDsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcms6
CisgICAgICAgICAgICBwcm90b2NvbE5hbWUgPSBQYWdlQWdlbnQuQXBwZWFyYW5jZS5EYXJrOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBudWxsOgorICAgICAgICBjYXNlIHVu
ZGVmaW5lZDoKKyAgICAgICAgY2FzZSAiIjoKKyAgICAgICAgICAgIHByb3RvY29sTmFtZSA9ICIi
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8v
IEFib3J0IGZvciB1bmtub3duIHZhbHVlcy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX2ZvcmNlZEFwcGVhcmFuY2UgPSBuYW1lIHx8IG51bGw7CisKKyAg
ICAgICAgUGFnZUFnZW50LnNldEZvcmNlZEFwcGVhcmFuY2UocHJvdG9jb2xOYW1lKS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNTU01h
bmFnZXIuRXZlbnQuRm9yY2VkQXBwZWFyYW5jZURpZENoYW5nZSwge2FwcGVhcmFuY2U6IHRoaXMu
X2ZvcmNlZEFwcGVhcmFuY2V9KTsKKyAgICAgICAgICAgIHRoaXMubWVkaWFRdWVyeVJlc3VsdENo
YW5nZWQoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2FuRm9yY2VBcHBlYXJhbmNlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB3aW5kb3cuUGFnZUFnZW50ICYmICEhUGFnZUFnZW50LnNl
dEZvcmNlZEFwcGVhcmFuY2UgJiYgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7CisgICAgfQorCiAg
ICAgY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB3aW5kb3cu
Q1NTQWdlbnQgJiYgISFDU1NBZ2VudC5mb3JjZVBzZXVkb1N0YXRlOwpAQCAtMjY5LDYgKzMyMSwz
MyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiAgICAgfQogCisgICAgZGVm
YXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UocHJvdG9jb2xOYW1lKQorICAgIHsKKyAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuUGFnZU9ic2VydmVyLgorCisgICAgICAgIGxldCBhcHBlYXJhbmNlID0g
bnVsbDsKKworICAgICAgICBzd2l0Y2ggKHByb3RvY29sTmFtZSkgeworICAgICAgICBjYXNlIFBh
Z2VBZ2VudC5BcHBlYXJhbmNlLkxpZ2h0OgorICAgICAgICAgICAgYXBwZWFyYW5jZSA9IFdJLkNT
U01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgUGFnZUFnZW50LkFwcGVhcmFuY2UuRGFyazoKKyAgICAgICAgICAgIGFwcGVhcmFuY2Ug
PSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyazsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGRlZmF1
bHQgYXBwZWFyYW5jZSBuYW1lOiIsIHByb3RvY29sTmFtZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlID0gYXBwZWFyYW5j
ZTsKKworICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ1NTTWFuYWdlci5FdmVudC5EZWZhdWx0
QXBwZWFyYW5jZURpZENoYW5nZSwge2FwcGVhcmFuY2V9KTsKKyAgICB9CisKICAgICAvLyBQcm90
ZWN0ZWQKIAogICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKQEAgLTU2MSw2ICs2NDAsMTMg
QEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIFdJ
LkNTU01hbmFnZXIuRXZlbnQgPSB7CiAgICAgU3R5bGVTaGVldEFkZGVkOiAiY3NzLW1hbmFnZXIt
c3R5bGUtc2hlZXQtYWRkZWQiLAogICAgIFN0eWxlU2hlZXRSZW1vdmVkOiAiY3NzLW1hbmFnZXIt
c3R5bGUtc2hlZXQtcmVtb3ZlZCIsCisgICAgRGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2U6ICJj
c3MtbWFuYWdlci1kZWZhdWx0LWFwcGVhcmFuY2UtZGlkLWNoYW5nZSIsCisgICAgRm9yY2VkQXBw
ZWFyYW5jZURpZENoYW5nZTogImNzcy1tYW5hZ2VyLWZvcmNlZC1hcHBlYXJhbmNlLWRpZC1jaGFu
Z2UiLAorfTsKKworV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlID0geworICAgIExpZ2h0OiBTeW1i
b2woImxpZ2h0IiksCisgICAgRGFyazogU3ltYm9sKCJkYXJrIiksCiB9OwogCiBXSS5DU1NNYW5h
Z2VyLlBzZXVkb0VsZW1lbnROYW1lcyA9IFsiYmVmb3JlIiwgImFmdGVyIl07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQXBwZWFyYW5jZS5z
dmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQXBwZWFyYW5j
ZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2IzOTRmYjkxZWQwNzVhZDA4MGUzNjdkNWI3MzQ2NGMxMTA2Mzgy
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ltYWdlcy9BcHBlYXJhbmNlLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAg
ICA8cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTSAzLjk5
MTE5ODkzIDEgTCAxMi4wMDg3OTczIDEgQyAxMy4wNDg5MDQgMSAxMy40MjYwNzMzIDEuMTA4Mjk0
NjcgMTMuODA2MzIyNyAxLjMxMTY1ODY3IEMgMTQuMTg2NTYyNyAxLjUxNTAxMzMzIDE0LjQ4NDk4
NjcgMS44MTM0MzczMyAxNC42ODgzNDEzIDIuMTkzNjc3MzMgQyAxNC44OTE3MDUzIDIuNTczOTI2
NjcgMTUgMi45NTEwOTYgMTUgMy45OTEyMDI2NyBMIDE1IDEyLjAwODgwMTEgQyAxNSAxMy4wNDg5
MDU5IDE0Ljg5MTcwNTMgMTMuNDI2MDczMyAxNC42ODgzNDEzIDEzLjgwNjMxOTkgQyAxNC40ODQ5
ODY3IDE0LjE4NjU2NjkgMTQuMTg2NTYyNyAxNC40ODQ5ODY5IDEzLjgwNjMyMjcgMTQuNjg4MzQ1
MiBDIDEzLjQyNjA3MzMgMTQuODkxNzAzNSAxMy4wNDg5MDQgMTUgMTIuMDA4Nzk3MyAxNSBMIDMu
OTkxMTk4OTMgMTUgQyAyLjk1MTA5NDEzIDE1IDIuNTczOTI2NjcgMTQuODkxNzAzNSAyLjE5MzY4
MDEzIDE0LjY4ODM0NTIgQyAxLjgxMzQzMzEzIDE0LjQ4NDk4NjkgMS41MTUwMTMwNSAxNC4xODY1
NjY5IDEuMzExNjU0ODQgMTMuODA2MzE5OSBDIDEuMTA4Mjk2NTMgMTMuNDI2MDczMyAxIDEzLjA0
ODkwNTkgMSAxMi4wMDg4MDExIEwgMSAzLjk5MTIwMjY3IEMgMSAyLjk1MTA5NiAxLjEwODI5NjUz
IDIuNTczOTI2NjcgMS4zMTE2NTQ4NCAyLjE5MzY3NzMzIEMgMS41MTUwMTMwNSAxLjgxMzQzNzMz
IDEuODEzNDMzMTMgMS41MTUwMTMzMyAyLjE5MzY4MDEzIDEuMzExNjU4NjcgQyAyLjU3MzkyNjY3
IDEuMTA4Mjk0NjcgMi45NTEwOTQxMyAxIDMuOTkxMTk4OTMgMSBaIE0gMy41IDQgTCAxMi41IDQg
QyAxMy4zMjg0MjcxIDQgMTQgNC42NzE1NzI4OCAxNCA1LjUgTCAxNCAxMi41IEMgMTQgMTMuMzI4
NDI3MSAxMy4zMjg0MjcxIDE0IDEyLjUgMTQgTCAzLjUgMTQgQyAyLjY3MTU3Mjg4IDE0IDIgMTMu
MzI4NDI3MSAyIDEyLjUgTCAyIDUuNSBDIDIgNC42NzE1NzI4OCAyLjY3MTU3Mjg4IDQgMy41IDQg
WiBNIDQuMSA1IEwgMTEuOSA1IEMgMTIuNTA3NTEzMiA1IDEzIDUuNDkyNDg2NzggMTMgNi4xIEwg
MTMgMTEuOSBDIDEzIDEyLjUwNzUxMzIgMTIuNTA3NTEzMiAxMyAxMS45IDEzIEwgNC4xIDEzIEMg
My40OTI0ODY3OCAxMyAzIDEyLjUwNzUxMzIgMyAxMS45IEwgMyA2LjEgQyAzIDUuNDkyNDg2Nzgg
My40OTI0ODY3OCA1IDQuMSA1IFogTSAzIDIgTCA0IDIgTCA0IDMgTCAzIDMgTCAzIDIgWiBNIDUg
MiBMIDYgMiBMIDYgMyBMIDUgMyBMIDUgMiBaIE0gNyAyIEwgOCAyIEwgOCAzIEwgNyAzIEwgNyAy
IFoiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCmluZGV4IDMxNDY4YTdiMmE5MjYx
ZjExMThjNjBmNWYzYjE0MjUyMWFiODNlZWMuLjZiN2FmNmY5Y2ViYWNlMWFiZGRjZTU1ZGQyM2Ux
N2MyNjMwMTVkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKQEAgLTQ3LDYgKzQ3LDExIEBA
IFdJLlBhZ2VPYnNlcnZlciA9IGNsYXNzIFBhZ2VPYnNlcnZlcgogICAgICAgICBXSS5uZXR3b3Jr
TWFuYWdlci5mcmFtZURpZERldGFjaChmcmFtZUlkKTsKICAgICB9CiAKKyAgICBkZWZhdWx0QXBw
ZWFyYW5jZURpZENoYW5nZShhcHBlYXJhbmNlKQorICAgIHsKKyAgICAgICAgV0kuY3NzTWFuYWdl
ci5kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShhcHBlYXJhbmNlKTsKKyAgICB9CisKICAgICBm
cmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lSWQpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxl
ZCB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggMmRkOTE5NDZlYWQ1OWI4
ZDE2MDY4MGM5MmU4Y2ZhMDVlNjgwMTk1OC4uZTE2OWNiNTVkNGJmNzQyMzk2ZjU4ZjE2NjZiNTlm
ZGMxYjc0OThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtNzQsNiArNzQs
OCBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRE9NTWFuYWdlci5FdmVudC5BdHRyaWJ1dGVSZW1vdmVkLCB0aGlzLl9kb21Ob2RlQ2hh
bmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01NYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5n
ZWQsIHRoaXMpOwogCisgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5D
U1NNYW5hZ2VyLkV2ZW50LkRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlLCB0aGlzLl9kZWZhdWx0
QXBwZWFyYW5jZURpZENoYW5nZSwgdGhpcyk7CisKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVk
Tm9kZVBhdGhTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtbm9kZS1wYXRo
IiwgbnVsbCk7CiAKICAgICAgICAgdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzID0gbnVsbDsK
QEAgLTgxLDYgKzgzLDkgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dEd1dHRlckVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fcGVuZGluZ0JyZWFrcG9pbnRO
b2RlSWRlbnRpZmllcnMgPSBuZXcgU2V0OwogCisgICAgICAgIGlmIChXSS5jc3NNYW5hZ2VyLmNh
bkZvcmNlQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2VE
aWRDaGFuZ2UoKTsKKwogICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRl
ZCkgewogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAtMTAwLDYgKzEwNSw5IEBA
IFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAgICAgewogICAgICAgICBsZXQgaXRlbXMgPSBbdGhpcy5fc2hvd1By
aW50U3R5bGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9u
TmF2aWdhdGlvbkl0ZW1dOwogCisgICAgICAgIGlmICh0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0
b25OYXZpZ2F0aW9uSXRlbSkKKyAgICAgICAgICAgIGl0ZW1zLnVuc2hpZnQodGhpcy5fZm9yY2VB
cHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0pOworCiAgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMS4zKQogICAgICAgICBpZiAod2luZG93LlBhZ2VBZ2VudCAmJiBQYWdlQWdlbnQu
c2V0U2hvd1J1bGVycykKICAgICAgICAgICAgIGl0ZW1zLnVuc2hpZnQodGhpcy5fc2hvd1J1bGVy
c0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKQEAgLTU4Miw2ICs1OTAsNzEgQEAgV0kuRE9NVHJlZUNv
bnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICAgICAgdGhpcy5fc2hvd1ByaW50U3R5bGVzQ2hhbmdlZCgpOwogICAgIH0KIAorICAg
IF9kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSgpCisgICAgeworICAgICAgICBsZXQgZGVmYXVs
dEFwcGVhcmFuY2UgPSBXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlOworICAgICAgICBp
ZiAoIWRlZmF1bHRBcHBlYXJhbmNlKSB7CisgICAgICAgICAgICB0aGlzLl9sYXN0S25vd25EZWZh
dWx0QXBwZWFyYW5jZSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG51bGw7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFu
Z2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG9uJ3Qg
dXBkYXRlIHRoZSBuYXZpZ2F0aW9uIGl0ZW0gaWYgdGhlcmUgaXMgY3VycmVudGx5IGEgZm9yY2Vk
IGFwcGVhcmFuY2UuCisgICAgICAgIC8vIFRoZSB1c2VyIHdpbGwgbmVlZCB0byB0b2dnbGUgaXQg
b2ZmIHRvIHVwZGF0ZSBpdCBiYXNlZCBvbiB0aGUgbmV3IGRlZmF1bHQgYXBwZWFyYW5jZS4KKyAg
ICAgICAgaWYgKFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSAmJiB0aGlzLl9mb3JjZUFw
cGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG51bGw7CisK
KyAgICAgICAgc3dpdGNoIChkZWZhdWx0QXBwZWFyYW5jZSkgeworICAgICAgICBjYXNlIFdJLkNT
U01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodDoKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFy
YW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImFwcGVhcmFuY2UiLCBXSS5VSVN0cmluZygiRm9yY2UgRGFyayBBcHBlYXJhbmNlIiks
IFdJLlVJU3RyaW5nKCJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIiksICJJbWFnZXMvQXBwZWFyYW5j
ZS5zdmciLCAxNiwgMTYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuQ1NT
TWFuYWdlci5BcHBlYXJhbmNlLkRhcms6CisgICAgICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFu
Y2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25J
dGVtKCJhcHBlYXJhbmNlIiwgV0kuVUlTdHJpbmcoIkZvcmNlIExpZ2h0IEFwcGVhcmFuY2UiKSwg
V0kuVUlTdHJpbmcoIlVzZSBEZWZhdWx0IEFwcGVhcmFuY2UiKSwgIkltYWdlcy9BcHBlYXJhbmNl
LnN2ZyIsIDE2LCAxNik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0pIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIlVrbm93biBkZWZhdWx0IGFwcGVhcmFuY2UgbmFtZToiLCBk
ZWZhdWx0QXBwZWFyYW5jZSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdEtub3duRGVm
YXVsdEFwcGVhcmFuY2UgPSBkZWZhdWx0QXBwZWFyYW5jZTsKKworICAgICAgICB0aGlzLl9mb3Jj
ZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZUFwcGVhcmFuY2UsIHRo
aXMpOworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS52
aXNpYmlsaXR5UHJpb3JpdHkgPSBXSS5OYXZpZ2F0aW9uSXRlbS5WaXNpYmlsaXR5UHJpb3JpdHku
TG93OworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5h
Y3RpdmF0ZWQgPSAhIVdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZTsKKworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0
aW9uSXRlbXNEaWRDaGFuZ2UpOworICAgIH0KKworICAgIF90b2dnbGVBcHBlYXJhbmNlKGV2ZW50
KQorICAgIHsKKyAgICAgICAgLy8gVXNlIHRoZSBsYXN0IGtub3duIGRlZmF1bHQgYXBwZWFyYW5j
ZSwgc2luY2UgdGhhdCBpcyB0aGUgYXBwZWFyYW5jZSB0aGlzIG5hdmlnYXRpb24gaXRlbSB3YXMg
Z2VuZXJhdGVkIGZvci4KKyAgICAgICAgbGV0IGFwcGVhcmFuY2VUb0ZvcmNlID0gbnVsbDsKKyAg
ICAgICAgc3dpdGNoICh0aGlzLl9sYXN0S25vd25EZWZhdWx0QXBwZWFyYW5jZSkgeworICAgICAg
ICBjYXNlIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodDoKKyAgICAgICAgICAgIGFwcGVh
cmFuY2VUb0ZvcmNlID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcms7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyazoKKyAg
ICAgICAgICAgIGFwcGVhcmFuY2VUb0ZvcmNlID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkxp
Z2h0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFz
c2VydChhcHBlYXJhbmNlVG9Gb3JjZSk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuZm9yY2VkQXBw
ZWFyYW5jZSA9IFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSA9PSBhcHBlYXJhbmNlVG9G
b3JjZSA/IG51bGwgOiBhcHBlYXJhbmNlVG9Gb3JjZTsKKworICAgICAgICAvLyBXaGVuIG5vIGxv
bmdlciBmb3JjaW5nIGFuIGFwcGVhcmFuY2UsIGlmIHRoZSBsYXN0IGtub3duIGRlZmF1bHQgYXBw
ZWFyYW5jZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY3VycmVudAorICAgICAgICAvLyBkZWZhdWx0
IGFwcGVhcmFuY2UsIHRoZW4gdXBkYXRlIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbiBub3cuIE90aGVy
d2lzZSBqdXN0IHRvZ2dsZSB0aGUgYWN0aXZhdGVkIHN0YXRlLgorICAgICAgICBpZiAoIVdJLmNz
c01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSAmJiB0aGlzLl9sYXN0S25vd25EZWZhdWx0QXBwZWFy
YW5jZSAhPT0gV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSkKKyAgICAgICAgICAgIHRo
aXMuX2RlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9
ICEhV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlOworICAgIH0KKwogICAgIF9zaG93UnVs
ZXJzQ2hhbmdlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uYWN0aXZhdGVkID0gV0kuc2V0dGluZ3Muc2hvd1J1bGVycy52YWx1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355304</attachid>
            <date>2018-11-19 19:13:32 -0800</date>
            <delta_ts>2018-11-19 19:32:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191820-20181119191331.patch</filename>
            <type>text/plain</type>
            <size>40948</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li5kNDUzNWQ2NjYxYjEzYjYw
ODQyZDEwNDEzMWMxZDJmOGE4ODMxZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29s
b3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NDYxNTMxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZGVkIHNldEZvcmNlZEFwcGVhcmFu
Y2UgYW5kIGdldERlZmF1bHRBcHBlYXJhbmNlLgorICAgICAgICBBbHNvIGFkZGVkIHRoZSBkZWZh
dWx0QXBwZWFyYW5jZURpZENoYW5nZSBldmVudCBhbmQgQXBwZWFyYW5jZU5hbWUgZW51bS4KKwog
MjAxOC0xMS0xNSAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
RGVsZXRlIG9sZCAueGNmaWxlbGlzdCBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBmNjY3Mzc2NmQzMDI3
NmMzNWU1NGM3M2MzMDcwZDFjOTQyNmZlNWEuLjEwZjI0MGYxZjVkNzkxNzVjYTFhYjE5MDhkNzky
OGQyNzNjM2ZlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0xMS0xNyAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29sb3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9N
IHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDYxNTMxNzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvY3NzL2ZvcmNl
LXBhZ2UtYXBwZWFyYW5jZS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2VJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZSk6IEZpcmUgZGVmYXVsdEFwcGVhcmFuY2VE
aWRDaGFuZ2UoKSBvbiBtYWNPUyBNYWphdmUuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmRpc2FibGUpOiBDYWxsIHNldEZvcmNlZEFwcGVhcmFuY2UoKSB3aXRoIGVtcHR5
IHN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6ZGVmYXVsdEFw
cGVhcmFuY2VEaWRDaGFuZ2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0Rm9yY2VkQXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXREZWZhdWx0QXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFVzZURhcmtBcHBlYXJhbmNl
KTogQ2FsbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hh
bmdlKCkuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6
IFJldHVybiBvdmVycmlkZSB2YWx1ZSBpZiBub3QgbnVsbG9wdC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUpOiBBZGRlZC4KKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRlZmF1bHRVc2VEYXJrQXBwZWFy
YW5jZSBjb25zdCk6IEFkZGVkLgorCiAyMDE4LTExLTE1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5r
aXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBEcmFnSW1hZ2Ugc2hvdWxkIGhhdmUgYSBjb21w
bGV0ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
ODQyOGJmOWNjZDE4YjU2NDVmNmUwNmJjODcyZWNiMjNlMWNiMjZmLi5kZDEyYTY0MmVmN2U0ZmY0
ZjMzYmEzYmIzNGY1MTgyYjE5NGUxZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0xMS0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29s
b3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NDYxNTMxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczogVXBkYXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6CisgICAg
ICAgIChXSS5DU1NNYW5hZ2VyKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmdl
dCBkZWZhdWx0QXBwZWFyYW5jZSk6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90
b3R5cGUuZ2V0IGZvcmNlZEFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdJLkNTU01hbmFn
ZXIucHJvdG90eXBlLnNldCBmb3JjZWRBcHBlYXJhbmNlKTogQWRkZWQuCisgICAgICAgIChXSS5D
U1NNYW5hZ2VyLnByb3RvdHlwZS5jYW5Gb3JjZUFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKTogQWRk
ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQXBwZWFyYW5jZS5zdmc6IEFkZGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzOgorICAg
ICAgICAoV0kuUGFnZU9ic2VydmVyLnByb3RvdHlwZS5kZWZhdWx0QXBwZWFyYW5jZUNoYW5nZWQp
OiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5ET01U
cmVlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAo
V0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFu
Z2UpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3Rv
Z2dsZUFwcGVhcmFuY2UpOiBBZGRlZC4KKwogMjAxOC0xMS0xNCAgTWF0dCBCYWtlciAgPG1hdHRi
YWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2hvdWxkIHJl
Y2FsY3VsYXRlIHNjcm9sbGFibGUgaGVpZ2h0IHdoZW4gcmVzaXplZApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgppbmRleCAyYWE0ODhl
ZjY1Yzg2Y2JhZjc5MGUzNzk4M2FiOTVkMzkwOTg3MjdiLi43OTUwZjc4MzQ1MmJjYTNiYjM1YzE0
Y2YxMWZkZTIyY2FlYzQwMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3Byb3RvY29sL1BhZ2UuanNvbgpAQCAtMjEsNiArMjEsMTIgQEAKICAgICAgICAgICAg
ICJlbnVtIjogWyJOb25lIiwgIkxheCIsICJTdHJpY3QiXSwKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTYW1lLVNpdGUgcG9saWN5IG9mIGEgY29va2llLiIKICAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgImlkIjogIkFwcGVhcmFuY2UiLAorICAgICAgICAgICAgInR5cGUi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJlbnVtIjogWyJMaWdodCIsICJEYXJrIl0sCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUGFnZSBhcHBlYXJhbmNlIG5hbWUuIgorICAgICAgICB9
LAogICAgICAgICB7CiAgICAgICAgICAgICAiaWQiOiAiRnJhbWUiLAogICAgICAgICAgICAgInR5
cGUiOiAib2JqZWN0IiwKQEAgLTE5Myw2ICsxOTksMjAgQEAKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm1lZGlhIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk1lZGlhIHR5
cGUgdG8gZW11bGF0ZS4gRW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoZSBvdmVycmlkZS4iIH0KICAg
ICAgICAgICAgIF0KICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAi
c2V0Rm9yY2VkQXBwZWFyYW5jZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRm9yY2Vz
IHRoZSBnaXZlbiBhcHBlYXJhbmNlIGZvciB0aGUgcGFnZS4iLAorICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhcHBlYXJhbmNlIiwgIiRyZWYi
OiAiQXBwZWFyYW5jZSIsICJkZXNjcmlwdGlvbiI6ICJBcHBlYXJhbmNlIG5hbWUgdG8gZm9yY2Uu
IEVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGUgb3ZlcnJpZGUuIiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImdldERlZmF1bHRBcHBl
YXJhbmNlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgdGhlIGRlZmF1
bHQgYXBwZWFyYW5jZSBvZiB0aGUgcGFnZS4iLAorICAgICAgICAgICAgInJldHVybnMiOiBbCisg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAiJHJlZiI6ICJBcHBlYXJhbmNlIiwg
ImRlc2NyaXB0aW9uIjogIkFwcGVhcmFuY2UgbmFtZSB0aGF0IGlzIGFjdGl2ZSB3aGVuIG5vIGFw
cGVhcmFuY2UgaXMgZm9yY2VkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAg
ICB7CiAgICAgICAgICAgICAibmFtZSI6ICJnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlIiwK
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgdGhlIHZpc2liaWxpdHkgb2Yg
Y29tcG9zaXRpbmcgYm9yZGVycy4iLApAQCAtMjk0LDYgKzMxNCwyMCBAQAogICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRy
ZWYiOiAiTmV0d29yay5GcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBmcmFtZSB0
aGF0IGhhcyBjbGVhcmVkIGl0cyBzY2hlZHVsZWQgbmF2aWdhdGlvbi4iIH0KICAgICAgICAgICAg
IF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZm9yY2VkQXBw
ZWFyYW5jZURpZENoYW5nZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hl
biBwYWdlJ3MgZm9yY2VkIGFwcGVhcmFuY2UgY2hhbmdlcy4iLAorICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhcHBlYXJhbmNlIiwgIiRyZWYi
OiAiQXBwZWFyYW5jZSIsICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9mIHRoZSBhcHBlYXJhbmNlIHRo
YXQgaXMgZm9yY2VkLiIgfQorICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAibmFtZSI6ICJkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSIsCisgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZWQgd2hlbiBwYWdlJ3MgZGVmYXVsdCBhcHBlYXJhbmNl
IGNoYW5nZXMsIGV2ZW4gaWYgdGhlcmUgaXMgYSBmb3JjZWQgYXBwZWFyYW5jZS4iLAorICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhcHBlYXJh
bmNlIiwgIiRyZWYiOiAiQXBwZWFyYW5jZSIsICJkZXNjcmlwdGlvbiI6ICJOYW1lIG9mIHRoZSBh
cHBlYXJhbmNlIHRoYXQgaXMgYWN0aXZlIChub3QgY29uc2lkZXJpbmcgYW55IGZvcmNlZCBhcHBl
YXJhbmNlLikiIH0KKyAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggMWViNzJjZjJkNDVmODhlNTUzYjJhZmZiY2UwZTFjYWE3YmNmMjE2Ny4uNTlhOGIwODc3
NWM5NTA4NGQxYmZhZjMyODdmYmFmZDc5NGYzMGMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTc4Miw2ICs3
ODIsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVk
dWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmcKICAgICAgICAgaW5zcGVjdG9yUGFnZUFn
ZW50LT5mcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lKTsKIH0KIAordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBib29sIHVzZURhcmtBcHBl
YXJhbmNlKQoreworICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIGluc3BlY3RvclBhZ2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCkpCisgICAgICAgIGlu
c3BlY3RvclBhZ2VBZ2VudC0+ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVh
cmFuY2UpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lD
YWNoZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQogewogICAg
IGlmICghc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQ5MWQwYzIxMzE2ZTdm
NmM2YjU4MjJlNzA1MmY2YTQ1MjgyZmVkNDYuLjVkMmZiM2Q1NjJiNjBhYmY0NTBkMGZhMmE0ZjAz
YWEwZWY5NGQ1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZnJhbWVTdG9wcGVkTG9hZGluZyhGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGZy
YW1lU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYsIFNlY29uZHMgZGVsYXkpOwogICAgIHN0YXRp
YyB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmKTsKKyAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiwgYm9vbCB1c2VEYXJrQXBw
ZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdl
Jiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTM4Niw2
ICszODcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1l
U2NoZWR1bGVkTmF2aWdhdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJiwgU2Vj
b25kcyBkZWxheSk7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdh
dGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CisgICAgc3RhdGljIHZvaWQg
ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBib29s
IHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJl
c291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0xMTM1LDYgKzExMzcsMTIgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0
aW9uKEZyYW1lJiBmcmEKICAgICAgICAgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbklt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZShQYWdlJiBwYWdl
LCBib29sIHVzZURhcmtBcHBlYXJhbmNlKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOworICAgIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgdXNlRGFya0FwcGVhcmFuY2UpOworfQorCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGQwZTAyMTM3YjFjOGUyOTUw
OTI5MTBlNTI2MDY2ZDc4M2E2ZDkzNTMuLjA0OWNmMDVlY2IyODAyNDViODE2NjBmMDBmMTgyMzM0
YmM2NTIxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMwMCw2ICszMDAsMTAgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiAgICAgYXV0byBzdG9wd2F0Y2ggPSBt
X2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRjaCgpOwogICAgIHN0b3B3YXRjaC0+cmVzZXQo
KTsKICAgICBzdG9wd2F0Y2gtPnN0YXJ0KCk7CisKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwCisgICAgZGVmYXVsdEFwcGVhcmFu
Y2VEaWRDaGFuZ2UobV9wYWdlLmRlZmF1bHRVc2VEYXJrQXBwZWFyYW5jZSgpKTsKKyNlbmRpZgog
fQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC0z
MTAsNiArMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJp
bmcmKQogICAgIEVycm9yU3RyaW5nIHVudXNlZDsKICAgICBzZXRTaG93UGFpbnRSZWN0cyh1bnVz
ZWQsIGZhbHNlKTsKICAgICBzZXRFbXVsYXRlZE1lZGlhKHVudXNlZCwgZW1wdHlTdHJpbmcoKSk7
CisgICAgc2V0Rm9yY2VkQXBwZWFyYW5jZSh1bnVzZWQsIGVtcHR5U3RyaW5nKCkpOwogfQogCiB2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCog
b3B0aW9uYWxSZWxvYWRGcm9tT3JpZ2luLCBjb25zdCBib29sKiBvcHRpb25hbFJldmFsaWRhdGVB
bGxSZXNvdXJjZXMpCkBAIC02ODUsNiArNjkwLDExIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJiBmcmFtZSkKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFtZUlk
KCZmcmFtZSkpOwogfQogCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVmYXVsdEFwcGVhcmFu
Y2VEaWRDaGFuZ2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKK3sKKyAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UgPyBJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlOjpEYXJrIDogSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZTo6TGlnaHQpOworfQorCiB2b2lkIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9zaG93UGFpbnRSZWN0cykKQEAg
LTgwOCw2ICs4MTgsMjkgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVk
aWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG1lZGlhKQogICAgICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRGb3JjZWRB
cHBlYXJhbmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBhcHBlYXJhbmNlKQoreworICAg
IGlmIChhcHBlYXJhbmNlID09IG1fZm9yY2VkQXBwZWFyYW5jZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9mb3JjZWRBcHBlYXJhbmNlID0gYXBwZWFyYW5jZTsKKworICAgIGlmIChhcHBlYXJh
bmNlID09ICJMaWdodCJfcykKKyAgICAgICAgbV9wYWdlLnNldFVzZURhcmtBcHBlYXJhbmNlT3Zl
cnJpZGUoZmFsc2UpOworICAgIGVsc2UgaWYgKGFwcGVhcmFuY2UgPT0gIkRhcmsiX3MpCisgICAg
ICAgIG1fcGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHRydWUpOworICAgIGVsc2UK
KyAgICAgICAgbV9wYWdlLnNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUoc3RkOjpudWxsb3B0
KTsKK30KKwordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldERlZmF1bHRBcHBlYXJhbmNlKEVy
cm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZSogb3V0QXBw
ZWFyYW5jZSkKK3sKKyAgICBpZiAobV9wYWdlLmRlZmF1bHRVc2VEYXJrQXBwZWFyYW5jZSgpKQor
ICAgICAgICAqb3V0QXBwZWFyYW5jZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVh
cmFuY2U6OkRhcms7CisgICAgZWxzZQorICAgICAgICAqb3V0QXBwZWFyYW5jZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2U6OkxpZ2h0OworfQorCiB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6YXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyYgbWVkaWEpCiB7CiAgICAgaWYg
KCFtX2VtdWxhdGVkTWVkaWEuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNjcwOWY1MmJlMDM0MzJi
MmM1NWViOTQ3MWJjNGMwZGIyNWQwODZjNy4uYWMyNjRmNmJhYTk0MmViYzNkNGFlYzAyYjY1YmRk
ZWMzYTEwODZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2hvd1J1bGVycyhFcnJvclN0cmluZyYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgc2V0
U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcmLCBib29sIHNob3cpIGZpbmFsOwogICAgIHZvaWQg
c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IHZvaWQgc2V0Rm9yY2VkQXBwZWFyYW5jZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZp
bmFsOworICAgIHZvaWQgZ2V0RGVmYXVsdEFwcGVhcmFuY2UoRXJyb3JTdHJpbmcmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlKiBvdXRBcHBlYXJhbmNlKSBmaW5hbDsKICAg
ICB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKiBv
dXRfcGFyYW0pIGZpbmFsOwogICAgIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShF
cnJvclN0cmluZyYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgc25hcHNob3ROb2RlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgU3RyaW5nKiBvdXREYXRhVVJMKSBmaW5hbDsKQEAgLTExNiw2ICsx
MTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmFtZVN0b3BwZWRMb2FkaW5nKEZyYW1lJik7CiAg
ICAgdm9pZCBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmLCBTZWNvbmRzIGRlbGF5KTsK
ICAgICB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmKTsKKyAgICB2
b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpOwog
ICAgIHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyYpOwogICAgIHZvaWQgZGlkUGFpbnQo
UmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgZGlkTGF5b3V0KCk7
CkBAIC0xNjAsNiArMTYzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNGaXJzdExheW91dEFm
dGVyT25Mb2FkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvd1BhaW50UmVjdHMgeyBmYWxzZSB9
OwogICAgIFN0cmluZyBtX2VtdWxhdGVkTWVkaWE7CisgICAgU3RyaW5nIG1fZm9yY2VkQXBwZWFy
YW5jZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDk1MGJhZTAzZDUwMzE1YzM4OTRlNGI1MTljYWFmYzI2ZTcwNDE3ZTMuLjI4Y2NiZTA4ODY1Mzgw
ZDA5MTc5MmEwYmY0ODFhOGQ3YjAwOGM2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjUxNCw2
ICsyNTE0LDggQEAgdm9pZCBQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHZhbHVlKQog
CiAgICAgbV91c2VEYXJrQXBwZWFyYW5jZSA9IHZhbHVlOwogCisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSgqdGhpcywgdmFsdWUpOworCiAg
ICAgYXBwZWFyYW5jZURpZENoYW5nZSgpOwogfQogCkBAIC0yNTIyLDkgKzI1MjQsMjEgQEAgYm9v
bCBQYWdlOjp1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmlldyB8fCAhZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uodmlldy0+bWVkaWFUeXBlKCksICJzY3JlZW4iKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUpCisgICAgICAgIHJl
dHVybiBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUudmFsdWUoKTsKICAgICByZXR1cm4gbV91
c2VEYXJrQXBwZWFyYW5jZTsKIH0KIAordm9pZCBQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZU92
ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdmFsdWVPdmVycmlkZSkKK3sKKyAgICBpZiAodmFs
dWVPdmVycmlkZSA9PSBtX3VzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSA9IHZhbHVlT3ZlcnJpZGU7CisK
KyAgICBhcHBlYXJhbmNlRGlkQ2hhbmdlKCk7Cit9CisKIHZvaWQgUGFnZTo6c2V0RnVsbHNjcmVl
bkluc2V0cyhjb25zdCBGbG9hdEJveEV4dGVudCYgaW5zZXRzKQogewogICAgIGlmIChpbnNldHMg
PT0gbV9mdWxsc2NyZWVuSW5zZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmODk0MDBhYjE4ZDBkMzRh
ZmMzZjg1Y2Y1ZWM4NmQwYzI2MGM0OTUzLi43ODRjM2U0MWM2MDIzYWM3ZDk5OTNkMmUxYjgyNTEx
MzVmOWZmNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzU4LDYgKzM1OCw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sKTsKKyAgICBi
b29sIGRlZmF1bHRVc2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlRGFya0Fw
cGVhcmFuY2U7IH0KKyAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUoc3RkOjpv
cHRpb25hbDxib29sPik7CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0
IHRleHRBdXRvc2l6aW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RleHRBdXRvc2l6aW5nV2lk
dGg7IH0KQEAgLTc5MSw2ICs3OTMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgbV91c2VT
eXN0ZW1BcHBlYXJhbmNlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlRGFya0FwcGVhcmFuY2Ug
eyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91c2VEYXJrQXBwZWFyYW5jZU92
ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCBtX3RleHRB
dXRvc2l6aW5nV2lkdGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCAwMjJlOTc1Njc1ZDE3ODA1NTIyZTg5MmQwZmIxNjRlNzUwOWU1N2NhLi5lZjY5MmE0MGZhOThj
NjE0MjM3MzlmNjMyOTg4MDJjM2JkOTliMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMKQEAgLTQwMyw2ICs0MDMsOCBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJGb2N1cyBvbiBTdWJ0
cmVlIl0gPSAiRm9jdXMgb24gU3VidHJlZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGb2N1c2VkIl0g
PSAiRm9jdXNlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGb250Il0gPSAiRm9udCI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJGb250cyJdID0gIkZvbnRzIjsKK2xvY2FsaXplZFN0cmluZ3NbIkZvcmNlIERh
cmsgQXBwZWFyYW5jZSJdID0gIkZvcmNlIERhcmsgQXBwZWFyYW5jZSI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJGb3JjZSBMaWdodCBBcHBlYXJhbmNlIl0gPSAiRm9yY2UgTGlnaHQgQXBwZWFyYW5jZSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJGb3JjZSBQcmludCBNZWRpYSBTdHlsZXMiXSA9ICJGb3JjZSBQ
cmludCBNZWRpYSBTdHlsZXMiOwogbG9jYWxpemVkU3RyaW5nc1siRm9yY2VkIExheW91dCJdID0g
IkZvcmNlZCBMYXlvdXQiOwogbG9jYWxpemVkU3RyaW5nc1siRm9yY2VkIFBzZXVkby1DbGFzc2Vz
Il0gPSAiRm9yY2VkIFBzZXVkby1DbGFzc2VzIjsKQEAgLTk0NCw2ICs5NDYsNyBAQCBsb2NhbGl6
ZWRTdHJpbmdzWyJVbmtub3duIG5vZGUiXSA9ICJVbmtub3duIG5vZGUiOwogbG9jYWxpemVkU3Ry
aW5nc1siVW5zdXBwb3J0ZWQgcHJvcGVydHkgbmFtZSJdID0gIlVuc3VwcG9ydGVkIHByb3BlcnR5
IG5hbWUiOwogbG9jYWxpemVkU3RyaW5nc1siVW5zdXBwb3J0ZWQgcHJvcGVydHkgdmFsdWUiXSA9
ICJVbnN1cHBvcnRlZCBwcm9wZXJ0eSB2YWx1ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVbnRpdGxl
ZCJdID0gIlVudGl0bGVkIjsKK2xvY2FsaXplZFN0cmluZ3NbIlVzZSBEZWZhdWx0IEFwcGVhcmFu
Y2UiXSA9ICJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVzZSBE
ZWZhdWx0IE1lZGlhIFN0eWxlcyJdID0gIlVzZSBEZWZhdWx0IE1lZGlhIFN0eWxlcyI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJj
ZXMiXSA9ICJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJjZXMiOwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFu
YWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanMKaW5kZXggNDg5MDY3YjllOGVjOTFkMWE0MDQ1Y2QxMmM3ZmZlYzRjMzA1
NjJkOC4uNzQzMjIwYzhjNDc0OGUxNzAwMTA3Yjc3ZGQ2Mjg2MGQ2ZDFhZWNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9DU1NNYW5hZ2VyLmpzCkBAIC00NSw2ICs0NSw4IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFz
cyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJ
ZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJM
TWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OworICAgICAg
ICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2ZvcmNlZEFw
cGVhcmFuY2UgPSBudWxsOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogTGVn
YWN5IGJhY2tlbmRzIGRpZCBub3Qgc2VuZCBzdHlsZXNoZWV0CiAgICAgICAgIC8vIGFkZGVkL3Jl
bW92ZWQgZXZlbnRzIGFuZCBtdXN0IGJlIGZldGNoZWQgbWFudWFsbHkuCkBAIC0xMDcsNiArMTA5
LDU2IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHJldHVybiBbLi4udGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAudmFsdWVz
KCldOwogICAgIH0KIAorICAgIGdldCBkZWZhdWx0QXBwZWFyYW5jZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7CisgICAgfQorCisgICAgZ2V0IGZvcmNl
ZEFwcGVhcmFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZvcmNlZEFwcGVhcmFu
Y2U7CisgICAgfQorCisgICAgc2V0IGZvcmNlZEFwcGVhcmFuY2UobmFtZSkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5jYW5Gb3JjZUFwcGVhcmFuY2UoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBsZXQgcHJvdG9jb2xOYW1lID0gIiI7CisKKyAgICAgICAgc3dpdGNoIChuYW1l
KSB7CisgICAgICAgIGNhc2UgV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkxpZ2h0OgorICAgICAg
ICAgICAgcHJvdG9jb2xOYW1lID0gUGFnZUFnZW50LkFwcGVhcmFuY2UuTGlnaHQ7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5EYXJr
OgorICAgICAgICAgICAgcHJvdG9jb2xOYW1lID0gUGFnZUFnZW50LkFwcGVhcmFuY2UuRGFyazsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgbnVsbDoKKyAgICAgICAgY2FzZSB1
bmRlZmluZWQ6CisgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICBwcm90b2NvbE5hbWUgPSAi
IjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAv
LyBBYm9ydCBmb3IgdW5rbm93biB2YWx1ZXMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLl9mb3JjZWRBcHBlYXJhbmNlID0gbmFtZSB8fCBudWxsOworCisg
ICAgICAgIFBhZ2VBZ2VudC5zZXRGb3JjZWRBcHBlYXJhbmNlKHByb3RvY29sTmFtZSkudGhlbigo
KSA9PiB7CisgICAgICAgICAgICB0aGlzLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CisgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5DU1NNYW5hZ2VyLkV2ZW50
LkZvcmNlZEFwcGVhcmFuY2VEaWRDaGFuZ2UsIHthcHBlYXJhbmNlOiB0aGlzLl9mb3JjZWRBcHBl
YXJhbmNlfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNhbkZvcmNlQXBwZWFyYW5jZSgp
CisgICAgeworICAgICAgICByZXR1cm4gd2luZG93LlBhZ2VBZ2VudCAmJiAhIVBhZ2VBZ2VudC5z
ZXRGb3JjZWRBcHBlYXJhbmNlICYmIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlOworICAgIH0KKwog
ICAgIGNhbkZvcmNlUHNldWRvQ2xhc3NlcygpCiAgICAgewogICAgICAgICByZXR1cm4gd2luZG93
LkNTU0FnZW50ICYmICEhQ1NTQWdlbnQuZm9yY2VQc2V1ZG9TdGF0ZTsKQEAgLTI2OSw2ICszMjEs
MzMgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogICAgIH0KIAorICAgIGRl
ZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKHByb3RvY29sTmFtZSkKKyAgICB7CisgICAgICAgIC8v
IENhbGxlZCBmcm9tIFdJLlBhZ2VPYnNlcnZlci4KKworICAgICAgICBsZXQgYXBwZWFyYW5jZSA9
IG51bGw7CisKKyAgICAgICAgc3dpdGNoIChwcm90b2NvbE5hbWUpIHsKKyAgICAgICAgY2FzZSBQ
YWdlQWdlbnQuQXBwZWFyYW5jZS5MaWdodDoKKyAgICAgICAgICAgIGFwcGVhcmFuY2UgPSBXSS5D
U1NNYW5hZ2VyLkFwcGVhcmFuY2UuTGlnaHQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFBhZ2VBZ2VudC5BcHBlYXJhbmNlLkRhcms6CisgICAgICAgICAgICBhcHBlYXJhbmNl
ID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcms7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBkZWZh
dWx0IGFwcGVhcmFuY2UgbmFtZToiLCBwcm90b2NvbE5hbWUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IGFwcGVhcmFu
Y2U7CisKKyAgICAgICAgdGhpcy5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOworCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNTU01hbmFnZXIuRXZlbnQuRGVmYXVs
dEFwcGVhcmFuY2VEaWRDaGFuZ2UsIHthcHBlYXJhbmNlfSk7CisgICAgfQorCiAgICAgLy8gUHJv
dGVjdGVkCiAKICAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCkBAIC01NjEsNiArNjQwLDEz
IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiBX
SS5DU1NNYW5hZ2VyLkV2ZW50ID0gewogICAgIFN0eWxlU2hlZXRBZGRlZDogImNzcy1tYW5hZ2Vy
LXN0eWxlLXNoZWV0LWFkZGVkIiwKICAgICBTdHlsZVNoZWV0UmVtb3ZlZDogImNzcy1tYW5hZ2Vy
LXN0eWxlLXNoZWV0LXJlbW92ZWQiLAorICAgIERlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlOiAi
Y3NzLW1hbmFnZXItZGVmYXVsdC1hcHBlYXJhbmNlLWRpZC1jaGFuZ2UiLAorICAgIEZvcmNlZEFw
cGVhcmFuY2VEaWRDaGFuZ2U6ICJjc3MtbWFuYWdlci1mb3JjZWQtYXBwZWFyYW5jZS1kaWQtY2hh
bmdlIiwKK307CisKK1dJLkNTU01hbmFnZXIuQXBwZWFyYW5jZSA9IHsKKyAgICBMaWdodDogU3lt
Ym9sKCJsaWdodCIpLAorICAgIERhcms6IFN5bWJvbCgiZGFyayIpLAogfTsKIAogV0kuQ1NTTWFu
YWdlci5Qc2V1ZG9FbGVtZW50TmFtZXMgPSBbImJlZm9yZSIsICJhZnRlciJdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVhcmFuY2Uu
c3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVhcmFu
Y2Uuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNiMzk0ZmI5MWVkMDc1YWQwODBlMzY3ZDViNzM0NjRjMTEwNjM4
MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9JbWFnZXMvQXBwZWFyYW5jZS5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIGlkPSJyb290IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxNiAxNiI+Cisg
ICAgPHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0gMy45
OTExOTg5MyAxIEwgMTIuMDA4Nzk3MyAxIEMgMTMuMDQ4OTA0IDEgMTMuNDI2MDczMyAxLjEwODI5
NDY3IDEzLjgwNjMyMjcgMS4zMTE2NTg2NyBDIDE0LjE4NjU2MjcgMS41MTUwMTMzMyAxNC40ODQ5
ODY3IDEuODEzNDM3MzMgMTQuNjg4MzQxMyAyLjE5MzY3NzMzIEMgMTQuODkxNzA1MyAyLjU3Mzky
NjY3IDE1IDIuOTUxMDk2IDE1IDMuOTkxMjAyNjcgTCAxNSAxMi4wMDg4MDExIEMgMTUgMTMuMDQ4
OTA1OSAxNC44OTE3MDUzIDEzLjQyNjA3MzMgMTQuNjg4MzQxMyAxMy44MDYzMTk5IEMgMTQuNDg0
OTg2NyAxNC4xODY1NjY5IDE0LjE4NjU2MjcgMTQuNDg0OTg2OSAxMy44MDYzMjI3IDE0LjY4ODM0
NTIgQyAxMy40MjYwNzMzIDE0Ljg5MTcwMzUgMTMuMDQ4OTA0IDE1IDEyLjAwODc5NzMgMTUgTCAz
Ljk5MTE5ODkzIDE1IEMgMi45NTEwOTQxMyAxNSAyLjU3MzkyNjY3IDE0Ljg5MTcwMzUgMi4xOTM2
ODAxMyAxNC42ODgzNDUyIEMgMS44MTM0MzMxMyAxNC40ODQ5ODY5IDEuNTE1MDEzMDUgMTQuMTg2
NTY2OSAxLjMxMTY1NDg0IDEzLjgwNjMxOTkgQyAxLjEwODI5NjUzIDEzLjQyNjA3MzMgMSAxMy4w
NDg5MDU5IDEgMTIuMDA4ODAxMSBMIDEgMy45OTEyMDI2NyBDIDEgMi45NTEwOTYgMS4xMDgyOTY1
MyAyLjU3MzkyNjY3IDEuMzExNjU0ODQgMi4xOTM2NzczMyBDIDEuNTE1MDEzMDUgMS44MTM0Mzcz
MyAxLjgxMzQzMzEzIDEuNTE1MDEzMzMgMi4xOTM2ODAxMyAxLjMxMTY1ODY3IEMgMi41NzM5MjY2
NyAxLjEwODI5NDY3IDIuOTUxMDk0MTMgMSAzLjk5MTE5ODkzIDEgWiBNIDMuNSA0IEwgMTIuNSA0
IEMgMTMuMzI4NDI3MSA0IDE0IDQuNjcxNTcyODggMTQgNS41IEwgMTQgMTIuNSBDIDE0IDEzLjMy
ODQyNzEgMTMuMzI4NDI3MSAxNCAxMi41IDE0IEwgMy41IDE0IEMgMi42NzE1NzI4OCAxNCAyIDEz
LjMyODQyNzEgMiAxMi41IEwgMiA1LjUgQyAyIDQuNjcxNTcyODggMi42NzE1NzI4OCA0IDMuNSA0
IFogTSA0LjEgNSBMIDExLjkgNSBDIDEyLjUwNzUxMzIgNSAxMyA1LjQ5MjQ4Njc4IDEzIDYuMSBM
IDEzIDExLjkgQyAxMyAxMi41MDc1MTMyIDEyLjUwNzUxMzIgMTMgMTEuOSAxMyBMIDQuMSAxMyBD
IDMuNDkyNDg2NzggMTMgMyAxMi41MDc1MTMyIDMgMTEuOSBMIDMgNi4xIEMgMyA1LjQ5MjQ4Njc4
IDMuNDkyNDg2NzggNSA0LjEgNSBaIE0gMyAyIEwgNCAyIEwgNCAzIEwgMyAzIEwgMyAyIFogTSA1
IDIgTCA2IDIgTCA2IDMgTCA1IDMgTCA1IDIgWiBNIDcgMiBMIDggMiBMIDggMyBMIDcgMyBMIDcg
MiBaIi8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcwppbmRleCAzMTQ2OGE3YjJhOTI2
MWYxMTE4YzYwZjVmM2IxNDI1MjFhYjgzZWVjLi42YjdhZjZmOWNlYmFjZTFhYmRkY2U1NWRkMjNl
MTdjMjYzMDE1ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCkBAIC00Nyw2ICs0NywxMSBA
QCBXSS5QYWdlT2JzZXJ2ZXIgPSBjbGFzcyBQYWdlT2JzZXJ2ZXIKICAgICAgICAgV0kubmV0d29y
a01hbmFnZXIuZnJhbWVEaWREZXRhY2goZnJhbWVJZCk7CiAgICAgfQogCisgICAgZGVmYXVsdEFw
cGVhcmFuY2VEaWRDaGFuZ2UoYXBwZWFyYW5jZSkKKyAgICB7CisgICAgICAgIFdJLmNzc01hbmFn
ZXIuZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UoYXBwZWFyYW5jZSk7CisgICAgfQorCiAgICAg
ZnJhbWVTdGFydGVkTG9hZGluZyhmcmFtZUlkKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRs
ZWQgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4IDJkZDkxOTQ2ZWFkNTli
OGQxNjA2ODBjOTJlOGNmYTA1ZTY4MDE5NTguLmUxNjljYjU1ZDRiZjc0MjM5NmY1OGYxNjY2YjU5
ZmRjMWI3NDk4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTc0LDYgKzc0
LDggQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fZG9tTm9kZUNo
YW5nZWQsIHRoaXMpOwogICAgICAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RE9NTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFu
Z2VkLCB0aGlzKTsKIAorICAgICAgICBXSS5jc3NNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
Q1NTTWFuYWdlci5FdmVudC5EZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSwgdGhpcy5fZGVmYXVs
dEFwcGVhcmFuY2VEaWRDaGFuZ2UsIHRoaXMpOworCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3Rl
ZE5vZGVQYXRoU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5vZGUtcGF0
aCIsIG51bGwpOwogCiAgICAgICAgIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyA9IG51bGw7
CkBAIC04MSw2ICs4Myw5IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX2JyZWFrcG9p
bnRHdXR0ZXJFbmFibGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdCcmVha3BvaW50
Tm9kZUlkZW50aWZpZXJzID0gbmV3IFNldDsKIAorICAgICAgICBpZiAoV0kuY3NzTWFuYWdlci5j
YW5Gb3JjZUFwcGVhcmFuY2UoKSkKKyAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNl
RGlkQ2hhbmdlKCk7CisKICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0
ZWQpIHsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMu
X2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcyk7CiAKQEAgLTEwMCw2ICsxMDUsOSBA
QCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogICAgIHsKICAgICAgICAgbGV0IGl0ZW1zID0gW3RoaXMuX3Nob3dQ
cmludFN0eWxlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93c1NoYWRvd0RPTUJ1dHRv
bk5hdmlnYXRpb25JdGVtXTsKIAorICAgICAgICBpZiAodGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0pCisgICAgICAgICAgICBpdGVtcy51bnNoaWZ0KHRoaXMuX2ZvcmNl
QXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtKTsKKwogICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTEuMykKICAgICAgICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQgJiYgUGFnZUFnZW50
LnNldFNob3dSdWxlcnMpCiAgICAgICAgICAgICBpdGVtcy51bnNoaWZ0KHRoaXMuX3Nob3dSdWxl
cnNCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CkBAIC01ODIsNiArNTkwLDcxIEBAIFdJLkRPTVRyZWVD
b250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIHRoaXMuX3Nob3dQcmludFN0eWxlc0NoYW5nZWQoKTsKICAgICB9CiAKKyAg
ICBfZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgbGV0IGRlZmF1
bHRBcHBlYXJhbmNlID0gV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZTsKKyAgICAgICAg
aWYgKCFkZWZhdWx0QXBwZWFyYW5jZSkgeworICAgICAgICAgICAgdGhpcy5fbGFzdEtub3duRGVm
YXVsdEFwcGVhcmFuY2UgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJhbmNl
QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBudWxsOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hh
bmdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvbid0
IHVwZGF0ZSB0aGUgbmF2aWdhdGlvbiBpdGVtIGlmIHRoZXJlIGlzIGN1cnJlbnRseSBhIGZvcmNl
ZCBhcHBlYXJhbmNlLgorICAgICAgICAvLyBUaGUgdXNlciB3aWxsIG5lZWQgdG8gdG9nZ2xlIGl0
IG9mZiB0byB1cGRhdGUgaXQgYmFzZWQgb24gdGhlIG5ldyBkZWZhdWx0IGFwcGVhcmFuY2UuCisg
ICAgICAgIGlmIChXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2UgJiYgdGhpcy5fZm9yY2VB
cHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBudWxsOwor
CisgICAgICAgIHN3aXRjaCAoZGVmYXVsdEFwcGVhcmFuY2UpIHsKKyAgICAgICAgY2FzZSBXSS5D
U1NNYW5hZ2VyLkFwcGVhcmFuY2UuTGlnaHQ6CisgICAgICAgICAgICB0aGlzLl9mb3JjZUFwcGVh
cmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJhcHBlYXJhbmNlIiwgV0kuVUlTdHJpbmcoIkZvcmNlIERhcmsgQXBwZWFyYW5jZSIp
LCBXSS5VSVN0cmluZygiVXNlIERlZmF1bHQgQXBwZWFyYW5jZSIpLCAiSW1hZ2VzL0FwcGVhcmFu
Y2Uuc3ZnIiwgMTYsIDE2KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdJLkNT
U01hbmFnZXIuQXBwZWFyYW5jZS5EYXJrOgorICAgICAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJh
bmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSgiYXBwZWFyYW5jZSIsIFdJLlVJU3RyaW5nKCJGb3JjZSBMaWdodCBBcHBlYXJhbmNlIiks
IFdJLlVJU3RyaW5nKCJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIiksICJJbWFnZXMvQXBwZWFyYW5j
ZS5zdmciLCAxNiwgMTYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJVa25vd24gZGVmYXVsdCBhcHBlYXJhbmNlIG5hbWU6Iiwg
ZGVmYXVsdEFwcGVhcmFuY2UpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RLbm93bkRl
ZmF1bHRBcHBlYXJhbmNlID0gZGVmYXVsdEFwcGVhcmFuY2U7CisKKyAgICAgICAgdGhpcy5fZm9y
Y2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVBcHBlYXJhbmNlLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
dmlzaWJpbGl0eVByaW9yaXR5ID0gV0kuTmF2aWdhdGlvbkl0ZW0uVmlzaWJpbGl0eVByaW9yaXR5
LkxvdzsKKyAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWN0aXZhdGVkID0gISFXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2U7CisKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdh
dGlvbkl0ZW1zRGlkQ2hhbmdlKTsKKyAgICB9CisKKyAgICBfdG9nZ2xlQXBwZWFyYW5jZShldmVu
dCkKKyAgICB7CisgICAgICAgIC8vIFVzZSB0aGUgbGFzdCBrbm93biBkZWZhdWx0IGFwcGVhcmFu
Y2UsIHNpbmNlIHRoYXQgaXMgdGhlIGFwcGVhcmFuY2UgdGhpcyBuYXZpZ2F0aW9uIGl0ZW0gd2Fz
IGdlbmVyYXRlZCBmb3IuCisgICAgICAgIGxldCBhcHBlYXJhbmNlVG9Gb3JjZSA9IG51bGw7Cisg
ICAgICAgIHN3aXRjaCAodGhpcy5fbGFzdEtub3duRGVmYXVsdEFwcGVhcmFuY2UpIHsKKyAgICAg
ICAgY2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuTGlnaHQ6CisgICAgICAgICAgICBhcHBl
YXJhbmNlVG9Gb3JjZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5EYXJrOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcms6Cisg
ICAgICAgICAgICBhcHBlYXJhbmNlVG9Gb3JjZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5M
aWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoYXBwZWFyYW5jZVRvRm9yY2UpOworICAgICAgICBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFw
cGVhcmFuY2UgPSBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2UgPT0gYXBwZWFyYW5jZVRv
Rm9yY2UgPyBudWxsIDogYXBwZWFyYW5jZVRvRm9yY2U7CisKKyAgICAgICAgLy8gV2hlbiBubyBs
b25nZXIgZm9yY2luZyBhbiBhcHBlYXJhbmNlLCBpZiB0aGUgbGFzdCBrbm93biBkZWZhdWx0IGFw
cGVhcmFuY2UgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgLy8gZGVmYXVs
dCBhcHBlYXJhbmNlLCB0aGVuIHVwZGF0ZSB0aGUgbmF2aWdhdGlvbiBidXR0b24gbm93LiBPdGhl
cndpc2UganVzdCB0b2dnbGUgdGhlIGFjdGl2YXRlZCBzdGF0ZS4KKyAgICAgICAgaWYgKCFXSS5j
c3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2UgJiYgdGhpcy5fbGFzdEtub3duRGVmYXVsdEFwcGVh
cmFuY2UgIT09IFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2UpCisgICAgICAgICAgICB0
aGlzLl9kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQg
PSAhIVdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZTsKKyAgICB9CisKICAgICBfc2hvd1J1
bGVyc0NoYW5nZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmln
YXRpb25JdGVtLmFjdGl2YXRlZCA9IFdJLnNldHRpbmdzLnNob3dSdWxlcnMudmFsdWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMGVjOWI0NzBkOWRhZGFlZTdlMmRmYjQ5MmJiOTUwN2JkNDQ3NWNmMy4uOTVhMTZmZTE2MGJk
NTVlZDNkNTQ3NDlmZWZkMmU3N2JkYTYzZGY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTExLTE5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBZGQgc3VwcG9ydCBmb3IgZm9yY2luZyBjb2xvciBzY2hlbWUgYXBwZWFy
YW5jZSBpbiBET00gdHJlZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTgyMAorICAgICAgICByZGFyOi8vcHJvYmxlbS80NjE1MzE3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczogU2tpcCBkYXJrIG1vZGUgdGVzdHMgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAgICAq
IGluc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJhbmNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IEV4cGVjdCBkYXJr
IG1vZGUgdGVzdHMgdG8gcGFzcyBvbiBNb2phdmUgYW5kIGxhdGVyLgorCiAyMDE4LTExLTE1ICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhOXSBV
c2VySGFuZGxlIGNhbiBiZSBudWxsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxMmQ5MThhYWU5YmVi
ZTA3MTY5M2MwOWNjMDNjNzc2ZTMzODY3ZDE4Li45NzllOGM5NjNmYWE5ZGFlMzFjZDk0N2RmNzU5
NjgyZDBiOWUxYzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcyLDcgKzcyLDkgQEAgZmFzdC9p
bWFnZXMvZXBzLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0KIGZhc3QveG1saHR0cHJlcXVlc3Qvc2V0
LWRhbmdlcm91cy1oZWFkZXJzLWluLWRhc2hib2FyZC5odG1sIFsgV29udEZpeCBdCiAKICMgT25s
eSBhcHBsaWNhYmxlIG9uIG1hY09TCitjc3MtZGFyay1tb2RlIFsgU2tpcCBdCiBmYXN0L2Nzcy9h
cHBsZS1zeXN0ZW0tY29udHJvbC1jb2xvcnMuaHRtbCBbIFNraXAgXQoraW5zcGVjdG9yL2Nzcy9m
b3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFNraXAgXQogCiAjIE9ubHkgTWFjIHN1cHBvcnRz
IGZvcmNlIHRlc3RzLgogZmFzdC9ldmVudHMvY2FuY2VsbGVkLWZvcmNlLWNsaWNrLWxpbmstbmF2
aWdhdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWU3NDI5NWFhMjNkODFiYjU0ZDdhYzBjMGM2NjMwM2EzYmU4NDYzYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJhbmNlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitUZXN0aW5nIHRoZSBkZWZhdWx0IGFwcGVhcmFuY2Ug
YW5kIGZvcmNlZCBhcHBlYXJhbmNlIGZlYXR1cmVzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogRm9yY2VQYWdlQXBwZWFyYW5jZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERlZmF1bHQgYXBw
ZWFyYW5jZSBzaG91bGQgYmUgbGlnaHQKK1BBU1M6IFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVh
cmFuY2Ugc2hvdWxkIGJlIExpZ2h0LgorUEFTUzogV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJh
bmNlIHNob3VsZCBiZSBudWxsLgorUEFTUzogZXhwZWN0RXF1YWwoIjE1MHB4IiwgIjE1MHB4IikK
K1BBU1M6IGV4cGVjdEVxdWFsKCJyZ2IoMCwgMCwgMCkiLCAicmdiKDAsIDAsIDApIikKKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IEZvcmNlIGFwcGVhcmFuY2UgdG8gRGFyaworUEFTUzogV0kuY3Nz
TWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQgYmUgTGlnaHQuCitQQVNTOiBXSS5jc3NN
YW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERhcmsuCitQQVNTOiBET01Ob2RlU3R5
bGVzIHNob3VsZCBuZWVkIHJlZnJlc2guCitQQVNTOiBleHBlY3RFcXVhbCgiMjAwcHgiLCAiMjAw
cHgiKQorUEFTUzogZXhwZWN0RXF1YWwoInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAy
NTUsIDI1NSkiKQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogU3dpdGNoIHRvIERhcmsgYXBwZWFy
YW5jZSBieSBkZWZhdWx0CitQQVNTOiBXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlIHNo
b3VsZCBiZSBEYXJrLgorUEFTUzogV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlIHNob3Vs
ZCBiZSBEYXJrLgorUEFTUzogRE9NTm9kZVN0eWxlcyBzaG91bGQgbmVlZCByZWZyZXNoLgorUEFT
UzogZXhwZWN0RXF1YWwoIjIwMHB4IiwgIjIwMHB4IikKK1BBU1M6IGV4cGVjdEVxdWFsKCJyZ2Io
MjU1LCAyNTUsIDI1NSkiLCAicmdiKDI1NSwgMjU1LCAyNTUpIikKKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IEZvcmNlIGFwcGVhcmFuY2UgdG8gTGlnaHQKK1BBU1M6IFdJLmNzc01hbmFnZXIuZGVm
YXVsdEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERhcmsuCitQQVNTOiBXSS5jc3NNYW5hZ2VyLmZvcmNl
ZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIExpZ2h0LgorUEFTUzogRE9NTm9kZVN0eWxlcyBzaG91bGQg
bmVlZCByZWZyZXNoLgorUEFTUzogZXhwZWN0RXF1YWwoIjE1MHB4IiwgIjE1MHB4IikKK1BBU1M6
IGV4cGVjdEVxdWFsKCJyZ2IoMCwgMCwgMCkiLCAicmdiKDAsIDAsIDApIikKKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERpc2FibGUgZm9yY2VkIGFwcGVhcmFuY2UKK1BBU1M6IFdJLmNzc01hbmFn
ZXIuZGVmYXVsdEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERhcmsuCitQQVNTOiBXSS5jc3NNYW5hZ2Vy
LmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIG51bGwuCitQQVNTOiBET01Ob2RlU3R5bGVzIHNo
b3VsZCBuZWVkIHJlZnJlc2guCitQQVNTOiBleHBlY3RFcXVhbCgiMjAwcHgiLCAiMjAwcHgiKQor
UEFTUzogZXhwZWN0RXF1YWwoInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2IoMjU1LCAyNTUsIDI1
NSkiKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2Ut
YXBwZWFyYW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFw
cGVhcmFuY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzhiNGMwZDVhOTkwMzQ1OTMwMTdkYzk4MzBhNGJk
YmIwZmNlMTlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9m
b3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbApAQCAtMCwwICsxLDE2NiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gc3dpdGNoVG9EYXJrQXBwZWFyYW5jZSgpIHsKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGxldCBub2RlU3R5bGVzID0gbnVsbDsKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkZvcmNlUGFnZUFw
cGVhcmFuY2UiKTsKKworICAgIGxldCBnZXRQcm9wZXJ0eSA9IChwcm9wZXJ0eU5hbWUpID0+IHsK
KyAgICAgICAgbGV0IHN0eWxlRGVjbGFyYXRpb24gPSBub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGU7
CisgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIHN0eWxlRGVjbGFyYXRpb24ucHJvcGVydGll
cykgeworICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09IHByb3BlcnR5TmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHk7CisgICAgICAgIH0KKyAgICB9OworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRGVmYXVsdCBhcHBlYXJhbmNlIHNo
b3VsZCBiZSBsaWdodCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVh
cmFuY2UsIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodCwgYFdJLmNzc01hbmFnZXIuZGVm
YXVsdEFwcGVhcmFuY2Ugc2hvdWxkIGJlIExpZ2h0LmApOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3ROdWxsKFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSwgYFdJLmNzc01h
bmFnZXIuZm9yY2VkQXBwZWFyYW5jZSBzaG91bGQgYmUgbnVsbC5gKTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChnZXRQcm9wZXJ0eSgid2lkdGgiKS5yYXdWYWx1ZSwg
IjE1MHB4Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGdldFByb3Bl
cnR5KCJjb2xvciIpLnJhd1ZhbHVlLCAicmdiKDAsIDAsIDApIik7CisKKyAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiRm9yY2UgYXBwZWFyYW5jZSB0byBEYXJrIiwKKyAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIC8vIFN0eWxlcyBzaG91bGQgcmVmZXJlc2gg
d2hlbiBkYXJrIGFwZXBhcmFuY2UgaXMgZm9yY2VkLgorICAgICAgICAgICAgV0kuY3NzTWFuYWdl
ci5hd2FpdEV2ZW50KFdJLkNTU01hbmFnZXIuRXZlbnQuRm9yY2VkQXBwZWFyYW5jZURpZENoYW5n
ZSkudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoLCB0cnVlLCBgRE9NTm9kZVN0eWxlcyBzaG91
bGQgbmVlZCByZWZyZXNoLmApOworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgp
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5hd2Fp
dEV2ZW50KFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uRXZlbnQuUHJvcGVydGllc0NoYW5nZWQpLnRo
ZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoZ2V0UHJvcGVydHkoIndpZHRoIikucmF3VmFsdWUsICIyMDBweCIpOworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGdldFByb3BlcnR5KCJjb2xvciIp
LnJhd1ZhbHVlLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KS50aGVuKHJlc29sdmUsIHJlamVjdCk7CisKKyAgICAgICAgICAgIFdJLmNz
c01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5EYXJr
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJLmNzc01hbmFnZXIu
ZGVmYXVsdEFwcGVhcmFuY2UsIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodCwgYFdJLmNz
c01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2Ugc2hvdWxkIGJlIExpZ2h0LmApOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFu
Y2UsIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5EYXJrLCBgV0kuY3NzTWFuYWdlci5mb3JjZWRB
cHBlYXJhbmNlIHNob3VsZCBiZSBEYXJrLmApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJTd2l0Y2ggdG8gRGFyayBhcHBlYXJh
bmNlIGJ5IGRlZmF1bHQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgc3dpdGNoVG9EYXJrQXBwZWFyYW5j
ZSgpYCk7CisKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NNYW5h
Z2VyLkV2ZW50LkRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKS50aGVuKChldmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kuY3NzTWFuYWdlci5k
ZWZhdWx0QXBwZWFyYW5jZSwgV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcmssIGBXSS5jc3NN
YW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlIHNob3VsZCBiZSBEYXJrLmApOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJh
bmNlLCBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyaywgYFdJLmNzc01hbmFnZXIuZm9yY2Vk
QXBwZWFyYW5jZSBzaG91bGQgYmUgRGFyay5gKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoLCB0cnVlLCBgRE9NTm9kZVN0
eWxlcyBzaG91bGQgbmVlZCByZWZyZXNoLmApOworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMu
cmVmcmVzaCgpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHlsZXMuY29tcHV0ZWRT
dHlsZS5hd2FpdEV2ZW50KFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uRXZlbnQuUHJvcGVydGllc0No
YW5nZWQpLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHkoIndpZHRoIikucmF3VmFsdWUsICIyMDBweCIpOwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGdldFByb3BlcnR5
KCJjb2xvciIpLnJhd1ZhbHVlLCAicmdiKDI1NSwgMjU1LCAyNTUpIik7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICB9KS50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkZvcmNl
IGFwcGVhcmFuY2UgdG8gTGlnaHQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgLy8gU3R5bGVzIHNob3VsZCByZWZlcmVzaCB3aGVuIGxpZ2h0IGFwZXBhcmFu
Y2UgaXMgZm9yY2VkLgorICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNT
U01hbmFnZXIuRXZlbnQuRm9yY2VkQXBwZWFyYW5jZURpZENoYW5nZSkudGhlbigoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG5vZGVTdHlsZXMu
bmVlZHNSZWZyZXNoLCB0cnVlLCBgRE9NTm9kZVN0eWxlcyBzaG91bGQgbmVlZCByZWZyZXNoLmAp
OworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5hd2FpdEV2ZW50KFdJLkNTU1N0eWxl
RGVjbGFyYXRpb24uRXZlbnQuUHJvcGVydGllc0NoYW5nZWQpLnRoZW4oKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHko
IndpZHRoIikucmF3VmFsdWUsICIxNTBweCIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGdldFByb3BlcnR5KCJjb2xvciIpLnJhd1ZhbHVlLCAicmdiKDAs
IDAsIDApIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KS50aGVuKHJlc29s
dmUsIHJlamVjdCk7CisKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5j
ZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodDsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlLCBXSS5D
U1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyaywgYFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFu
Y2Ugc2hvdWxkIGJlIERhcmsuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSwgV0kuQ1NTTWFuYWdlci5BcHBlYXJh
bmNlLkxpZ2h0LCBgV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlIHNob3VsZCBiZSBMaWdo
dC5gKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiRGlzYWJsZSBmb3JjZWQgYXBwZWFyYW5jZSIsCisgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAvLyBTdHlsZXMgc2hvdWxkIHJlZmVyZXNoIHdo
ZW4gZm9yY2VkIGFwZXBhcmFuY2UgaXMgZGlzYWJsZWQuCisgICAgICAgICAgICBXSS5jc3NNYW5h
Z2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5Gb3JjZWRBcHBlYXJhbmNlRGlkQ2hh
bmdlKS50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwobm9kZVN0eWxlcy5uZWVkc1JlZnJlc2gsIHRydWUsIGBET01Ob2RlU3R5bGVzIHNo
b3VsZCBuZWVkIHJlZnJlc2guYCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNo
KCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLmF3
YWl0RXZlbnQoV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5FdmVudC5Qcm9wZXJ0aWVzQ2hhbmdlZCku
dGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChnZXRQcm9wZXJ0eSgid2lkdGgiKS5yYXdWYWx1ZSwgIjIwMHB4Iik7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHkoImNvbG9y
IikucmF3VmFsdWUsICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKworICAgICAgICAgICAgV0ku
Y3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlID0gbnVsbDsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlLCBXSS5D
U1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyaywgYFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFu
Y2Ugc2hvdWxkIGJlIERhcmsuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51
bGwoV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlLCBgV0kuY3NzTWFuYWdlci5mb3JjZWRB
cHBlYXJhbmNlIHNob3VsZCBiZSBudWxsLmApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBX
SS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAg
IFdJLmRvbU1hbmFnZXIucXVlcnlTZWxlY3Rvcihkb2N1bWVudE5vZGUuaWQsICIjeCIsIChjb250
ZW50Tm9kZUlkKSA9PiB7CisgICAgICAgICAgICBpZiAoY29udGVudE5vZGVJZCkgeworICAgICAg
ICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tTWFuYWdlci5ub2RlRm9ySWQoY29udGVudE5v
ZGVJZCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFdJLmNzc01hbmFnZXIuc3R5bGVz
Rm9yTm9kZShkb21Ob2RlKTsKKworICAgICAgICAgICAgICAgIGlmIChub2RlU3R5bGVzLm5lZWRz
UmVmcmVzaCkgeworICAgICAgICAgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpCisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJET00gbm9kZSBub3Qg
Zm91bmQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIHRoZSBkZWZhdWx0
IGFwcGVhcmFuY2UgYW5kIGZvcmNlZCBhcHBlYXJhbmNlIGZlYXR1cmVzLjwvcD4KKworICAgIDxz
dHlsZT4KKyAgICA6cm9vdCB7CisgICAgICAgIHN1cHBvcnRlZC1jb2xvci1zY2hlbWVzOiBsaWdo
dCBkYXJrOworICAgIH0KKworICAgIC50ZXN0LW5vZGUgeworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgfQorCisgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIHsKKyAg
ICAgICAgLnRlc3Qtbm9kZSB7CisgICAgICAgICAgICB3aWR0aDogMTUwcHg7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAg
ICAgIC50ZXN0LW5vZGUgeworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICB9Cisg
ICAgfQorICAgIDwvc3R5bGU+CisKKyAgICA8ZGl2IGlkPSJ4IiBjbGFzcz0idGVzdC1ub2RlIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggM2MxYWY5NmJjMjZlMTMwOTg4MTAxMzI0ODA4MjNkOGVmYzMzMzhkMS4u
OGZlZTEwZWQ3MzViZjVkYTQzYTA3ZGI5OGNkNzBiOWNkYzUzYTc5NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NTksNyArMTc1OSw4IEBAIHdlYmtp
dC5vcmcvYi8xODczOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNvbnRleHQv
aW1hZ2ViaXRtYXAvY3JlYXRlCiBbIE1vamF2ZSsgXSBmYXN0L2dyYWRpZW50cy9jb25pYy10d28t
aGludHMuaHRtbCBbIFBhc3MgXQogCiAjIERhcmsgTW9kZSBpcyBNb2phdmUgYW5kIGxhdGVyLgot
WyBTaWVycmEgSGlnaFNpZXJyYSBdIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KK1sgTW9qYXZlKyBd
IGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KK1sgTW9qYXZlKyBdIGluc3BlY3Rvci9jc3MvZm9yY2Ut
cGFnZS1hcHBlYXJhbmNlLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE4NTY1MSBsZWdh
Y3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3BsYXktc3RhdGUtaW4tc2hvcnRoYW5kLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355305</attachid>
            <date>2018-11-19 19:32:09 -0800</date>
            <delta_ts>2018-11-27 13:16:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191820-20181119193208.patch</filename>
            <type>text/plain</type>
            <size>39786</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjU4OGIwMDU2ODg2OTcwZDU5NDk2MTZiOWRiMTg2Nzk5NzgyMjY3Li44NDc5NmRiZjczY2JjZGQw
YWJjN2RlZjMyMTc1NjE3YzliZWNkNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0xNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHN1cHBvcnQgZm9yIGZvcmNpbmcgY29s
b3Igc2NoZW1lIGFwcGVhcmFuY2UgaW4gRE9NIHRyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE4MjAKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
NDYxNTMxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb246IEFkZGVkIHNldEZvcmNlZEFwcGVhcmFu
Y2UuCisgICAgICAgIEFsc28gYWRkZWQgdGhlIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlIGV2
ZW50IGFuZCBBcHBlYXJhbmNlIGVudW0uCisKIDIwMTgtMTEtMTUgIEtlaXRoIFJvbGxpbiAgPGty
b2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERlbGV0ZSBvbGQgLnhjZmlsZWxpc3QgZmlsZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZjY2NzM3NjZkMzAyNzZjMzVlNTRjNzNjMzA3MGQxYzk0MjZmZTVhLi4x
NjUyZTE2YzY1MTJjOTg2NjlkMjU1ZjgyMWUxOGYwMGRiNzkxZGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTgtMTEtMTcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0IGZvciBmb3JjaW5nIGNv
bG9yIHNjaGVtZSBhcHBlYXJhbmNlIGluIERPTSB0cmVlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIwCisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzQ2MTUzMTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbAorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hh
bmdlSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkZWZhdWx0QXBw
ZWFyYW5jZURpZENoYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjplbmFi
bGUpOiBGaXJlIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKCkgb24gbWFjT1MgTWFqYXZlLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKTogQ2FsbCBzZXRG
b3JjZWRBcHBlYXJhbmNlKCkgd2l0aCBlbXB0eSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2Up
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRV
c2VEYXJrQXBwZWFyYW5jZSk6IENhbGwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkZWZhdWx0
QXBwZWFyYW5jZURpZENoYW5nZSgpLgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNlRGFya0Fw
cGVhcmFuY2UgY29uc3QpOiBSZXR1cm4gb3ZlcnJpZGUgdmFsdWUgaWYgbm90IG51bGxvcHQuCisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKTogQWRk
ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkZWZh
dWx0VXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOiBBZGRlZC4KKwogMjAxOC0xMS0xNSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRHJhZ0ltYWdlIHNo
b3VsZCBoYXZlIGEgY29tcGxldGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggZjg0MjhiZjljY2QxOGI1NjQ1ZjZlMDZiYzg3MmVjYjIzZTFjYjI2Zi4u
ZGQxMmE2NDJlZjdlNGZmNGYzM2JhM2JiMzRmNTE4MmIxOTRlMWRhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMTEtMTcgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBwb3J0
IGZvciBmb3JjaW5nIGNvbG9yIHNjaGVtZSBhcHBlYXJhbmNlIGluIERPTSB0cmVlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIwCisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzQ2MTUzMTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanM6IFVwZGF0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NN
YW5hZ2VyLmpzOgorICAgICAgICAoV0kuQ1NTTWFuYWdlcik6CisgICAgICAgIChXSS5DU1NNYW5h
Z2VyLnByb3RvdHlwZS5nZXQgZGVmYXVsdEFwcGVhcmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkNTU01hbmFnZXIucHJvdG90eXBlLmdldCBmb3JjZWRBcHBlYXJhbmNlKTogQWRkZWQuCisgICAg
ICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5zZXQgZm9yY2VkQXBwZWFyYW5jZSk6IEFkZGVk
LgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuY2FuRm9yY2VBcHBlYXJhbmNlKTog
QWRkZWQuCisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5kZWZhdWx0QXBwZWFyYW5j
ZURpZENoYW5nZSk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVh
cmFuY2Uuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VP
YnNlcnZlci5qczoKKyAgICAgICAgKFdJLlBhZ2VPYnNlcnZlci5wcm90b3R5cGUuZGVmYXVsdEFw
cGVhcmFuY2VDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcpOgor
ICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0
ZW1zKToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlZmF1bHRB
cHBlYXJhbmNlRGlkQ2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlLl90b2dnbGVBcHBlYXJhbmNlKTogQWRkZWQuCisKIDIwMTgtMTEtMTQgIE1h
dHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFRhYmxlIHNob3VsZCByZWNhbGN1bGF0ZSBzY3JvbGxhYmxlIGhlaWdodCB3aGVuIHJlc2l6ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUGFn
ZS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpz
b24KaW5kZXggMmFhNDg4ZWY2NWM4NmNiYWY3OTBlMzc5ODNhYjk1ZDM5MDk4NzI3Yi4uYjk0YTVm
OWZmZTNjYWYzNDQwYTQ5YjExZTYwMWZjM2Q5YjhmOGVhYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9QYWdlLmpzb24KQEAgLTIxLDYgKzIxLDEy
IEBACiAgICAgICAgICAgICAiZW51bSI6IFsiTm9uZSIsICJMYXgiLCAiU3RyaWN0Il0sCiAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2FtZS1TaXRlIHBvbGljeSBvZiBhIGNvb2tpZS4iCiAg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJBcHBlYXJhbmNlIiwKKyAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAiZW51bSI6IFsiTGlnaHQi
LCAiRGFyayJdLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhZ2UgYXBwZWFyYW5jZSBu
YW1lLiIKKyAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgImlkIjogIkZyYW1lIiwK
ICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCkBAIC0xOTMsNiArMTk5LDEzIEBACiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJtZWRpYSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlw
dGlvbiI6ICJNZWRpYSB0eXBlIHRvIGVtdWxhdGUuIEVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGUg
b3ZlcnJpZGUuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogInNldEZvcmNlZEFwcGVhcmFuY2UiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkZvcmNlcyB0aGUgZ2l2ZW4gYXBwZWFyYW5jZSBmb3IgdGhlIHBhZ2UuIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXBw
ZWFyYW5jZSIsICIkcmVmIjogIkFwcGVhcmFuY2UiLCAiZGVzY3JpcHRpb24iOiAiQXBwZWFyYW5j
ZSBuYW1lIHRvIGZvcmNlLiBFbXB0eSBzdHJpbmcgZGlzYWJsZXMgdGhlIG92ZXJyaWRlLiIgfQor
ICAgICAgICAgICAgXQorICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6
ICJnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlIiwKICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJJbmRpY2F0ZXMgdGhlIHZpc2liaWxpdHkgb2YgY29tcG9zaXRpbmcgYm9yZGVycy4iLApA
QCAtMjk0LDYgKzMwNywxMyBAQAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlkIiwg
ImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBmcmFtZSB0aGF0IGhhcyBjbGVhcmVkIGl0cyBzY2hl
ZHVsZWQgbmF2aWdhdGlvbi4iIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UiLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVkIHdoZW4gcGFnZSdzIGRlZmF1bHQgYXBwZWFy
YW5jZSBjaGFuZ2VzLCBldmVuIGlmIHRoZXJlIGlzIGEgZm9yY2VkIGFwcGVhcmFuY2UuIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYXBw
ZWFyYW5jZSIsICIkcmVmIjogIkFwcGVhcmFuY2UiLCAiZGVzY3JpcHRpb24iOiAiTmFtZSBvZiB0
aGUgYXBwZWFyYW5jZSB0aGF0IGlzIGFjdGl2ZSAobm90IGNvbnNpZGVyaW5nIGFueSBmb3JjZWQg
YXBwZWFyYW5jZS4pIiB9CisgICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IDFlYjcyY2YyZDQ1Zjg4ZTU1M2IyYWZmYmNlMGUxY2FhN2JjZjIxNjcuLjU5YThi
MDg3NzVjOTUwODRkMWJmYWYzMjg3ZmJhZmQ3OTRmMzBjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC03ODIs
NiArNzgyLDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZUNsZWFyZWRT
Y2hlZHVsZWROYXZpZ2F0aW9uSW1wbChJbnN0cnVtZW50aW5nCiAgICAgICAgIGluc3BlY3RvclBh
Z2VBZ2VudC0+ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihmcmFtZSk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgYm9vbCB1c2VEYXJr
QXBwZWFyYW5jZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBpbnNwZWN0b3JQYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQorICAgICAg
ICBpbnNwZWN0b3JQYWdlQWdlbnQtPmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtB
cHBlYXJhbmNlKTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0
cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsK
ICAgICBpZiAoIXNfaW5zdHJ1bWVudGluZ0FnZW50c1NldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkOTFkMGMyMTMx
NmU3ZjZjNmI1ODIyZTcwNTJmNmE0NTI4MmZlZDQ2Li41ZDJmYjNkNTYyYjYwYWJmNDUwZDBmYTJh
NGYwM2FhMGVmOTRkNTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yMTMsNiArMjEzLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmcoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9p
ZCBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmLCBTZWNvbmRzIGRlbGF5KTsKICAgICBz
dGF0aWMgdm9pZCBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJik7CisgICAg
c3RhdGljIHZvaWQgZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UoUGFnZSYsIGJvb2wgdXNlRGFy
a0FwcGVhcmFuY2UpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
UGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC0z
ODYsNiArMzg3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBmcmFtZVN0b3BwZWRMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBm
cmFtZVNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYs
IFNlY29uZHMgZGVsYXkpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5h
dmlnYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOworICAgIHN0YXRpYyB2
b2lkIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSk7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNo
ZWRSZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtMTEzNSw2ICsxMTM3LDEyIEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2
aWdhdGlvbihGcmFtZSYgZnJhCiAgICAgICAgIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRp
b25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiB9CiAKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVhcmFuY2VEaWRDaGFuZ2UoUGFnZSYg
cGFnZSwgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKKyAgICBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZUltcGwoaW5z
dHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSksIHVzZURhcmtBcHBlYXJhbmNlKTsKK30KKwog
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBkMGUwMjEzN2IxYzhl
Mjk1MDkyOTEwZTUyNjA2NmQ3ODNhNmQ5MzUzLi5lZTQ0ZWFjYWJkZTVhYTEwNzMyNDU1OTQ4MjVj
YTc2ZGQyMzExN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMDAsNiArMzAwLDEwIEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcmKQogICAgIGF1dG8gc3RvcHdhdGNo
ID0gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKTsKICAgICBzdG9wd2F0Y2gtPnJl
c2V0KCk7CiAgICAgc3RvcHdhdGNoLT5zdGFydCgpOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMAorICAgIGRlZmF1bHRBcHBl
YXJhbmNlRGlkQ2hhbmdlKG1fcGFnZS5kZWZhdWx0VXNlRGFya0FwcGVhcmFuY2UoKSk7CisjZW5k
aWYKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQpA
QCAtMzEwLDYgKzMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nJikKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7CiAgICAgc2V0U2hvd1BhaW50UmVjdHMo
dW51c2VkLCBmYWxzZSk7CiAgICAgc2V0RW11bGF0ZWRNZWRpYSh1bnVzZWQsIGVtcHR5U3RyaW5n
KCkpOworICAgIHNldEZvcmNlZEFwcGVhcmFuY2UodW51c2VkLCBlbXB0eVN0cmluZygpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlbG9hZChFcnJvclN0cmluZyYsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsUmVsb2FkRnJvbU9yaWdpbiwgY29uc3QgYm9vbCogb3B0aW9uYWxSZXZhbGlk
YXRlQWxsUmVzb3VyY2VzKQpAQCAtNjg1LDYgKzY5MCwxMSBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYgZnJhbWUpCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oZnJh
bWVJZCgmZnJhbWUpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlZmF1bHRBcHBl
YXJhbmNlRGlkQ2hhbmdlKGJvb2wgdXNlRGFya0FwcGVhcmFuY2UpCit7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNl
ID8gSW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6QXBwZWFyYW5jZTo6RGFyayA6IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2U6OkxpZ2h0KTsKK30KKwogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRpZFBhaW50KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91
dFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fc2hvd1BhaW50UmVjdHMp
CkBAIC04MDgsNiArODE4LDIxIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRl
ZE1lZGlhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKICAgICAgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dCgpOwogfQogCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Rm9y
Y2VkQXBwZWFyYW5jZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYXBwZWFyYW5jZSkKK3sK
KyAgICBpZiAoYXBwZWFyYW5jZSA9PSBtX2ZvcmNlZEFwcGVhcmFuY2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZm9yY2VkQXBwZWFyYW5jZSA9IGFwcGVhcmFuY2U7CisKKyAgICBpZiAoYXBw
ZWFyYW5jZSA9PSAiTGlnaHQiX3MpCisgICAgICAgIG1fcGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5j
ZU92ZXJyaWRlKGZhbHNlKTsKKyAgICBlbHNlIGlmIChhcHBlYXJhbmNlID09ICJEYXJrIl9zKQor
ICAgICAgICBtX3BhZ2Uuc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZSh0cnVlKTsKKyAgICBl
bHNlCisgICAgICAgIG1fcGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6bnVs
bG9wdCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEo
U3RyaW5nJiBtZWRpYSkKIHsKICAgICBpZiAoIW1fZW11bGF0ZWRNZWRpYS5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuaAppbmRleCA2NzA5ZjUyYmUwMzQzMmIyYzU1ZWI5NDcxYmM0YzBkYjI1ZDA4NmM3Li5iNDA3
NjM1YzQ3OTZiOTNiNmY3Zjc4NWNhMDA4OTkyYzUwMmIwMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwMCw2
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG93UnVsZXJzKEVycm9yU3RyaW5nJiwg
Ym9vbCkgZmluYWw7CiAgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyYsIGJv
b2wgc2hvdykgZmluYWw7CiAgICAgdm9pZCBzZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZXRGb3JjZWRBcHBlYXJhbmNlKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBnZXRDb21wb3NpdGluZ0Jv
cmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nJiwgYm9vbCogb3V0X3BhcmFtKSBmaW5hbDsKICAgICB2
b2lkIHNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKSBmaW5h
bDsKICAgICB2b2lkIHNuYXBzaG90Tm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFN0cmlu
Zyogb3V0RGF0YVVSTCkgZmluYWw7CkBAIC0xMTYsNiArMTE3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZnJhbWVTdG9wcGVkTG9hZGluZyhGcmFtZSYpOwogICAgIHZvaWQgZnJhbWVTY2hlZHVsZWRO
YXZpZ2F0aW9uKEZyYW1lJiwgU2Vjb25kcyBkZWxheSk7CiAgICAgdm9pZCBmcmFtZUNsZWFyZWRT
Y2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJik7CisgICAgdm9pZCBkZWZhdWx0QXBwZWFyYW5jZURp
ZENoYW5nZShib29sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAgICB2b2lkIGFwcGx5RW11bGF0ZWRN
ZWRpYShTdHJpbmcmKTsKICAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCYsIGNvbnN0IExh
eW91dFJlY3QmKTsKICAgICB2b2lkIGRpZExheW91dCgpOwpAQCAtMTYwLDYgKzE2Miw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzRmlyc3RMYXlvdXRBZnRlck9uTG9hZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3Nob3dQYWludFJlY3RzIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9lbXVsYXRl
ZE1lZGlhOworICAgIFN0cmluZyBtX2ZvcmNlZEFwcGVhcmFuY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA5NTBiYWUwM2Q1MDMxNWMzODk0ZTRi
NTE5Y2FhZmMyNmU3MDQxN2UzLi4yOGNjYmUwODg2NTM4MGQwOTE3OTJhMGJmNDgxYThkN2IwMDhj
Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI1MTQsNiArMjUxNCw4IEBAIHZvaWQgUGFnZTo6
c2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB2YWx1ZSkKIAogICAgIG1fdXNlRGFya0FwcGVhcmFu
Y2UgPSB2YWx1ZTsKIAorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGVmYXVsdEFwcGVh
cmFuY2VEaWRDaGFuZ2UoKnRoaXMsIHZhbHVlKTsKKwogICAgIGFwcGVhcmFuY2VEaWRDaGFuZ2Uo
KTsKIH0KIApAQCAtMjUyMiw5ICsyNTI0LDIxIEBAIGJvb2wgUGFnZTo6dXNlRGFya0FwcGVhcmFu
Y2UoKSBjb25zdAogICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZSgpLnZpZXcoKTsKICAg
ICBpZiAoIXZpZXcgfHwgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZpZXctPm1lZGlh
VHlwZSgpLCAic2NyZWVuIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV91c2VE
YXJrQXBwZWFyYW5jZU92ZXJyaWRlKQorICAgICAgICByZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5j
ZU92ZXJyaWRlLnZhbHVlKCk7CiAgICAgcmV0dXJuIG1fdXNlRGFya0FwcGVhcmFuY2U7CiB9CiAK
K3ZvaWQgUGFnZTo6c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om9wdGlvbmFsPGJv
b2w+IHZhbHVlT3ZlcnJpZGUpCit7CisgICAgaWYgKHZhbHVlT3ZlcnJpZGUgPT0gbV91c2VEYXJr
QXBwZWFyYW5jZU92ZXJyaWRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZURhcmtBcHBl
YXJhbmNlT3ZlcnJpZGUgPSB2YWx1ZU92ZXJyaWRlOworCisgICAgYXBwZWFyYW5jZURpZENoYW5n
ZSgpOworfQorCiB2b2lkIFBhZ2U6OnNldEZ1bGxzY3JlZW5JbnNldHMoY29uc3QgRmxvYXRCb3hF
eHRlbnQmIGluc2V0cykKIHsKICAgICBpZiAoaW5zZXRzID09IG1fZnVsbHNjcmVlbkluc2V0cykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKaW5kZXggZjg5NDAwYWIxOGQwZDM0YWZjM2Y4NWNmNWVjODZkMGMyNjBjNDk1
My4uNzg0YzNlNDFjNjAyM2FjN2Q5OTkzZDJlMWI4MjUxMTM1ZjlmZjczYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTM1OCw2ICszNTgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCk7CisgICAgYm9vbCBkZWZhdWx0VXNlRGFya0FwcGVh
cmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3VzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBz
ZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCiAjaWYg
RU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0QXV0b3NpemluZ1dpZHRoOyB9CkBAIC03OTEsNiArNzkzLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIG1fdXNlU3lzdGVtQXBwZWFyYW5jZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3VzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fdXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZTsKIAogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCiAgICAgZmxvYXQgbV90ZXh0QXV0b3NpemluZ1dpZHRoIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25z
L2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggMDIyZTk3NTY3NWQxNzgwNTUyMmU4
OTJkMGZiMTY0ZTc1MDllNTdjYS4uZWY2OTJhNDBmYTk4YzYxNDIzNzM5ZjYzMjk4ODAyYzNiZDk5
YjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC00MDMsNiArNDAzLDgg
QEAgbG9jYWxpemVkU3RyaW5nc1siRm9jdXMgb24gU3VidHJlZSJdID0gIkZvY3VzIG9uIFN1YnRy
ZWUiOwogbG9jYWxpemVkU3RyaW5nc1siRm9jdXNlZCJdID0gIkZvY3VzZWQiOwogbG9jYWxpemVk
U3RyaW5nc1siRm9udCJdID0gIkZvbnQiOwogbG9jYWxpemVkU3RyaW5nc1siRm9udHMiXSA9ICJG
b250cyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJGb3JjZSBEYXJrIEFwcGVhcmFuY2UiXSA9ICJGb3Jj
ZSBEYXJrIEFwcGVhcmFuY2UiOworbG9jYWxpemVkU3RyaW5nc1siRm9yY2UgTGlnaHQgQXBwZWFy
YW5jZSJdID0gIkZvcmNlIExpZ2h0IEFwcGVhcmFuY2UiOwogbG9jYWxpemVkU3RyaW5nc1siRm9y
Y2UgUHJpbnQgTWVkaWEgU3R5bGVzIl0gPSAiRm9yY2UgUHJpbnQgTWVkaWEgU3R5bGVzIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkZvcmNlZCBMYXlvdXQiXSA9ICJGb3JjZWQgTGF5b3V0IjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkZvcmNlZCBQc2V1ZG8tQ2xhc3NlcyJdID0gIkZvcmNlZCBQc2V1ZG8tQ2xh
c3NlcyI7CkBAIC05NDQsNiArOTQ2LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siVW5rbm93biBub2Rl
Il0gPSAiVW5rbm93biBub2RlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVuc3VwcG9ydGVkIHByb3Bl
cnR5IG5hbWUiXSA9ICJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlVuc3VwcG9ydGVkIHByb3BlcnR5IHZhbHVlIl0gPSAiVW5zdXBwb3J0ZWQgcHJvcGVydHkg
dmFsdWUiOwogbG9jYWxpemVkU3RyaW5nc1siVW50aXRsZWQiXSA9ICJVbnRpdGxlZCI7Citsb2Nh
bGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIl0gPSAiVXNlIERlZmF1bHQgQXBw
ZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBNZWRpYSBTdHlsZXMiXSA9
ICJVc2UgRGVmYXVsdCBNZWRpYSBTdHlsZXMiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlIHRoZSBy
ZXNvdXJjZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIl0gPSAiVXNlIHRoZSByZXNvdXJj
ZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVzZXIg
QWdlbnQiXSA9ICJVc2VyIEFnZW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCmluZGV4IDQ4
OTA2N2I5ZThlYzkxZDFhNDA0NWNkMTJjN2ZmZWM0YzMwNTYyZDguLjc0MzIyMGM4YzQ3NDhlMTcw
MDEwN2I3N2RkNjI4NjBkNmQxYWVjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpAQCAt
NDUsNiArNDUsOCBAQCBXSS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcCA9IG5ldyBNYXA7
CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRGcmFtZVVSTE1hcCA9IG5ldyBNYXA7CiAgICAgICAg
IHRoaXMuX25vZGVTdHlsZXNNYXAgPSB7fTsKKyAgICAgICAgdGhpcy5fZGVmYXVsdEFwcGVhcmFu
Y2UgPSBudWxsOworICAgICAgICB0aGlzLl9mb3JjZWRBcHBlYXJhbmNlID0gbnVsbDsKIAogICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOSk6IExlZ2FjeSBiYWNrZW5kcyBkaWQgbm90IHNl
bmQgc3R5bGVzaGVldAogICAgICAgICAvLyBhZGRlZC9yZW1vdmVkIGV2ZW50cyBhbmQgbXVzdCBi
ZSBmZXRjaGVkIG1hbnVhbGx5LgpAQCAtMTA3LDYgKzEwOSw1NiBAQCBXSS5DU1NNYW5hZ2VyID0g
Y2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gWy4uLnRo
aXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLnZhbHVlcygpXTsKICAgICB9CiAKKyAgICBnZXQg
ZGVmYXVsdEFwcGVhcmFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRB
cHBlYXJhbmNlOworICAgIH0KKworICAgIGdldCBmb3JjZWRBcHBlYXJhbmNlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9mb3JjZWRBcHBlYXJhbmNlOworICAgIH0KKworICAgIHNldCBm
b3JjZWRBcHBlYXJhbmNlKG5hbWUpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuY2FuRm9yY2VB
cHBlYXJhbmNlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHByb3RvY29s
TmFtZSA9ICIiOworCisgICAgICAgIHN3aXRjaCAobmFtZSkgeworICAgICAgICBjYXNlIFdJLkNT
U01hbmFnZXIuQXBwZWFyYW5jZS5MaWdodDoKKyAgICAgICAgICAgIHByb3RvY29sTmFtZSA9IFBh
Z2VBZ2VudC5BcHBlYXJhbmNlLkxpZ2h0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyazoKKyAgICAgICAgICAgIHByb3RvY29s
TmFtZSA9IFBhZ2VBZ2VudC5BcHBlYXJhbmNlLkRhcms7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIG51bGw6CisgICAgICAgIGNhc2UgdW5kZWZpbmVkOgorICAgICAgICBjYXNl
ICIiOgorICAgICAgICAgICAgcHJvdG9jb2xOYW1lID0gIiI7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gQWJvcnQgZm9yIHVua25vd24gdmFs
dWVzLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZm9y
Y2VkQXBwZWFyYW5jZSA9IG5hbWUgfHwgbnVsbDsKKworICAgICAgICBQYWdlQWdlbnQuc2V0Rm9y
Y2VkQXBwZWFyYW5jZShwcm90b2NvbE5hbWUpLnRoZW4oKCkgPT4geworICAgICAgICAgICAgdGhp
cy5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuQ1NTTWFuYWdlci5FdmVudC5Gb3JjZWRBcHBlYXJhbmNlRGlkQ2hh
bmdlLCB7YXBwZWFyYW5jZTogdGhpcy5fZm9yY2VkQXBwZWFyYW5jZX0pOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICBjYW5Gb3JjZUFwcGVhcmFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHdpbmRvdy5QYWdlQWdlbnQgJiYgISFQYWdlQWdlbnQuc2V0Rm9yY2VkQXBwZWFyYW5jZSAmJiB0
aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTsKKyAgICB9CisKICAgICBjYW5Gb3JjZVBzZXVkb0NsYXNz
ZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHdpbmRvdy5DU1NBZ2VudCAmJiAhIUNTU0FnZW50
LmZvcmNlUHNldWRvU3RhdGU7CkBAIC0yNjksNiArMzIxLDMzIEBAIFdJLkNTU01hbmFnZXIgPSBj
bGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMubWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQoKTsKICAgICB9CiAKKyAgICBkZWZhdWx0QXBwZWFyYW5jZURpZENoYW5n
ZShwcm90b2NvbE5hbWUpCisgICAgeworICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5QYWdlT2Jz
ZXJ2ZXIuCisKKyAgICAgICAgbGV0IGFwcGVhcmFuY2UgPSBudWxsOworCisgICAgICAgIHN3aXRj
aCAocHJvdG9jb2xOYW1lKSB7CisgICAgICAgIGNhc2UgUGFnZUFnZW50LkFwcGVhcmFuY2UuTGln
aHQ6CisgICAgICAgICAgICBhcHBlYXJhbmNlID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkxp
Z2h0OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQYWdlQWdlbnQuQXBwZWFy
YW5jZS5EYXJrOgorICAgICAgICAgICAgYXBwZWFyYW5jZSA9IFdJLkNTU01hbmFnZXIuQXBwZWFy
YW5jZS5EYXJrOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gZGVmYXVsdCBhcHBlYXJhbmNlIG5hbWU6Iiwg
cHJvdG9jb2xOYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UgPSBhcHBlYXJhbmNlOworCisgICAgICAgIHRoaXMubWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5DU1NNYW5hZ2VyLkV2ZW50LkRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlLCB7
YXBwZWFyYW5jZX0pOworICAgIH0KKwogICAgIC8vIFByb3RlY3RlZAogCiAgICAgbWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQoKQpAQCAtNTYxLDYgKzY0MCwxMyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xh
c3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogV0kuQ1NTTWFuYWdlci5FdmVudCA9IHsK
ICAgICBTdHlsZVNoZWV0QWRkZWQ6ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1hZGRlZCIsCiAg
ICAgU3R5bGVTaGVldFJlbW92ZWQ6ICJjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1yZW1vdmVkIiwK
KyAgICBEZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZTogImNzcy1tYW5hZ2VyLWRlZmF1bHQtYXBw
ZWFyYW5jZS1kaWQtY2hhbmdlIiwKKyAgICBGb3JjZWRBcHBlYXJhbmNlRGlkQ2hhbmdlOiAiY3Nz
LW1hbmFnZXItZm9yY2VkLWFwcGVhcmFuY2UtZGlkLWNoYW5nZSIsCit9OworCitXSS5DU1NNYW5h
Z2VyLkFwcGVhcmFuY2UgPSB7CisgICAgTGlnaHQ6IFN5bWJvbCgibGlnaHQiKSwKKyAgICBEYXJr
OiBTeW1ib2woImRhcmsiKSwKIH07CiAKIFdJLkNTU01hbmFnZXIuUHNldWRvRWxlbWVudE5hbWVz
ID0gWyJiZWZvcmUiLCAiYWZ0ZXIiXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9BcHBlYXJhbmNlLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9BcHBlYXJhbmNlLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjM5
NGZiOTFlZDA3NWFkMDgwZTM2N2Q1YjczNDY0YzExMDYzODJlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0FwcGVhcmFuY2Uuc3Zn
CkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
KzwhLS0gQ29weXJpZ2h0IMKpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAt
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVy
c2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxwYXRoIGZpbGw9ImN1cnJlbnRD
b2xvciIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNIDMuOTkxMTk4OTMgMSBMIDEyLjAwODc5NzMg
MSBDIDEzLjA0ODkwNCAxIDEzLjQyNjA3MzMgMS4xMDgyOTQ2NyAxMy44MDYzMjI3IDEuMzExNjU4
NjcgQyAxNC4xODY1NjI3IDEuNTE1MDEzMzMgMTQuNDg0OTg2NyAxLjgxMzQzNzMzIDE0LjY4ODM0
MTMgMi4xOTM2NzczMyBDIDE0Ljg5MTcwNTMgMi41NzM5MjY2NyAxNSAyLjk1MTA5NiAxNSAzLjk5
MTIwMjY3IEwgMTUgMTIuMDA4ODAxMSBDIDE1IDEzLjA0ODkwNTkgMTQuODkxNzA1MyAxMy40MjYw
NzMzIDE0LjY4ODM0MTMgMTMuODA2MzE5OSBDIDE0LjQ4NDk4NjcgMTQuMTg2NTY2OSAxNC4xODY1
NjI3IDE0LjQ4NDk4NjkgMTMuODA2MzIyNyAxNC42ODgzNDUyIEMgMTMuNDI2MDczMyAxNC44OTE3
MDM1IDEzLjA0ODkwNCAxNSAxMi4wMDg3OTczIDE1IEwgMy45OTExOTg5MyAxNSBDIDIuOTUxMDk0
MTMgMTUgMi41NzM5MjY2NyAxNC44OTE3MDM1IDIuMTkzNjgwMTMgMTQuNjg4MzQ1MiBDIDEuODEz
NDMzMTMgMTQuNDg0OTg2OSAxLjUxNTAxMzA1IDE0LjE4NjU2NjkgMS4zMTE2NTQ4NCAxMy44MDYz
MTk5IEMgMS4xMDgyOTY1MyAxMy40MjYwNzMzIDEgMTMuMDQ4OTA1OSAxIDEyLjAwODgwMTEgTCAx
IDMuOTkxMjAyNjcgQyAxIDIuOTUxMDk2IDEuMTA4Mjk2NTMgMi41NzM5MjY2NyAxLjMxMTY1NDg0
IDIuMTkzNjc3MzMgQyAxLjUxNTAxMzA1IDEuODEzNDM3MzMgMS44MTM0MzMxMyAxLjUxNTAxMzMz
IDIuMTkzNjgwMTMgMS4zMTE2NTg2NyBDIDIuNTczOTI2NjcgMS4xMDgyOTQ2NyAyLjk1MTA5NDEz
IDEgMy45OTExOTg5MyAxIFogTSAzLjUgNCBMIDEyLjUgNCBDIDEzLjMyODQyNzEgNCAxNCA0LjY3
MTU3Mjg4IDE0IDUuNSBMIDE0IDEyLjUgQyAxNCAxMy4zMjg0MjcxIDEzLjMyODQyNzEgMTQgMTIu
NSAxNCBMIDMuNSAxNCBDIDIuNjcxNTcyODggMTQgMiAxMy4zMjg0MjcxIDIgMTIuNSBMIDIgNS41
IEMgMiA0LjY3MTU3Mjg4IDIuNjcxNTcyODggNCAzLjUgNCBaIE0gNC4xIDUgTCAxMS45IDUgQyAx
Mi41MDc1MTMyIDUgMTMgNS40OTI0ODY3OCAxMyA2LjEgTCAxMyAxMS45IEMgMTMgMTIuNTA3NTEz
MiAxMi41MDc1MTMyIDEzIDExLjkgMTMgTCA0LjEgMTMgQyAzLjQ5MjQ4Njc4IDEzIDMgMTIuNTA3
NTEzMiAzIDExLjkgTCAzIDYuMSBDIDMgNS40OTI0ODY3OCAzLjQ5MjQ4Njc4IDUgNC4xIDUgWiBN
IDMgMiBMIDQgMiBMIDQgMyBMIDMgMyBMIDMgMiBaIE0gNSAyIEwgNiAyIEwgNiAzIEwgNSAzIEwg
NSAyIFogTSA3IDIgTCA4IDIgTCA4IDMgTCA3IDMgTCA3IDIgWiIvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2Jz
ZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Q
YWdlT2JzZXJ2ZXIuanMKaW5kZXggMzE0NjhhN2IyYTkyNjFmMTExOGM2MGY1ZjNiMTQyNTIxYWI4
M2VlYy4uNmI3YWY2ZjljZWJhY2UxYWJkZGNlNTVkZDIzZTE3YzI2MzAxNWRlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2Vy
dmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L1BhZ2VPYnNlcnZlci5qcwpAQCAtNDcsNiArNDcsMTEgQEAgV0kuUGFnZU9ic2VydmVyID0gY2xh
c3MgUGFnZU9ic2VydmVyCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmZyYW1lRGlkRGV0YWNo
KGZyYW1lSWQpOwogICAgIH0KIAorICAgIGRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlKGFwcGVh
cmFuY2UpCisgICAgeworICAgICAgICBXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlRGlk
Q2hhbmdlKGFwcGVhcmFuY2UpOworICAgIH0KKwogICAgIGZyYW1lU3RhcnRlZExvYWRpbmcoZnJh
bWVJZCkKICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVD
b250ZW50Vmlldy5qcwppbmRleCAyZGQ5MTk0NmVhZDU5YjhkMTYwNjgwYzkyZThjZmEwNWU2ODAx
OTU4Li5jN2E2ZmUwMDU4NzM1OGQ5ZDIzNzNiMzcwZDA1NTBkOTMzZmQwZGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC03NCw2ICs3NCw4IEBAIFdJLkRPTVRyZWVDb250ZW50
VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAg
ICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50
LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAg
V0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuQ2hhcmFj
dGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9kb21Ob2RlQ2hhbmdlZCwgdGhpcyk7CiAKKyAgICAgICAg
V0kuY3NzTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkNTU01hbmFnZXIuRXZlbnQuRGVmYXVs
dEFwcGVhcmFuY2VEaWRDaGFuZ2UsIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlLCB0
aGlzKTsKKwogICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygibGFzdC1zZWxlY3RlZC1ub2RlLXBhdGgiLCBudWxsKTsKIAogICAgICAgICB0
aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMgPSBudWxsOwpAQCAtODEsNiArODMsOSBAQCBXSS5E
T01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmlldwogICAgICAgICB0aGlzLl9icmVha3BvaW50R3V0dGVyRW5hYmxlZCA9IGZhbHNl
OwogICAgICAgICB0aGlzLl9wZW5kaW5nQnJlYWtwb2ludE5vZGVJZGVudGlmaWVycyA9IG5ldyBT
ZXQ7CiAKKyAgICAgICAgaWYgKFdJLmNzc01hbmFnZXIuY2FuRm9yY2VBcHBlYXJhbmNlKCkpCisg
ICAgICAgICAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZSgpOworCiAgICAgICAg
IGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydGVkKSB7CiAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
QnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50c0VuYWJsZWREaWRD
aGFuZ2UsIHRoaXMpOwogCkBAIC0xMDAsNiArMTA1LDkgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3
ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICB7
CiAgICAgICAgIGxldCBpdGVtcyA9IFt0aGlzLl9zaG93UHJpbnRTdHlsZXNCdXR0b25OYXZpZ2F0
aW9uSXRlbSwgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAKKyAg
ICAgICAgaWYgKHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtKQorICAg
ICAgICAgICAgaXRlbXMudW5zaGlmdCh0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0
aW9uSXRlbSk7CisKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDExLjMpCiAgICAgICAg
IGlmICh3aW5kb3cuUGFnZUFnZW50ICYmIFBhZ2VBZ2VudC5zZXRTaG93UnVsZXJzKQogICAgICAg
ICAgICAgaXRlbXMudW5zaGlmdCh0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0p
OwpAQCAtNTgyLDYgKzU5MCw3MSBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9zaG93
UHJpbnRTdHlsZXNDaGFuZ2VkKCk7CiAgICAgfQogCisgICAgX2RlZmF1bHRBcHBlYXJhbmNlRGlk
Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGxldCBkZWZhdWx0QXBwZWFyYW5jZSA9IFdJLmNzc01h
bmFnZXIuZGVmYXVsdEFwcGVhcmFuY2U7CisgICAgICAgIGlmICghZGVmYXVsdEFwcGVhcmFuY2Up
IHsKKyAgICAgICAgICAgIHRoaXMuX2xhc3RLbm93bkRlZmF1bHRBcHBlYXJhbmNlID0gbnVsbDsK
KyAgICAgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0g
bnVsbDsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRl
bnRWaWV3LkV2ZW50Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24ndCB1cGRhdGUgdGhlIG5hdmlnYXRpb24g
aXRlbSBpZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBmb3JjZWQgYXBwZWFyYW5jZS4KKyAgICAgICAg
Ly8gVGhlIHVzZXIgd2lsbCBuZWVkIHRvIHRvZ2dsZSBpdCBvZmYgdG8gdXBkYXRlIGl0IGJhc2Vk
IG9uIHRoZSBuZXcgZGVmYXVsdCBhcHBlYXJhbmNlLgorICAgICAgICBpZiAoV0kuY3NzTWFuYWdl
ci5mb3JjZWRBcHBlYXJhbmNlICYmIHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFy
YW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKGRlZmF1
bHRBcHBlYXJhbmNlKSB7CisgICAgICAgIGNhc2UgV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkxp
Z2h0OgorICAgICAgICAgICAgdGhpcy5fZm9yY2VBcHBlYXJhbmNlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV0kuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiYXBwZWFyYW5jZSIsIFdJ
LlVJU3RyaW5nKCJGb3JjZSBEYXJrIEFwcGVhcmFuY2UiKSwgV0kuVUlTdHJpbmcoIlVzZSBEZWZh
dWx0IEFwcGVhcmFuY2UiKSwgIkltYWdlcy9BcHBlYXJhbmNlLnN2ZyIsIDE2LCAxNik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFy
azoKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFyYW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVt
ID0gbmV3IFdJLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImFwcGVhcmFuY2UiLCBXSS5V
SVN0cmluZygiRm9yY2UgTGlnaHQgQXBwZWFyYW5jZSIpLCBXSS5VSVN0cmluZygiVXNlIERlZmF1
bHQgQXBwZWFyYW5jZSIpLCAiSW1hZ2VzL0FwcGVhcmFuY2Uuc3ZnIiwgMTYsIDE2KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9mb3JjZUFwcGVh
cmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigi
VW5rbm93biBkZWZhdWx0IGFwcGVhcmFuY2UgbmFtZToiLCBkZWZhdWx0QXBwZWFyYW5jZSk7Cisg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5F
dmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdEtub3duRGVmYXVsdEFwcGVhcmFuY2UgPSBkZWZh
dWx0QXBwZWFyYW5jZTsKKworICAgICAgICB0aGlzLl9mb3JjZUFwcGVhcmFuY2VCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZUFwcGVhcmFuY2UsIHRoaXMpOworICAgICAgICB0aGlzLl9m
b3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS52aXNpYmlsaXR5UHJpb3JpdHkgPSBX
SS5OYXZpZ2F0aW9uSXRlbS5WaXNpYmlsaXR5UHJpb3JpdHkuTG93OworICAgICAgICB0aGlzLl9m
b3JjZUFwcGVhcmFuY2VCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSAhIVdJLmNzc01h
bmFnZXIuZm9yY2VkQXBwZWFyYW5jZTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UpOwor
ICAgIH0KKworICAgIF90b2dnbGVBcHBlYXJhbmNlKGV2ZW50KQorICAgIHsKKyAgICAgICAgLy8g
VXNlIHRoZSBsYXN0IGtub3duIGRlZmF1bHQgYXBwZWFyYW5jZSwgc2luY2UgdGhhdCBpcyB0aGUg
YXBwZWFyYW5jZSB0aGlzIG5hdmlnYXRpb24gaXRlbSB3YXMgZ2VuZXJhdGVkIGZvci4KKyAgICAg
ICAgbGV0IGFwcGVhcmFuY2VUb0ZvcmNlID0gbnVsbDsKKyAgICAgICAgc3dpdGNoICh0aGlzLl9s
YXN0S25vd25EZWZhdWx0QXBwZWFyYW5jZSkgeworICAgICAgICBjYXNlIFdJLkNTU01hbmFnZXIu
QXBwZWFyYW5jZS5MaWdodDoKKyAgICAgICAgICAgIGFwcGVhcmFuY2VUb0ZvcmNlID0gV0kuQ1NT
TWFuYWdlci5BcHBlYXJhbmNlLkRhcms7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyazoKKyAgICAgICAgICAgIGFwcGVhcmFuY2VU
b0ZvcmNlID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkxpZ2h0OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmFzc2VydChhcHBlYXJhbmNlVG9Gb3Jj
ZSk7CisgICAgICAgIFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSA9IFdJLmNzc01hbmFn
ZXIuZm9yY2VkQXBwZWFyYW5jZSA9PSBhcHBlYXJhbmNlVG9Gb3JjZSA/IG51bGwgOiBhcHBlYXJh
bmNlVG9Gb3JjZTsKKworICAgICAgICAvLyBXaGVuIG5vIGxvbmdlciBmb3JjaW5nIGFuIGFwcGVh
cmFuY2UsIGlmIHRoZSBsYXN0IGtub3duIGRlZmF1bHQgYXBwZWFyYW5jZSBpcyBkaWZmZXJlbnQg
dGhhbiB0aGUgY3VycmVudAorICAgICAgICAvLyBkZWZhdWx0IGFwcGVhcmFuY2UsIHRoZW4gdXBk
YXRlIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbiBub3cuIE90aGVyd2lzZSBqdXN0IHRvZ2dsZSB0aGUg
YWN0aXZhdGVkIHN0YXRlLgorICAgICAgICBpZiAoIVdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFy
YW5jZSAmJiB0aGlzLl9sYXN0S25vd25EZWZhdWx0QXBwZWFyYW5jZSAhPT0gV0kuY3NzTWFuYWdl
ci5kZWZhdWx0QXBwZWFyYW5jZSkKKyAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNl
RGlkQ2hhbmdlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlQXBwZWFy
YW5jZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9ICEhV0kuY3NzTWFuYWdlci5mb3Jj
ZWRBcHBlYXJhbmNlOworICAgIH0KKwogICAgIF9zaG93UnVsZXJzQ2hhbmdlZCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9zaG93UnVsZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
V0kuc2V0dGluZ3Muc2hvd1J1bGVycy52YWx1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWM5YjQ3MGQ5ZGFkYWVlN2Uy
ZGZiNDkyYmI5NTA3YmQ0NDc1Y2YzLi45NWExNmZlMTYwYmQ1NWVkM2Q1NDc0OWZlZmQyZTc3YmRh
NjNkZjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMTkgIFRpbW90aHkgSGF0Y2hl
ciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBzdXBw
b3J0IGZvciBmb3JjaW5nIGNvbG9yIHNjaGVtZSBhcHBlYXJhbmNlIGluIERPTSB0cmVlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIwCisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzQ2MTUzMTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBTa2lwIGRhcmsgbW9kZSB0
ZXN0cyBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9mb3JjZS1w
YWdlLWFwcGVhcmFuY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9uczogRXhwZWN0IGRhcmsgbW9kZSB0ZXN0cyB0byBwYXNzIG9u
IE1vamF2ZSBhbmQgbGF0ZXIuCisKIDIwMTgtMTEtMTUgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aE5dIFVzZXJIYW5kbGUgY2FuIGJlIG51bGwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDEyZDkxOGFhZTliZWJlMDcxNjkzYzA5Y2MwM2M3NzZlMzM4
NjdkMTguLjk3OWU4Yzk2M2ZhYTlkYWUzMWNkOTQ3ZGY3NTk2ODJkMGI5ZTFjMmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNzIsNyArNzIsOSBAQCBmYXN0L2ltYWdlcy9lcHMtYXMtaW1hZ2UuaHRt
bCBbIFNraXAgXQogZmFzdC94bWxodHRwcmVxdWVzdC9zZXQtZGFuZ2Vyb3VzLWhlYWRlcnMtaW4t
ZGFzaGJvYXJkLmh0bWwgWyBXb250Rml4IF0KIAogIyBPbmx5IGFwcGxpY2FibGUgb24gbWFjT1MK
K2Nzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIGZhc3QvY3NzL2FwcGxlLXN5c3RlbS1jb250cm9sLWNv
bG9ycy5odG1sIFsgU2tpcCBdCitpbnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5o
dG1sIFsgU2tpcCBdCiAKICMgT25seSBNYWMgc3VwcG9ydHMgZm9yY2UgdGVzdHMuCiBmYXN0L2V2
ZW50cy9jYW5jZWxsZWQtZm9yY2UtY2xpY2stbGluay1uYXZpZ2F0aW9uLmh0bWwgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJh
bmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1h
cHBlYXJhbmNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTc0Mjk1YWEyM2Q4MWJiNTRkN2Fj
MGMwYzY2MzAzYTNiZTg0NjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzgg
QEAKK1Rlc3RpbmcgdGhlIGRlZmF1bHQgYXBwZWFyYW5jZSBhbmQgZm9yY2VkIGFwcGVhcmFuY2Ug
ZmVhdHVyZXMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBGb3JjZVBhZ2VBcHBlYXJhbmNl
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGVmYXVsdCBhcHBlYXJhbmNlIHNob3VsZCBiZSBsaWdo
dAorUEFTUzogV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQgYmUgTGlnaHQu
CitQQVNTOiBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIG51bGwuCitQ
QVNTOiBleHBlY3RFcXVhbCgiMTUwcHgiLCAiMTUwcHgiKQorUEFTUzogZXhwZWN0RXF1YWwoInJn
YigwLCAwLCAwKSIsICJyZ2IoMCwgMCwgMCkiKQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRm9y
Y2UgYXBwZWFyYW5jZSB0byBEYXJrCitQQVNTOiBXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJh
bmNlIHNob3VsZCBiZSBMaWdodC4KK1BBU1M6IFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5j
ZSBzaG91bGQgYmUgRGFyay4KK1BBU1M6IERPTU5vZGVTdHlsZXMgc2hvdWxkIG5lZWQgcmVmcmVz
aC4KK1BBU1M6IGV4cGVjdEVxdWFsKCIyMDBweCIsICIyMDBweCIpCitQQVNTOiBleHBlY3RFcXVh
bCgicmdiKDI1NSwgMjU1LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIpCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBTd2l0Y2ggdG8gRGFyayBhcHBlYXJhbmNlIGJ5IGRlZmF1bHQKK1BBU1M6
IFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERhcmsuCitQQVNTOiBX
SS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERhcmsuCitQQVNTOiBET01O
b2RlU3R5bGVzIHNob3VsZCBuZWVkIHJlZnJlc2guCitQQVNTOiBleHBlY3RFcXVhbCgiMjAwcHgi
LCAiMjAwcHgiKQorUEFTUzogZXhwZWN0RXF1YWwoInJnYigyNTUsIDI1NSwgMjU1KSIsICJyZ2Io
MjU1LCAyNTUsIDI1NSkiKQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRm9yY2UgYXBwZWFyYW5j
ZSB0byBMaWdodAorUEFTUzogV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQg
YmUgRGFyay4KK1BBU1M6IFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSBzaG91bGQgYmUg
TGlnaHQuCitQQVNTOiBET01Ob2RlU3R5bGVzIHNob3VsZCBuZWVkIHJlZnJlc2guCitQQVNTOiBl
eHBlY3RFcXVhbCgiMTUwcHgiLCAiMTUwcHgiKQorUEFTUzogZXhwZWN0RXF1YWwoInJnYigwLCAw
LCAwKSIsICJyZ2IoMCwgMCwgMCkiKQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRGlzYWJsZSBm
b3JjZWQgYXBwZWFyYW5jZQorUEFTUzogV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBz
aG91bGQgYmUgRGFyay4KK1BBU1M6IFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSBzaG91
bGQgYmUgbnVsbC4KK1BBU1M6IERPTU5vZGVTdHlsZXMgc2hvdWxkIG5lZWQgcmVmcmVzaC4KK1BB
U1M6IGV4cGVjdEVxdWFsKCIyMDBweCIsICIyMDBweCIpCitQQVNTOiBleHBlY3RFcXVhbCgicmdi
KDI1NSwgMjU1LCAyNTUpIiwgInJnYigyNTUsIDI1NSwgMjU1KSIpCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJhbmNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3OGI0YzBkNWE5OTAzNDU5MzAxN2RjOTgzMGE0YmRiYjBmY2UxOWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5o
dG1sCkBAIC0wLDAgKzEsMTY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rv
ci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzd2l0Y2hUb0RhcmtBcHBl
YXJhbmNlKCkgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KSB7CisgICAgbGV0IG5vZGVTdHlsZXMgPSBudWxsOworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRm9yY2VQYWdlQXBwZWFyYW5jZSIpOworCisgICAgbGV0
IGdldFByb3BlcnR5ID0gKHByb3BlcnR5TmFtZSkgPT4geworICAgICAgICBsZXQgc3R5bGVEZWNs
YXJhdGlvbiA9IG5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZTsKKyAgICAgICAgZm9yIChsZXQgcHJv
cGVydHkgb2Ygc3R5bGVEZWNsYXJhdGlvbi5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAo
cHJvcGVydHkubmFtZSA9PT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBw
cm9wZXJ0eTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJEZWZhdWx0IGFwcGVhcmFuY2Ugc2hvdWxkIGJlIGxpZ2h0IiwKKyAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSwgV0kuQ1NTTWFuYWdlci5B
cHBlYXJhbmNlLkxpZ2h0LCBgV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQg
YmUgTGlnaHQuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwoV0kuY3Nz
TWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlLCBgV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNl
IHNob3VsZCBiZSBudWxsLmApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGdldFByb3BlcnR5KCJ3aWR0aCIpLnJhd1ZhbHVlLCAiMTUwcHgiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHkoImNvbG9yIikucmF3VmFsdWUs
ICJyZ2IoMCwgMCwgMCkiKTsKKworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJGb3JjZSBh
cHBlYXJhbmNlIHRvIERhcmsiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAg
ICAgICAgICAgLy8gU3R5bGVzIHNob3VsZCByZWZlcmVzaCB3aGVuIGRhcmsgYXBlcGFyYW5jZSBp
cyBmb3JjZWQuCisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFu
YWdlci5FdmVudC5Gb3JjZWRBcHBlYXJhbmNlRGlkQ2hhbmdlKS50aGVuKChldmVudCkgPT4gewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZVN0eWxlcy5uZWVk
c1JlZnJlc2gsIHRydWUsIGBET01Ob2RlU3R5bGVzIHNob3VsZCBuZWVkIHJlZnJlc2guYCk7Cisg
ICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCk7CisKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLmF3YWl0RXZlbnQoV0kuQ1NTU3R5bGVEZWNs
YXJhdGlvbi5FdmVudC5Qcm9wZXJ0aWVzQ2hhbmdlZCkudGhlbigoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChnZXRQcm9wZXJ0eSgid2lk
dGgiKS5yYXdWYWx1ZSwgIjIwMHB4Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHkoImNvbG9yIikucmF3VmFsdWUsICJyZ2IoMjU1LCAy
NTUsIDI1NSkiKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pLnRoZW4ocmVz
b2x2ZSwgcmVqZWN0KTsKKworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJh
bmNlID0gV0kuQ1NTTWFuYWdlci5BcHBlYXJhbmNlLkRhcms7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSwgV0ku
Q1NTTWFuYWdlci5BcHBlYXJhbmNlLkxpZ2h0LCBgV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFy
YW5jZSBzaG91bGQgYmUgTGlnaHQuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKFdJLmNzc01hbmFnZXIuZm9yY2VkQXBwZWFyYW5jZSwgV0kuQ1NTTWFuYWdlci5BcHBl
YXJhbmNlLkRhcmssIGBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIERh
cmsuYCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIlN3aXRjaCB0byBEYXJrIGFwcGVhcmFuY2UgYnkgZGVmYXVsdCIsCisgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGBzd2l0Y2hUb0RhcmtBcHBlYXJhbmNlKClgKTsKKworICAgICAgICAgICAg
V0kuY3NzTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNTU01hbmFnZXIuRXZlbnQuRGVmYXVsdEFwcGVh
cmFuY2VEaWRDaGFuZ2UpLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChXSS5jc3NNYW5hZ2VyLmRlZmF1bHRBcHBlYXJhbmNlLCBXSS5D
U1NNYW5hZ2VyLkFwcGVhcmFuY2UuRGFyaywgYFdJLmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFu
Y2Ugc2hvdWxkIGJlIERhcmsuYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2UsIFdJLkNTU01hbmFnZXIuQXBw
ZWFyYW5jZS5EYXJrLCBgV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlIHNob3VsZCBiZSBE
YXJrLmApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZVN0
eWxlcy5uZWVkc1JlZnJlc2gsIHRydWUsIGBET01Ob2RlU3R5bGVzIHNob3VsZCBuZWVkIHJlZnJl
c2guYCk7CisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCk7CisKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLmF3YWl0RXZlbnQoV0kuQ1NT
U3R5bGVEZWNsYXJhdGlvbi5FdmVudC5Qcm9wZXJ0aWVzQ2hhbmdlZCkudGhlbigoZXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChnZXRQcm9w
ZXJ0eSgid2lkdGgiKS5yYXdWYWx1ZSwgIjIwMHB4Iik7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZ2V0UHJvcGVydHkoImNvbG9yIikucmF3VmFsdWUsICJy
Z2IoMjU1LCAyNTUsIDI1NSkiKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0p
LnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUu
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRm9yY2UgYXBwZWFyYW5jZSB0byBMaWdodCIs
CisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAvLyBTdHlsZXMg
c2hvdWxkIHJlZmVyZXNoIHdoZW4gbGlnaHQgYXBlcGFyYW5jZSBpcyBmb3JjZWQuCisgICAgICAg
ICAgICBXSS5jc3NNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ1NTTWFuYWdlci5FdmVudC5Gb3JjZWRB
cHBlYXJhbmNlRGlkQ2hhbmdlKS50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobm9kZVN0eWxlcy5uZWVkc1JlZnJlc2gsIHRydWUsIGBE
T01Ob2RlU3R5bGVzIHNob3VsZCBuZWVkIHJlZnJlc2guYCk7CisgICAgICAgICAgICAgICAgbm9k
ZVN0eWxlcy5yZWZyZXNoKCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZVN0eWxlcy5j
b21wdXRlZFN0eWxlLmF3YWl0RXZlbnQoV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5FdmVudC5Qcm9w
ZXJ0aWVzQ2hhbmdlZCkudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChnZXRQcm9wZXJ0eSgid2lkdGgiKS5yYXdWYWx1ZSwgIjE1
MHB4Iik7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZ2V0
UHJvcGVydHkoImNvbG9yIikucmF3VmFsdWUsICJyZ2IoMCwgMCwgMCkiKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKworICAgICAg
ICAgICAgV0kuY3NzTWFuYWdlci5mb3JjZWRBcHBlYXJhbmNlID0gV0kuQ1NTTWFuYWdlci5BcHBl
YXJhbmNlLkxpZ2h0OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJ
LmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2UsIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5E
YXJrLCBgV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQgYmUgRGFyay5gKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kuY3NzTWFuYWdlci5mb3Jj
ZWRBcHBlYXJhbmNlLCBXSS5DU1NNYW5hZ2VyLkFwcGVhcmFuY2UuTGlnaHQsIGBXSS5jc3NNYW5h
Z2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIExpZ2h0LmApOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJEaXNhYmxlIGZv
cmNlZCBhcHBlYXJhbmNlIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAg
ICAgICAgIC8vIFN0eWxlcyBzaG91bGQgcmVmZXJlc2ggd2hlbiBmb3JjZWQgYXBlcGFyYW5jZSBp
cyBkaXNhYmxlZC4KKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuYXdhaXRFdmVudChXSS5DU1NN
YW5hZ2VyLkV2ZW50LkZvcmNlZEFwcGVhcmFuY2VEaWRDaGFuZ2UpLnRoZW4oKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChub2RlU3R5bGVzLm5l
ZWRzUmVmcmVzaCwgdHJ1ZSwgYERPTU5vZGVTdHlsZXMgc2hvdWxkIG5lZWQgcmVmcmVzaC5gKTsK
KyAgICAgICAgICAgICAgICBub2RlU3R5bGVzLnJlZnJlc2goKTsKKworICAgICAgICAgICAgICAg
IHJldHVybiBub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGUuYXdhaXRFdmVudChXSS5DU1NTdHlsZURl
Y2xhcmF0aW9uLkV2ZW50LlByb3BlcnRpZXNDaGFuZ2VkKS50aGVuKChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGdldFByb3BlcnR5KCJ3
aWR0aCIpLnJhd1ZhbHVlLCAiMjAwcHgiKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChnZXRQcm9wZXJ0eSgiY29sb3IiKS5yYXdWYWx1ZSwgInJnYigyNTUs
IDI1NSwgMjU1KSIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSkudGhlbihy
ZXNvbHZlLCByZWplY3QpOworCisgICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVh
cmFuY2UgPSBudWxsOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKFdJ
LmNzc01hbmFnZXIuZGVmYXVsdEFwcGVhcmFuY2UsIFdJLkNTU01hbmFnZXIuQXBwZWFyYW5jZS5E
YXJrLCBgV0kuY3NzTWFuYWdlci5kZWZhdWx0QXBwZWFyYW5jZSBzaG91bGQgYmUgRGFyay5gKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChXSS5jc3NNYW5hZ2VyLmZvcmNl
ZEFwcGVhcmFuY2UsIGBXSS5jc3NNYW5hZ2VyLmZvcmNlZEFwcGVhcmFuY2Ugc2hvdWxkIGJlIG51
bGwuYCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KChkb2N1bWVudE5vZGUpID0+IHsKKyAgICAgICAgV0kuZG9tTWFuYWdlci5xdWVyeVNl
bGVjdG9yKGRvY3VtZW50Tm9kZS5pZCwgIiN4IiwgKGNvbnRlbnROb2RlSWQpID0+IHsKKyAgICAg
ICAgICAgIGlmIChjb250ZW50Tm9kZUlkKSB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUg
PSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAg
ICBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworCisg
ICAgICAgICAgICAgICAgaWYgKG5vZGVTdHlsZXMubmVlZHNSZWZyZXNoKSB7CisgICAgICAgICAg
ICAgICAgICAgIG5vZGVTdHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0
eWxlcy5FdmVudC5SZWZyZXNoZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCkKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRPTSBub2RlIG5vdCBmb3VuZC4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgIDxwPlRlc3RpbmcgdGhlIGRlZmF1bHQgYXBwZWFyYW5jZSBhbmQgZm9yY2Vk
IGFwcGVhcmFuY2UgZmVhdHVyZXMuPC9wPgorCisgICAgPHN0eWxlPgorICAgIDpyb290IHsKKyAg
ICAgICAgc3VwcG9ydGVkLWNvbG9yLXNjaGVtZXM6IGxpZ2h0IGRhcms7CisgICAgfQorCisgICAg
LnRlc3Qtbm9kZSB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICBAbWVkaWEg
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCkgeworICAgICAgICAudGVzdC1ub2RlIHsKKyAg
ICAgICAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBtZWRpYSAo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAgICAgLnRlc3Qtbm9kZSB7CisgICAg
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIH0KKyAgICB9CisgICAgPC9zdHlsZT4KKwor
ICAgIDxkaXYgaWQ9IngiIGNsYXNzPSJ0ZXN0LW5vZGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYzFhZjk2
YmMyNmUxMzA5ODgxMDEzMjQ4MDgyM2Q4ZWZjMzMzOGQxLi44ZmVlMTBlZDczNWJmNWRhNDNhMDdk
Yjk4Y2Q3MGI5Y2RjNTNhNzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMTc1OSw3ICsxNzU5LDggQEAgd2Via2l0Lm9yZy9iLzE4NzM5MyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGUKIFsg
TW9qYXZlKyBdIGZhc3QvZ3JhZGllbnRzL2NvbmljLXR3by1oaW50cy5odG1sIFsgUGFzcyBdCiAK
ICMgRGFyayBNb2RlIGlzIE1vamF2ZSBhbmQgbGF0ZXIuCi1bIFNpZXJyYSBIaWdoU2llcnJhIF0g
Y3NzLWRhcmstbW9kZSBbIFNraXAgXQorWyBNb2phdmUrIF0gY3NzLWRhcmstbW9kZSBbIFBhc3Mg
XQorWyBNb2phdmUrIF0gaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBb
IFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMTg1NjUxIGxlZ2FjeS1hbmltYXRpb24tZW5naW5lL2Fu
aW1hdGlvbnMvcGxheS1zdGF0ZS1pbi1zaG9ydGhhbmQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>