<?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>233369</bug_id>
          
          <creation_ts>2021-11-19 08:41:19 -0800</creation_ts>
          <short_desc>Web Inspector: Extract a specialized CSSNameCompletions from CSSCompletions</short_desc>
          <delta_ts>2021-12-10 04:25:03 -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>
          <dependson>230351</dependson>
          <blocked>233372</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Razvan Caliman">rcaliman</reporter>
          <assigned_to name="Razvan Caliman">rcaliman</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816874</commentid>
    <comment_count>0</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-19 08:41:19 -0800</bug_when>
    <thetext>&lt;rdar://83206520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816896</commentid>
    <comment_count>1</comment_count>
      <attachid>444826</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-19 09:50:32 -0800</bug_when>
    <thetext>Created attachment 444826
Patch 1.0

Depends on Bug 230351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821205</commentid>
    <comment_count>2</comment_count>
      <attachid>444826</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-07 13:27:32 -0800</bug_when>
    <thetext>Comment on attachment 444826
Patch 1.0

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:52
&gt; +        this.cssNameCompletions = null;

Style: this should either be declared as a static property on `WI.CSSManager` or made into a private `_cssNameCompletions` with a corresponding `get cssNameCompletions() { return this._cssNameCompletions; }`

NIT: It&apos;s also a bit wordy/redundant to write `WI.cssManager.cssNameCompletions`.  How about `propertyNameCompletions` so it&apos;s clearer and doesn&apos;t repeat &quot;css&quot; twice?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:63
&gt; +    initializeCSSCompletions(target)

I think we should rename this to `initializeCSSNameCompletions` to be more accurate.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:70
&gt; +        function propertiesCallback(error, cssProperties) {

I realize that this is mostly copied code, but I think we could/should update it while we&apos;re at it.

NIT: I&apos;d just inline these functions

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:83
&gt; +            var propertyNamesForCodeMirror = {};

`let`

ditto (below)

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:93
&gt; +            function collectPropertyNameForCodeMirror(propertyName) {

NIT: I&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:106
&gt; +                for (var i = 0; i &lt; keywords.length; ++i) {

```
    for (let keyword of keywords) {
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:114
&gt; +            WI.CSSKeywordCompletions._colors.forEach(function(colorName) {

```
    for (let color of WI.CSSKeywordCompletions._colors)
```

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:36
&gt; +    constructor(values, acceptEmptyPrefix = false)

The `= false` is unnecessary since omitting it will result in `undefined`, which is also a falsy value.  I&apos;d just add `!!acceptEmptyPrefix` below.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:42
&gt; +        if (values.length &amp;&amp; typeof values[0] === &quot;string&quot;)

You can drop the `values.length` check since that&apos;s implicitly checked by `typeof values[0] === &quot;string&quot;`.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSNameCompletions.js:4
&gt; + * Copyright (C) 2010 Nikita Vasilyev. All rights reserved.
&gt; + * Copyright (C) 2010 Joseph Pecoraro. All rights reserved.
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

Since this is a new file, I dont think these should be here.

Also, is this the right copyright header?  It looks different.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSNameCompletions.js:36
&gt; +    constructor(properties, acceptEmptyPrefix)

If you&apos;re gonna do this then I&apos;d probably make this (and the corresponding one for `WI.CSSCompletions`) into an `options = {}` so that if new values are added to `WI.CSSCompletions` in the future then you don&apos;t have to worry about them in subclasses (unless it affects the subclass).

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:303
&gt; +            let propertyNameIsValid = WI.cssManager.cssNameCompletions?.isValidPropertyName(this._property.name);

I&apos;d just inline this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821768</commentid>
    <comment_count>3</comment_count>
      <attachid>444826</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-08 13:52:08 -0800</bug_when>
    <thetext>Comment on attachment 444826
Patch 1.0

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:52
&gt;&gt; +        this.cssNameCompletions = null;
&gt; 
&gt; Style: this should either be declared as a static property on `WI.CSSManager` or made into a private `_cssNameCompletions` with a corresponding `get cssNameCompletions() { return this._cssNameCompletions; }`
&gt; 
&gt; NIT: It&apos;s also a bit wordy/redundant to write `WI.cssManager.cssNameCompletions`.  How about `propertyNameCompletions` so it&apos;s clearer and doesn&apos;t repeat &quot;css&quot; twice?

&gt;Style: this should either be declared as a static property on `WI.CSSManager` or made into a private `_cssNameCompletions` with a corresponding `get cssNameCompletions() { return this._cssNameCompletions; }`
Why? It&apos;s meant to be publicly accessible.

&gt; How about `propertyNameCompletions` so it&apos;s clearer and doesn&apos;t repeat &quot;css&quot; twice?
Sure we can use that as an accessor to reduce wordiness for consumers, but I&apos;d prefer to keep &quot;CSS&quot; in the name of the class and of the file (`CSSPropertyNameCompletions`) so it stays co-located with other CSS-prefixed files.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:63
&gt;&gt; +    initializeCSSCompletions(target)
&gt; 
&gt; I think we should rename this to `initializeCSSNameCompletions` to be more accurate.

Renamed to `initializeCSSPropertyNameCompletions` to match the new name of the class.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:70
&gt;&gt; +        function propertiesCallback(error, cssProperties) {
&gt; 
&gt; I realize that this is mostly copied code, but I think we could/should update it while we&apos;re at it.
&gt; 
&gt; NIT: I&apos;d just inline these functions

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:83
&gt;&gt; +            var propertyNamesForCodeMirror = {};
&gt; 
&gt; `let`
&gt; 
&gt; ditto (below)

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:93
&gt;&gt; +            function collectPropertyNameForCodeMirror(propertyName) {
&gt; 
&gt; NIT: I&apos;d inline this

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:106
&gt;&gt; +                for (var i = 0; i &lt; keywords.length; ++i) {
&gt; 
&gt; ```
&gt;     for (let keyword of keywords) {
&gt; ```

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:114
&gt;&gt; +            WI.CSSKeywordCompletions._colors.forEach(function(colorName) {
&gt; 
&gt; ```
&gt;     for (let color of WI.CSSKeywordCompletions._colors)
&gt; ```

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:36
&gt;&gt; +    constructor(values, acceptEmptyPrefix = false)
&gt; 
&gt; The `= false` is unnecessary since omitting it will result in `undefined`, which is also a falsy value.  I&apos;d just add `!!acceptEmptyPrefix` below.

Done. Though I find it more self-explanatory when the boolean fallback is declared up-front rather than coerced with `!!`

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:42
&gt;&gt; +        if (values.length &amp;&amp; typeof values[0] === &quot;string&quot;)
&gt; 
&gt; You can drop the `values.length` check since that&apos;s implicitly checked by `typeof values[0] === &quot;string&quot;`.

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSNameCompletions.js:4
&gt;&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; 
&gt; Since this is a new file, I dont think these should be here.
&gt; 
&gt; Also, is this the right copyright header?  It looks different.

Done. Replaced with the right copyright.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSNameCompletions.js:36
&gt;&gt; +    constructor(properties, acceptEmptyPrefix)
&gt; 
&gt; If you&apos;re gonna do this then I&apos;d probably make this (and the corresponding one for `WI.CSSCompletions`) into an `options = {}` so that if new values are added to `WI.CSSCompletions` in the future then you don&apos;t have to worry about them in subclasses (unless it affects the subclass).

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:303
&gt;&gt; +            let propertyNameIsValid = WI.cssManager.cssNameCompletions?.isValidPropertyName(this._property.name);
&gt; 
&gt; I&apos;d just inline this

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821770</commentid>
    <comment_count>4</comment_count>
      <attachid>446418</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-08 13:53:23 -0800</bug_when>
    <thetext>Created attachment 446418
Patch 1.1

Address code review feedback:
- renamed CSSNameCompletions to CSSPropertyNameCompletions
- added accessor WI.cssManager.propertyNameCompletions
- updated callsites
- updated contents of initializeCSSPropertyNameCompletions(target) to use contemporary JS
- updated signature of CSSCompletions to expect an object instead of a list of arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821968</commentid>
    <comment_count>5</comment_count>
      <attachid>446418</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-08 20:11:48 -0800</bug_when>
    <thetext>Comment on attachment 446418
Patch 1.1

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:93
&gt; +            function collectPropertyNameForCodeMirror(propertyName) {

NIT: I&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:335
&gt; +    get propertyNameCompletions()

Style: this is a simple `get`, so you can make this into one line `get propertyNameCompletions() { return this._propertyNameCompletions; }` just below the `// Public` section :)

&gt; Source/WebInspectorUI/UserInterface/Main.html:399
&gt; +    &lt;script src=&quot;Models/CSSPropertyNameCompletions.js&quot;&gt;&lt;/script&gt;
&gt;      &lt;script src=&quot;Models/CSSProperty.js&quot;&gt;&lt;/script&gt;

Style: these are ordered wrong

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:38
&gt; +        console.assert(Array.isArray(values), values);

If you&apos;re asserting that `values` is always an `Array`, then it&apos;s not really an optional parameter.  As such, it shouldn&apos;t be in an `options` struct (especially since it has a default `= {}`).  We should only be putting optional things inside `options = {}`.
```
    constructor(values, {acceptEmptyPrefix} = {})
```

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:42
&gt; +        if (typeof values[0] === &quot;string&quot;)

Is it ever the case that the items in `values` are not all `String`?  If so, perhaps we should just make this into a `console.assert` and always do the initialization of `this._values`?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:43
&gt; +            this._values.pushAll(values);

NIT: Can we just `this._values = values;`?  Or is it necessary to do the copy (and if so, can we just `this._values = values.slice()` instead)?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:44
&gt; +        return {prefix: text, completions: WI.cssManager.propertyNameCompletions.values};

I wonder if it&apos;s actually safe for us to access `WI.cssManager.propertyNameCompletions` unchecked here? 🤔

ditto (below)

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:230
&gt; +    const acceptEmptyPrefix = true;

Since this is now inside an `options` object, you can inline it instead of creating a `const` variable.
```
    return new WI.CSSCompletions(suggestions, {acceptEmptyPrefix: true});
```

&gt; Source/WebInspectorUI/UserInterface/Models/CSSPropertyNameCompletions.js:28
&gt; +    constructor({properties, acceptEmptyPrefix} = {})

ditto (Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:38)

&gt; Source/WebInspectorUI/UserInterface/Models/CSSPropertyNameCompletions.js:31
&gt; +        console.assert(properties[0].name, properties, &quot;Expected an array of objects with `name` key&quot;);

NIT: I&apos;d put the description first so that it appears first in the Web Inspector Console (i.e. context before data).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822089</commentid>
    <comment_count>6</comment_count>
      <attachid>446418</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-09 05:46:54 -0800</bug_when>
    <thetext>Comment on attachment 446418
Patch 1.1

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:93
&gt;&gt; +            function collectPropertyNameForCodeMirror(propertyName) {
&gt; 
&gt; NIT: I&apos;d inline this

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:335
&gt;&gt; +    get propertyNameCompletions()
&gt; 
&gt; Style: this is a simple `get`, so you can make this into one line `get propertyNameCompletions() { return this._propertyNameCompletions; }` just below the `// Public` section :)

Done. :|

&gt;&gt; Source/WebInspectorUI/UserInterface/Main.html:399
&gt;&gt;      &lt;script src=&quot;Models/CSSProperty.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Style: these are ordered wrong

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:38
&gt;&gt; +        console.assert(Array.isArray(values), values);
&gt; 
&gt; If you&apos;re asserting that `values` is always an `Array`, then it&apos;s not really an optional parameter.  As such, it shouldn&apos;t be in an `options` struct (especially since it has a default `= {}`).  We should only be putting optional things inside `options = {}`.
&gt; ```
&gt;     constructor(values, {acceptEmptyPrefix} = {})
&gt; ```

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:42
&gt;&gt; +        if (typeof values[0] === &quot;string&quot;)
&gt; 
&gt; Is it ever the case that the items in `values` are not all `String`?  If so, perhaps we should just make this into a `console.assert` and always do the initialization of `this._values`?

Always expected as an array of strings. Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:43
&gt;&gt; +            this._values.pushAll(values);
&gt; 
&gt; NIT: Can we just `this._values = values;`?  Or is it necessary to do the copy (and if so, can we just `this._values = values.slice()` instead)?

I&apos;ll make this `this._values = values.slice()` because we&apos;re mutating the array in-place with sorting on the next line.

Currently, this isn&apos;t a problem because all callers pass in an array that&apos;s not used elsewhere. But if this will not be the case in the future, sorting will cause subtle side-effects. Cloning is safer.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:44
&gt;&gt; +        return {prefix: text, completions: WI.cssManager.propertyNameCompletions.values};
&gt; 
&gt; I wonder if it&apos;s actually safe for us to access `WI.cssManager.propertyNameCompletions` unchecked here? 🤔
&gt; 
&gt; ditto (below)

Yes. To get to a point where CSS completions are requested (user input), the `propertyNameCompletions` will have already been set when initializing with the target in `WI.CSSManager.initializeCSSPropertyNameCompletions()`

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:230
&gt;&gt; +    const acceptEmptyPrefix = true;
&gt; 
&gt; Since this is now inside an `options` object, you can inline it instead of creating a `const` variable.
&gt; ```
&gt;     return new WI.CSSCompletions(suggestions, {acceptEmptyPrefix: true});
&gt; ```

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSPropertyNameCompletions.js:28
&gt;&gt; +    constructor({properties, acceptEmptyPrefix} = {})
&gt; 
&gt; ditto (Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:38)

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822091</commentid>
    <comment_count>7</comment_count>
      <attachid>446530</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-09 05:48:04 -0800</bug_when>
    <thetext>Created attachment 446530
Patch 1.2

Address code review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822487</commentid>
    <comment_count>8</comment_count>
      <attachid>446530</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-09 19:21:07 -0800</bug_when>
    <thetext>Comment on attachment 446530
Patch 1.2

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

r=me, neato :)

&gt; Source/WebInspectorUI/UserInterface/Models/CSSPropertyNameCompletions.js:28
&gt; +    constructor(properties, {acceptEmptyPrefix} = {})

NIT: since `acceptEmptyPrefix` isn&apos;t used here, i&apos;d make this into an `options = {}` so that if new things are added to `WI.CSSCompletions` in the future you don&apos;t have to also update this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822623</commentid>
    <comment_count>9</comment_count>
      <attachid>446702</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-10 03:22:32 -0800</bug_when>
    <thetext>Created attachment 446702
Patch 1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822624</commentid>
    <comment_count>10</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-10 03:24:53 -0800</bug_when>
    <thetext>Carried over R+
Address final NIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822648</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-10 04:25:00 -0800</bug_when>
    <thetext>Committed r286844 (245077@main): &lt;https://commits.webkit.org/245077@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446702.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444826</attachid>
            <date>2021-11-19 09:50:32 -0800</date>
            <delta_ts>2021-12-08 13:53:19 -0800</delta_ts>
            <desc>Patch 1.0</desc>
            <filename>bug-233369-20211119185030.patch</filename>
            <type>text/plain</type>
            <size>27111</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM2YjhmNjViYjY0MDFmNjNmNTJjNmYxMjc1MTQy
MjM1ZjdhMzkwNmUuLmVkOWZlYjFlYzhkMGNmZDQ5ZGZhY2NlODk5NmExNTZmMDUxZDYyNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTE5ICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IGEgc3BlY2lhbGl6ZWQgQ1NTTmFtZUNvbXBsZXRpb25zIGZyb20gQ1NTQ29tcGxl
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzM2OQorICAgICAgICA8cmRhcjovLzgzMjA2NTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGBXSS5DU1NOYW1lQ29tcGxldGlvbnNgIGlzIGEgbG9u
Zy1saXZlZCBvYmplY3QgdGhhdCBob2xkcyB0aGUgbGlzdCBvZiBhbGwgQ1NTIHByb3BlcnRpZXMK
KyAgICAgICAgc3VwcG9ydGVkIGJ5IHRoZSB0YXJnZXQuIEl0IGlzIGluc3RhbnRpYXRlZCBvbmx5
IG9uY2Ugb24gV2ViIEluc3BlY3RvciBzdGFydHVwLgorCisgICAgICAgIEJ5IGNvbnRyYXN0LCBg
V0kuQ1NTQ29tcGxldGlvbnNgIGlzIGFuIG9iamVjdCBpbnN0YW50aWF0ZWQgYXMgb2Z0ZW4gYXMg
bmVlZGVkIHdpdGgKKyAgICAgICAgbGlzdHMgb2YgcHJvcGVydHkgdmFsdWVzLCBDU1MgZnVuY3Rp
b24gdmFsdWVzLCBldGMuIEl0IGhvbGRzIHRoZSBnZW5lcmljIGxvZ2ljIGZvcgorICAgICAgICBt
YXRjaGluZyB2YWx1ZXMgYWdhaW5zdCBhIGdpdmVuIHF1ZXJ5LgorCisgICAgICAgIFRoZSBzcGVj
aWFsaXplZCBsb2dpYyBmb3IgQ1NTIHByb3BlcnR5IG5hbWVzIHdhcyBtaXhlZC1pbiB3aXRoIHRo
ZSBnZW5lcmljIGxvZ2ljIGluIGBXSS5DU1NDb21wbGV0aW9uc2AuCisgICAgICAgIFRoZSBtYWlu
IGRpZmZlcmVuY2UgaXMgaW4gdGhlIGZvcm1hdCBvZiB0aGUgcGF5bG9hZCBwcm92aWRlZDoKKyAg
ICAgICAgLSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGgga2V5L3ZhbHVlIHBhaXJzIGZvciBgV0ku
Q1NTTmFtZUNvbXBsZXRpb25zYC4KKyAgICAgICAgLSBhbiBhcnJheSBvZiBzdHJpbmdzIGZvciBn
ZW5lcmFsIHB1cnBvc2UgYFdJLkNTU0NvbXBsZXRpb25zYC4KKworICAgICAgICBUaGlzIHBhdGNo
IHJlZHVjZXMgdGhlIGNvbXBsZXhpdHkgaW4gYFdJLkNvbXBsZXRpb25zYDoKKyAgICAgICAgLSBt
b3ZlcyB0aGUgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gbWV0aG9kIHRvIGBXSS5jc3NNYW5hZ2Vy
LmluaXRpYWxpemVDU1NDb21wbGV0aW9uc2AuCisgICAgICAgIC0gc2ltcGxpZmllcyBgV0kuQ29t
cGxldGlvbnNgIGNvbnN0cnVjdG9yIHRvIGV4cGVjdCBqdXN0IGFuIGFycmF5IG9mIHN0cmluZ3Mu
CisgICAgICAgIC0gaW50cm9kdWNlcyBgV0kuQ1NTTmFtZUNvbXBsZXRpb25zYCBhcyBhIHN1Yi1j
bGFzcyBvZiBgV0kuQ1NTQ29tcGxldGlvbnNgIHdoZXJlIGl0cyBjb25zdHJ1Y3RvcgorICAgICAg
ICAgIGlzIHNwZWNpYWxpemVkIHRvIGhhbmRsZSB0aGUgcGF5bG9hZCByZWNlaXZlZCBmcm9tIHRo
ZSBiYWNrZW5kLgorICAgICAgICAtIG1vdmVzIHRoZSBgV0kuQ1NTTmFtZUNvbXBsZXRpb25zYCBp
bnN0YW5jZSB0byBgV0kuY3NzTWFuYWdlci5jc3NOYW1lQ29tcGxldGlvbnNgLgorICAgICAgICAt
IHJlbW92ZXMgdW51c2VkIGFjY2Vzc29ycyBmb3IgbmF2aWdhdGluZyB0aGUgbGlzdCBvZiBtYXRj
aGVkIGNvbXBsZXRpb25zLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL01haW4uanM6
CisgICAgICAgIChXSS5wZXJmb3JtT25lVGltZUZyb250ZW5kSW5pdGlhbGl6YXRpb25zVXNpbmdU
YXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5q
czoKKyAgICAgICAgKFdJLkNTU01hbmFnZXIpOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90
b3R5cGUuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLik6CisgICAgICAgIChXSS5DU1NNYW5hZ2Vy
LnByb3RvdHlwZS5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuY29sbGVjdFByb3BlcnR5TmFtZUZv
ckNvZGVNaXJyb3IpOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6
ZUNTU0NvbXBsZXRpb25zLnByb3BlcnRpZXNDYWxsYmFjayk6CisgICAgICAgIChXSS5DU1NNYW5h
Z2VyLnByb3RvdHlwZS5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuZm9udEZhbWlseU5hbWVzQ2Fs
bGJhY2spOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZUNTU0Nv
bXBsZXRpb25zKToKKyAgICAgICAgTW92ZWQgdGhlIGluaXRpYWxpemlhdGlvbiBtZXRob2QgZm9y
IG9iamVjdHMgdXNlZCB0byBnZXQgQ1NTIGNvbXBsZXRpb25zCisgICAgICAgIGZyb20gYFdJLkNT
U0NvbXBsZXRpb25zYCB3aXRoIGRhdGEgZnJvbSB0aGUgYmFja2VkIHRvIGEgbW9yZSBhcHByb3By
aWF0ZSBwbGFjZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1p
cnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuQ29kZU1pcnJvckNvbXBs
ZXRpb25Db250cm9sbGVyLnByb3RvdHlwZS5fZ2VuZXJhdGVDU1NDb21wbGV0aW9ucyk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTQ29tcGxldGlvbnMuanM6CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucyk6Cisg
ICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuX2ZpcnN0SW5kZXhPZlByZWZpeCk6
CisKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucy4p
OiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBs
ZXRpb25zLmNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkNTU0NvbXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucy5wcm9wZXJ0aWVz
Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6
ZUNTU0NvbXBsZXRpb25zLmZvbnRGYW1pbHlOYW1lc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkNTU0NvbXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyk6IERlbGV0ZWQu
CisgICAgICAgIE1vdmVkIHRvIGBXSS5DU1NNYW5hZ2VyYC4KKworICAgICAgICAoV0kuQ1NTQ29t
cGxldGlvbnMucHJvdG90eXBlLm5leHQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxl
dGlvbnMucHJvdG90eXBlLnByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNTU0NvbXBs
ZXRpb25zLnByb3RvdHlwZS5fY2xvc2VzdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZWQgdW51
c2VkIG1ldGhvZHMgZm9yIG5hdmlnYXRpbmcgdGhlIGNvbXBsZXRpb25zIGxpc3QuCisgICAgICAg
IFRoaXMgYmVoYXZpb3IgaXMgZW5jYXBzdWxhdGVkIGluIGBXSS5Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3YC4KKworICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmlzVmFsaWRQ
cm9wZXJ0eU5hbWUpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCB0byBgV0kuQ1NTTmFtZUNvbXBs
ZXRpb25zYC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21w
bGV0aW9ucy5qczoKKyAgICAgICAgKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFs
UHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NOYW1lQ29t
cGxldGlvbnMuanM6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTTmFtZUNvbXBsZXRpb25zKToKKyAg
ICAgICAgKFdJLkNTU05hbWVDb21wbGV0aW9ucy5wcm90b3R5cGUuaXNWYWxpZFByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9UZXN0L1Rlc3QuanM6CisgICAgICAgIChXSS5wZXJmb3JtT25lVGltZUZyb250ZW5k
SW5pdGlhbGl6YXRpb25zVXNpbmdUYXJnZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRT
dHlsZVByb3BlcnR5LnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOgorICAgICAgICAoV0kuU3ByZWFk
c2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fYWRkQ1NTRG9jdW1lbnRhdGlvbkJ1dHRvbik6
CisKIDIwMjEtMTEtMTcgIFJhenZhbiBDYWxpbWFuICA8cmNhbGltYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgZnV6enkgbWF0Y2hpbmcgaW4gQ1NTIGNvbXBs
ZXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKaW5kZXggNGNjYTJjNzU1OTVlMGFkMDg1MTBiNjU0NmNkOWM4M2JiNGVhZWRkMS4uYzk2
MTYxOWRmZGVlZWM2ODg1YmQwMjVjZWIzYThlZGIyNTQ2ZGYzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNjA2LDcgKzYwNiw3
IEBAIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCA9
IGZ1bmN0aW9uKHRhcmdldCkKIAogICAgIGlmICghV0kuX19kaWRQZXJmb3JtQ1NTSW5pdGlhbGl6
YXRpb24gJiYgdGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpIHsKICAgICAgICAgV0kuX19kaWRQZXJm
b3JtQ1NTSW5pdGlhbGl6YXRpb24gPSB0cnVlOwotICAgICAgICBXSS5DU1NDb21wbGV0aW9ucy5p
bml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5p
bml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KTsKICAgICB9CiB9OwogCkBAIC03OTMsNyAr
NzkzLDcgQEAgV0kuYWN0aXZhdGVFeHRyYURvbWFpbnMgPSBmdW5jdGlvbihkb21haW5zKQogICAg
ICAgICAgICAgV0kucGFnZVRhcmdldCA9IFdJLm1haW5UYXJnZXQ7CiAKICAgICAgICAgaWYgKFdJ
Lm1haW5UYXJnZXQuaGFzRG9tYWluKCJDU1MiKSkKLSAgICAgICAgICAgIFdJLkNTU0NvbXBsZXRp
b25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyhXSS5hc3N1bWluZ01haW5UYXJnZXQoKSk7Cisg
ICAgICAgICAgICBXSS5jc3NNYW5hZ2VyLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyhXSS5hc3N1
bWluZ01haW5UYXJnZXQoKSk7CiAKICAgICAgICAgaWYgKFdJLm1haW5UYXJnZXQuaGFzRG9tYWlu
KCJET00iKSkKICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuZW5zdXJlRG9jdW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DU1NNYW5hZ2VyLmpzCmluZGV4IDRhM2E3YTQ3NmU5NGJmMDUxMmE5N2E1YmYyYmVh
ZTdiZjMzNGY0MGMuLmUyNWIzZDk0ZTIzZjI2ODg0YzJhNjRhNzVmNDRlY2FiZTUyNTU5NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpAQCAtNDgsNiArNDgsOCBAQCBXSS5DU1NNYW5hZ2Vy
ID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9tb2Rp
ZmllZFN0eWxlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlID0g
bnVsbDsKICAgICAgICAgdGhpcy5fZm9yY2VkQXBwZWFyYW5jZSA9IG51bGw7CisKKyAgICAgICAg
dGhpcy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwogICAgIH0KIAogICAgIC8vIFRhcmdldApA
QCAtNTgsNiArNjAsOTIgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgICAgIHRhcmdldC5DU1NBZ2VudC5lbmFibGUoKTsKICAgICB9
CiAKKyAgICBpbml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpOworCisgICAgICAgIGlmICh0
aGlzLmNzc05hbWVDb21wbGV0aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBm
dW5jdGlvbiBwcm9wZXJ0aWVzQ2FsbGJhY2soZXJyb3IsIGNzc1Byb3BlcnRpZXMpIHsKKyAgICAg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IHRoaXMuY3NzTmFtZUNvbXBsZXRpb25zID0gbmV3IFdJLkNTU05hbWVDb21wbGV0aW9ucyhjc3NQ
cm9wZXJ0aWVzKTsKKworICAgICAgICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFkZEN1
c3RvbUNvbXBsZXRpb25zKGNzc1Byb3BlcnRpZXMpOworCisgICAgICAgICAgICAvLyBDb2RlTWly
cm9yIGlzIG5vdCBpbmNsdWRlZCBieSB0ZXN0cyBzbyB3ZSBzaG91bGRuJ3QgYXNzdW1lIGl0IGFs
d2F5cyBleGlzdHMuCisgICAgICAgICAgICAvLyBJZiBpdCBpc24ndCBhdmFpbGFibGUgd2Ugc2tp
cCBNSU1FIHR5cGUgYXNzb2NpYXRpb25zLgorICAgICAgICAgICAgaWYgKCF3aW5kb3cuQ29kZU1p
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0
eU5hbWVzRm9yQ29kZU1pcnJvciA9IHt9OworICAgICAgICAgICAgdmFyIHZhbHVlS2V5d29yZHNG
b3JDb2RlTWlycm9yID0geyJpbmhlcml0IjogdHJ1ZSwgImluaXRpYWwiOiB0cnVlLCAidW5zZXQi
OiB0cnVlLCAicmV2ZXJ0IjogdHJ1ZSwgInZhciI6IHRydWUsICJlbnYiOiB0cnVlfTsKKyAgICAg
ICAgICAgIHZhciBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvciA9IHt9OworCisgICAgICAgICAg
ICBmdW5jdGlvbiBuYW1lRm9yQ29kZU1pcnJvcihuYW1lKSB7CisgICAgICAgICAgICAgICAgLy8g
Q29kZU1pcnJvciBwYXJzZXMgdGhlIHZlbmRvciBwcmVmaXggc2VwYXJhdGUgZnJvbSB0aGUgcHJv
cGVydHkgb3Iga2V5d29yZCBuYW1lLAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8g
c3RyaXAgdmVuZG9yIHByZWZpeGVzIGZyb20gb3VyIG5hbWVzLiBBbHNvIHN0cmlwIGZ1bmN0aW9u
IHBhcmVudGhlc2lzLgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoL14tW14t
XSstLywgIiIpLnJlcGxhY2UoL1woXCkkLywgIiIpLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWly
cm9yKHByb3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMgY2FuIGFs
c28gYmUgdmFsdWUga2V5d29yZHMsIGxpa2Ugd2hlbiB1c2VkIGluIGEgdHJhbnNpdGlvbi4KKyAg
ICAgICAgICAgICAgICAvLyBTbyB3ZSBhZGQgdGhlbSB0byBib3RoIGxpc3RzLgorICAgICAgICAg
ICAgICAgIHZhciBjb2RlTWlycm9yUHJvcGVydHlOYW1lID0gbmFtZUZvckNvZGVNaXJyb3IocHJv
cGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcltj
b2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7CisgICAgICAgICAgICAgICAgdmFsdWVLZXl3
b3Jkc0ZvckNvZGVNaXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0gPSB0cnVlOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBjc3NQcm9wZXJ0aWVz
KQorICAgICAgICAgICAgICAgIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKHByb3Bl
cnR5Lm5hbWUpOworCisgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXApIHsKKyAgICAgICAgICAgICAg
ICB2YXIga2V5d29yZHMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29y
ZE1hcFtwcm9wZXJ0eU5hbWVdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
a2V5d29yZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBudW1i
ZXJzLCBsaWtlIHRoZSBvbmVzIGRlZmluZWQgZm9yIGZvbnQtd2VpZ2h0LgorICAgICAgICAgICAg
ICAgICAgICBpZiAoa2V5d29yZHNbaV0gPT09IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5BbGxQ
cm9wZXJ0eU5hbWVzUGxhY2Vob2xkZXIgfHwgIWlzTmFOKE51bWJlcihrZXl3b3Jkc1tpXSkpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZh
bHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9yKGtleXdvcmRzW2ldKV0g
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMuZm9yRWFjaChmdW5jdGlvbihjb2xvck5h
bWUpIHsKKyAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcltuYW1lRm9y
Q29kZU1pcnJvcihjb2xvck5hbWUpXSA9IHRydWU7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5cGUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbW9kZVNwZWMgPSBDb2RlTWlycm9yLnJlc29sdmVNb2RlKG1pbWVUeXBl
KTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLnByb3BlcnR5S2V5
d29yZHMpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLnZhbHVlS2V5
d29yZHMpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLmNvbG9yS2V5
d29yZHMpOworCisgICAgICAgICAgICAgICAgbW9kZVNwZWMucHJvcGVydHlLZXl3b3JkcyA9IHBy
b3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yOworICAgICAgICAgICAgICAgIG1vZGVTcGVjLnZhbHVl
S2V5d29yZHMgPSB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcjsKKyAgICAgICAgICAgICAgICBt
b2RlU3BlYy5jb2xvcktleXdvcmRzID0gY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3I7CisKKyAg
ICAgICAgICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUobWltZVR5cGUsIG1vZGVTcGVjKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNTU01vZGUoInRl
eHQvY3NzIik7CisgICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9yQ1NTTW9kZSgidGV4dC94LXNj
c3MiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGZvbnRGYW1pbHlOYW1lc0NhbGxi
YWNrKGVycm9yLCBmb250RmFtaWx5TmFtZXMpIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0
aW9ucy5hZGRQcm9wZXJ0eUNvbXBsZXRpb25WYWx1ZXMoImZvbnQtZmFtaWx5IiwgZm9udEZhbWls
eU5hbWVzKTsKKyAgICAgICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRQcm9wZXJ0
eUNvbXBsZXRpb25WYWx1ZXMoImZvbnQiLCBmb250RmFtaWx5TmFtZXMpOworICAgICAgICB9CisK
KyAgICAgICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMocHJvcGVy
dGllc0NhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQo
IkNTUy5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMiKSkKKyAgICAgICAgICAgIHRh
cmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoZm9udEZhbWls
eU5hbWVzQ2FsbGJhY2spOworICAgIH0KKwogICAgIC8vIFN0YXRpYwogCiAgICAgc3RhdGljIHN1
cHBvcnRzSW5zcGVjdG9yU3R5bGVTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRy
b2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMKaW5kZXggMTMxMDU4NTkwZjMxNmRj
ZTg2NWUyZTdiZDVmNWVjZWQ5M2FkYzhiNi4uZTMyNGIwNWZjMDE4YzA4YTg2ZTNjNjRlYWI3OTll
NjUyNGI5MDQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JD
b21wbGV0aW9uQ29udHJvbGxlci5qcwpAQCAtNjI3LDcgKzYyNyw3IEBAIFdJLkNvZGVNaXJyb3JD
b21wbGV0aW9uQ29udHJvbGxlciA9IGNsYXNzIENvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxl
ciBleHRlbmRzCiAgICAgICAgIHRoaXMuX2ltcGxpY2l0U3VmZml4ID0gc3VmZml4ICE9PSAiOiIg
PyAiOiAiIDogIiI7CiAKICAgICAgICAgLy8gQ29tcGxldGUgcHJvcGVydHkgbmFtZXMuCi0gICAg
ICAgIHJldHVybiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0
aCh0aGlzLl9wcmVmaXgpOworICAgICAgICByZXR1cm4gV0kuY3NzTWFuYWdlci5jc3NOYW1lQ29t
cGxldGlvbnMuc3RhcnRzV2l0aCh0aGlzLl9wcmVmaXgpOwogICAgIH0KIAogICAgIF9nZW5lcmF0
ZUphdmFTY3JpcHRDb21wbGV0aW9ucyhtYWluVG9rZW4sIGJhc2UsIHN1ZmZpeCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1OTE4YjY2ZWZj
NTYxZTNlODkxNGUwNzQ2OGE5MWZiODJiNDk5ODE2Li41M2VlMTA3ZjljNzg1NGQ3MjBjYjAxOGVl
ZDMxMDRiNWFlZDFjMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCkBAIC0zOTQsNiArMzk0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NT
U0dyb3VwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU0tleXdv
cmRDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NO
YW1lQ29tcGxldGlvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NT
UHJvcGVydHkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTUnVsZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NTZWxlY3Rvci5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggMGQ5Yzk0ZTNlNGUxOWU2MDUzODlh
MzczNzg1NTVjNGVmM2IxYmRkMS4uMWQyY2QxYTJhMGMzN2FiNGI2N2Q3ZGQxNjMyN2IxNDcwYWMz
YTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMzMsMjcgKzMzLDE0IEBACiAKIFdJ
LkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKIHsKLSAgICBjb25zdHJ1Y3Rv
cihwcm9wZXJ0aWVzLCBhY2NlcHRFbXB0eVByZWZpeCkKKyAgICBjb25zdHJ1Y3Rvcih2YWx1ZXMs
IGFjY2VwdEVtcHR5UHJlZml4ID0gZmFsc2UpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dChBcnJheS5pc0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisKICAgICAgICAgdGhpcy5fdmFsdWVz
ID0gW107CiAKLSAgICAgICAgLy8gVGhlIGBwcm9wZXJ0aWVzYCBwYXJhbWV0ZXIgY2FuIGJlIGVp
dGhlciBhIGxpc3Qgb2Ygb2JqZWN0cyB3aXRoICduYW1lJyAvICdsb25naGFuZCcKLSAgICAgICAg
Ly8gcHJvcGVydGllcyB3aGVuIGluaXRpYWxpemVkIGZyb20gdGhlIHByb3RvY29sIGZvciBDU1ND
b21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuCi0gICAgICAgIC8vIE9yIGl0IG1heSBqdXN0
IGEgbGlzdCBvZiBzdHJpbmdzIHdoZW4gcXVpY2tseSBpbml0aWFsaXplZCBmb3Igb3RoZXIgY29t
cGxldGlvbiBwdXJwb3Nlcy4KLSAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoICYmIHR5cGVv
ZiBwcm9wZXJ0aWVzWzBdID09PSAic3RyaW5nIikKLSAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5w
dXNoQWxsKHByb3BlcnRpZXMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAodmFy
IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlO
YW1lID0gcHJvcGVydHkubmFtZTsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9w
ZXJ0eU5hbWUpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2gocHJvcGVydHlO
YW1lKTsKLQotICAgICAgICAgICAgICAgIGxldCBhbGlhc2VzID0gcHJvcGVydHkuYWxpYXNlczsK
LSAgICAgICAgICAgICAgICBpZiAoYWxpYXNlcykKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
dmFsdWVzLnB1c2hBbGwoYWxpYXNlcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKHZhbHVlcy5sZW5ndGggJiYgdHlwZW9mIHZhbHVlc1swXSA9PT0gInN0cmluZyIpCisg
ICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbCh2YWx1ZXMpOwogCiAgICAgICAgIHRoaXMu
X3ZhbHVlcy5zb3J0KCk7CiAKQEAgLTYzLDk3ICs1MCw2IEBAIFdJLkNTU0NvbXBsZXRpb25zID0g
Y2xhc3MgQ1NTQ29tcGxldGlvbnMKIAogICAgIC8vIFN0YXRpYwogCi0gICAgc3RhdGljIGluaXRp
YWxpemVDU1NDb21wbGV0aW9ucyh0YXJnZXQpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0YXJnZXQuaGFzRG9tYWluKCJDU1MiKSk7Ci0KLSAgICAgICAgaWYgKFdJLkNTU0NvbXBsZXRp
b25zLmNzc05hbWVDb21wbGV0aW9ucykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBm
dW5jdGlvbiBwcm9wZXJ0aWVzQ2FsbGJhY2soZXJyb3IsIGNzc1Byb3BlcnRpZXMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9IG5ldyBXSS5D
U1NDb21wbGV0aW9ucyhjc3NQcm9wZXJ0aWVzLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgIFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5hZGRDdXN0b21Db21wbGV0aW9ucyhjc3NQcm9wZXJ0aWVzKTsK
LQotICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBpcyBub3QgaW5jbHVkZWQgYnkgdGVzdHMgc28g
d2Ugc2hvdWxkbid0IGFzc3VtZSBpdCBhbHdheXMgZXhpc3RzLgotICAgICAgICAgICAgLy8gSWYg
aXQgaXNuJ3QgYXZhaWxhYmxlIHdlIHNraXAgTUlNRSB0eXBlIGFzc29jaWF0aW9ucy4KLSAgICAg
ICAgICAgIGlmICghd2luZG93LkNvZGVNaXJyb3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lc0ZvckNvZGVNaXJyb3IgPSB7fTsKLSAgICAg
ICAgICAgIHZhciB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvciA9IHsiaW5oZXJpdCI6IHRydWUs
ICJpbml0aWFsIjogdHJ1ZSwgInVuc2V0IjogdHJ1ZSwgInJldmVydCI6IHRydWUsICJ2YXIiOiB0
cnVlLCAiZW52IjogdHJ1ZX07Ci0gICAgICAgICAgICB2YXIgY29sb3JLZXl3b3Jkc0ZvckNvZGVN
aXJyb3IgPSB7fTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gbmFtZUZvckNvZGVNaXJyb3IobmFt
ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDb2RlTWlycm9yIHBhcnNlcyB0
aGUgdmVuZG9yIHByZWZpeCBzZXBhcmF0ZSBmcm9tIHRoZSBwcm9wZXJ0eSBvciBrZXl3b3JkIG5h
bWUsCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBzdHJpcCB2ZW5kb3IgcHJlZml4
ZXMgZnJvbSBvdXIgbmFtZXMuIEFsc28gc3RyaXAgZnVuY3Rpb24gcGFyZW50aGVzaXMuCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXi1bXi1dKy0vLCAiIikucmVwbGFjZSgv
XChcKSQvLCAiIikudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ZnVuY3Rpb24gY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVNaXJyb3IocHJvcGVydHlOYW1lKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFByb3BlcnRpZXMgY2FuIGFsc28gYmUg
dmFsdWUga2V5d29yZHMsIGxpa2Ugd2hlbiB1c2VkIGluIGEgdHJhbnNpdGlvbi4KLSAgICAgICAg
ICAgICAgICAvLyBTbyB3ZSBhZGQgdGhlbSB0byBib3RoIGxpc3RzLgotICAgICAgICAgICAgICAg
IHZhciBjb2RlTWlycm9yUHJvcGVydHlOYW1lID0gbmFtZUZvckNvZGVNaXJyb3IocHJvcGVydHlO
YW1lKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcltjb2RlTWly
cm9yUHJvcGVydHlOYW1lXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdmFsdWVLZXl3b3Jkc0Zv
ckNvZGVNaXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0gPSB0cnVlOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBjc3NQcm9wZXJ0aWVzKQotICAg
ICAgICAgICAgICAgIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKHByb3BlcnR5Lm5h
bWUpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gV0kuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXApIHsKLSAgICAgICAgICAgICAgICB2YXIg
a2V5d29yZHMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFtw
cm9wZXJ0eU5hbWVdOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5d29y
ZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBudW1iZXJzLCBs
aWtlIHRoZSBvbmVzIGRlZmluZWQgZm9yIGZvbnQtd2VpZ2h0LgotICAgICAgICAgICAgICAgICAg
ICBpZiAoa2V5d29yZHNbaV0gPT09IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9wZXJ0
eU5hbWVzUGxhY2Vob2xkZXIgfHwgIWlzTmFOKE51bWJlcihrZXl3b3Jkc1tpXSkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlS2V5
d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9yKGtleXdvcmRzW2ldKV0gPSB0cnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMuZm9yRWFjaChmdW5jdGlvbihjb2xvck5hbWUpIHsK
LSAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcltuYW1lRm9yQ29kZU1p
cnJvcihjb2xvck5hbWUpXSA9IHRydWU7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAg
ZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5cGUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdmFyIG1vZGVTcGVjID0gQ29kZU1pcnJvci5yZXNvbHZlTW9kZSht
aW1lVHlwZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy5wcm9w
ZXJ0eUtleXdvcmRzKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy52
YWx1ZUtleXdvcmRzKTsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy5j
b2xvcktleXdvcmRzKTsKLQotICAgICAgICAgICAgICAgIG1vZGVTcGVjLnByb3BlcnR5S2V5d29y
ZHMgPSBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcjsKLSAgICAgICAgICAgICAgICBtb2RlU3Bl
Yy52YWx1ZUtleXdvcmRzID0gdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3I7Ci0gICAgICAgICAg
ICAgICAgbW9kZVNwZWMuY29sb3JLZXl3b3JkcyA9IGNvbG9yS2V5d29yZHNGb3JDb2RlTWlycm9y
OwotCi0gICAgICAgICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKG1pbWVUeXBlLCBtb2Rl
U3BlYyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHVwZGF0ZUNvZGVNaXJyb3JDU1NN
b2RlKCJ0ZXh0L2NzcyIpOwotICAgICAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNTU01vZGUoInRl
eHQveC1zY3NzIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBmb250RmFtaWx5TmFt
ZXNDYWxsYmFjayhlcnJvciwgZm9udEZhbWlseU5hbWVzKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBXSS5D
U1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkUHJvcGVydHlDb21wbGV0aW9uVmFsdWVzKCJmb250LWZh
bWlseSIsIGZvbnRGYW1pbHlOYW1lcyk7Ci0gICAgICAgICAgICBXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuYWRkUHJvcGVydHlDb21wbGV0aW9uVmFsdWVzKCJmb250IiwgZm9udEZhbWlseU5hbWVz
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhcmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRDU1NQ
cm9wZXJ0aWVzKHByb3BlcnRpZXNDYWxsYmFjayk7Ci0gICAgICAgIGlmICh0YXJnZXQuaGFzQ29t
bWFuZCgiQ1NTLmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyIpKQotICAgICAgICAg
ICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhmb250
RmFtaWx5TmFtZXNDYWxsYmFjayk7Ci0gICAgfQotCiAgICAgc3RhdGljIGNvbXBsZXRlVW5iYWxh
bmNlZFZhbHVlKHZhbHVlKQogICAgIHsKICAgICAgICAgY29uc3QgU3RhdGUgPSB7CkBAIC0zMTEs
NDUgKzIwNyw4IEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKIAog
ICAgICAgICByZXR1cm4gZm91bmRJbmRleDsKICAgICB9Ci0KLSAgICBuZXh0KHN0ciwgcHJlZml4
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3Nlc3Qoc3RyLCBwcmVmaXgsIDEpOwot
ICAgIH0KLQotICAgIHByZXZpb3VzKHN0ciwgcHJlZml4KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2Nsb3Nlc3Qoc3RyLCBwcmVmaXgsIC0xKTsKLSAgICB9Ci0KLSAgICBfY2xvc2VzdChz
dHIsIHByZWZpeCwgc2hpZnQpCi0gICAgewotICAgICAgICBpZiAoIXN0cikKLSAgICAgICAgICAg
IHJldHVybiAiIjsKLQotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl92YWx1ZXMuaW5kZXhPZihz
dHIpOwotICAgICAgICBpZiAoaW5kZXggPT09IC0xKQotICAgICAgICAgICAgcmV0dXJuICIiOwot
Ci0gICAgICAgIGlmICghcHJlZml4KSB7Ci0gICAgICAgICAgICBpbmRleCA9IChpbmRleCArIHRo
aXMuX3ZhbHVlcy5sZW5ndGggKyBzaGlmdCkgJSB0aGlzLl92YWx1ZXMubGVuZ3RoOwotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlc1tpbmRleF07Ci0gICAgICAgIH0KLQotICAgICAgICB2
YXIgcHJvcGVydGllc1dpdGhQcmVmaXggPSB0aGlzLnN0YXJ0c1dpdGgocHJlZml4KTsKLSAgICAg
ICAgdmFyIGogPSBwcm9wZXJ0aWVzV2l0aFByZWZpeC5pbmRleE9mKHN0cik7Ci0gICAgICAgIGog
PSAoaiArIHByb3BlcnRpZXNXaXRoUHJlZml4Lmxlbmd0aCArIHNoaWZ0KSAlIHByb3BlcnRpZXNX
aXRoUHJlZml4Lmxlbmd0aDsKLSAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNXaXRoUHJlZml4W2pd
OwotICAgIH0KLQotICAgIGlzVmFsaWRQcm9wZXJ0eU5hbWUobmFtZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl92YWx1ZXMuaW5jbHVkZXMobmFtZSk7Ci0gICAgfQogfTsKIAotV0kuQ1NT
Q29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zID0gbnVsbDsKLQogV0kuQ1NTQ29tcGxldGlv
bnMubGVuZ3RoVW5pdHMgPSBuZXcgU2V0KFsKICAgICAiY2giLAogICAgICJjbSIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29y
ZENvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwppbmRleCBmMGJjMjc1ZDlmZGU4MTE5N2YwZjc4
NWQzMjBlMmJkM2JhYzk4OWNlLi5lODA0ZjZkN2FlMDUxNWFhYmVlZDU1YWFkODY2YjZkY2VlODc4
OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKQEAgLTQxLDEzICs0
MSwxMyBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSA9
IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLAogICAgICAgICByZXR1cm4ge3ByZWZpeDog
dGV4dCwgY29tcGxldGlvbnM6IFtdfTsKIAogICAgIGlmICghdGV4dC5sZW5ndGggJiYgYWxsb3dF
bXB0eVByZWZpeCkKLSAgICAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zOiBX
SS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMudmFsdWVzfTsKKyAgICAgICAgcmV0
dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zOiBXSS5jc3NNYW5hZ2VyLmNzc05hbWVDb21w
bGV0aW9ucy52YWx1ZXN9OwogCiAgICAgbGV0IGNvbXBsZXRpb25zOwogICAgIGlmICh1c2VGdXp6
eU1hdGNoaW5nKQotICAgICAgICBjb21wbGV0aW9ucyA9IFdJLkNTU0NvbXBsZXRpb25zLmNzc05h
bWVDb21wbGV0aW9ucy5leGVjdXRlUXVlcnkodGV4dCk7CisgICAgICAgIGNvbXBsZXRpb25zID0g
V0kuY3NzTWFuYWdlci5jc3NOYW1lQ29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KHRleHQpOwogICAg
IGVsc2UKLSAgICAgICAgY29tcGxldGlvbnMgPSBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29t
cGxldGlvbnMuc3RhcnRzV2l0aCh0ZXh0KTsKKyAgICAgICAgY29tcGxldGlvbnMgPSBXSS5jc3NN
YW5hZ2VyLmNzc05hbWVDb21wbGV0aW9ucy5zdGFydHNXaXRoKHRleHQpOwogCiAgICAgcmV0dXJu
IHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zfTsKIH07CkBAIC0xNjksMTIgKzE2OSwxMyBAQCBX
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eU5h
bWUpCiAgICAgICAgICAgICBhZGRLZXl3b3Jkc0Zvck5hbWUobG9uZ2hhbmROYW1lKTsKICAgICB9
CiAKLSAgICBpZiAoYWNjZXB0ZWRLZXl3b3Jkcy5pbmNsdWRlcyhXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSAmJiBXSS5DU1NDb21wbGV0aW9ucy5j
c3NOYW1lQ29tcGxldGlvbnMpIHsKKyAgICBpZiAoYWNjZXB0ZWRLZXl3b3Jkcy5pbmNsdWRlcyhX
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSAmJiBX
SS5jc3NNYW5hZ2VyLmNzc05hbWVDb21wbGV0aW9ucykgewogICAgICAgICBhY2NlcHRlZEtleXdv
cmRzLnJlbW92ZShXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNl
aG9sZGVyKTsKLSAgICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5wdXNoQWxsKFdJLkNTU0NvbXBsZXRp
b25zLmNzc05hbWVDb21wbGV0aW9ucy52YWx1ZXMpOworICAgICAgICBhY2NlcHRlZEtleXdvcmRz
LnB1c2hBbGwoV0kuY3NzTWFuYWdlci5jc3NOYW1lQ29tcGxldGlvbnMudmFsdWVzKTsKICAgICB9
CiAKLSAgICByZXR1cm4gbmV3IFdJLkNTU0NvbXBsZXRpb25zKEFycmF5LmZyb20obmV3IFNldChh
Y2NlcHRlZEtleXdvcmRzKSksIHRydWUpOworICAgIGNvbnN0IGFjY2VwdEVtcHR5UHJlZml4ID0g
dHJ1ZTsKKyAgICByZXR1cm4gbmV3IFdJLkNTU0NvbXBsZXRpb25zKEFycmF5LmZyb20obmV3IFNl
dChhY2NlcHRlZEtleXdvcmRzKSksIGFjY2VwdEVtcHR5UHJlZml4KTsKIH07CiAKIFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5pc0NvbG9yQXdhcmVQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUpCkBA
IC0yMjUsNyArMjI2LDggQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0aW9uID0g
ZnVuY3Rpb24oZnVuY3Rpb25OYW1lKQogICAgICAgICBzdWdnZXN0aW9ucy5wdXNoQWxsKFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5fY29sb3JzKTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdJ
LkNTU0NvbXBsZXRpb25zKHN1Z2dlc3Rpb25zLCB0cnVlKTsKKyAgICBjb25zdCBhY2NlcHRFbXB0
eVByZWZpeCA9IHRydWU7CisgICAgcmV0dXJuIG5ldyBXSS5DU1NDb21wbGV0aW9ucyhzdWdnZXN0
aW9ucywgYWNjZXB0RW1wdHlQcmVmaXgpOwogfTsKIAogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
LmFkZEN1c3RvbUNvbXBsZXRpb25zID0gZnVuY3Rpb24ocHJvcGVydGllcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NOYW1lQ29tcGxl
dGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
TmFtZUNvbXBsZXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlZDU4OGZhMDhlMjU1NWYxM2U5OGM1ZTAz
NTEzNmNjN2RkNzYyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTTmFtZUNvbXBsZXRpb25zLmpzCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTmlraXRhIFZhc2lseWV2LiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEpvc2VwaCBQZWNvcmFyby4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5DU1NOYW1lQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NOYW1lQ29tcGxldGlvbnMg
ZXh0ZW5kcyBXSS5DU1NDb21wbGV0aW9ucworeworICAgIGNvbnN0cnVjdG9yKHByb3BlcnRpZXMs
IGFjY2VwdEVtcHR5UHJlZml4KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXku
aXNBcnJheShwcm9wZXJ0aWVzKSwgcHJvcGVydGllcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHByb3BlcnRpZXNbMF0ubmFtZSwgcHJvcGVydGllcywgIkV4cGVjdGVkIGFuIGFycmF5IG9mIG9i
amVjdHMgd2l0aCBgbmFtZWAga2V5Iik7CisKKyAgICAgICAgbGV0IHZhbHVlcyA9IFtdOworICAg
ICAgICBmb3IgKGxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChwcm9wZXJ0eS5uYW1lKTsKKworICAgICAgICAgICAgdmFsdWVzLnB1c2gocHJv
cGVydHkubmFtZSk7CisgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wZXJ0eS5hbGlh
c2VzKSkKKyAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaEFsbChwcm9wZXJ0eS5hbGlhc2VzKTsK
KyAgICAgICAgfQorCisgICAgICAgIHN1cGVyKHZhbHVlcywgYWNjZXB0RW1wdHlQcmVmaXgpOwor
ICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgaXNWYWxpZFByb3BlcnR5TmFtZShuYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmluY2x1ZGVzKG5hbWUpOworICAgIH0K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5k
ZXggNzc3MTkwNjVkZDMwNmUyOTJhYjU0ZGJiZDhiNzEzNWFlMjdhNWIwMC4uNWI3NmE1ZGNiODE2
YWQ1YjE5MDBmNTNjNDYxNTcwOTIxYTI1NjdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9DU1NDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9DU1NHcm91cGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvQ1NTTmFtZUNvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0NTU1Byb3BlcnR5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0NTU1J1bGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU2Vs
ZWN0b3IuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IGQzZjJkNTc2ZmIyZTk0M2Y2ZTIzNmM3ZmQ2ODg1Y2U5
MjAyMDVjMzYuLmY4ZjVhMTI5YTYyMzgzNDBlNDRhMTRjOWRlYTI2MzQ3ZjA0NzVmMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAg
LTEyNSw3ICsxMjUsNyBAQCBXSS5wZXJmb3JtT25lVGltZUZyb250ZW5kSW5pdGlhbGl6YXRpb25z
VXNpbmdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCiAgICAgLy8gRklYTUU6IFRoaXMgc2xvd3Mg
ZG93biB0ZXN0IGRlYnVnIGxvZ2dpbmcgY29uc2lkZXJhYmx5LgogICAgIGlmICghV0kuX19kaWRQ
ZXJmb3JtQ1NTSW5pdGlhbGl6YXRpb24gJiYgdGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpIHsKICAg
ICAgICAgV0kuX19kaWRQZXJmb3JtQ1NTSW5pdGlhbGl6YXRpb24gPSB0cnVlOwotICAgICAgICBX
SS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KTsKKyAgICAg
ICAgV0kuY3NzTWFuYWdlci5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KTsKICAgICB9
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKaW5kZXggMWY2
YjczNjE0YTU4MWZhNTI2MzU2ODgxNzk2Mjc0ZWQ1MWY0NjVmZC4uMGViZjFiNGFkMDVkOGFiYjgy
NTA2YjI2MDcyZjU5NzhkY2IyYmViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eS5qcwpAQCAtMzAwLDkgKzMwMCw3IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICBpZiAoIXRoaXMuX3Byb3BlcnR5LnZhbGlkICYmIHRoaXMuX3Byb3BlcnR5Lmhhc090aGVy
VmVuZG9yTmFtZU9yS2V5d29yZCgpKQogICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJvdGhl
ci12ZW5kb3IiKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5faGFzSW52YWxpZFZhcmlhYmxlVmFs
dWUgfHwgKCF0aGlzLl9wcm9wZXJ0eS52YWxpZCAmJiB0aGlzLl9wcm9wZXJ0eS52YWx1ZSAhPT0g
IiIpKSB7Ci0gICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lSXNWYWxpZCA9IGZhbHNlOwotICAg
ICAgICAgICAgaWYgKFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucykKLSAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVJc1ZhbGlkID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFt
ZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSk7Cisg
ICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lSXNWYWxpZCA9IFdJLmNzc01hbmFnZXIuY3NzTmFt
ZUNvbXBsZXRpb25zPy5pc1ZhbGlkUHJvcGVydHlOYW1lKHRoaXMuX3Byb3BlcnR5Lm5hbWUpOwog
CiAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goImhhcy13YXJuaW5nIik7CiAKQEAgLTUzOSw3
ICs1MzcsNyBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVl
dFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMucHJvcGVy
dHkuaXNWYXJpYWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIVdJLkNT
U0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5pc1ZhbGlkUHJvcGVydHlOYW1lKHRoaXMu
X3Byb3BlcnR5Lm5hbWUpKQorICAgICAgICBpZiAoIVdJLmNzc01hbmFnZXIuY3NzTmFtZUNvbXBs
ZXRpb25zPy5pc1ZhbGlkUHJvcGVydHlOYW1lKHRoaXMuX3Byb3BlcnR5Lm5hbWUpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghQ1NTRG9jdW1lbnRhdGlvbi5oYXNPd25Qcm9w
ZXJ0eSh0aGlzLl9wcm9wZXJ0eS5uYW1lKSAmJiAhQ1NTRG9jdW1lbnRhdGlvbi5oYXNPd25Qcm9w
ZXJ0eSh0aGlzLl9wcm9wZXJ0eS5jYW5vbmljYWxOYW1lKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446418</attachid>
            <date>2021-12-08 13:53:23 -0800</date>
            <delta_ts>2021-12-09 05:48:00 -0800</delta_ts>
            <desc>Patch 1.1</desc>
            <filename>bug-233369-20211208225321.patch</filename>
            <type>text/plain</type>
            <size>27253</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRhMjlhNzdjMDIyN2YzYTlmYzU3ODBkZTg3NzIx
YzQ2ODM1MWU2NWQuLjA2OTJiNDQ5YjhmZmNhNTQ1NjlkMDkxNmY5ZjkxNTQ0NjlmMjFjNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTEyLTA4ICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IGEgc3BlY2lhbGl6ZWQgQ1NTTmFtZUNvbXBsZXRpb25zIGZyb20gQ1NTQ29tcGxl
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzM2OQorICAgICAgICA8cmRhcjovLzgzMjA2NTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2Ag
aXMgYSBsb25nLWxpdmVkIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBsaXN0IG9mIGFsbCBDU1MgcHJv
cGVydGllcworICAgICAgICBzdXBwb3J0ZWQgYnkgdGhlIHRhcmdldC4gSXQgaXMgaW5zdGFudGlh
dGVkIG9ubHkgb25jZSBvbiBXZWIgSW5zcGVjdG9yIHN0YXJ0dXAuCisKKyAgICAgICAgQnkgY29u
dHJhc3QsIGBXSS5DU1NDb21wbGV0aW9uc2AgaXMgYW4gb2JqZWN0IGluc3RhbnRpYXRlZCBhcyBv
ZnRlbiBhcyBuZWVkZWQgd2l0aAorICAgICAgICBsaXN0cyBvZiBwcm9wZXJ0eSB2YWx1ZXMsIENT
UyBmdW5jdGlvbiB2YWx1ZXMsIGV0Yy4gSXQgaG9sZHMgdGhlIGdlbmVyaWMgbG9naWMgZm9yCisg
ICAgICAgIG1hdGNoaW5nIHZhbHVlcyBhZ2FpbnN0IGEgZ2l2ZW4gcXVlcnkuCisKKyAgICAgICAg
VGhlIHNwZWNpYWxpemVkIGxvZ2ljIGZvciBDU1MgcHJvcGVydHkgbmFtZXMgd2FzIG1peGVkLWlu
IHdpdGggdGhlIGdlbmVyaWMgbG9naWMgaW4gYFdJLkNTU0NvbXBsZXRpb25zYC4KKyAgICAgICAg
VGhlIG1haW4gZGlmZmVyZW5jZSBpcyBpbiB0aGUgZm9ybWF0IG9mIHRoZSBwYXlsb2FkIHByb3Zp
ZGVkOgorICAgICAgICAtIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBrZXkvdmFsdWUgcGFpcnMg
Zm9yIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2AuCisgICAgICAgIC0gYW4gYXJyYXkg
b2Ygc3RyaW5ncyBmb3IgZ2VuZXJhbCBwdXJwb3NlIGBXSS5DU1NDb21wbGV0aW9uc2AuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IGluIGBXSS5Db21wbGV0aW9u
c2A6CisgICAgICAgIC0gbW92ZXMgdGhlIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1ldGhvZCB0
byBgV0kuY3NzTWFuYWdlci5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnNgLgorICAgICAgICAtIHNp
bXBsaWZpZXMgYFdJLkNvbXBsZXRpb25zYCBjb25zdHJ1Y3RvciB0byBleHBlY3QganVzdCBhbiBh
cnJheSBvZiBzdHJpbmdzLgorICAgICAgICAtIGludHJvZHVjZXMgYFdJLkNTU1Byb3BlcnR5TmFt
ZUNvbXBsZXRpb25zYCBhcyBhIHN1Yi1jbGFzcyBvZiBgV0kuQ1NTQ29tcGxldGlvbnNgIHdoZXJl
IGl0cyBjb25zdHJ1Y3RvcgorICAgICAgICAgIGlzIHNwZWNpYWxpemVkIHRvIGhhbmRsZSB0aGUg
cGF5bG9hZCByZWNlaXZlZCBmcm9tIHRoZSBiYWNrZW5kLgorICAgICAgICAtIG1vdmVzIHRoZSBg
V0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnNgIGluc3RhbmNlIHRvIGBXSS5jc3NNYW5hZ2Vy
LmNzc1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zYC4KKyAgICAgICAgLSByZW1vdmVzIHVudXNlZCBh
Y2Nlc3NvcnMgZm9yIG5hdmlnYXRpbmcgdGhlIGxpc3Qgb2YgbWF0Y2hlZCBjb21wbGV0aW9ucy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kucGVy
Zm9ybU9uZVRpbWVGcm9udGVuZEluaXRpYWxpemF0aW9uc1VzaW5nVGFyZ2V0KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5D
U1NNYW5hZ2VyKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVD
U1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy4pOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90
b3R5cGUuaW5pdGlhbGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKToKKyAgICAgICAgTW92
ZWQgdGhlIGluaXRpYWxpemlhdGlvbiBtZXRob2QgZm9yIG9iamVjdHMgdXNlZCB0byBnZXQgQ1NT
IGNvbXBsZXRpb25zCisgICAgICAgIGZyb20gYFdJLkNTU0NvbXBsZXRpb25zYCB3aXRoIGRhdGEg
ZnJvbSB0aGUgYmFja2VkIHRvIGEgbW9yZSBhcHByb3ByaWF0ZSBwbGFjZS4KKworICAgICAgICAo
V0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZ2V0IHByb3BlcnR5TmFtZUNvbXBsZXRpb25zKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29u
dHJvbGxlci5qczoKKyAgICAgICAgKFdJLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5w
cm90b3R5cGUuX2dlbmVyYXRlQ1NTQ29tcGxldGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRp
b25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLl9maXJzdEluZGV4
T2ZQcmVmaXgpOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgorICAgICAgICAoV0kuQ1NT
Q29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLik6IERlbGV0ZWQuCisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuY29sbGVjdFByb3Bl
cnR5TmFtZUZvckNvZGVNaXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlv
bnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLnByb3BlcnRpZXNDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuZm9u
dEZhbWlseU5hbWVzQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlv
bnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8g
YFdJLkNTU01hbmFnZXJgLgorCisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUu
bmV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUucHJl
dmlvdXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLl9j
bG9zZXN0KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgbWV0aG9kcyBmb3IgbmF2
aWdhdGluZyB0aGUgY29tcGxldGlvbnMgbGlzdC4KKyAgICAgICAgVGhpcyBiZWhhdmlvciBpcyBl
bmNhcHN1bGF0ZWQgaW4gYFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdgLgorCisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuaXNWYWxpZFByb3BlcnR5TmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIE1vdmVkIHRvIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2AuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM6
CisgICAgICAgIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHlOYW1lQ29tcGxl
dGlvbnMuanM6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMu
cHJvdG90eXBlLmlzVmFsaWRQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV0kuQ1NTUHJvcGVydHlO
YW1lQ29tcGxldGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgorICAgICAgICAoV0kucGVyZm9ybU9u
ZVRpbWVGcm9udGVuZEluaXRpYWxpemF0aW9uc1VzaW5nVGFyZ2V0KToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qczoKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUudXBkYXRlU3RhdHVzKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX2FkZENTU0RvY3VtZW50
YXRpb25CdXR0b24pOgorCiAyMDIxLTEyLTA3ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGZ1enp5IG1hdGNoaW5n
IGluIENTUyBjb21wbGV0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDc3YWFmZTMxYTE4ZmYyODY3ZTRlNWIzYmQ2MzZlZWY5
NzNlOGNmMTcuLjMzMzcwMTY3Zjk5ZjNkZmVlMDkxY2JjMGNiOTA5NGIxNDZlYzUzN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAg
LTYyMyw3ICs2MjMsNyBAQCBXSS5wZXJmb3JtT25lVGltZUZyb250ZW5kSW5pdGlhbGl6YXRpb25z
VXNpbmdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCiAKICAgICBpZiAoIVdJLl9fZGlkUGVyZm9y
bUNTU0luaXRpYWxpemF0aW9uICYmIHRhcmdldC5oYXNEb21haW4oIkNTUyIpKSB7CiAgICAgICAg
IFdJLl9fZGlkUGVyZm9ybUNTU0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKLSAgICAgICAgV0kuQ1NT
Q29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKHRhcmdldCk7CisgICAgICAgIFdJ
LmNzc01hbmFnZXIuaW5pdGlhbGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKHRhcmdldCk7
CiAgICAgfQogfTsKIApAQCAtODEwLDcgKzgxMCw3IEBAIFdJLmFjdGl2YXRlRXh0cmFEb21haW5z
ID0gZnVuY3Rpb24oZG9tYWlucykKICAgICAgICAgICAgIFdJLnBhZ2VUYXJnZXQgPSBXSS5tYWlu
VGFyZ2V0OwogCiAgICAgICAgIGlmIChXSS5tYWluVGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpCi0g
ICAgICAgICAgICBXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMoV0ku
YXNzdW1pbmdNYWluVGFyZ2V0KCkpOworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5pbml0aWFs
aXplQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMoV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkpOwog
CiAgICAgICAgIGlmIChXSS5tYWluVGFyZ2V0Lmhhc0RvbWFpbigiRE9NIikpCiAgICAgICAgICAg
ICBXSS5kb21NYW5hZ2VyLmVuc3VyZURvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5q
cwppbmRleCA0YTNhN2E0NzZlOTRiZjA1MTJhOTdhNWJmMmJlYWU3YmYzMzRmNDBjLi5jODBjNjE2
OTVlMzU1ODBhMjU3NTM5Y2M2ODQxNjY4NDcxOTI1NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMKQEAgLTQ4LDYgKzQ4LDggQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fbW9kaWZpZWRTdHlsZXMgPSBuZXcgTWFw
OwogICAgICAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IG51bGw7CiAgICAgICAgIHRoaXMu
X2ZvcmNlZEFwcGVhcmFuY2UgPSBudWxsOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZUNv
bXBsZXRpb25zID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKQEAgLTU4LDYgKzYwLDg5
IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICB0YXJnZXQuQ1NTQWdlbnQuZW5hYmxlKCk7CiAgICAgfQogCisgICAgaW5pdGlh
bGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldC5oYXNEb21haW4oIkNTUyIpKTsKKworICAgICAgICBpZiAodGhp
cy5fcHJvcGVydHlOYW1lQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoKGVycm9yLCBjc3NQ
cm9wZXJ0aWVzKSA9PiB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyA9IG5l
dyBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyh7cHJvcGVydGllczogY3NzUHJvcGVydGll
c30pOworCisgICAgICAgICAgICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkQ3VzdG9tQ29t
cGxldGlvbnMoY3NzUHJvcGVydGllcyk7CisKKyAgICAgICAgICAgIC8vIENvZGVNaXJyb3IgaXMg
bm90IGluY2x1ZGVkIGJ5IHRlc3RzIHNvIHdlIHNob3VsZG4ndCBhc3N1bWUgaXQgYWx3YXlzIGV4
aXN0cy4KKyAgICAgICAgICAgIC8vIElmIGl0IGlzbid0IGF2YWlsYWJsZSB3ZSBza2lwIE1JTUUg
dHlwZSBhc3NvY2lhdGlvbnMuCisgICAgICAgICAgICBpZiAoIXdpbmRvdy5Db2RlTWlycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbGV0IHByb3BlcnR5TmFtZXNG
b3JDb2RlTWlycm9yID0ge307CisgICAgICAgICAgICBsZXQgdmFsdWVLZXl3b3Jkc0ZvckNvZGVN
aXJyb3IgPSB7ImluaGVyaXQiOiB0cnVlLCAiaW5pdGlhbCI6IHRydWUsICJ1bnNldCI6IHRydWUs
ICJyZXZlcnQiOiB0cnVlLCAidmFyIjogdHJ1ZSwgImVudiI6IHRydWV9OworICAgICAgICAgICAg
bGV0IGNvbG9yS2V5d29yZHNGb3JDb2RlTWlycm9yID0ge307CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIG5hbWVGb3JDb2RlTWlycm9yKG5hbWUpIHsKKyAgICAgICAgICAgICAgICAvLyBDb2RlTWly
cm9yIHBhcnNlcyB0aGUgdmVuZG9yIHByZWZpeCBzZXBhcmF0ZSBmcm9tIHRoZSBwcm9wZXJ0eSBv
ciBrZXl3b3JkIG5hbWUsCisgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBzdHJpcCB2
ZW5kb3IgcHJlZml4ZXMgZnJvbSBvdXIgbmFtZXMuIEFsc28gc3RyaXAgZnVuY3Rpb24gcGFyZW50
aGVzaXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXi1bXi1dKy0vLCAi
IikucmVwbGFjZSgvXChcKSQvLCAiIikudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVNaXJyb3IocHJv
cGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBjYW4gYWxzbyBiZSB2
YWx1ZSBrZXl3b3JkcywgbGlrZSB3aGVuIHVzZWQgaW4gYSB0cmFuc2l0aW9uLgorICAgICAgICAg
ICAgICAgIC8vIFNvIHdlIGFkZCB0aGVtIHRvIGJvdGggbGlzdHMuCisgICAgICAgICAgICAgICAg
bGV0IGNvZGVNaXJyb3JQcm9wZXJ0eU5hbWUgPSBuYW1lRm9yQ29kZU1pcnJvcihwcm9wZXJ0eU5h
bWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yW2NvZGVNaXJy
b3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9y
Q29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZvciAobGV0IHByb3BlcnR5IG9mIGNzc1Byb3BlcnRpZXMpCisgICAg
ICAgICAgICAgICAgY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVNaXJyb3IocHJvcGVydHkubmFt
ZSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHByb3BlcnR5TmFtZSBpbiBXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcCkgeworICAgICAgICAgICAgICAgIGxldCBr
ZXl3b3JkcyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3JkTWFwW3By
b3BlcnR5TmFtZV07CisgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5d29yZCBvZiBrZXl3b3Jk
cykgeworICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIG51bWJlcnMsIGxpa2UgdGhlIG9uZXMg
ZGVmaW5lZCBmb3IgZm9udC13ZWlnaHQuCisgICAgICAgICAgICAgICAgICAgIGlmIChrZXl3b3Jk
ID09PSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVy
IHx8ICFpc05hTihOdW1iZXIoa2V5d29yZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW25h
bWVGb3JDb2RlTWlycm9yKGtleXdvcmQpXSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBjb2xvciBvZiBXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuX2NvbG9ycykKKyAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29k
ZU1pcnJvcltuYW1lRm9yQ29kZU1pcnJvcihjb2xvcildID0gdHJ1ZTsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWltZVR5cGUpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgbW9kZVNwZWMgPSBDb2RlTWlycm9yLnJlc29sdmVNb2RlKG1pbWVUeXBlKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLnByb3BlcnR5S2V5d29yZHMp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLnZhbHVlS2V5d29yZHMp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVTcGVjLmNvbG9yS2V5d29yZHMp
OworCisgICAgICAgICAgICAgICAgbW9kZVNwZWMucHJvcGVydHlLZXl3b3JkcyA9IHByb3BlcnR5
TmFtZXNGb3JDb2RlTWlycm9yOworICAgICAgICAgICAgICAgIG1vZGVTcGVjLnZhbHVlS2V5d29y
ZHMgPSB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcjsKKyAgICAgICAgICAgICAgICBtb2RlU3Bl
Yy5jb2xvcktleXdvcmRzID0gY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3I7CisKKyAgICAgICAg
ICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUobWltZVR5cGUsIG1vZGVTcGVjKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNTU01vZGUoInRleHQvY3Nz
Iik7CisgICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9yQ1NTTW9kZSgidGV4dC94LXNjc3MiKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHRhcmdldC5oYXNDb21tYW5kKCJDU1MuZ2V0U3Vw
cG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzIikpIHsKKyAgICAgICAgICAgIHRhcmdldC5DU1NB
Z2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoKGVycm9yLCBmb250RmFtaWx5
TmFtZXMpID0+eworICAgICAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFk
ZFByb3BlcnR5Q29tcGxldGlvblZhbHVlcygiZm9udC1mYW1pbHkiLCBmb250RmFtaWx5TmFtZXMp
OworICAgICAgICAgICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRQcm9wZXJ0eUNv
bXBsZXRpb25WYWx1ZXMoImZvbnQiLCBmb250RmFtaWx5TmFtZXMpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBTdGF0aWMKIAogICAgIHN0YXRpYyBzdXBwb3J0
c0luc3BlY3RvclN0eWxlU2hlZXQoKQpAQCAtMjQ3LDYgKzMzMiwxMSBAQCBXSS5DU1NNYW5hZ2Vy
ID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQog
CisgICAgZ2V0IHByb3BlcnR5TmFtZUNvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9wcm9wZXJ0eU5hbWVDb21wbGV0aW9uczsKKyAgICB9CisKICAgICBjYW5Gb3JjZUFw
cGVhcmFuY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuaGFzQ29t
bWFuZCgiUGFnZS5zZXRGb3JjZWRBcHBlYXJhbmNlIikgJiYgdGhpcy5fZGVmYXVsdEFwcGVhcmFu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNv
bnRyb2xsZXIuanMKaW5kZXggMTMxMDU4NTkwZjMxNmRjZTg2NWUyZTdiZDVmNWVjZWQ5M2FkYzhi
Ni4uNGYwMTQ0MjViNTNiZjY0MDdlYWQzOWUxODRkNDA3ODA0YjJmZDdmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJv
ckNvbXBsZXRpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcwpA
QCAtNjI3LDcgKzYyNyw3IEBAIFdJLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlciA9IGNs
YXNzIENvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlciBleHRlbmRzCiAgICAgICAgIHRoaXMu
X2ltcGxpY2l0U3VmZml4ID0gc3VmZml4ICE9PSAiOiIgPyAiOiAiIDogIiI7CiAKICAgICAgICAg
Ly8gQ29tcGxldGUgcHJvcGVydHkgbmFtZXMuCi0gICAgICAgIHJldHVybiBXSS5DU1NDb21wbGV0
aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aCh0aGlzLl9wcmVmaXgpOworICAgICAg
ICByZXR1cm4gV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy5zdGFydHNXaXRo
KHRoaXMuX3ByZWZpeCk7CiAgICAgfQogCiAgICAgX2dlbmVyYXRlSmF2YVNjcmlwdENvbXBsZXRp
b25zKG1haW5Ub2tlbiwgYmFzZSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDM3NDlhYjA0ZTk0NjlhNmVjYmIwZTU4ZWJmNmVm
Nzg2YTQ1MjY2NjUuLmFlYWZhMmEwOTE4Y2ZjZTIyYzVjZWZhZmVlNjg0MjMwZGRlNDRlOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTM5
NSw2ICszOTUsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTR3JvdXBpbmcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1Byb3BlcnR5TmFtZUNvbXBsZXRp
b25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1Byb3BlcnR5Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1J1bGUuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU2VsZWN0b3IuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0Nv
bXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzCmluZGV4IDA4YjMyZTQxYjlmMTcyNGMyOTgyZTY4ODI1M2ZhNDhl
YmE0NTE4OWQuLjA1OTg1NTY4NjMwMjc0YmJkNDUxNjVlYzRkODdhMWNiMjc1MzgyZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21w
bGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTQ29tcGxldGlvbnMuanMKQEAgLTMzLDEyNyArMzMsMjMgQEAKIAogV0kuQ1NTQ29tcGxl
dGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogewotICAgIGNvbnN0cnVjdG9yKHByb3BlcnRp
ZXMsIGFjY2VwdEVtcHR5UHJlZml4KQorICAgIGNvbnN0cnVjdG9yKHt2YWx1ZXMsIGFjY2VwdEVt
cHR5UHJlZml4fSA9IHt9KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNB
cnJheSh2YWx1ZXMpLCB2YWx1ZXMpOworCiAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IFtdOwogCi0g
ICAgICAgIC8vIFRoZSBgcHJvcGVydGllc2AgcGFyYW1ldGVyIGNhbiBiZSBlaXRoZXIgYSBsaXN0
IG9mIG9iamVjdHMgd2l0aCAnbmFtZScgLyAnbG9uZ2hhbmQnCi0gICAgICAgIC8vIHByb3BlcnRp
ZXMgd2hlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBwcm90b2NvbCBmb3IgQ1NTQ29tcGxldGlvbnMu
Y3NzTmFtZUNvbXBsZXRpb25zLgotICAgICAgICAvLyBPciBpdCBtYXkganVzdCBhIGxpc3Qgb2Yg
c3RyaW5ncyB3aGVuIHF1aWNrbHkgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIGNvbXBsZXRpb24gcHVy
cG9zZXMuCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCAmJiB0eXBlb2YgcHJvcGVydGll
c1swXSA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbChwcm9w
ZXJ0aWVzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBv
ZiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3Bl
cnR5Lm5hbWU7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvcGVydHlOYW1lKTsK
LQotICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHByb3BlcnR5TmFtZSk7Ci0KLSAg
ICAgICAgICAgICAgICBsZXQgYWxpYXNlcyA9IHByb3BlcnR5LmFsaWFzZXM7Ci0gICAgICAgICAg
ICAgICAgaWYgKGFsaWFzZXMpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNo
QWxsKGFsaWFzZXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGlmICh0eXBl
b2YgdmFsdWVzWzBdID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNo
QWxsKHZhbHVlcyk7CiAKICAgICAgICAgdGhpcy5fdmFsdWVzLnNvcnQoKTsKIAotICAgICAgICB0
aGlzLl9hY2NlcHRFbXB0eVByZWZpeCA9IGFjY2VwdEVtcHR5UHJlZml4OworICAgICAgICB0aGlz
Ll9hY2NlcHRFbXB0eVByZWZpeCA9ICEhYWNjZXB0RW1wdHlQcmVmaXg7CiAgICAgICAgIHRoaXMu
X3F1ZXJ5Q29udHJvbGxlciA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBz
dGF0aWMgaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKHRhcmdldCkKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldC5oYXNEb21haW4oIkNTUyIpKTsKLQotICAgICAgICBpZiAoV0ku
Q1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGZ1bmN0aW9uIHByb3BlcnRpZXNDYWxsYmFjayhlcnJvciwgY3NzUHJvcGVydGll
cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25z
ID0gbmV3IFdJLkNTU0NvbXBsZXRpb25zKGNzc1Byb3BlcnRpZXMsIGZhbHNlKTsKLQotICAgICAg
ICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFkZEN1c3RvbUNvbXBsZXRpb25zKGNzc1By
b3BlcnRpZXMpOwotCi0gICAgICAgICAgICAvLyBDb2RlTWlycm9yIGlzIG5vdCBpbmNsdWRlZCBi
eSB0ZXN0cyBzbyB3ZSBzaG91bGRuJ3QgYXNzdW1lIGl0IGFsd2F5cyBleGlzdHMuCi0gICAgICAg
ICAgICAvLyBJZiBpdCBpc24ndCBhdmFpbGFibGUgd2Ugc2tpcCBNSU1FIHR5cGUgYXNzb2NpYXRp
b25zLgotICAgICAgICAgICAgaWYgKCF3aW5kb3cuQ29kZU1pcnJvcikKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvciA9
IHt9OwotICAgICAgICAgICAgdmFyIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yID0geyJpbmhl
cml0IjogdHJ1ZSwgImluaXRpYWwiOiB0cnVlLCAidW5zZXQiOiB0cnVlLCAicmV2ZXJ0IjogdHJ1
ZSwgInZhciI6IHRydWUsICJlbnYiOiB0cnVlfTsKLSAgICAgICAgICAgIHZhciBjb2xvcktleXdv
cmRzRm9yQ29kZU1pcnJvciA9IHt9OwotCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1lRm9yQ29k
ZU1pcnJvcihuYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIENvZGVNaXJy
b3IgcGFyc2VzIHRoZSB2ZW5kb3IgcHJlZml4IHNlcGFyYXRlIGZyb20gdGhlIHByb3BlcnR5IG9y
IGtleXdvcmQgbmFtZSwKLSAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHZl
bmRvciBwcmVmaXhlcyBmcm9tIG91ciBuYW1lcy4gQWxzbyBzdHJpcCBmdW5jdGlvbiBwYXJlbnRo
ZXNpcy4KLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC9eLVteLV0rLS8sICIi
KS5yZXBsYWNlKC9cKFwpJC8sICIiKS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBmdW5jdGlvbiBjb2xsZWN0UHJvcGVydHlOYW1lRm9yQ29kZU1pcnJvcihwcm9w
ZXJ0eU5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gUHJvcGVydGllcyBj
YW4gYWxzbyBiZSB2YWx1ZSBrZXl3b3JkcywgbGlrZSB3aGVuIHVzZWQgaW4gYSB0cmFuc2l0aW9u
LgotICAgICAgICAgICAgICAgIC8vIFNvIHdlIGFkZCB0aGVtIHRvIGJvdGggbGlzdHMuCi0gICAg
ICAgICAgICAgICAgdmFyIGNvZGVNaXJyb3JQcm9wZXJ0eU5hbWUgPSBuYW1lRm9yQ29kZU1pcnJv
cihwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNGb3JDb2RlTWly
cm9yW2NvZGVNaXJyb3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB2YWx1
ZUtleXdvcmRzRm9yQ29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIGNzc1Byb3Bl
cnRpZXMpCi0gICAgICAgICAgICAgICAgY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVNaXJyb3Io
cHJvcGVydHkubmFtZSk7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5TmFtZSBpbiBX
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcCkgewotICAgICAgICAg
ICAgICAgIHZhciBrZXl3b3JkcyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlL
ZXl3b3JkTWFwW3Byb3BlcnR5TmFtZV07Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBrZXl3b3Jkcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICAvLyBTa2lw
IG51bWJlcnMsIGxpa2UgdGhlIG9uZXMgZGVmaW5lZCBmb3IgZm9udC13ZWlnaHQuCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChrZXl3b3Jkc1tpXSA9PT0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
LkFsbFByb3BlcnR5TmFtZXNQbGFjZWhvbGRlciB8fCAhaXNOYU4oTnVtYmVyKGtleXdvcmRzW2ld
KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVNaXJyb3Ioa2V5d29yZHNb
aV0pXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX2NvbG9ycy5mb3JFYWNoKGZ1bmN0aW9uKGNv
bG9yTmFtZSkgewotICAgICAgICAgICAgICAgIGNvbG9yS2V5d29yZHNGb3JDb2RlTWlycm9yW25h
bWVGb3JDb2RlTWlycm9yKGNvbG9yTmFtZSldID0gdHJ1ZTsKLSAgICAgICAgICAgIH0pOwotCi0g
ICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVDb2RlTWlycm9yQ1NTTW9kZShtaW1lVHlwZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgbW9kZVNwZWMgPSBDb2RlTWlycm9yLnJl
c29sdmVNb2RlKG1pbWVUeXBlKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1v
ZGVTcGVjLnByb3BlcnR5S2V5d29yZHMpOwotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG1vZGVTcGVjLnZhbHVlS2V5d29yZHMpOwotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG1vZGVTcGVjLmNvbG9yS2V5d29yZHMpOwotCi0gICAgICAgICAgICAgICAgbW9kZVNwZWMucHJv
cGVydHlLZXl3b3JkcyA9IHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yOwotICAgICAgICAgICAg
ICAgIG1vZGVTcGVjLnZhbHVlS2V5d29yZHMgPSB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcjsK
LSAgICAgICAgICAgICAgICBtb2RlU3BlYy5jb2xvcktleXdvcmRzID0gY29sb3JLZXl3b3Jkc0Zv
ckNvZGVNaXJyb3I7Ci0KLSAgICAgICAgICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUobWlt
ZVR5cGUsIG1vZGVTcGVjKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdXBkYXRlQ29k
ZU1pcnJvckNTU01vZGUoInRleHQvY3NzIik7Ci0gICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9y
Q1NTTW9kZSgidGV4dC94LXNjc3MiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGZv
bnRGYW1pbHlOYW1lc0NhbGxiYWNrKGVycm9yLCBmb250RmFtaWx5TmFtZXMpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRQcm9wZXJ0eUNvbXBsZXRpb25WYWx1
ZXMoImZvbnQtZmFtaWx5IiwgZm9udEZhbWlseU5hbWVzKTsKLSAgICAgICAgICAgIFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5hZGRQcm9wZXJ0eUNvbXBsZXRpb25WYWx1ZXMoImZvbnQiLCBmb250
RmFtaWx5TmFtZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMocHJvcGVydGllc0NhbGxiYWNrKTsKLSAgICAgICAgaWYgKHRh
cmdldC5oYXNDb21tYW5kKCJDU1MuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzIikp
Ci0gICAgICAgICAgICB0YXJnZXQuQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWls
eU5hbWVzKGZvbnRGYW1pbHlOYW1lc0NhbGxiYWNrKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgY29t
cGxldGVVbmJhbGFuY2VkVmFsdWUodmFsdWUpCiAgICAgewogICAgICAgICBjb25zdCBTdGF0ZSA9
IHsKQEAgLTMxMSw0NSArMjA3LDggQEAgV0kuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21w
bGV0aW9ucwogCiAgICAgICAgIHJldHVybiBmb3VuZEluZGV4OwogICAgIH0KLQotICAgIG5leHQo
c3RyLCBwcmVmaXgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHBy
ZWZpeCwgMSk7Ci0gICAgfQotCi0gICAgcHJldmlvdXMoc3RyLCBwcmVmaXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fY2xvc2VzdChzdHIsIHByZWZpeCwgLTEpOwotICAgIH0KLQotICAg
IF9jbG9zZXN0KHN0ciwgcHJlZml4LCBzaGlmdCkKLSAgICB7Ci0gICAgICAgIGlmICghc3RyKQot
ICAgICAgICAgICAgcmV0dXJuICIiOwotCi0gICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3ZhbHVl
cy5pbmRleE9mKHN0cik7Ci0gICAgICAgIGlmIChpbmRleCA9PT0gLTEpCi0gICAgICAgICAgICBy
ZXR1cm4gIiI7Ci0KLSAgICAgICAgaWYgKCFwcmVmaXgpIHsKLSAgICAgICAgICAgIGluZGV4ID0g
KGluZGV4ICsgdGhpcy5fdmFsdWVzLmxlbmd0aCArIHNoaWZ0KSAlIHRoaXMuX3ZhbHVlcy5sZW5n
dGg7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzW2luZGV4XTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBwcm9wZXJ0aWVzV2l0aFByZWZpeCA9IHRoaXMuc3RhcnRzV2l0aChwcmVm
aXgpOwotICAgICAgICB2YXIgaiA9IHByb3BlcnRpZXNXaXRoUHJlZml4LmluZGV4T2Yoc3RyKTsK
LSAgICAgICAgaiA9IChqICsgcHJvcGVydGllc1dpdGhQcmVmaXgubGVuZ3RoICsgc2hpZnQpICUg
cHJvcGVydGllc1dpdGhQcmVmaXgubGVuZ3RoOwotICAgICAgICByZXR1cm4gcHJvcGVydGllc1dp
dGhQcmVmaXhbal07Ci0gICAgfQotCi0gICAgaXNWYWxpZFByb3BlcnR5TmFtZShuYW1lKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKTsKLSAgICB9CiB9
OwogCi1XSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwotCiBXSS5D
U1NDb21wbGV0aW9ucy5sZW5ndGhVbml0cyA9IG5ldyBTZXQoWwogICAgICJjaCIsCiAgICAgImNt
IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCmluZGV4IGVmYTEwMzYzZGFm
OTkyNzc2OTM5MGMzNzg3YThkNjIzNzU1NjJjZTEuLmI2MGUyYTYwZDI5MTgyMjBjNjA5NWNhNTVi
YzE5OTU2NmM4YzJkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwpA
QCAtNDEsMTMgKzQxLDEzIEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJv
cGVydHlOYW1lID0gZnVuY3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sCiAgICAgICAgIHJldHVy
biB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uczogW119OwogCiAgICAgaWYgKCF0ZXh0Lmxlbmd0
aCAmJiBhbGxvd0VtcHR5UHJlZml4KQotICAgICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29t
cGxldGlvbnM6IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy52YWx1ZXN9Owor
ICAgICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6IFdJLmNzc01hbmFnZXIu
cHJvcGVydHlOYW1lQ29tcGxldGlvbnMudmFsdWVzfTsKIAogICAgIGxldCBjb21wbGV0aW9uczsK
ICAgICBpZiAodXNlRnV6enlNYXRjaGluZykKLSAgICAgICAgY29tcGxldGlvbnMgPSBXSS5DU1ND
b21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KHRleHQpOworICAgICAg
ICBjb21wbGV0aW9ucyA9IFdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxldGlvbnMuZXhl
Y3V0ZVF1ZXJ5KHRleHQpOwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbnMgPSBXSS5DU1ND
b21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aCh0ZXh0KTsKKyAgICAgICAg
Y29tcGxldGlvbnMgPSBXSS5jc3NNYW5hZ2VyLnByb3BlcnR5TmFtZUNvbXBsZXRpb25zLnN0YXJ0
c1dpdGgodGV4dCk7CiAKICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnN9Owog
fTsKQEAgLTE3MCwxMiArMTcwLDEzIEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9w
ZXJ0eSA9IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIGFkZEtleXdvcmRzRm9y
TmFtZShsb25naGFuZE5hbWUpOwogICAgIH0KIAotICAgIGlmIChhY2NlcHRlZEtleXdvcmRzLmlu
Y2x1ZGVzKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9wZXJ0eU5hbWVzUGxhY2Vob2xk
ZXIpICYmIFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucykgeworICAgIGlmIChh
Y2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9w
ZXJ0eU5hbWVzUGxhY2Vob2xkZXIpICYmIFdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxl
dGlvbnMpIHsKICAgICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5yZW1vdmUoV0kuQ1NTS2V5d29yZENv
bXBsZXRpb25zLkFsbFByb3BlcnR5TmFtZXNQbGFjZWhvbGRlcik7Ci0gICAgICAgIGFjY2VwdGVk
S2V5d29yZHMucHVzaEFsbChXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMudmFs
dWVzKTsKKyAgICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5wdXNoQWxsKFdJLmNzc01hbmFnZXIucHJv
cGVydHlOYW1lQ29tcGxldGlvbnMudmFsdWVzKTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdJ
LkNTU0NvbXBsZXRpb25zKEFycmF5LmZyb20obmV3IFNldChhY2NlcHRlZEtleXdvcmRzKSksIHRy
dWUpOworICAgIGNvbnN0IGFjY2VwdEVtcHR5UHJlZml4ID0gdHJ1ZTsKKyAgICByZXR1cm4gbmV3
IFdJLkNTU0NvbXBsZXRpb25zKHt2YWx1ZXM6IEFycmF5LmZyb20obmV3IFNldChhY2NlcHRlZEtl
eXdvcmRzKSksIGFjY2VwdEVtcHR5UHJlZml4fSk7CiB9OwogCiBXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuaXNDb2xvckF3YXJlUHJvcGVydHkgPSBmdW5jdGlvbihuYW1lKQpAQCAtMjI2LDcgKzIy
Nyw4IEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGZ1
bmN0aW9uTmFtZSkKICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaEFsbChXSS5DU1NLZXl3b3JkQ29t
cGxldGlvbnMuX2NvbG9ycyk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyBXSS5DU1NDb21wbGV0
aW9ucyhzdWdnZXN0aW9ucywgdHJ1ZSk7CisgICAgY29uc3QgYWNjZXB0RW1wdHlQcmVmaXggPSB0
cnVlOworICAgIHJldHVybiBuZXcgV0kuQ1NTQ29tcGxldGlvbnMoe3ZhbHVlczogc3VnZ2VzdGlv
bnMsIGFjY2VwdEVtcHR5UHJlZml4fSk7CiB9OwogCiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
YWRkQ3VzdG9tQ29tcGxldGlvbnMgPSBmdW5jdGlvbihwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5TmFt
ZUNvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NWU2M2I5YTJk
ZGZkNmVmOTc1NDAwYTg5Y2RhZGUzYzQyODI4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHlOYW1lQ29tcGxl
dGlvbnMuanMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkNTU1Byb3BlcnR5TmFt
ZUNvbXBsZXRpb25zID0gY2xhc3MgQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMgZXh0ZW5kcyBX
SS5DU1NDb21wbGV0aW9ucworeworICAgIGNvbnN0cnVjdG9yKHtwcm9wZXJ0aWVzLCBhY2NlcHRF
bXB0eVByZWZpeH0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5Lmlz
QXJyYXkocHJvcGVydGllcyksIHByb3BlcnRpZXMpOworICAgICAgICBjb25zb2xlLmFzc2VydChw
cm9wZXJ0aWVzWzBdLm5hbWUsIHByb3BlcnRpZXMsICJFeHBlY3RlZCBhbiBhcnJheSBvZiBvYmpl
Y3RzIHdpdGggYG5hbWVgIGtleSIpOworCisgICAgICAgIGxldCB2YWx1ZXMgPSBbXTsKKyAgICAg
ICAgZm9yIChsZXQgcHJvcGVydHkgb2YgcHJvcGVydGllcykgeworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQocHJvcGVydHkubmFtZSk7CisKKyAgICAgICAgICAgIHZhbHVlcy5wdXNoKHByb3Bl
cnR5Lm5hbWUpOworICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHkuYWxpYXNl
cykpCisgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2hBbGwocHJvcGVydHkuYWxpYXNlcyk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdXBlcih7dmFsdWVzLCBhY2NlcHRFbXB0eVByZWZpeH0pOwor
ICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgaXNWYWxpZFByb3BlcnR5TmFtZShuYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmluY2x1ZGVzKG5hbWUpOworICAgIH0K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5k
ZXggNzc3MTkwNjVkZDMwNmUyOTJhYjU0ZGJiZDhiNzEzNWFlMjdhNWIwMC4uMjEzNzZjZTVmODJk
ODM0Y2Y4OWU2M2ZiOTEyZDJmODIwZmYyZjI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9DU1NDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9DU1NHcm91cGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvQ1NTUHJvcGVydHkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvQ1NTUnVsZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9DU1NTZWxlY3Rvci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggZDNmMmQ1NzZmYjJlOTQzZjZlMjM2Yzdm
ZDY4ODVjZTkyMDIwNWMzNi4uYTAxYTczODQ2MWZlMGJkZjJmMzZhMTY1MWExNmE3Y2FiZmRmNDZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9U
ZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dC5qcwpAQCAtMTI1LDcgKzEyNSw3IEBAIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFs
aXphdGlvbnNVc2luZ1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKICAgICAvLyBGSVhNRTogVGhp
cyBzbG93cyBkb3duIHRlc3QgZGVidWcgbG9nZ2luZyBjb25zaWRlcmFibHkuCiAgICAgaWYgKCFX
SS5fX2RpZFBlcmZvcm1DU1NJbml0aWFsaXphdGlvbiAmJiB0YXJnZXQuaGFzRG9tYWluKCJDU1Mi
KSkgewogICAgICAgICBXSS5fX2RpZFBlcmZvcm1DU1NJbml0aWFsaXphdGlvbiA9IHRydWU7Ci0g
ICAgICAgIFdJLkNTU0NvbXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyh0YXJnZXQp
OworICAgICAgICBXSS5jc3NNYW5hZ2VyLmluaXRpYWxpemVDU1NQcm9wZXJ0eU5hbWVDb21wbGV0
aW9ucyh0YXJnZXQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eS5qcwppbmRleCBkOTRkNzE1ZjU0YjZmYWU1YzI1MzgzMmIzYWM0MDIyZTU1YmQxNzRh
Li42YzhiNTVjYzgwZjY4ODJiMjk4ZmU2NWVmNzBiYjAwYWU1M2JkODJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC0zMDAsMTMgKzMwMCw5IEBAIFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX3Byb3BlcnR5LnZhbGlkICYmIHRo
aXMuX3Byb3BlcnR5Lmhhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZCgpKQogICAgICAgICAgICAg
Y2xhc3NOYW1lcy5wdXNoKCJvdGhlci12ZW5kb3IiKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5f
aGFzSW52YWxpZFZhcmlhYmxlVmFsdWUgfHwgKCF0aGlzLl9wcm9wZXJ0eS52YWxpZCAmJiB0aGlz
Ll9wcm9wZXJ0eS52YWx1ZSAhPT0gIiIpKSB7Ci0gICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1l
SXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKFdJLkNTU0NvbXBsZXRpb25zLmNzc05h
bWVDb21wbGV0aW9ucykKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVJc1ZhbGlkID0gV0ku
Q1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0eU5hbWUodGhp
cy5fcHJvcGVydHkubmFtZSk7Ci0KICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiaGFzLXdh
cm5pbmciKTsKIAotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc1ZhbGlkKSB7CisgICAg
ICAgICAgICBpZiAoIVdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxldGlvbnM/LmlzVmFs
aWRQcm9wZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSkpIHsKICAgICAgICAgICAgICAgICBj
bGFzc05hbWVzLnB1c2goImludmFsaWQtbmFtZSIpOwogICAgICAgICAgICAgICAgIGVsZW1lbnRU
aXRsZSA9IFdJLlVJU3RyaW5nKCJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtNTM5LDcgKzUzNSw3IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhcmlhYmxlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICghV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlz
VmFsaWRQcm9wZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSkpCisgICAgICAgIGlmICghV0ku
Y3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucz8uaXNWYWxpZFByb3BlcnR5TmFtZSh0
aGlzLl9wcm9wZXJ0eS5uYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
IUNTU0RvY3VtZW50YXRpb24uaGFzT3duUHJvcGVydHkodGhpcy5fcHJvcGVydHkubmFtZSkgJiYg
IUNTU0RvY3VtZW50YXRpb24uaGFzT3duUHJvcGVydHkodGhpcy5fcHJvcGVydHkuY2Fub25pY2Fs
TmFtZSkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446530</attachid>
            <date>2021-12-09 05:48:04 -0800</date>
            <delta_ts>2021-12-10 03:22:29 -0800</delta_ts>
            <desc>Patch 1.2</desc>
            <filename>bug-233369-20211209144803.patch</filename>
            <type>text/plain</type>
            <size>27019</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRhMjlhNzdjMDIyN2YzYTlmYzU3ODBkZTg3NzIx
YzQ2ODM1MWU2NWQuLjA2OTJiNDQ5YjhmZmNhNTQ1NjlkMDkxNmY5ZjkxNTQ0NjlmMjFjNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTEyLTA4ICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IGEgc3BlY2lhbGl6ZWQgQ1NTTmFtZUNvbXBsZXRpb25zIGZyb20gQ1NTQ29tcGxl
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzM2OQorICAgICAgICA8cmRhcjovLzgzMjA2NTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2Ag
aXMgYSBsb25nLWxpdmVkIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBsaXN0IG9mIGFsbCBDU1MgcHJv
cGVydGllcworICAgICAgICBzdXBwb3J0ZWQgYnkgdGhlIHRhcmdldC4gSXQgaXMgaW5zdGFudGlh
dGVkIG9ubHkgb25jZSBvbiBXZWIgSW5zcGVjdG9yIHN0YXJ0dXAuCisKKyAgICAgICAgQnkgY29u
dHJhc3QsIGBXSS5DU1NDb21wbGV0aW9uc2AgaXMgYW4gb2JqZWN0IGluc3RhbnRpYXRlZCBhcyBv
ZnRlbiBhcyBuZWVkZWQgd2l0aAorICAgICAgICBsaXN0cyBvZiBwcm9wZXJ0eSB2YWx1ZXMsIENT
UyBmdW5jdGlvbiB2YWx1ZXMsIGV0Yy4gSXQgaG9sZHMgdGhlIGdlbmVyaWMgbG9naWMgZm9yCisg
ICAgICAgIG1hdGNoaW5nIHZhbHVlcyBhZ2FpbnN0IGEgZ2l2ZW4gcXVlcnkuCisKKyAgICAgICAg
VGhlIHNwZWNpYWxpemVkIGxvZ2ljIGZvciBDU1MgcHJvcGVydHkgbmFtZXMgd2FzIG1peGVkLWlu
IHdpdGggdGhlIGdlbmVyaWMgbG9naWMgaW4gYFdJLkNTU0NvbXBsZXRpb25zYC4KKyAgICAgICAg
VGhlIG1haW4gZGlmZmVyZW5jZSBpcyBpbiB0aGUgZm9ybWF0IG9mIHRoZSBwYXlsb2FkIHByb3Zp
ZGVkOgorICAgICAgICAtIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBrZXkvdmFsdWUgcGFpcnMg
Zm9yIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2AuCisgICAgICAgIC0gYW4gYXJyYXkg
b2Ygc3RyaW5ncyBmb3IgZ2VuZXJhbCBwdXJwb3NlIGBXSS5DU1NDb21wbGV0aW9uc2AuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IGluIGBXSS5Db21wbGV0aW9u
c2A6CisgICAgICAgIC0gbW92ZXMgdGhlIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIG1ldGhvZCB0
byBgV0kuY3NzTWFuYWdlci5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnNgLgorICAgICAgICAtIHNp
bXBsaWZpZXMgYFdJLkNvbXBsZXRpb25zYCBjb25zdHJ1Y3RvciB0byBleHBlY3QganVzdCBhbiBh
cnJheSBvZiBzdHJpbmdzLgorICAgICAgICAtIGludHJvZHVjZXMgYFdJLkNTU1Byb3BlcnR5TmFt
ZUNvbXBsZXRpb25zYCBhcyBhIHN1Yi1jbGFzcyBvZiBgV0kuQ1NTQ29tcGxldGlvbnNgIHdoZXJl
IGl0cyBjb25zdHJ1Y3RvcgorICAgICAgICAgIGlzIHNwZWNpYWxpemVkIHRvIGhhbmRsZSB0aGUg
cGF5bG9hZCByZWNlaXZlZCBmcm9tIHRoZSBiYWNrZW5kLgorICAgICAgICAtIG1vdmVzIHRoZSBg
V0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnNgIGluc3RhbmNlIHRvIGBXSS5jc3NNYW5hZ2Vy
LmNzc1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zYC4KKyAgICAgICAgLSByZW1vdmVzIHVudXNlZCBh
Y2Nlc3NvcnMgZm9yIG5hdmlnYXRpbmcgdGhlIGxpc3Qgb2YgbWF0Y2hlZCBjb21wbGV0aW9ucy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kucGVy
Zm9ybU9uZVRpbWVGcm9udGVuZEluaXRpYWxpemF0aW9uc1VzaW5nVGFyZ2V0KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5D
U1NNYW5hZ2VyKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVD
U1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy4pOgorICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90
b3R5cGUuaW5pdGlhbGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKToKKyAgICAgICAgTW92
ZWQgdGhlIGluaXRpYWxpemlhdGlvbiBtZXRob2QgZm9yIG9iamVjdHMgdXNlZCB0byBnZXQgQ1NT
IGNvbXBsZXRpb25zCisgICAgICAgIGZyb20gYFdJLkNTU0NvbXBsZXRpb25zYCB3aXRoIGRhdGEg
ZnJvbSB0aGUgYmFja2VkIHRvIGEgbW9yZSBhcHByb3ByaWF0ZSBwbGFjZS4KKworICAgICAgICAo
V0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuZ2V0IHByb3BlcnR5TmFtZUNvbXBsZXRpb25zKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29u
dHJvbGxlci5qczoKKyAgICAgICAgKFdJLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5w
cm90b3R5cGUuX2dlbmVyYXRlQ1NTQ29tcGxldGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRp
b25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLl9maXJzdEluZGV4
T2ZQcmVmaXgpOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgorICAgICAgICAoV0kuQ1NT
Q29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLik6IERlbGV0ZWQuCisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuY29sbGVjdFByb3Bl
cnR5TmFtZUZvckNvZGVNaXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlv
bnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLnByb3BlcnRpZXNDYWxsYmFjayk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMuZm9u
dEZhbWlseU5hbWVzQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlv
bnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgdG8g
YFdJLkNTU01hbmFnZXJgLgorCisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUu
bmV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUucHJl
dmlvdXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLl9j
bG9zZXN0KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlZCB1bnVzZWQgbWV0aG9kcyBmb3IgbmF2
aWdhdGluZyB0aGUgY29tcGxldGlvbnMgbGlzdC4KKyAgICAgICAgVGhpcyBiZWhhdmlvciBpcyBl
bmNhcHN1bGF0ZWQgaW4gYFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdgLgorCisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuaXNWYWxpZFByb3BlcnR5TmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIE1vdmVkIHRvIGBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2AuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM6
CisgICAgICAgIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHlOYW1lQ29tcGxl
dGlvbnMuanM6IEFkZGVkLgorICAgICAgICAoV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMu
cHJvdG90eXBlLmlzVmFsaWRQcm9wZXJ0eU5hbWUpOgorICAgICAgICAoV0kuQ1NTUHJvcGVydHlO
YW1lQ29tcGxldGlvbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgorICAgICAgICAoV0kucGVyZm9ybU9u
ZVRpbWVGcm9udGVuZEluaXRpYWxpemF0aW9uc1VzaW5nVGFyZ2V0KToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qczoKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUudXBkYXRlU3RhdHVzKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX2FkZENTU0RvY3VtZW50
YXRpb25CdXR0b24pOgorCiAyMDIxLTEyLTA3ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGZ1enp5IG1hdGNoaW5n
IGluIENTUyBjb21wbGV0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDc3YWFmZTMxYTE4ZmYyODY3ZTRlNWIzYmQ2MzZlZWY5
NzNlOGNmMTcuLjMzMzcwMTY3Zjk5ZjNkZmVlMDkxY2JjMGNiOTA5NGIxNDZlYzUzN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAg
LTYyMyw3ICs2MjMsNyBAQCBXSS5wZXJmb3JtT25lVGltZUZyb250ZW5kSW5pdGlhbGl6YXRpb25z
VXNpbmdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpCiAKICAgICBpZiAoIVdJLl9fZGlkUGVyZm9y
bUNTU0luaXRpYWxpemF0aW9uICYmIHRhcmdldC5oYXNEb21haW4oIkNTUyIpKSB7CiAgICAgICAg
IFdJLl9fZGlkUGVyZm9ybUNTU0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKLSAgICAgICAgV0kuQ1NT
Q29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKHRhcmdldCk7CisgICAgICAgIFdJ
LmNzc01hbmFnZXIuaW5pdGlhbGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKHRhcmdldCk7
CiAgICAgfQogfTsKIApAQCAtODEwLDcgKzgxMCw3IEBAIFdJLmFjdGl2YXRlRXh0cmFEb21haW5z
ID0gZnVuY3Rpb24oZG9tYWlucykKICAgICAgICAgICAgIFdJLnBhZ2VUYXJnZXQgPSBXSS5tYWlu
VGFyZ2V0OwogCiAgICAgICAgIGlmIChXSS5tYWluVGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpCi0g
ICAgICAgICAgICBXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMoV0ku
YXNzdW1pbmdNYWluVGFyZ2V0KCkpOworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5pbml0aWFs
aXplQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMoV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkpOwog
CiAgICAgICAgIGlmIChXSS5tYWluVGFyZ2V0Lmhhc0RvbWFpbigiRE9NIikpCiAgICAgICAgICAg
ICBXSS5kb21NYW5hZ2VyLmVuc3VyZURvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5q
cwppbmRleCA0YTNhN2E0NzZlOTRiZjA1MTJhOTdhNWJmMmJlYWU3YmYzMzRmNDBjLi5jZjRkMTE0
NGU3MDc0OTczODgyNDc2OTA5OGI0NzRiMTgyOGNlOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMKQEAgLTQ4LDYgKzQ4LDggQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fbW9kaWZpZWRTdHlsZXMgPSBuZXcgTWFw
OwogICAgICAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IG51bGw7CiAgICAgICAgIHRoaXMu
X2ZvcmNlZEFwcGVhcmFuY2UgPSBudWxsOworCisgICAgICAgIHRoaXMuX3Byb3BlcnR5TmFtZUNv
bXBsZXRpb25zID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBUYXJnZXQKQEAgLTU4LDYgKzYwLDg2
IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICB0YXJnZXQuQ1NTQWdlbnQuZW5hYmxlKCk7CiAgICAgfQogCisgICAgaW5pdGlh
bGl6ZUNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRhcmdldC5oYXNEb21haW4oIkNTUyIpKTsKKworICAgICAgICBpZiAodGhp
cy5fcHJvcGVydHlOYW1lQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoKGVycm9yLCBjc3NQ
cm9wZXJ0aWVzKSA9PiB7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyA9IG5l
dyBXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyhjc3NQcm9wZXJ0aWVzKTsKKworICAgICAg
ICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFkZEN1c3RvbUNvbXBsZXRpb25zKGNzc1By
b3BlcnRpZXMpOworCisgICAgICAgICAgICAvLyBDb2RlTWlycm9yIGlzIG5vdCBpbmNsdWRlZCBi
eSB0ZXN0cyBzbyB3ZSBzaG91bGRuJ3QgYXNzdW1lIGl0IGFsd2F5cyBleGlzdHMuCisgICAgICAg
ICAgICAvLyBJZiBpdCBpc24ndCBhdmFpbGFibGUgd2Ugc2tpcCBNSU1FIHR5cGUgYXNzb2NpYXRp
b25zLgorICAgICAgICAgICAgaWYgKCF3aW5kb3cuQ29kZU1pcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvciA9
IHt9OworICAgICAgICAgICAgbGV0IHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yID0geyJpbmhl
cml0IjogdHJ1ZSwgImluaXRpYWwiOiB0cnVlLCAidW5zZXQiOiB0cnVlLCAicmV2ZXJ0IjogdHJ1
ZSwgInZhciI6IHRydWUsICJlbnYiOiB0cnVlfTsKKyAgICAgICAgICAgIGxldCBjb2xvcktleXdv
cmRzRm9yQ29kZU1pcnJvciA9IHt9OworCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lRm9yQ29k
ZU1pcnJvcihuYW1lKSB7CisgICAgICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBwYXJzZXMgdGhl
IHZlbmRvciBwcmVmaXggc2VwYXJhdGUgZnJvbSB0aGUgcHJvcGVydHkgb3Iga2V5d29yZCBuYW1l
LAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3RyaXAgdmVuZG9yIHByZWZpeGVz
IGZyb20gb3VyIG5hbWVzLiBBbHNvIHN0cmlwIGZ1bmN0aW9uIHBhcmVudGhlc2lzLgorICAgICAg
ICAgICAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoL14tW14tXSstLywgIiIpLnJlcGxhY2UoL1wo
XCkkLywgIiIpLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAobGV0IHByb3BlcnR5IG9mIGNzc1Byb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICAvLyBQ
cm9wZXJ0aWVzIGNhbiBhbHNvIGJlIHZhbHVlIGtleXdvcmRzLCBsaWtlIHdoZW4gdXNlZCBpbiBh
IHRyYW5zaXRpb24uCisgICAgICAgICAgICAgICAgLy8gU28gd2UgYWRkIHRoZW0gdG8gYm90aCBs
aXN0cy4KKyAgICAgICAgICAgICAgICBsZXQgY29kZU1pcnJvclByb3BlcnR5TmFtZSA9IG5hbWVG
b3JDb2RlTWlycm9yKHByb3BlcnR5Lm5hbWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFt
ZXNGb3JDb2RlTWlycm9yW2NvZGVNaXJyb3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1l
XSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0IHByb3BlcnR5
TmFtZSBpbiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcCkgewor
ICAgICAgICAgICAgICAgIGxldCBrZXl3b3JkcyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5f
cHJvcGVydHlLZXl3b3JkTWFwW3Byb3BlcnR5TmFtZV07CisgICAgICAgICAgICAgICAgZm9yIChs
ZXQga2V5d29yZCBvZiBrZXl3b3JkcykgeworICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIG51
bWJlcnMsIGxpa2UgdGhlIG9uZXMgZGVmaW5lZCBmb3IgZm9udC13ZWlnaHQuCisgICAgICAgICAg
ICAgICAgICAgIGlmIChrZXl3b3JkID09PSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJv
cGVydHlOYW1lc1BsYWNlaG9sZGVyIHx8ICFpc05hTihOdW1iZXIoa2V5d29yZCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlS2V5
d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9yKGtleXdvcmQpXSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBj
b2xvciBvZiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX2NvbG9ycykKKyAgICAgICAgICAgICAg
ICBjb2xvcktleXdvcmRzRm9yQ29kZU1pcnJvcltuYW1lRm9yQ29kZU1pcnJvcihjb2xvcildID0g
dHJ1ZTsKKworICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWlt
ZVR5cGUpIHsKKyAgICAgICAgICAgICAgICBsZXQgbW9kZVNwZWMgPSBDb2RlTWlycm9yLnJlc29s
dmVNb2RlKG1pbWVUeXBlKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1vZGVT
cGVjLnByb3BlcnR5S2V5d29yZHMpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1v
ZGVTcGVjLnZhbHVlS2V5d29yZHMpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1v
ZGVTcGVjLmNvbG9yS2V5d29yZHMpOworCisgICAgICAgICAgICAgICAgbW9kZVNwZWMucHJvcGVy
dHlLZXl3b3JkcyA9IHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9yOworICAgICAgICAgICAgICAg
IG1vZGVTcGVjLnZhbHVlS2V5d29yZHMgPSB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcjsKKyAg
ICAgICAgICAgICAgICBtb2RlU3BlYy5jb2xvcktleXdvcmRzID0gY29sb3JLZXl3b3Jkc0ZvckNv
ZGVNaXJyb3I7CisKKyAgICAgICAgICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUobWltZVR5
cGUsIG1vZGVTcGVjKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlQ29kZU1p
cnJvckNTU01vZGUoInRleHQvY3NzIik7CisgICAgICAgICAgICB1cGRhdGVDb2RlTWlycm9yQ1NT
TW9kZSgidGV4dC94LXNjc3MiKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHRhcmdldC5o
YXNDb21tYW5kKCJDU1MuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzIikpIHsKKyAg
ICAgICAgICAgIHRhcmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFt
ZXMoKGVycm9yLCBmb250RmFtaWx5TmFtZXMpID0+eworICAgICAgICAgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLmFkZFByb3BlcnR5Q29tcGxldGlvblZhbHVlcygiZm9udC1mYW1p
bHkiLCBmb250RmFtaWx5TmFtZXMpOworICAgICAgICAgICAgICAgIFdJLkNTU0tleXdvcmRDb21w
bGV0aW9ucy5hZGRQcm9wZXJ0eUNvbXBsZXRpb25WYWx1ZXMoImZvbnQiLCBmb250RmFtaWx5TmFt
ZXMpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBTdGF0aWMK
IAogICAgIHN0YXRpYyBzdXBwb3J0c0luc3BlY3RvclN0eWxlU2hlZXQoKQpAQCAtMTgwLDYgKzI2
Miw4IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICAvLyBQdWJsaWMKIAorICAgIGdldCBwcm9wZXJ0eU5hbWVDb21wbGV0aW9ucygpIHsg
cmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZUNvbXBsZXRpb25zOyB9CisKICAgICBnZXQgcHJlZmVy
cmVkQ29sb3JGb3JtYXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yRm9ybWF0
U2V0dGluZy52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JD
b21wbGV0aW9uQ29udHJvbGxlci5qcwppbmRleCAxMzEwNTg1OTBmMzE2ZGNlODY1ZTJlN2JkNWY1
ZWNlZDkzYWRjOGI2Li40ZjAxNDQyNWI1M2JmNjQwN2VhZDM5ZTE4NGQ0MDc4MDRiMmZkN2ZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250
cm9sbGVyLmpzCkBAIC02MjcsNyArNjI3LDcgQEAgV0kuQ29kZU1pcnJvckNvbXBsZXRpb25Db250
cm9sbGVyID0gY2xhc3MgQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyIGV4dGVuZHMKICAg
ICAgICAgdGhpcy5faW1wbGljaXRTdWZmaXggPSBzdWZmaXggIT09ICI6IiA/ICI6ICIgOiAiIjsK
IAogICAgICAgICAvLyBDb21wbGV0ZSBwcm9wZXJ0eSBuYW1lcy4KLSAgICAgICAgcmV0dXJuIFdJ
LkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5zdGFydHNXaXRoKHRoaXMuX3ByZWZp
eCk7CisgICAgICAgIHJldHVybiBXSS5jc3NNYW5hZ2VyLnByb3BlcnR5TmFtZUNvbXBsZXRpb25z
LnN0YXJ0c1dpdGgodGhpcy5fcHJlZml4KTsKICAgICB9CiAKICAgICBfZ2VuZXJhdGVKYXZhU2Ny
aXB0Q29tcGxldGlvbnMobWFpblRva2VuLCBiYXNlLCBzdWZmaXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggMzc0OWFiMDRlOTQ2OWE2ZWNi
YjBlNThlYmY2ZWY3ODZhNDUyNjY2NS4uY2YzN2NiYmIyYzU4ZDZiNjhlNzI1MmVkZDk1N2E1Yjhm
OGNmYTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbApAQCAtMzk2LDYgKzM5Niw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NHcm91
cGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NLZXl3b3JkQ29t
cGxldGlvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTUHJvcGVy
dHkuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTUHJvcGVydHlOYW1l
Q29tcGxldGlvbnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTUnVs
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NTZWxlY3Rvci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwppbmRleCAwOGIzMmU0MWI5ZjE3MjRj
Mjk4MmU2ODgyNTNmYTQ4ZWJhNDUxODlkLi4yYTUyODNmMDUyN2NkYzZhMjAyMDNiZGM3MDFhODQy
NGMwNDJiOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCkBAIC0zMywxMjcgKzMzLDE5IEBA
CiAKIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKIHsKLSAgICBjb25z
dHJ1Y3Rvcihwcm9wZXJ0aWVzLCBhY2NlcHRFbXB0eVByZWZpeCkKKyAgICBjb25zdHJ1Y3Rvcih2
YWx1ZXMsIHthY2NlcHRFbXB0eVByZWZpeH0gPSB7fSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Zh
bHVlcyA9IFtdOwotCi0gICAgICAgIC8vIFRoZSBgcHJvcGVydGllc2AgcGFyYW1ldGVyIGNhbiBi
ZSBlaXRoZXIgYSBsaXN0IG9mIG9iamVjdHMgd2l0aCAnbmFtZScgLyAnbG9uZ2hhbmQnCi0gICAg
ICAgIC8vIHByb3BlcnRpZXMgd2hlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBwcm90b2NvbCBmb3Ig
Q1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLgotICAgICAgICAvLyBPciBpdCBtYXkg
anVzdCBhIGxpc3Qgb2Ygc3RyaW5ncyB3aGVuIHF1aWNrbHkgaW5pdGlhbGl6ZWQgZm9yIG90aGVy
IGNvbXBsZXRpb24gcHVycG9zZXMuCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCAmJiB0
eXBlb2YgcHJvcGVydGllc1swXSA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICB0aGlzLl92YWx1
ZXMucHVzaEFsbChwcm9wZXJ0aWVzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb3Bl
cnR5TmFtZSA9IHByb3BlcnR5Lm5hbWU7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
cHJvcGVydHlOYW1lKTsKLQotICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKHByb3Bl
cnR5TmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBsZXQgYWxpYXNlcyA9IHByb3BlcnR5LmFsaWFz
ZXM7Ci0gICAgICAgICAgICAgICAgaWYgKGFsaWFzZXMpCi0gICAgICAgICAgICAgICAgICAgIHRo
aXMuX3ZhbHVlcy5wdXNoQWxsKGFsaWFzZXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkodmFsdWVzKSwgdmFsdWVzKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHZhbHVlc1swXSA9PT0gInN0cmluZyIsICJFeHBl
Y3QgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyIsIHZhbHVlcyk7CiAKKyAgICAgICAgdGhpcy5f
dmFsdWVzID0gdmFsdWVzLnNsaWNlKCk7CiAgICAgICAgIHRoaXMuX3ZhbHVlcy5zb3J0KCk7Ci0K
LSAgICAgICAgdGhpcy5fYWNjZXB0RW1wdHlQcmVmaXggPSBhY2NlcHRFbXB0eVByZWZpeDsKKyAg
ICAgICAgdGhpcy5fYWNjZXB0RW1wdHlQcmVmaXggPSAhIWFjY2VwdEVtcHR5UHJlZml4OwogICAg
ICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIgPSBudWxsOwogICAgIH0KIAogICAgIC8vIFN0YXRp
YwogCi0gICAgc3RhdGljIGluaXRpYWxpemVDU1NDb21wbGV0aW9ucyh0YXJnZXQpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQuaGFzRG9tYWluKCJDU1MiKSk7Ci0KLSAgICAg
ICAgaWYgKFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzQ2FsbGJhY2soZXJyb3IsIGNz
c1Byb3BlcnRpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucyA9IG5ldyBXSS5DU1NDb21wbGV0aW9ucyhjc3NQcm9wZXJ0aWVzLCBmYWxzZSk7
Ci0KLSAgICAgICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRDdXN0b21Db21wbGV0
aW9ucyhjc3NQcm9wZXJ0aWVzKTsKLQotICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBpcyBub3Qg
aW5jbHVkZWQgYnkgdGVzdHMgc28gd2Ugc2hvdWxkbid0IGFzc3VtZSBpdCBhbHdheXMgZXhpc3Rz
LgotICAgICAgICAgICAgLy8gSWYgaXQgaXNuJ3QgYXZhaWxhYmxlIHdlIHNraXAgTUlNRSB0eXBl
IGFzc29jaWF0aW9ucy4KLSAgICAgICAgICAgIGlmICghd2luZG93LkNvZGVNaXJyb3IpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lc0ZvckNv
ZGVNaXJyb3IgPSB7fTsKLSAgICAgICAgICAgIHZhciB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJv
ciA9IHsiaW5oZXJpdCI6IHRydWUsICJpbml0aWFsIjogdHJ1ZSwgInVuc2V0IjogdHJ1ZSwgInJl
dmVydCI6IHRydWUsICJ2YXIiOiB0cnVlLCAiZW52IjogdHJ1ZX07Ci0gICAgICAgICAgICB2YXIg
Y29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3IgPSB7fTsKLQotICAgICAgICAgICAgZnVuY3Rpb24g
bmFtZUZvckNvZGVNaXJyb3IobmFtZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAv
LyBDb2RlTWlycm9yIHBhcnNlcyB0aGUgdmVuZG9yIHByZWZpeCBzZXBhcmF0ZSBmcm9tIHRoZSBw
cm9wZXJ0eSBvciBrZXl3b3JkIG5hbWUsCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0
byBzdHJpcCB2ZW5kb3IgcHJlZml4ZXMgZnJvbSBvdXIgbmFtZXMuIEFsc28gc3RyaXAgZnVuY3Rp
b24gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXi1b
Xi1dKy0vLCAiIikucmVwbGFjZSgvXChcKSQvLCAiIikudG9Mb3dlckNhc2UoKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gY29sbGVjdFByb3BlcnR5TmFtZUZvckNvZGVN
aXJyb3IocHJvcGVydHlOYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFBy
b3BlcnRpZXMgY2FuIGFsc28gYmUgdmFsdWUga2V5d29yZHMsIGxpa2Ugd2hlbiB1c2VkIGluIGEg
dHJhbnNpdGlvbi4KLSAgICAgICAgICAgICAgICAvLyBTbyB3ZSBhZGQgdGhlbSB0byBib3RoIGxp
c3RzLgotICAgICAgICAgICAgICAgIHZhciBjb2RlTWlycm9yUHJvcGVydHlOYW1lID0gbmFtZUZv
ckNvZGVNaXJyb3IocHJvcGVydHlOYW1lKTsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
Rm9yQ29kZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0g
PSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBv
ZiBjc3NQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JD
b2RlTWlycm9yKHByb3BlcnR5Lm5hbWUpOwotCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0
eU5hbWUgaW4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXApIHsK
LSAgICAgICAgICAgICAgICB2YXIga2V5d29yZHMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
X3Byb3BlcnR5S2V5d29yZE1hcFtwcm9wZXJ0eU5hbWVdOwotICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwga2V5d29yZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gU2tpcCBudW1iZXJzLCBsaWtlIHRoZSBvbmVzIGRlZmluZWQgZm9yIGZvbnQtd2VpZ2h0
LgotICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZHNbaV0gPT09IFdJLkNTU0tleXdvcmRD
b21wbGV0aW9ucy5BbGxQcm9wZXJ0eU5hbWVzUGxhY2Vob2xkZXIgfHwgIWlzTmFOKE51bWJlcihr
ZXl3b3Jkc1tpXSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW25hbWVGb3JDb2RlTWlycm9y
KGtleXdvcmRzW2ldKV0gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMuZm9yRWFjaChm
dW5jdGlvbihjb2xvck5hbWUpIHsKLSAgICAgICAgICAgICAgICBjb2xvcktleXdvcmRzRm9yQ29k
ZU1pcnJvcltuYW1lRm9yQ29kZU1pcnJvcihjb2xvck5hbWUpXSA9IHRydWU7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ29kZU1pcnJvckNTU01vZGUobWlt
ZVR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIG1vZGVTcGVjID0gQ29k
ZU1pcnJvci5yZXNvbHZlTW9kZShtaW1lVHlwZSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChtb2RlU3BlYy5wcm9wZXJ0eUtleXdvcmRzKTsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChtb2RlU3BlYy52YWx1ZUtleXdvcmRzKTsKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChtb2RlU3BlYy5jb2xvcktleXdvcmRzKTsKLQotICAgICAgICAgICAgICAgIG1v
ZGVTcGVjLnByb3BlcnR5S2V5d29yZHMgPSBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcjsKLSAg
ICAgICAgICAgICAgICBtb2RlU3BlYy52YWx1ZUtleXdvcmRzID0gdmFsdWVLZXl3b3Jkc0ZvckNv
ZGVNaXJyb3I7Ci0gICAgICAgICAgICAgICAgbW9kZVNwZWMuY29sb3JLZXl3b3JkcyA9IGNvbG9y
S2V5d29yZHNGb3JDb2RlTWlycm9yOwotCi0gICAgICAgICAgICAgICAgQ29kZU1pcnJvci5kZWZp
bmVNSU1FKG1pbWVUeXBlLCBtb2RlU3BlYyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKCJ0ZXh0L2NzcyIpOwotICAgICAgICAgICAgdXBkYXRl
Q29kZU1pcnJvckNTU01vZGUoInRleHQveC1zY3NzIik7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBmb250RmFtaWx5TmFtZXNDYWxsYmFjayhlcnJvciwgZm9udEZhbWlseU5hbWVzKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkUHJvcGVydHlDb21w
bGV0aW9uVmFsdWVzKCJmb250LWZhbWlseSIsIGZvbnRGYW1pbHlOYW1lcyk7Ci0gICAgICAgICAg
ICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkUHJvcGVydHlDb21wbGV0aW9uVmFsdWVzKCJm
b250IiwgZm9udEZhbWlseU5hbWVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhcmdldC5DU1NB
Z2VudC5nZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKHByb3BlcnRpZXNDYWxsYmFjayk7Ci0gICAg
ICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiQ1NTLmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1p
bHlOYW1lcyIpKQotICAgICAgICAgICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyhmb250RmFtaWx5TmFtZXNDYWxsYmFjayk7Ci0gICAgfQotCiAgICAg
c3RhdGljIGNvbXBsZXRlVW5iYWxhbmNlZFZhbHVlKHZhbHVlKQogICAgIHsKICAgICAgICAgY29u
c3QgU3RhdGUgPSB7CkBAIC0zMTEsNDUgKzIwMyw4IEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xh
c3MgQ1NTQ29tcGxldGlvbnMKIAogICAgICAgICByZXR1cm4gZm91bmRJbmRleDsKICAgICB9Ci0K
LSAgICBuZXh0KHN0ciwgcHJlZml4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3Nl
c3Qoc3RyLCBwcmVmaXgsIDEpOwotICAgIH0KLQotICAgIHByZXZpb3VzKHN0ciwgcHJlZml4KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3Nlc3Qoc3RyLCBwcmVmaXgsIC0xKTsKLSAg
ICB9Ci0KLSAgICBfY2xvc2VzdChzdHIsIHByZWZpeCwgc2hpZnQpCi0gICAgewotICAgICAgICBp
ZiAoIXN0cikKLSAgICAgICAgICAgIHJldHVybiAiIjsKLQotICAgICAgICB2YXIgaW5kZXggPSB0
aGlzLl92YWx1ZXMuaW5kZXhPZihzdHIpOwotICAgICAgICBpZiAoaW5kZXggPT09IC0xKQotICAg
ICAgICAgICAgcmV0dXJuICIiOwotCi0gICAgICAgIGlmICghcHJlZml4KSB7Ci0gICAgICAgICAg
ICBpbmRleCA9IChpbmRleCArIHRoaXMuX3ZhbHVlcy5sZW5ndGggKyBzaGlmdCkgJSB0aGlzLl92
YWx1ZXMubGVuZ3RoOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlc1tpbmRleF07Ci0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgcHJvcGVydGllc1dpdGhQcmVmaXggPSB0aGlzLnN0YXJ0
c1dpdGgocHJlZml4KTsKLSAgICAgICAgdmFyIGogPSBwcm9wZXJ0aWVzV2l0aFByZWZpeC5pbmRl
eE9mKHN0cik7Ci0gICAgICAgIGogPSAoaiArIHByb3BlcnRpZXNXaXRoUHJlZml4Lmxlbmd0aCAr
IHNoaWZ0KSAlIHByb3BlcnRpZXNXaXRoUHJlZml4Lmxlbmd0aDsKLSAgICAgICAgcmV0dXJuIHBy
b3BlcnRpZXNXaXRoUHJlZml4W2pdOwotICAgIH0KLQotICAgIGlzVmFsaWRQcm9wZXJ0eU5hbWUo
bmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXMuaW5jbHVkZXMobmFtZSk7
Ci0gICAgfQogfTsKIAotV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zID0gbnVs
bDsKLQogV0kuQ1NTQ29tcGxldGlvbnMubGVuZ3RoVW5pdHMgPSBuZXcgU2V0KFsKICAgICAiY2gi
LAogICAgICJjbSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwppbmRleCBl
ZmExMDM2M2RhZjk5Mjc3NjkzOTBjMzc4N2E4ZDYyMzc1NTYyY2UxLi5kYTNjZWYxNDhjOGJiZjdj
YWE3NmNiNTQ5YmVmMjI4ODZiNjE3NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuanMKQEAgLTQxLDEzICs0MSwxMyBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9y
UGFydGlhbFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLAogICAg
ICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6IFtdfTsKIAogICAgIGlmICgh
dGV4dC5sZW5ndGggJiYgYWxsb3dFbXB0eVByZWZpeCkKLSAgICAgICAgcmV0dXJuIHtwcmVmaXg6
IHRleHQsIGNvbXBsZXRpb25zOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMu
dmFsdWVzfTsKKyAgICAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zOiBXSS5j
c3NNYW5hZ2VyLnByb3BlcnR5TmFtZUNvbXBsZXRpb25zLnZhbHVlc307CiAKICAgICBsZXQgY29t
cGxldGlvbnM7CiAgICAgaWYgKHVzZUZ1enp5TWF0Y2hpbmcpCi0gICAgICAgIGNvbXBsZXRpb25z
ID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmV4ZWN1dGVRdWVyeSh0ZXh0
KTsKKyAgICAgICAgY29tcGxldGlvbnMgPSBXSS5jc3NNYW5hZ2VyLnByb3BlcnR5TmFtZUNvbXBs
ZXRpb25zLmV4ZWN1dGVRdWVyeSh0ZXh0KTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25z
ID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgodGV4dCk7
CisgICAgICAgIGNvbXBsZXRpb25zID0gV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0
aW9ucy5zdGFydHNXaXRoKHRleHQpOwogCiAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBs
ZXRpb25zfTsKIH07CkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBhZGRL
ZXl3b3Jkc0Zvck5hbWUobG9uZ2hhbmROYW1lKTsKICAgICB9CiAKLSAgICBpZiAoYWNjZXB0ZWRL
ZXl3b3Jkcy5pbmNsdWRlcyhXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1l
c1BsYWNlaG9sZGVyKSAmJiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMpIHsK
KyAgICBpZiAoYWNjZXB0ZWRLZXl3b3Jkcy5pbmNsdWRlcyhXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKSAmJiBXSS5jc3NNYW5hZ2VyLnByb3BlcnR5
TmFtZUNvbXBsZXRpb25zKSB7CiAgICAgICAgIGFjY2VwdGVkS2V5d29yZHMucmVtb3ZlKFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9wZXJ0eU5hbWVzUGxhY2Vob2xkZXIpOwotICAgICAg
ICBhY2NlcHRlZEtleXdvcmRzLnB1c2hBbGwoV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBs
ZXRpb25zLnZhbHVlcyk7CisgICAgICAgIGFjY2VwdGVkS2V5d29yZHMucHVzaEFsbChXSS5jc3NN
YW5hZ2VyLnByb3BlcnR5TmFtZUNvbXBsZXRpb25zLnZhbHVlcyk7CiAgICAgfQogCi0gICAgcmV0
dXJuIG5ldyBXSS5DU1NDb21wbGV0aW9ucyhBcnJheS5mcm9tKG5ldyBTZXQoYWNjZXB0ZWRLZXl3
b3JkcykpLCB0cnVlKTsKKyAgICByZXR1cm4gbmV3IFdJLkNTU0NvbXBsZXRpb25zKEFycmF5LmZy
b20obmV3IFNldChhY2NlcHRlZEtleXdvcmRzKSksIHthY2NlcHRFbXB0eVByZWZpeDogdHJ1ZX0p
OwogfTsKIAogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmlzQ29sb3JBd2FyZVByb3BlcnR5ID0g
ZnVuY3Rpb24obmFtZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yRnVuY3Rpb24gPSBmdW5jdGlvbihmdW5jdGlvbk5hbWUpCiAgICAgICAgIHN1Z2dlc3Rp
b25zLnB1c2hBbGwoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMpOwogICAgIH0KIAot
ICAgIHJldHVybiBuZXcgV0kuQ1NTQ29tcGxldGlvbnMoc3VnZ2VzdGlvbnMsIHRydWUpOworICAg
IHJldHVybiBuZXcgV0kuQ1NTQ29tcGxldGlvbnMoc3VnZ2VzdGlvbnMsIHthY2NlcHRFbXB0eVBy
ZWZpeDogdHJ1ZX0pOwogfTsKIAogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFkZEN1c3RvbUNv
bXBsZXRpb25zID0gZnVuY3Rpb24ocHJvcGVydGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9u
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9w
ZXJ0eU5hbWVDb21wbGV0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGExNTc1NmJmZjBmMGQ2N2VmM2I0
MzQ1NjZmNTA2ZDA5MmEzODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zLmpzCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9u
cyA9IGNsYXNzIENTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zIGV4dGVuZHMgV0kuQ1NTQ29tcGxl
dGlvbnMKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzLCB7YWNjZXB0RW1wdHlQcmVmaXh9
ID0ge30pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChBcnJheS5pc0FycmF5KHByb3Bl
cnRpZXMpLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocHJvcGVydGllc1sw
XS5uYW1lLCAiRXhwZWN0ZWQgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGBuYW1lYCBrZXkiLCBw
cm9wZXJ0aWVzKTsKKworICAgICAgICBsZXQgdmFsdWVzID0gW107CisgICAgICAgIGZvciAobGV0
IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBy
b3BlcnR5Lm5hbWUpOworCisgICAgICAgICAgICB2YWx1ZXMucHVzaChwcm9wZXJ0eS5uYW1lKTsK
KyAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnR5LmFsaWFzZXMpKQorICAgICAg
ICAgICAgICAgIHZhbHVlcy5wdXNoQWxsKHByb3BlcnR5LmFsaWFzZXMpOworICAgICAgICB9CisK
KyAgICAgICAgc3VwZXIodmFsdWVzLCB7YWNjZXB0RW1wdHlQcmVmaXh9KTsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGlzVmFsaWRQcm9wZXJ0eU5hbWUobmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLnZhbHVlcy5pbmNsdWRlcyhuYW1lKTsKKyAgICB9Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDc3NzE5MDY1
ZGQzMDZlMjkyYWI1NGRiYmQ4YjcxMzVhZTI3YTViMDAuLjU1NmYwODU5NDY1ZGY3NjBmZjNmN2Nh
ZmI5YmM1OWE3NzMwNTdiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9UZXN0Lmh0bWwKQEAgLTEzMiw2ICsxMzIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvQ1NTR3JvdXBpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NT
S2V5d29yZENvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0NTU1Byb3BlcnR5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1By
b3BlcnR5TmFtZUNvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0NTU1J1bGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU2Vs
ZWN0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0L1Rlc3QuanMKaW5kZXggZDNmMmQ1NzZmYjJlOTQzZjZlMjM2YzdmZDY4ODVj
ZTkyMDIwNWMzNi4uYTAxYTczODQ2MWZlMGJkZjJmMzZhMTY1MWExNmE3Y2FiZmRmNDZjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwpA
QCAtMTI1LDcgKzEyNSw3IEBAIFdJLnBlcmZvcm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlv
bnNVc2luZ1RhcmdldCA9IGZ1bmN0aW9uKHRhcmdldCkKICAgICAvLyBGSVhNRTogVGhpcyBzbG93
cyBkb3duIHRlc3QgZGVidWcgbG9nZ2luZyBjb25zaWRlcmFibHkuCiAgICAgaWYgKCFXSS5fX2Rp
ZFBlcmZvcm1DU1NJbml0aWFsaXphdGlvbiAmJiB0YXJnZXQuaGFzRG9tYWluKCJDU1MiKSkgewog
ICAgICAgICBXSS5fX2RpZFBlcmZvcm1DU1NJbml0aWFsaXphdGlvbiA9IHRydWU7Ci0gICAgICAg
IFdJLkNTU0NvbXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyh0YXJnZXQpOworICAg
ICAgICBXSS5jc3NNYW5hZ2VyLmluaXRpYWxpemVDU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyh0
YXJnZXQpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eS5qcwppbmRleCBkOTRkNzE1ZjU0YjZmYWU1YzI1MzgzMmIzYWM0MDIyZTU1YmQxNzRhLi42Yzhi
NTVjYzgwZjY4ODJiMjk4ZmU2NWVmNzBiYjAwYWU1M2JkODJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3By
ZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCkBAIC0zMDAsMTMgKzMwMCw5IEBAIFdJLlNwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX3Byb3BlcnR5LnZhbGlkICYmIHRoaXMuX3By
b3BlcnR5Lmhhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZCgpKQogICAgICAgICAgICAgY2xhc3NO
YW1lcy5wdXNoKCJvdGhlci12ZW5kb3IiKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5faGFzSW52
YWxpZFZhcmlhYmxlVmFsdWUgfHwgKCF0aGlzLl9wcm9wZXJ0eS52YWxpZCAmJiB0aGlzLl9wcm9w
ZXJ0eS52YWx1ZSAhPT0gIiIpKSB7Ci0gICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lSXNWYWxp
ZCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21w
bGV0aW9ucykKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVJc1ZhbGlkID0gV0kuQ1NTQ29t
cGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0eU5hbWUodGhpcy5fcHJv
cGVydHkubmFtZSk7Ci0KICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiaGFzLXdhcm5pbmci
KTsKIAotICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVJc1ZhbGlkKSB7CisgICAgICAgICAg
ICBpZiAoIVdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxldGlvbnM/LmlzVmFsaWRQcm9w
ZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSkpIHsKICAgICAgICAgICAgICAgICBjbGFzc05h
bWVzLnB1c2goImludmFsaWQtbmFtZSIpOwogICAgICAgICAgICAgICAgIGVsZW1lbnRUaXRsZSA9
IFdJLlVJU3RyaW5nKCJVbnN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtNTM5LDcgKzUzNSw3IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9
IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAodGhpcy5wcm9wZXJ0eS5pc1ZhcmlhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmICghV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQ
cm9wZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSkpCisgICAgICAgIGlmICghV0kuY3NzTWFu
YWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucz8uaXNWYWxpZFByb3BlcnR5TmFtZSh0aGlzLl9w
cm9wZXJ0eS5uYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIUNTU0Rv
Y3VtZW50YXRpb24uaGFzT3duUHJvcGVydHkodGhpcy5fcHJvcGVydHkubmFtZSkgJiYgIUNTU0Rv
Y3VtZW50YXRpb24uaGFzT3duUHJvcGVydHkodGhpcy5fcHJvcGVydHkuY2Fub25pY2FsTmFtZSkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446702</attachid>
            <date>2021-12-10 03:22:32 -0800</date>
            <delta_ts>2021-12-10 04:25:01 -0800</delta_ts>
            <desc>Patch 1.3</desc>
            <filename>bug-233369-20211210122231.patch</filename>
            <type>text/plain</type>
            <size>26987</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGExM2NmNDM5ZjE3ZmNhY2EzODQ1MDI4YjE3Yzlh
NTA5ZjliOTEzNzEuLmE5YWMzZTIxMDNiYTllNDQ4MTUwYmFmYzhmMzhlNDEwOGQ4MTljYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIxLTEyLTA4ICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IGEgc3BlY2lhbGl6ZWQgQ1NTTmFtZUNvbXBsZXRpb25zIGZyb20gQ1NTQ29tcGxl
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzM2OQorICAgICAgICA8cmRhcjovLzgzMjA2NTIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IERl
dmluIFJvdXNzby4KKworICAgICAgICBgV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnNgIGlz
IGEgbG9uZy1saXZlZCBvYmplY3QgdGhhdCBob2xkcyB0aGUgbGlzdCBvZiBhbGwgQ1NTIHByb3Bl
cnRpZXMKKyAgICAgICAgc3VwcG9ydGVkIGJ5IHRoZSB0YXJnZXQuIEl0IGlzIGluc3RhbnRpYXRl
ZCBvbmx5IG9uY2Ugb24gV2ViIEluc3BlY3RvciBzdGFydHVwLgorCisgICAgICAgIEJ5IGNvbnRy
YXN0LCBgV0kuQ1NTQ29tcGxldGlvbnNgIGlzIGFuIG9iamVjdCBpbnN0YW50aWF0ZWQgYXMgb2Z0
ZW4gYXMgbmVlZGVkIHdpdGgKKyAgICAgICAgbGlzdHMgb2YgcHJvcGVydHkgdmFsdWVzLCBDU1Mg
ZnVuY3Rpb24gdmFsdWVzLCBldGMuIEl0IGhvbGRzIHRoZSBnZW5lcmljIGxvZ2ljIGZvcgorICAg
ICAgICBtYXRjaGluZyB2YWx1ZXMgYWdhaW5zdCBhIGdpdmVuIHF1ZXJ5LgorCisgICAgICAgIFRo
ZSBzcGVjaWFsaXplZCBsb2dpYyBmb3IgQ1NTIHByb3BlcnR5IG5hbWVzIHdhcyBtaXhlZC1pbiB3
aXRoIHRoZSBnZW5lcmljIGxvZ2ljIGluIGBXSS5DU1NDb21wbGV0aW9uc2AuCisgICAgICAgIFRo
ZSBtYWluIGRpZmZlcmVuY2UgaXMgaW4gdGhlIGZvcm1hdCBvZiB0aGUgcGF5bG9hZCBwcm92aWRl
ZDoKKyAgICAgICAgLSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGgga2V5L3ZhbHVlIHBhaXJzIGZv
ciBgV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnNgLgorICAgICAgICAtIGFuIGFycmF5IG9m
IHN0cmluZ3MgZm9yIGdlbmVyYWwgcHVycG9zZSBgV0kuQ1NTQ29tcGxldGlvbnNgLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgY29tcGxleGl0eSBpbiBgV0kuQ29tcGxldGlvbnNg
OgorICAgICAgICAtIG1vdmVzIHRoZSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiBtZXRob2QgdG8g
YFdJLmNzc01hbmFnZXIuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zYC4KKyAgICAgICAgLSBzaW1w
bGlmaWVzIGBXSS5Db21wbGV0aW9uc2AgY29uc3RydWN0b3IgdG8gZXhwZWN0IGp1c3QgYW4gYXJy
YXkgb2Ygc3RyaW5ncy4KKyAgICAgICAgLSBpbnRyb2R1Y2VzIGBXSS5DU1NQcm9wZXJ0eU5hbWVD
b21wbGV0aW9uc2AgYXMgYSBzdWItY2xhc3Mgb2YgYFdJLkNTU0NvbXBsZXRpb25zYCB3aGVyZSBp
dHMgY29uc3RydWN0b3IKKyAgICAgICAgICBpcyBzcGVjaWFsaXplZCB0byBoYW5kbGUgdGhlIHBh
eWxvYWQgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZC4KKyAgICAgICAgLSBtb3ZlcyB0aGUgYFdJ
LkNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zYCBpbnN0YW5jZSB0byBgV0kuY3NzTWFuYWdlci5j
c3NQcm9wZXJ0eU5hbWVDb21wbGV0aW9uc2AuCisgICAgICAgIC0gcmVtb3ZlcyB1bnVzZWQgYWNj
ZXNzb3JzIGZvciBuYXZpZ2F0aW5nIHRoZSBsaXN0IG9mIG1hdGNoZWQgY29tcGxldGlvbnMuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLnBlcmZv
cm1PbmVUaW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuQ1NT
TWFuYWdlcik6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplQ1NT
UHJvcGVydHlOYW1lQ29tcGxldGlvbnMuKToKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90
eXBlLmluaXRpYWxpemVDU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyk6CisgICAgICAgIE1vdmVk
IHRoZSBpbml0aWFsaXppYXRpb24gbWV0aG9kIGZvciBvYmplY3RzIHVzZWQgdG8gZ2V0IENTUyBj
b21wbGV0aW9ucworICAgICAgICBmcm9tIGBXSS5DU1NDb21wbGV0aW9uc2Agd2l0aCBkYXRhIGZy
b20gdGhlIGJhY2tlZCB0byBhIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2UuCisKKyAgICAgICAgKFdJ
LkNTU01hbmFnZXIucHJvdG90eXBlLmdldCBwcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRy
b2xsZXIuanM6CisgICAgICAgIChXSS5Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIucHJv
dG90eXBlLl9nZW5lcmF0ZUNTU0NvbXBsZXRpb25zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9u
cy5qczoKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5fZmlyc3RJbmRleE9m
UHJlZml4KToKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zKToKKyAgICAgICAgKFdJLkNTU0Nv
bXBsZXRpb25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucy4pOiBEZWxldGVkLgorICAgICAgICAo
V0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLmNvbGxlY3RQcm9wZXJ0
eU5hbWVGb3JDb2RlTWlycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25z
LmluaXRpYWxpemVDU1NDb21wbGV0aW9ucy5wcm9wZXJ0aWVzQ2FsbGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zLmZvbnRG
YW1pbHlOYW1lc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25z
LmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIE1vdmVkIHRvIGBX
SS5DU1NNYW5hZ2VyYC4KKworICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLm5l
eHQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLnByZXZp
b3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5fY2xv
c2VzdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZWQgdW51c2VkIG1ldGhvZHMgZm9yIG5hdmln
YXRpbmcgdGhlIGNvbXBsZXRpb25zIGxpc3QuCisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgZW5j
YXBzdWxhdGVkIGluIGBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3YC4KKworICAgICAgICAo
V0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmlzVmFsaWRQcm9wZXJ0eU5hbWUpOiBEZWxldGVk
LgorICAgICAgICBNb3ZlZCB0byBgV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnNgLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzOgor
ICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1Byb3BlcnR5TmFtZUNvbXBsZXRp
b25zLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkNTU1Byb3BlcnR5TmFtZUNvbXBsZXRpb25zLnBy
b3RvdHlwZS5pc1ZhbGlkUHJvcGVydHlOYW1lKToKKyAgICAgICAgKFdJLkNTU1Byb3BlcnR5TmFt
ZUNvbXBsZXRpb25zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qczoKKyAgICAgICAgKFdJLnBlcmZvcm1PbmVU
aW1lRnJvbnRlbmRJbml0aWFsaXphdGlvbnNVc2luZ1RhcmdldCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6CisgICAgICAgIChXSS5T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9hZGRDU1NEb2N1bWVudGF0
aW9uQnV0dG9uKToKKwogMjAyMS0xMi0wOSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnByZWZpeCBDU1MgdmFsdWUgdGV4dC1hbGlnbjogLXdlYmtpdC1t
YXRjaC1wYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qcwppbmRleCA3N2FhZmUzMWExOGZmMjg2N2U0ZTViM2JkNjM2ZWVmOTczZThjZjE3
Li4zMzM3MDE2N2Y5OWYzZGZlZTA5MWNiYzBjYjkwOTRiMTQ2ZWM1MzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC02MjMsNyAr
NjIzLDcgQEAgV0kucGVyZm9ybU9uZVRpbWVGcm9udGVuZEluaXRpYWxpemF0aW9uc1VzaW5nVGFy
Z2V0ID0gZnVuY3Rpb24odGFyZ2V0KQogCiAgICAgaWYgKCFXSS5fX2RpZFBlcmZvcm1DU1NJbml0
aWFsaXphdGlvbiAmJiB0YXJnZXQuaGFzRG9tYWluKCJDU1MiKSkgewogICAgICAgICBXSS5fX2Rp
ZFBlcmZvcm1DU1NJbml0aWFsaXphdGlvbiA9IHRydWU7Ci0gICAgICAgIFdJLkNTU0NvbXBsZXRp
b25zLmluaXRpYWxpemVDU1NDb21wbGV0aW9ucyh0YXJnZXQpOworICAgICAgICBXSS5jc3NNYW5h
Z2VyLmluaXRpYWxpemVDU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyh0YXJnZXQpOwogICAgIH0K
IH07CiAKQEAgLTgxMCw3ICs4MTAsNyBAQCBXSS5hY3RpdmF0ZUV4dHJhRG9tYWlucyA9IGZ1bmN0
aW9uKGRvbWFpbnMpCiAgICAgICAgICAgICBXSS5wYWdlVGFyZ2V0ID0gV0kubWFpblRhcmdldDsK
IAogICAgICAgICBpZiAoV0kubWFpblRhcmdldC5oYXNEb21haW4oIkNTUyIpKQotICAgICAgICAg
ICAgV0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKFdJLmFzc3VtaW5n
TWFpblRhcmdldCgpKTsKKyAgICAgICAgICAgIFdJLmNzc01hbmFnZXIuaW5pdGlhbGl6ZUNTU1By
b3BlcnR5TmFtZUNvbXBsZXRpb25zKFdJLmFzc3VtaW5nTWFpblRhcmdldCgpKTsKIAogICAgICAg
ICBpZiAoV0kubWFpblRhcmdldC5oYXNEb21haW4oIkRPTSIpKQogICAgICAgICAgICAgV0kuZG9t
TWFuYWdlci5lbnN1cmVEb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKaW5kZXgg
NGEzYTdhNDc2ZTk0YmYwNTEyYTk3YTViZjJiZWFlN2JmMzM0ZjQwYy4uY2Y0ZDExNDRlNzA3NDk3
Mzg4MjQ3NjkwOThiNDc0YjE4MjhjZThhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCkBA
IC00OCw2ICs0OCw4IEBAIFdJLkNTU01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX21vZGlmaWVkU3R5bGVzID0gbmV3IE1hcDsKICAgICAg
ICAgdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UgPSBudWxsOwogICAgICAgICB0aGlzLl9mb3JjZWRB
cHBlYXJhbmNlID0gbnVsbDsKKworICAgICAgICB0aGlzLl9wcm9wZXJ0eU5hbWVDb21wbGV0aW9u
cyA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CkBAIC01OCw2ICs2MCw4NiBAQCBXSS5D
U1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAg
ICAgdGFyZ2V0LkNTU0FnZW50LmVuYWJsZSgpOwogICAgIH0KIAorICAgIGluaXRpYWxpemVDU1NQ
cm9wZXJ0eU5hbWVDb21wbGV0aW9ucyh0YXJnZXQpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0YXJnZXQuaGFzRG9tYWluKCJDU1MiKSk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Byb3Bl
cnR5TmFtZUNvbXBsZXRpb25zKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRhcmdl
dC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKChlcnJvciwgY3NzUHJvcGVydGll
cykgPT4geworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgdGhpcy5fcHJvcGVydHlOYW1lQ29tcGxldGlvbnMgPSBuZXcgV0kuQ1NT
UHJvcGVydHlOYW1lQ29tcGxldGlvbnMoY3NzUHJvcGVydGllcyk7CisKKyAgICAgICAgICAgIFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRDdXN0b21Db21wbGV0aW9ucyhjc3NQcm9wZXJ0aWVz
KTsKKworICAgICAgICAgICAgLy8gQ29kZU1pcnJvciBpcyBub3QgaW5jbHVkZWQgYnkgdGVzdHMg
c28gd2Ugc2hvdWxkbid0IGFzc3VtZSBpdCBhbHdheXMgZXhpc3RzLgorICAgICAgICAgICAgLy8g
SWYgaXQgaXNuJ3QgYXZhaWxhYmxlIHdlIHNraXAgTUlNRSB0eXBlIGFzc29jaWF0aW9ucy4KKyAg
ICAgICAgICAgIGlmICghd2luZG93LkNvZGVNaXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lc0ZvckNvZGVNaXJyb3IgPSB7fTsKKyAg
ICAgICAgICAgIGxldCB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvciA9IHsiaW5oZXJpdCI6IHRy
dWUsICJpbml0aWFsIjogdHJ1ZSwgInVuc2V0IjogdHJ1ZSwgInJldmVydCI6IHRydWUsICJ2YXIi
OiB0cnVlLCAiZW52IjogdHJ1ZX07CisgICAgICAgICAgICBsZXQgY29sb3JLZXl3b3Jkc0ZvckNv
ZGVNaXJyb3IgPSB7fTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbmFtZUZvckNvZGVNaXJyb3Io
bmFtZSkgeworICAgICAgICAgICAgICAgIC8vIENvZGVNaXJyb3IgcGFyc2VzIHRoZSB2ZW5kb3Ig
cHJlZml4IHNlcGFyYXRlIGZyb20gdGhlIHByb3BlcnR5IG9yIGtleXdvcmQgbmFtZSwKKyAgICAg
ICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHZlbmRvciBwcmVmaXhlcyBmcm9tIG91
ciBuYW1lcy4gQWxzbyBzdHJpcCBmdW5jdGlvbiBwYXJlbnRoZXNpcy4KKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmFtZS5yZXBsYWNlKC9eLVteLV0rLS8sICIiKS5yZXBsYWNlKC9cKFwpJC8sICIi
KS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBw
cm9wZXJ0eSBvZiBjc3NQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgLy8gUHJvcGVydGll
cyBjYW4gYWxzbyBiZSB2YWx1ZSBrZXl3b3JkcywgbGlrZSB3aGVuIHVzZWQgaW4gYSB0cmFuc2l0
aW9uLgorICAgICAgICAgICAgICAgIC8vIFNvIHdlIGFkZCB0aGVtIHRvIGJvdGggbGlzdHMuCisg
ICAgICAgICAgICAgICAgbGV0IGNvZGVNaXJyb3JQcm9wZXJ0eU5hbWUgPSBuYW1lRm9yQ29kZU1p
cnJvcihwcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzRm9yQ29k
ZU1pcnJvcltjb2RlTWlycm9yUHJvcGVydHlOYW1lXSA9IHRydWU7CisgICAgICAgICAgICAgICAg
dmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0gPSB0cnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eU5hbWUgaW4g
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXApIHsKKyAgICAgICAg
ICAgICAgICBsZXQga2V5d29yZHMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5
S2V5d29yZE1hcFtwcm9wZXJ0eU5hbWVdOworICAgICAgICAgICAgICAgIGZvciAobGV0IGtleXdv
cmQgb2Yga2V5d29yZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCBudW1iZXJzLCBs
aWtlIHRoZSBvbmVzIGRlZmluZWQgZm9yIGZvbnQtd2VpZ2h0LgorICAgICAgICAgICAgICAgICAg
ICBpZiAoa2V5d29yZCA9PT0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLkFsbFByb3BlcnR5TmFt
ZXNQbGFjZWhvbGRlciB8fCAhaXNOYU4oTnVtYmVyKGtleXdvcmQpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB2YWx1ZUtleXdvcmRzRm9y
Q29kZU1pcnJvcltuYW1lRm9yQ29kZU1pcnJvcihrZXl3b3JkKV0gPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChsZXQgY29sb3Igb2Yg
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMpCisgICAgICAgICAgICAgICAgY29sb3JL
ZXl3b3Jkc0ZvckNvZGVNaXJyb3JbbmFtZUZvckNvZGVNaXJyb3IoY29sb3IpXSA9IHRydWU7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKG1pbWVUeXBlKSB7
CisgICAgICAgICAgICAgICAgbGV0IG1vZGVTcGVjID0gQ29kZU1pcnJvci5yZXNvbHZlTW9kZSht
aW1lVHlwZSk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy5wcm9w
ZXJ0eUtleXdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy52
YWx1ZUtleXdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChtb2RlU3BlYy5j
b2xvcktleXdvcmRzKTsKKworICAgICAgICAgICAgICAgIG1vZGVTcGVjLnByb3BlcnR5S2V5d29y
ZHMgPSBwcm9wZXJ0eU5hbWVzRm9yQ29kZU1pcnJvcjsKKyAgICAgICAgICAgICAgICBtb2RlU3Bl
Yy52YWx1ZUtleXdvcmRzID0gdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3I7CisgICAgICAgICAg
ICAgICAgbW9kZVNwZWMuY29sb3JLZXl3b3JkcyA9IGNvbG9yS2V5d29yZHNGb3JDb2RlTWlycm9y
OworCisgICAgICAgICAgICAgICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKG1pbWVUeXBlLCBtb2Rl
U3BlYyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0ZUNvZGVNaXJyb3JDU1NN
b2RlKCJ0ZXh0L2NzcyIpOworICAgICAgICAgICAgdXBkYXRlQ29kZU1pcnJvckNTU01vZGUoInRl
eHQveC1zY3NzIik7CisgICAgICAgIH0pOworCisgICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFu
ZCgiQ1NTLmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyIpKSB7CisgICAgICAgICAg
ICB0YXJnZXQuQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKChlcnJv
ciwgZm9udEZhbWlseU5hbWVzKSA9PnsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIFdJLkNTU0tleXdvcmRD
b21wbGV0aW9ucy5hZGRQcm9wZXJ0eUNvbXBsZXRpb25WYWx1ZXMoImZvbnQtZmFtaWx5IiwgZm9u
dEZhbWlseU5hbWVzKTsKKyAgICAgICAgICAgICAgICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
YWRkUHJvcGVydHlDb21wbGV0aW9uVmFsdWVzKCJmb250IiwgZm9udEZhbWlseU5hbWVzKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gU3RhdGljCiAKICAgICBz
dGF0aWMgc3VwcG9ydHNJbnNwZWN0b3JTdHlsZVNoZWV0KCkKQEAgLTE4MCw2ICsyNjIsOCBAQCBX
SS5DU1NNYW5hZ2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
Ly8gUHVibGljCiAKKyAgICBnZXQgcHJvcGVydHlOYW1lQ29tcGxldGlvbnMoKSB7IHJldHVybiB0
aGlzLl9wcm9wZXJ0eU5hbWVDb21wbGV0aW9uczsgfQorCiAgICAgZ2V0IHByZWZlcnJlZENvbG9y
Rm9ybWF0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2xvckZvcm1hdFNldHRpbmcu
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlv
bkNvbnRyb2xsZXIuanMKaW5kZXggMTMxMDU4NTkwZjMxNmRjZTg2NWUyZTdiZDVmNWVjZWQ5M2Fk
YzhiNi4uNGYwMTQ0MjViNTNiZjY0MDdlYWQzOWUxODRkNDA3ODA0YjJmZDdmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1p
cnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5q
cwpAQCAtNjI3LDcgKzYyNyw3IEBAIFdJLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlciA9
IGNsYXNzIENvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlciBleHRlbmRzCiAgICAgICAgIHRo
aXMuX2ltcGxpY2l0U3VmZml4ID0gc3VmZml4ICE9PSAiOiIgPyAiOiAiIDogIiI7CiAKICAgICAg
ICAgLy8gQ29tcGxldGUgcHJvcGVydHkgbmFtZXMuCi0gICAgICAgIHJldHVybiBXSS5DU1NDb21w
bGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aCh0aGlzLl9wcmVmaXgpOworICAg
ICAgICByZXR1cm4gV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy5zdGFydHNX
aXRoKHRoaXMuX3ByZWZpeCk7CiAgICAgfQogCiAgICAgX2dlbmVyYXRlSmF2YVNjcmlwdENvbXBs
ZXRpb25zKG1haW5Ub2tlbiwgYmFzZSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDM3NDlhYjA0ZTk0NjlhNmVjYmIwZTU4ZWJm
NmVmNzg2YTQ1MjY2NjUuLmNmMzdjYmJiMmM1OGQ2YjY4ZTcyNTJlZGQ5NTdhNWI4ZjhjZmE0ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAg
LTM5Niw2ICszOTYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTR3JvdXBpbmcuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25z
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1Byb3BlcnR5LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1Byb3BlcnR5TmFtZUNvbXBsZXRp
b25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1J1bGUuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU2VsZWN0b3IuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggMDhiMzJlNDFiOWYxNzI0YzI5ODJlNjg4
MjUzZmE0OGViYTQ1MTg5ZC4uMmE1MjgzZjA1MjdjZGM2YTIwMjAzYmRjNzAxYTg0MjRjMDQyYjhm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMzMsMTI3ICszMywxOSBAQAogCiBXSS5D
U1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiB7Ci0gICAgY29uc3RydWN0b3Io
cHJvcGVydGllcywgYWNjZXB0RW1wdHlQcmVmaXgpCisgICAgY29uc3RydWN0b3IodmFsdWVzLCB7
YWNjZXB0RW1wdHlQcmVmaXh9ID0ge30pCiAgICAgewotICAgICAgICB0aGlzLl92YWx1ZXMgPSBb
XTsKLQotICAgICAgICAvLyBUaGUgYHByb3BlcnRpZXNgIHBhcmFtZXRlciBjYW4gYmUgZWl0aGVy
IGEgbGlzdCBvZiBvYmplY3RzIHdpdGggJ25hbWUnIC8gJ2xvbmdoYW5kJwotICAgICAgICAvLyBw
cm9wZXJ0aWVzIHdoZW4gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgcHJvdG9jb2wgZm9yIENTU0NvbXBs
ZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy4KLSAgICAgICAgLy8gT3IgaXQgbWF5IGp1c3QgYSBs
aXN0IG9mIHN0cmluZ3Mgd2hlbiBxdWlja2x5IGluaXRpYWxpemVkIGZvciBvdGhlciBjb21wbGV0
aW9uIHB1cnBvc2VzLgotICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGggJiYgdHlwZW9mIHBy
b3BlcnRpZXNbMF0gPT09ICJzdHJpbmciKQotICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2hB
bGwocHJvcGVydGllcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yICh2YXIgcHJv
cGVydHkgb2YgcHJvcGVydGllcykgewotICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0eS5uYW1lOwotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb3BlcnR5
TmFtZSk7Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaChwcm9wZXJ0eU5hbWUp
OwotCi0gICAgICAgICAgICAgICAgbGV0IGFsaWFzZXMgPSBwcm9wZXJ0eS5hbGlhc2VzOwotICAg
ICAgICAgICAgICAgIGlmIChhbGlhc2VzKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1
ZXMucHVzaEFsbChhbGlhc2VzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBj
b25zb2xlLmFzc2VydChBcnJheS5pc0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGVvZiB2YWx1ZXNbMF0gPT09ICJzdHJpbmciLCAiRXhwZWN0IGFuIGFy
cmF5IG9mIHN0cmluZyB2YWx1ZXMiLCB2YWx1ZXMpOwogCisgICAgICAgIHRoaXMuX3ZhbHVlcyA9
IHZhbHVlcy5zbGljZSgpOwogICAgICAgICB0aGlzLl92YWx1ZXMuc29ydCgpOwotCi0gICAgICAg
IHRoaXMuX2FjY2VwdEVtcHR5UHJlZml4ID0gYWNjZXB0RW1wdHlQcmVmaXg7CisgICAgICAgIHRo
aXMuX2FjY2VwdEVtcHR5UHJlZml4ID0gISFhY2NlcHRFbXB0eVByZWZpeDsKICAgICAgICAgdGhp
cy5fcXVlcnlDb250cm9sbGVyID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAg
IHN0YXRpYyBpbml0aWFsaXplQ1NTQ29tcGxldGlvbnModGFyZ2V0KQotICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQodGFyZ2V0Lmhhc0RvbWFpbigiQ1NTIikpOwotCi0gICAgICAgIGlmIChX
SS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgZnVuY3Rpb24gcHJvcGVydGllc0NhbGxiYWNrKGVycm9yLCBjc3NQcm9wZXJ0
aWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlv
bnMgPSBuZXcgV0kuQ1NTQ29tcGxldGlvbnMoY3NzUHJvcGVydGllcywgZmFsc2UpOwotCi0gICAg
ICAgICAgICBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuYWRkQ3VzdG9tQ29tcGxldGlvbnMoY3Nz
UHJvcGVydGllcyk7Ci0KLSAgICAgICAgICAgIC8vIENvZGVNaXJyb3IgaXMgbm90IGluY2x1ZGVk
IGJ5IHRlc3RzIHNvIHdlIHNob3VsZG4ndCBhc3N1bWUgaXQgYWx3YXlzIGV4aXN0cy4KLSAgICAg
ICAgICAgIC8vIElmIGl0IGlzbid0IGF2YWlsYWJsZSB3ZSBza2lwIE1JTUUgdHlwZSBhc3NvY2lh
dGlvbnMuCi0gICAgICAgICAgICBpZiAoIXdpbmRvdy5Db2RlTWlycm9yKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZXNGb3JDb2RlTWlycm9y
ID0ge307Ci0gICAgICAgICAgICB2YXIgdmFsdWVLZXl3b3Jkc0ZvckNvZGVNaXJyb3IgPSB7Imlu
aGVyaXQiOiB0cnVlLCAiaW5pdGlhbCI6IHRydWUsICJ1bnNldCI6IHRydWUsICJyZXZlcnQiOiB0
cnVlLCAidmFyIjogdHJ1ZSwgImVudiI6IHRydWV9OwotICAgICAgICAgICAgdmFyIGNvbG9yS2V5
d29yZHNGb3JDb2RlTWlycm9yID0ge307Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVGb3JD
b2RlTWlycm9yKG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29kZU1p
cnJvciBwYXJzZXMgdGhlIHZlbmRvciBwcmVmaXggc2VwYXJhdGUgZnJvbSB0aGUgcHJvcGVydHkg
b3Iga2V5d29yZCBuYW1lLAotICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3RyaXAg
dmVuZG9yIHByZWZpeGVzIGZyb20gb3VyIG5hbWVzLiBBbHNvIHN0cmlwIGZ1bmN0aW9uIHBhcmVu
dGhlc2lzLgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoL14tW14tXSstLywg
IiIpLnJlcGxhY2UoL1woXCkkLywgIiIpLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RQcm9wZXJ0eU5hbWVGb3JDb2RlTWlycm9yKHBy
b3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBQcm9wZXJ0aWVz
IGNhbiBhbHNvIGJlIHZhbHVlIGtleXdvcmRzLCBsaWtlIHdoZW4gdXNlZCBpbiBhIHRyYW5zaXRp
b24uCi0gICAgICAgICAgICAgICAgLy8gU28gd2UgYWRkIHRoZW0gdG8gYm90aCBsaXN0cy4KLSAg
ICAgICAgICAgICAgICB2YXIgY29kZU1pcnJvclByb3BlcnR5TmFtZSA9IG5hbWVGb3JDb2RlTWly
cm9yKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0ZvckNvZGVN
aXJyb3JbY29kZU1pcnJvclByb3BlcnR5TmFtZV0gPSB0cnVlOwotICAgICAgICAgICAgICAgIHZh
bHVlS2V5d29yZHNGb3JDb2RlTWlycm9yW2NvZGVNaXJyb3JQcm9wZXJ0eU5hbWVdID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgY3NzUHJv
cGVydGllcykKLSAgICAgICAgICAgICAgICBjb2xsZWN0UHJvcGVydHlOYW1lRm9yQ29kZU1pcnJv
cihwcm9wZXJ0eS5uYW1lKTsKLQotICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHlOYW1lIGlu
IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3JkTWFwKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIGtleXdvcmRzID0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0
eUtleXdvcmRNYXBbcHJvcGVydHlOYW1lXTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGtleXdvcmRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNr
aXAgbnVtYmVycywgbGlrZSB0aGUgb25lcyBkZWZpbmVkIGZvciBmb250LXdlaWdodC4KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGtleXdvcmRzW2ldID09PSBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyIHx8ICFpc05hTihOdW1iZXIoa2V5d29yZHNb
aV0pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
ICAgICB2YWx1ZUtleXdvcmRzRm9yQ29kZU1pcnJvcltuYW1lRm9yQ29kZU1pcnJvcihrZXl3b3Jk
c1tpXSldID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29sb3JzLmZvckVhY2goZnVuY3Rpb24o
Y29sb3JOYW1lKSB7Ci0gICAgICAgICAgICAgICAgY29sb3JLZXl3b3Jkc0ZvckNvZGVNaXJyb3Jb
bmFtZUZvckNvZGVNaXJyb3IoY29sb3JOYW1lKV0gPSB0cnVlOwotICAgICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvZGVNaXJyb3JDU1NNb2RlKG1pbWVUeXBlKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBtb2RlU3BlYyA9IENvZGVNaXJyb3Iu
cmVzb2x2ZU1vZGUobWltZVR5cGUpOwotCi0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
bW9kZVNwZWMucHJvcGVydHlLZXl3b3Jkcyk7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQobW9kZVNwZWMudmFsdWVLZXl3b3Jkcyk7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQobW9kZVNwZWMuY29sb3JLZXl3b3Jkcyk7Ci0KLSAgICAgICAgICAgICAgICBtb2RlU3BlYy5w
cm9wZXJ0eUtleXdvcmRzID0gcHJvcGVydHlOYW1lc0ZvckNvZGVNaXJyb3I7Ci0gICAgICAgICAg
ICAgICAgbW9kZVNwZWMudmFsdWVLZXl3b3JkcyA9IHZhbHVlS2V5d29yZHNGb3JDb2RlTWlycm9y
OwotICAgICAgICAgICAgICAgIG1vZGVTcGVjLmNvbG9yS2V5d29yZHMgPSBjb2xvcktleXdvcmRz
Rm9yQ29kZU1pcnJvcjsKLQotICAgICAgICAgICAgICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSht
aW1lVHlwZSwgbW9kZVNwZWMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB1cGRhdGVD
b2RlTWlycm9yQ1NTTW9kZSgidGV4dC9jc3MiKTsKLSAgICAgICAgICAgIHVwZGF0ZUNvZGVNaXJy
b3JDU1NNb2RlKCJ0ZXh0L3gtc2NzcyIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Zm9udEZhbWlseU5hbWVzQ2FsbGJhY2soZXJyb3IsIGZvbnRGYW1pbHlOYW1lcykKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmFkZFByb3BlcnR5Q29tcGxldGlvblZh
bHVlcygiZm9udC1mYW1pbHkiLCBmb250RmFtaWx5TmFtZXMpOwotICAgICAgICAgICAgV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLmFkZFByb3BlcnR5Q29tcGxldGlvblZhbHVlcygiZm9udCIsIGZv
bnRGYW1pbHlOYW1lcyk7Ci0gICAgICAgIH0KLQotICAgICAgICB0YXJnZXQuQ1NTQWdlbnQuZ2V0
U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhwcm9wZXJ0aWVzQ2FsbGJhY2spOwotICAgICAgICBpZiAo
dGFyZ2V0Lmhhc0NvbW1hbmQoIkNTUy5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMi
KSkKLSAgICAgICAgICAgIHRhcmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFt
aWx5TmFtZXMoZm9udEZhbWlseU5hbWVzQ2FsbGJhY2spOwotICAgIH0KLQogICAgIHN0YXRpYyBj
b21wbGV0ZVVuYmFsYW5jZWRWYWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgICAgIGNvbnN0IFN0YXRl
ID0gewpAQCAtMzExLDQ1ICsyMDMsOCBAQCBXSS5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0Nv
bXBsZXRpb25zCiAKICAgICAgICAgcmV0dXJuIGZvdW5kSW5kZXg7CiAgICAgfQotCi0gICAgbmV4
dChzdHIsIHByZWZpeCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jbG9zZXN0KHN0ciwg
cHJlZml4LCAxKTsKLSAgICB9Ci0KLSAgICBwcmV2aW91cyhzdHIsIHByZWZpeCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9jbG9zZXN0KHN0ciwgcHJlZml4LCAtMSk7Ci0gICAgfQotCi0g
ICAgX2Nsb3Nlc3Qoc3RyLCBwcmVmaXgsIHNoaWZ0KQotICAgIHsKLSAgICAgICAgaWYgKCFzdHIp
Ci0gICAgICAgICAgICByZXR1cm4gIiI7Ci0KLSAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fdmFs
dWVzLmluZGV4T2Yoc3RyKTsKLSAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKLSAgICAgICAgICAg
IHJldHVybiAiIjsKLQotICAgICAgICBpZiAoIXByZWZpeCkgewotICAgICAgICAgICAgaW5kZXgg
PSAoaW5kZXggKyB0aGlzLl92YWx1ZXMubGVuZ3RoICsgc2hpZnQpICUgdGhpcy5fdmFsdWVzLmxl
bmd0aDsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXNbaW5kZXhdOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHByb3BlcnRpZXNXaXRoUHJlZml4ID0gdGhpcy5zdGFydHNXaXRoKHBy
ZWZpeCk7Ci0gICAgICAgIHZhciBqID0gcHJvcGVydGllc1dpdGhQcmVmaXguaW5kZXhPZihzdHIp
OwotICAgICAgICBqID0gKGogKyBwcm9wZXJ0aWVzV2l0aFByZWZpeC5sZW5ndGggKyBzaGlmdCkg
JSBwcm9wZXJ0aWVzV2l0aFByZWZpeC5sZW5ndGg7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0aWVz
V2l0aFByZWZpeFtqXTsKLSAgICB9Ci0KLSAgICBpc1ZhbGlkUHJvcGVydHlOYW1lKG5hbWUpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpOwotICAgIH0K
IH07CiAKLVdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucyA9IG51bGw7Ci0KIFdJ
LkNTU0NvbXBsZXRpb25zLmxlbmd0aFVuaXRzID0gbmV3IFNldChbCiAgICAgImNoIiwKICAgICAi
Y20iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKaW5kZXggOTA5YWU5MTY0
MTQ3Mzc0ZGUzNTdkNmZjOGY2MWUzMmFiNTE5YTdmNS4uN2ZkYTJhYzhkMmFjNTk4YmUxNmQ4YWE3
ZTViZjA4ZTk2MDcxMjA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpz
CkBAIC00MSwxMyArNDEsMTMgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQ
cm9wZXJ0eU5hbWUgPSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwKICAgICAgICAgcmV0
dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zOiBbXX07CiAKICAgICBpZiAoIXRleHQubGVu
Z3RoICYmIGFsbG93RW1wdHlQcmVmaXgpCi0gICAgICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBj
b21wbGV0aW9uczogV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlc307
CisgICAgICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uczogV0kuY3NzTWFuYWdl
ci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy52YWx1ZXN9OwogCiAgICAgbGV0IGNvbXBsZXRpb25z
OwogICAgIGlmICh1c2VGdXp6eU1hdGNoaW5nKQotICAgICAgICBjb21wbGV0aW9ucyA9IFdJLkNT
U0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5leGVjdXRlUXVlcnkodGV4dCk7CisgICAg
ICAgIGNvbXBsZXRpb25zID0gV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy5l
eGVjdXRlUXVlcnkodGV4dCk7CiAgICAgZWxzZQotICAgICAgICBjb21wbGV0aW9ucyA9IFdJLkNT
U0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5zdGFydHNXaXRoKHRleHQpOworICAgICAg
ICBjb21wbGV0aW9ucyA9IFdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxldGlvbnMuc3Rh
cnRzV2l0aCh0ZXh0KTsKIAogICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uc307
CiB9OwpAQCAtMTcwLDEyICsxNzAsMTIgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBy
b3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQogICAgICAgICAgICAgYWRkS2V5d29yZHNG
b3JOYW1lKGxvbmdoYW5kTmFtZSk7CiAgICAgfQogCi0gICAgaWYgKGFjY2VwdGVkS2V5d29yZHMu
aW5jbHVkZXMoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLkFsbFByb3BlcnR5TmFtZXNQbGFjZWhv
bGRlcikgJiYgV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKSB7CisgICAgaWYg
KGFjY2VwdGVkS2V5d29yZHMuaW5jbHVkZXMoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLkFsbFBy
b3BlcnR5TmFtZXNQbGFjZWhvbGRlcikgJiYgV0kuY3NzTWFuYWdlci5wcm9wZXJ0eU5hbWVDb21w
bGV0aW9ucykgewogICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnJlbW92ZShXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKTsKLSAgICAgICAgYWNjZXB0
ZWRLZXl3b3Jkcy5wdXNoQWxsKFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy52
YWx1ZXMpOworICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1c2hBbGwoV0kuY3NzTWFuYWdlci5w
cm9wZXJ0eU5hbWVDb21wbGV0aW9ucy52YWx1ZXMpOwogICAgIH0KIAotICAgIHJldHVybiBuZXcg
V0kuQ1NTQ29tcGxldGlvbnMoQXJyYXkuZnJvbShuZXcgU2V0KGFjY2VwdGVkS2V5d29yZHMpKSwg
dHJ1ZSk7CisgICAgcmV0dXJuIG5ldyBXSS5DU1NDb21wbGV0aW9ucyhBcnJheS5mcm9tKG5ldyBT
ZXQoYWNjZXB0ZWRLZXl3b3JkcykpLCB7YWNjZXB0RW1wdHlQcmVmaXg6IHRydWV9KTsKIH07CiAK
IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5pc0NvbG9yQXdhcmVQcm9wZXJ0eSA9IGZ1bmN0aW9u
KG5hbWUpCkBAIC0yMjYsNyArMjI2LDcgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1
bmN0aW9uID0gZnVuY3Rpb24oZnVuY3Rpb25OYW1lKQogICAgICAgICBzdWdnZXN0aW9ucy5wdXNo
QWxsKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29sb3JzKTsKICAgICB9CiAKLSAgICByZXR1
cm4gbmV3IFdJLkNTU0NvbXBsZXRpb25zKHN1Z2dlc3Rpb25zLCB0cnVlKTsKKyAgICByZXR1cm4g
bmV3IFdJLkNTU0NvbXBsZXRpb25zKHN1Z2dlc3Rpb25zLCB7YWNjZXB0RW1wdHlQcmVmaXg6IHRy
dWV9KTsKIH07CiAKIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5hZGRDdXN0b21Db21wbGV0aW9u
cyA9IGZ1bmN0aW9uKHByb3BlcnRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJvcGVydHlOYW1l
Q29tcGxldGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk4MmQ2YWZlOWQzZDE2MWVkOTE4YjJlNGNkMWUx
MGE2OWM5MjcxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy5qcwpAQCAtMCwwICsx
LDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuQ1NTUHJvcGVydHlOYW1lQ29tcGxldGlvbnMgPSBjbGFz
cyBDU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucyBleHRlbmRzIFdJLkNTU0NvbXBsZXRpb25zCit7
CisgICAgY29uc3RydWN0b3IocHJvcGVydGllcywgb3B0aW9ucyA9IHt9KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSwgcHJvcGVydGllcyk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb3BlcnRpZXNbMF0ubmFtZSwgIkV4cGVjdGVkIGFu
IGFycmF5IG9mIG9iamVjdHMgd2l0aCBgbmFtZWAga2V5IiwgcHJvcGVydGllcyk7CisKKyAgICAg
ICAgbGV0IHZhbHVlcyA9IFtdOworICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0
aWVzKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eS5uYW1lKTsKKworICAg
ICAgICAgICAgdmFsdWVzLnB1c2gocHJvcGVydHkubmFtZSk7CisgICAgICAgICAgICBpZiAoQXJy
YXkuaXNBcnJheShwcm9wZXJ0eS5hbGlhc2VzKSkKKyAgICAgICAgICAgICAgICB2YWx1ZXMucHVz
aEFsbChwcm9wZXJ0eS5hbGlhc2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIHN1cGVyKHZhbHVl
cywgb3B0aW9ucyk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBpc1ZhbGlkUHJvcGVy
dHlOYW1lKG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuaW5jbHVkZXMo
bmFtZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QuaHRtbAppbmRleCA3NzcxOTA2NWRkMzA2ZTI5MmFiNTRkYmJkOGI3MTM1YWUyN2E1YjAw
Li41NTZmMDg1OTQ2NWRmNzYwZmYzZjdjYWZiOWJjNTlhNzczMDU3Yjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0xMzIsNiArMTMyLDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU0dyb3VwaW5nLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NQcm9wZXJ0eS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NQcm9wZXJ0eU5hbWVDb21wbGV0aW9ucy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DU1NSdWxlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0NTU1NlbGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IGQzZjJk
NTc2ZmIyZTk0M2Y2ZTIzNmM3ZmQ2ODg1Y2U5MjAyMDVjMzYuLmEwMWE3Mzg0NjFmZTBiZGYyZjM2
YTE2NTFhMTZhN2NhYmZkZjQ2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0L1Rlc3QuanMKQEAgLTEyNSw3ICsxMjUsNyBAQCBXSS5wZXJmb3JtT25l
VGltZUZyb250ZW5kSW5pdGlhbGl6YXRpb25zVXNpbmdUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQp
CiAgICAgLy8gRklYTUU6IFRoaXMgc2xvd3MgZG93biB0ZXN0IGRlYnVnIGxvZ2dpbmcgY29uc2lk
ZXJhYmx5LgogICAgIGlmICghV0kuX19kaWRQZXJmb3JtQ1NTSW5pdGlhbGl6YXRpb24gJiYgdGFy
Z2V0Lmhhc0RvbWFpbigiQ1NTIikpIHsKICAgICAgICAgV0kuX19kaWRQZXJmb3JtQ1NTSW5pdGlh
bGl6YXRpb24gPSB0cnVlOwotICAgICAgICBXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NT
Q29tcGxldGlvbnModGFyZ2V0KTsKKyAgICAgICAgV0kuY3NzTWFuYWdlci5pbml0aWFsaXplQ1NT
UHJvcGVydHlOYW1lQ29tcGxldGlvbnModGFyZ2V0KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKaW5kZXggZDk0ZDcxNWY1NGI2ZmFlNWMyNTM4
MzJiM2FjNDAyMmU1NWJkMTc0YS4uNmM4YjU1Y2M4MGY2ODgyYjI5OGZlNjVlZjcwYmIwMGFlNTNi
ZDgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtMzAw
LDEzICszMDAsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRz
aGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9w
cm9wZXJ0eS52YWxpZCAmJiB0aGlzLl9wcm9wZXJ0eS5oYXNPdGhlclZlbmRvck5hbWVPcktleXdv
cmQoKSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgib3RoZXItdmVuZG9yIik7CiAgICAg
ICAgIGVsc2UgaWYgKHRoaXMuX2hhc0ludmFsaWRWYXJpYWJsZVZhbHVlIHx8ICghdGhpcy5fcHJv
cGVydHkudmFsaWQgJiYgdGhpcy5fcHJvcGVydHkudmFsdWUgIT09ICIiKSkgewotICAgICAgICAg
ICAgbGV0IHByb3BlcnR5TmFtZUlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChXSS5D
U1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMpCi0gICAgICAgICAgICAgICAgcHJvcGVy
dHlOYW1lSXNWYWxpZCA9IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5pc1Zh
bGlkUHJvcGVydHlOYW1lKHRoaXMuX3Byb3BlcnR5Lm5hbWUpOwotCiAgICAgICAgICAgICBjbGFz
c05hbWVzLnB1c2goImhhcy13YXJuaW5nIik7CiAKLSAgICAgICAgICAgIGlmICghcHJvcGVydHlO
YW1lSXNWYWxpZCkgeworICAgICAgICAgICAgaWYgKCFXSS5jc3NNYW5hZ2VyLnByb3BlcnR5TmFt
ZUNvbXBsZXRpb25zPy5pc1ZhbGlkUHJvcGVydHlOYW1lKHRoaXMuX3Byb3BlcnR5Lm5hbWUpKSB7
CiAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJpbnZhbGlkLW5hbWUiKTsKICAgICAg
ICAgICAgICAgICBlbGVtZW50VGl0bGUgPSBXSS5VSVN0cmluZygiVW5zdXBwb3J0ZWQgcHJvcGVy
dHkgbmFtZSIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTUzOSw3ICs1MzUsNyBAQCBXSS5T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuaXNWYXJpYWJsZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIVdJLkNTU0NvbXBsZXRpb25zLmNz
c05hbWVDb21wbGV0aW9ucy5pc1ZhbGlkUHJvcGVydHlOYW1lKHRoaXMuX3Byb3BlcnR5Lm5hbWUp
KQorICAgICAgICBpZiAoIVdJLmNzc01hbmFnZXIucHJvcGVydHlOYW1lQ29tcGxldGlvbnM/Lmlz
VmFsaWRQcm9wZXJ0eU5hbWUodGhpcy5fcHJvcGVydHkubmFtZSkpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgaWYgKCFDU1NEb2N1bWVudGF0aW9uLmhhc093blByb3BlcnR5KHRoaXMu
X3Byb3BlcnR5Lm5hbWUpICYmICFDU1NEb2N1bWVudGF0aW9uLmhhc093blByb3BlcnR5KHRoaXMu
X3Byb3BlcnR5LmNhbm9uaWNhbE5hbWUpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>