<?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>314934</bug_id>
          
          <creation_ts>2026-05-15 21:03:06 -0700</creation_ts>
          <short_desc>WebAuthn PRF results return `null` during `navigator.credentials.get()` for YubiKey C Bio - FIDO Edition (firmware 5.7.4)</short_desc>
          <delta_ts>2026-05-29 09:50:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 26</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jonathan.underwood4649</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>pascoe</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2211356</commentid>
    <comment_count>0</comment_count>
    <who name="">jonathan.underwood4649</who>
    <bug_when>2026-05-15 21:03:06 -0700</bug_when>
    <thetext>The issue reproduces consistently across multiple authentication attempts.

Tested on:

* macOS 26.5 on MacBook Pro M5 Max
* iOS 26.5 on iPhone 17 Pro Max

Using:

* YubiKey C Bio - FIDO Edition (Firmware version: 5.7.4)

Behavior (both macOS and iOS):

* Registration (`navigator.credentials.create()`) succeeds in Safari
* Authentication (`navigator.credentials.get()`) succeeds overall, but the WebAuthn PRF extension does not return PRF results when using a YubiKey C Bio - FIDO Edition
* Non-Bio YubiKeys correctly return PRF results in Safari

Behavior (macOS only):

* The same YubiKey successfully returns PRF results in Chrome on the same MacBook

---

Observed PRF extension output during `navigator.credentials.get()`:

```
{
  &quot;prf&quot;: {
    &quot;results&quot;: {
      &quot;first&quot;: null
    }
  }
}
```

Expected behavior:
`results.first` should contain the derived PRF output buffer rather than `null`.

---

This appears to specifically affect PRF (`prf` / `hmac-secret`) handling during authentication assertions (`get()`) for the YubiKey C Bio - FIDO Edition in WebKit/Safari.

Because the same hardware succeeds in Chrome on the same machine, this appears to be a Safari/WebKit interoperability issue rather than a hardware or firmware issue.

---

Possible additional context:

I previously investigated a similar issue involving FIDO-backed SSH keys, where the root cause ended up relating to how the YubiKey Bio handles the UV (User Verification) flag within libfido2. In that codebase this distinction is represented as `internal_uv`.

Given that this issue appears specific to the YubiKey C Bio - FIDO Edition, it may be worth checking whether Safari/WebKit&apos;s PRF (`hmac-secret`) handling during `navigator.credentials.get()` depends on UV semantics that differ for Bio authenticators.

In particular, the PRF code path may not be accounting for the same &quot;internal UV&quot; behavior that libfido2 had to handle.

---

Thank you for all your work. I appreciate your time.

- Jonathan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2211438</commentid>
    <comment_count>1</comment_count>
    <who name="">jonathan.underwood4649</who>
    <bug_when>2026-05-16 10:46:15 -0700</bug_when>
    <thetext>I seem to have found the bug.

CtapAuthenticator::prepareHmacSecretParameters returns at the top with a `return std::nullopt;` under the condition `if (!m_cachedPeerKey)`

However, m_cachedPeerKey is only populated during the PIN entry flow in /WebKit/Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp

Since BIO does not follow the PIN entry flow, this function that SHOULD fill the PRF parameters does not.

I am currently looking through the code (I&apos;m not too familiar) and can&apos;t really think of anything that isn&apos;t super hacky...

I think it needs to somehow detect internalUV and ensure that we somehow send a `pin::KeyAgreementRequest` in spite of skipping over the PIN entry, and somehow pull off a call to storing the cache

ie. `protectedThis-&gt;m_cachedPeerKey = keyAgreement-&gt;peerKey.ptr();`

... Sorry I can&apos;t think of anything more elegant... but I&apos;m glad I was able to find the source of the issue.

Let me know if you&apos;d like me to help out with a hacky patch, or if you want me to test something.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2211439</commentid>
    <comment_count>2</comment_count>
      <attachid>479693</attachid>
    <who name="">jonathan.underwood4649</who>
    <bug_when>2026-05-16 11:14:01 -0700</bug_when>
    <thetext>Created attachment 479693
A simple fix for the issue (super rough)

This is a very simple patch that I don&apos;t expect to be merged, but hopefully it quickly describes the issue.

Just before the two calls to prepareHmacSecretParameters (once in the creation flow and once in the auth flow)

I place a conditional block that checks for the cache and if it doesn&apos;t exist and all the other bools that need to be set (to actually call prepareHmacSecretParameters below) are in place, then it will run a little helper function I made to populate the cache.

I&apos;m also not sure whether the creation flow requires this fix... but I will keep it in the patch just for clarity on what I&apos;m thinking are the two problem areas that are affected by the PIN-entry-only-populated cache.

I apologize if this patch makes things less clear, but it seems like the minimal change needed to fix the issue. A more elegant fix should probably be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2213477</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-22 21:04:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/177761451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2215746</commentid>
    <comment_count>4</comment_count>
      <attachid>479887</attachid>
    <who name="">jonathan.underwood4649</who>
    <bug_when>2026-05-29 09:50:54 -0700</bug_when>
    <thetext>Created attachment 479887
More complex fix

This diff gets a little bit smaller when viewed with git diff -w to clear out white space diff lines.

I have essentially changed CtapAuthenticator::prepareHmacSecretParameters to be async and fetch m_cachedPeerKey when they are not present, adding an extra round trip for a KeyAgreementRequest.

This seems like a reasonable solution. Please let me know if you have any questions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479693</attachid>
            <date>2026-05-16 11:14:01 -0700</date>
            <delta_ts>2026-05-16 11:14:01 -0700</delta_ts>
            <desc>A simple fix for the issue (super rough)</desc>
            <filename>1440f8619f8200437d51173a3a53aeb4b6f8de99-based.diff</filename>
            <type>text/plain</type>
            <size>7376</size>
            <attacher>jonathan.underwood4649</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggOTk5ZjJhMmEwMjJk
Li43NGE5MGIwMmY0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVTaWxl
bnRseUNoZWNrQ3JlZGVudGlhbHMoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwKICAgICB9KTsKIH0K
IAotdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQ2hl
Y2tFeGNsdWRlZENyZWRlbnRpYWxzKGJvb2wgaW5jbHVkZUN1cnJlbnRCYXRjaCkKK3ZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckNoZWNrRXhjbHVkZWRD
cmVkZW50aWFscyhib29sIGluY2x1ZGVDdXJyZW50QmF0Y2gsIGJvb2wgc2hvdWxkRmV0Y2hQUkZL
ZXlBZ3JlZW1lbnQpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7CiAgICAgYXV0byYg
b3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJl
cXVlc3REYXRhKCkub3B0aW9ucyk7CkBAIC0yNTIsMTAgKzI1MiwyNSBAQCB2b2lkIEN0YXBBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4Y2x1ZGVkQ3JlZGVu
dGlhbHMoYm9vbAogICAgIGJvb2wgbmVlZHNQUkYgPSBvcHRpb25zLmV4dGVuc2lvbnMgJiYgb3B0
aW9ucy5leHRlbnNpb25zLT5wcmY7CiAgICAgQ1RBUF9SRUxFQVNFX0xPRygiY29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyQ2hlY2tFeGNsdWRlZENyZWRlbnRpYWxzOiBQUkYgY2hlY2sgLSBleHRl
bnNpb25zPSVkLCBwcmY9JWQiLCAhIW9wdGlvbnMuZXh0ZW5zaW9ucywgbmVlZHNQUkYpOwogICAg
IGJvb2wgc3VwcG9ydHNIbWFjU2VjcmV0ID0gYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVuc2lv
bnMuY29udGFpbnMoa0V4dGVuc2lvbkhtYWNTZWNyZXQpOworICAgIGJvb2wgc3VwcG9ydHNIbWFj
U2VjcmV0TWMgPSBhdXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhrRXh0
ZW5zaW9uSG1hY1NlY3JldE1jKTsKKworICAgIGlmIChuZWVkc1BSRiAmJiBzdXBwb3J0c0htYWNT
ZWNyZXQgJiYgb3B0aW9ucy5leHRlbnNpb25zLT5wcmYtPmV2YWwgJiYgc3VwcG9ydHNIbWFjU2Vj
cmV0TWMgJiYgIW1fY2FjaGVkUGVlcktleSAmJiBzaG91bGRGZXRjaFBSRktleUFncmVlbWVudCkg
eworICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJD
aGVja0V4Y2x1ZGVkQ3JlZGVudGlhbHM6IEZldGNoaW5nIGtleSBhZ3JlZW1lbnQgZm9yIFBSRiIp
OworICAgICAgICByZXF1ZXN0S2V5QWdyZWVtZW50Rm9yUFJGKFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBpbmNsdWRlQ3VycmVudEJhdGNoXSAoYm9vbCBkaWRDYWNoZUtleUFncmVlbWVu
dCkgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAg
IFJlZlB0ciBwcm90ZWN0ZWRUaGlzID0gd2Vha1RoaXMuZ2V0KCk7CisgICAgICAgICAgICBpZiAo
IXByb3RlY3RlZFRoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYg
KCFkaWRDYWNoZUtleUFncmVlbWVudCkKKyAgICAgICAgICAgICAgICBDVEFQX1JFTEVBU0VfTE9H
X1dJVEhfVEhJUyhwcm90ZWN0ZWRUaGlzLCAiY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQ2hl
Y2tFeGNsdWRlZENyZWRlbnRpYWxzOiBVbmFibGUgdG8gY2FjaGUga2V5IGFncmVlbWVudCBmb3Ig
UFJGLCBwcm9jZWVkaW5nIHdpdGhvdXQgaG1hYy1zZWNyZXQgcGFyYW1ldGVycyIpOworICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQ2hlY2tFeGNs
dWRlZENyZWRlbnRpYWxzKGluY2x1ZGVDdXJyZW50QmF0Y2gsIGZhbHNlKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQ
YXJhbWV0ZXJzPiBobWFjU2VjcmV0UGFyYW1zOwogICAgIGlmIChuZWVkc1BSRiAmJiBzdXBwb3J0
c0htYWNTZWNyZXQgJiYgb3B0aW9ucy5leHRlbnNpb25zLT5wcmYtPmV2YWwpIHsKICAgICAgICAg
Q1RBUF9SRUxFQVNFX0xPRygiY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQ2hlY2tFeGNsdWRl
ZENyZWRlbnRpYWxzOiBQUkYgZXh0ZW5zaW9uIGZvdW5kIHdpdGggZXZhbCwgcHJlcGFyaW5nIGht
YWMtc2VjcmV0Iik7Ci0gICAgICAgIGJvb2wgc3VwcG9ydHNIbWFjU2VjcmV0TWMgPSBhdXRoZW50
aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhrRXh0ZW5zaW9uSG1hY1NlY3JldE1j
KTsKICAgICAgICAgaWYgKHN1cHBvcnRzSG1hY1NlY3JldE1jKSB7CiAgICAgICAgICAgICBobWFj
U2VjcmV0UGFyYW1zID0gcHJlcGFyZUhtYWNTZWNyZXRQYXJhbWV0ZXJzKCpvcHRpb25zLmV4dGVu
c2lvbnMtPnByZiwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmIChobWFjU2VjcmV0UGFy
YW1zKQpAQCAtNDAxLDcgKzQxNiw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmdldEFzc2Vy
dGlvbigpCiAgICAgICAgIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVu
dGlhbHMoKTsKIH0KIAotdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRp
b25BZnRlckNoZWNrQWxsb3dDcmVkZW50aWFscygpCit2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyQ2hlY2tBbGxvd0NyZWRlbnRpYWxzKGJvb2wgc2hvdWxk
RmV0Y2hQUkZLZXlBZ3JlZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFtX2lzRG93bmdyYWRlZCk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7CkBAIC00MTksNiArNDM0LDIwIEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVu
dGlhbHMoKQogICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJD
aGVja0FsbG93Q3JlZGVudGlhbHM6IFBSRiBjaGVjayAtIGV4dGVuc2lvbnM9JWQsIHByZj0lZCIs
ICEhb3B0aW9ucy5leHRlbnNpb25zLCBuZWVkc1BSRik7CiAgICAgYm9vbCBzdXBwb3J0c0htYWNT
ZWNyZXQgPSBhdXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhrRXh0ZW5z
aW9uSG1hY1NlY3JldCk7CiAKKyAgICBpZiAobmVlZHNQUkYgJiYgc3VwcG9ydHNIbWFjU2VjcmV0
ICYmICFtX2NhY2hlZFBlZXJLZXkgJiYgc2hvdWxkRmV0Y2hQUkZLZXlBZ3JlZW1lbnQpIHsKKyAg
ICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiY29udGludWVHZXRBc3NlcnRpb25BZnRlckNoZWNrQWxs
b3dDcmVkZW50aWFsczogRmV0Y2hpbmcga2V5IGFncmVlbWVudCBmb3IgUFJGIik7CisgICAgICAg
IHJlcXVlc3RLZXlBZ3JlZW1lbnRGb3JQUkYoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChib29sIGRpZENhY2hlS2V5QWdyZWVtZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgICAgICAgICAgUmVmUHRyIHByb3RlY3RlZFRoaXMgPSB3ZWFrVGhp
cy5nZXQoKTsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcykKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBpZiAoIWRpZENhY2hlS2V5QWdyZWVtZW50KQorICAgICAg
ICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0dfV0lUSF9USElTKHByb3RlY3RlZFRoaXMsICJjb250
aW51ZUdldEFzc2VydGlvbkFmdGVyQ2hlY2tBbGxvd0NyZWRlbnRpYWxzOiBVbmFibGUgdG8gY2Fj
aGUga2V5IGFncmVlbWVudCBmb3IgUFJGLCBwcm9jZWVkaW5nIHdpdGhvdXQgaG1hYy1zZWNyZXQg
cGFyYW1ldGVycyIpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y29udGludWVHZXRBc3Nl
cnRpb25BZnRlckNoZWNrQWxsb3dDcmVkZW50aWFscyhmYWxzZSk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgc3RkOjpvcHRpb25hbDxIbWFjU2VjcmV0UGFyYW1l
dGVycz4gaG1hY1NlY3JldFBhcmFtczsKICAgICBpZiAobmVlZHNQUkYgJiYgc3VwcG9ydHNIbWFj
U2VjcmV0KSB7CiAgICAgICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlR2V0QXNzZXJ0aW9u
QWZ0ZXJDaGVja0FsbG93Q3JlZGVudGlhbHM6IFBSRiBleHRlbnNpb24gZm91bmQsIHByZXBhcmlu
ZyBobWFjLXNlY3JldCIpOwpAQCAtNTY0LDYgKzU5MywyOSBAQCB2b2lkIEN0YXBBdXRoZW50aWNh
dG9yOjpjb250aW51ZUdldE5leHRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9y
PHVpbgogICAgIH0pOwogfQogCit2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpyZXF1ZXN0S2V5QWdy
ZWVtZW50Rm9yUFJGKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byBjYm9yQ21kID0gZW5jb2RlQXNDQk9SKHBpbjo6S2V5QWdyZWVt
ZW50UmVxdWVzdCB7IHNlbGVjdFBpblByb3RvY29sKCkgfSk7CisgICAgQ1RBUF9SRUxFQVNFX0xP
RygicmVxdWVzdEtleUFncmVlbWVudEZvclBSRjogU2VuZGluZyAlcyIsIGJhc2U2NEVuY29kZVRv
U3RyaW5nKGNib3JDbWQpLnV0ZjgoKS5kYXRhKCkpOworICAgIHByb3RlY3QoZHJpdmVyKCkpLT50
cmFuc2FjdChXVEY6Om1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICAgICAgUmVmUHRyIHByb3RlY3RlZFRoaXMgPSB3ZWFrVGhpcy5nZXQoKTsK
KyAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKKworICAgICAgICBhdXRvIGtleUFncmVlbWVudCA9IHBpbjo6S2V5
QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlKGRhdGEpOworICAgICAgICBpZiAoIWtleUFncmVlbWVu
dCkgeworICAgICAgICAgICAgYXV0byBlcnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKKyAg
ICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0dfV0lUSF9USElTKHByb3RlY3RlZFRoaXMsICJyZXF1
ZXN0S2V5QWdyZWVtZW50Rm9yUFJGOiBGYWlsZWQgdG8gZ2V0IGtleSBhZ3JlZW1lbnQuIEVycm9y
IGNvZGU6ICVoaHUiLCBzdGQ6OnRvX3VuZGVybHlpbmcoZXJyb3IpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX2NhY2hlZFBlZXJLZXkgPSBrZXlBZ3JlZW1lbnQtPnBlZXJLZXkucHRyKCk7
CisgICAgICAgIENUQVBfUkVMRUFTRV9MT0dfV0lUSF9USElTKHByb3RlY3RlZFRoaXMsICJyZXF1
ZXN0S2V5QWdyZWVtZW50Rm9yUFJGOiBLZXkgYWdyZWVtZW50IGNhY2hlZCBmb3IgUFJGIik7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0pOworfQorCiB2b2lkIEN0YXBB
dXRoZW50aWNhdG9yOjpnZXRSZXRyaWVzKCkKIHsKICAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVB
c0NCT1IocGluOjpSZXRyaWVzUmVxdWVzdCB7IHNlbGVjdFBpblByb3RvY29sKCkgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKaW5kZXggM2NhY2ViMmMwMWE1Li5mMWNjZDkw
MjhiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmgKQEAgLTU2LDEzICs1
NiwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtYWtlQ3JlZGVudGlhbCgpIGZpbmFsOwogICAg
IHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8
dWludDhfdD4mJik7Ci0gICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4
Y2x1ZGVkQ3JlZGVudGlhbHMoYm9vbCBpbmNsdWRlQ3VycmVudEJhdGNoID0gZmFsc2UpOworICAg
IHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQ2hlY2tFeGNsdWRlZENyZWRlbnRpYWxz
KGJvb2wgaW5jbHVkZUN1cnJlbnRCYXRjaCA9IGZhbHNlLCBib29sIHNob3VsZEZldGNoUFJGS2V5
QWdyZWVtZW50ID0gdHJ1ZSk7CiAgICAgdm9pZCBnZXRBc3NlcnRpb24oKSBmaW5hbDsKICAgICB2
b2lkIGNvbnRpbnVlU2lsZW50bHlDaGVja0NyZWRlbnRpYWxzKFZlY3Rvcjx1aW50OF90PiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvbnRpbnVlR2V0QXNz
ZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVudGlhbHMoKTsKKyAgICB2b2lkIGNvbnRpbnVlR2V0
QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVudGlhbHMoYm9vbCBzaG91bGRGZXRjaFBSRktl
eUFncmVlbWVudCA9IHRydWUpOwogICAgIHZvaWQgY29udGludWVHZXRBc3NlcnRpb25BZnRlclJl
c3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIHZvaWQgY29udGludWVHZXRO
ZXh0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmKTsKIAor
ICAgIHZvaWQgcmVxdWVzdEtleUFncmVlbWVudEZvclBSRihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKwogICAgIHZvaWQgZ2V0UmV0cmllcygpOwogICAgIHZvaWQgY29udGludWVH
ZXRLZXlBZ3JlZW1lbnRBZnRlckdldFJldHJpZXMoVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAgIHZv
aWQgY29udGludWVSZXF1ZXN0UGluQWZ0ZXJHZXRLZXlBZ3JlZW1lbnQoVmVjdG9yPHVpbnQ4X3Q+
JiYsIHVpbnQ2NF90IHJldHJpZXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479887</attachid>
            <date>2026-05-29 09:50:54 -0700</date>
            <delta_ts>2026-05-29 09:50:54 -0700</delta_ts>
            <desc>More complex fix</desc>
            <filename>270a9fa5f16205d2e841328a6664bede890aff79-base.diff</filename>
            <type>text/plain</type>
            <size>20985</size>
            <attacher>jonathan.underwood4649</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2Zp
ZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKaW5kZXggMWM1OWYwNDc5YS4u
MDQ2OWUwYzQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5jcHAKQEAg
LTIyNCw3ICsyMjQsNiBAQCB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZVNpbGVudGx5
Q2hlY2tDcmVkZW50aWFscyhWZWN0b3I8dWludDhfdD4mJiBkYXRhLAogCiB2b2lkIEN0YXBBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4Y2x1ZGVkQ3JlZGVu
dGlhbHMoYm9vbCBpbmNsdWRlQ3VycmVudEJhdGNoKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBj
Ym9yQ21kOwogICAgIGF1dG8mIG9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPj4gb3ZlcnJpZGVFeGNsdWRl
Q3JlZGVudGlhbHM7CiAgICAgaWYgKGluY2x1ZGVDdXJyZW50QmF0Y2gpIHsKQEAgLTI1Miw0MiAr
MjUxLDQzIEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlckNoZWNrRXhjbHVkZWRDcmVkZW50aWFscyhib29sCiAgICAgYm9vbCBuZWVkc1BSRiA9IG9w
dGlvbnMuZXh0ZW5zaW9ucyAmJiBvcHRpb25zLmV4dGVuc2lvbnMtPnByZjsKICAgICBDVEFQX1JF
TEVBU0VfTE9HKCJjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4Y2x1ZGVkQ3JlZGVu
dGlhbHM6IFBSRiBjaGVjayAtIGV4dGVuc2lvbnM9JWQsIHByZj0lZCIsICEhb3B0aW9ucy5leHRl
bnNpb25zLCBuZWVkc1BSRik7CiAgICAgYm9vbCBzdXBwb3J0c0htYWNTZWNyZXQgPSBhdXRoZW50
aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhrRXh0ZW5zaW9uSG1hY1NlY3JldCk7
Ci0gICAgc3RkOjpvcHRpb25hbDxIbWFjU2VjcmV0UGFyYW1ldGVycz4gaG1hY1NlY3JldFBhcmFt
czsKLSAgICBpZiAobmVlZHNQUkYgJiYgc3VwcG9ydHNIbWFjU2VjcmV0ICYmIG9wdGlvbnMuZXh0
ZW5zaW9ucy0+cHJmLT5ldmFsKSB7Ci0gICAgICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVl
TWFrZUNyZWRlbnRpYWxBZnRlckNoZWNrRXhjbHVkZWRDcmVkZW50aWFsczogUFJGIGV4dGVuc2lv
biBmb3VuZCB3aXRoIGV2YWwsIHByZXBhcmluZyBobWFjLXNlY3JldCIpOwotICAgICAgICBib29s
IHN1cHBvcnRzSG1hY1NlY3JldE1jID0gYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVuc2lvbnMu
Y29udGFpbnMoa0V4dGVuc2lvbkhtYWNTZWNyZXRNYyk7Ci0gICAgICAgIGlmIChzdXBwb3J0c0ht
YWNTZWNyZXRNYykgewotICAgICAgICAgICAgaG1hY1NlY3JldFBhcmFtcyA9IHByZXBhcmVIbWFj
U2VjcmV0UGFyYW1ldGVycygqb3B0aW9ucy5leHRlbnNpb25zLT5wcmYsIHN0ZDo6bnVsbG9wdCk7
Ci0gICAgICAgICAgICBpZiAoaG1hY1NlY3JldFBhcmFtcykKLSAgICAgICAgICAgICAgICBDVEFQ
X1JFTEVBU0VfTE9HKCJjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4Y2x1ZGVkQ3Jl
ZGVudGlhbHM6IFBSRiBobWFjLXNlY3JldC1tYyBwYXJhbWV0ZXJzIHByZXBhcmVkIik7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiY29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyQ2hlY2tFeGNsdWRlZENyZWRlbnRpYWxzOiBQUkYgaG1hYy1zZWNy
ZXQtbWMgcGFyYW1ldGVycyBmYWlsZWQgdG8gcHJlcGFyZSIpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckNo
ZWNrRXhjbHVkZWRDcmVkZW50aWFsczogQXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgaG1h
Yy1zZWNyZXQtbWMiKTsKLSAgICB9IGVsc2UgaWYgKG5lZWRzUFJGKSB7Ci0gICAgICAgIENUQVBf
UkVMRUFTRV9MT0coImNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckNoZWNrRXhjbHVkZWRDcmVk
ZW50aWFsczogUFJGIHJlcXVlc3RlZCBidXQgY29uZGl0aW9ucyBub3QgbWV0IC0gc3VwcG9ydHNI
bWFjU2VjcmV0PSVkLCBoYXNFdmFsPSVkIiwKLSAgICAgICAgICAgIHN1cHBvcnRzSG1hY1NlY3Jl
dCwgb3B0aW9ucy5leHRlbnNpb25zLT5wcmYtPmV2YWwuaGFzX3ZhbHVlKCkpOwotICAgIH0KLQog
ICAgIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCBlZmZlY3RpdmVVVlJlcXVpcmVtZW50ID0g
KG5lZWRzUFJGICYmIHN1cHBvcnRzSG1hY1NlY3JldCkKICAgICAgICAgPyBVc2VyVmVyaWZpY2F0
aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkCiAgICAgICAgIDogKG9wdGlvbnMuYXV0aGVudGljYXRv
clNlbGVjdGlvbiA/IG9wdGlvbnMuYXV0aGVudGljYXRvclNlbGVjdGlvbi0+dXNlclZlcmlmaWNh
dGlvbiA6IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6RGlzY291cmFnZWQpOwogCi0gICAg
aWYgKGludGVybmFsVVZBdmFpbGFiaWxpdHkgPT0gVVZBdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRB
bmRDb25maWd1cmVkICYmIGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQgIT0gVXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCAmJiBtX3BpbkF1dGguaXNFbXB0eSgpKQotICAgICAg
ICBjYm9yQ21kID0gZW5jb2RlTWFrZUNyZWRlbnRpYWxSZXF1ZXN0QXNDQk9SKHJlcXVlc3REYXRh
KCkuaGFzaCwgb3B0aW9ucywgaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSwgZWZmZWN0aXZlVVZSZXF1
aXJlbWVudCwgcmVzaWRlbnRLZXlBdmFpbGFiaWxpdHksIGF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRF
eHRlbnNpb25zLCBzdGQ6Om51bGxvcHQsIG1faW5mby5hbGdvcml0aG1zKCksIFdURjo6bW92ZShv
dmVycmlkZUV4Y2x1ZGVDcmVkZW50aWFscyksIFdURjo6bW92ZShobWFjU2VjcmV0UGFyYW1zKSk7
Ci0gICAgZWxzZSBpZiAobV9pbmZvLm9wdGlvbnMoKS5jbGllbnRQaW5BdmFpbGFiaWxpdHkoKSA9
PSBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6Q2xpZW50UGluQXZhaWxhYmlsaXR5Ojpr
U3VwcG9ydGVkQW5kUGluU2V0ICYmIGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQgIT0gVXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCkKLSAgICAgICAgY2JvckNtZCA9IGVuY29k
ZU1ha2VDcmVkZW50aWFsUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIG9wdGlvbnMs
IGludGVybmFsVVZBdmFpbGFiaWxpdHksIGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQsIHJlc2lkZW50
S2V5QXZhaWxhYmlsaXR5LCBhdXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucywgUGluUGFy
YW1ldGVycyB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNlbGVjdFBpblByb3RvY29sKCkpLCBtX3Bp
bkF1dGggfSwgbV9pbmZvLmFsZ29yaXRobXMoKSwgV1RGOjptb3ZlKG92ZXJyaWRlRXhjbHVkZUNy
ZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNTZWNyZXRQYXJhbXMpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVudGlhbFJlcXVlc3RBc0NCT1IocmVxdWVzdERh
dGEoKS5oYXNoLCBvcHRpb25zLCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJl
cXVpcmVtZW50LCByZXNpZGVudEtleUF2YWlsYWJpbGl0eSwgYXV0aGVudGljYXRvclN1cHBvcnRl
ZEV4dGVuc2lvbnMsIHN0ZDo6bnVsbG9wdCwgbV9pbmZvLmFsZ29yaXRobXMoKSwgV1RGOjptb3Zl
KG92ZXJyaWRlRXhjbHVkZUNyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNTZWNyZXRQYXJhbXMp
KTsKLSAgICBDVEFQX1JFTEVBU0VfTE9HKCJtYWtlQ3JlZGVudGlhbDogU2VuZGluZyAlcyIsIGJh
c2U2NEVuY29kZVRvU3RyaW5nKGNib3JDbWQpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2lu
Zm8ubWF4TXNnU2l6ZSgpICYmIGNib3JDbWQuc2l6ZSgpID49ICptX2luZm8ubWF4TXNnU2l6ZSgp
KQotICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwgY21kU2l6ZSA9ICVsdSBtYXhNc2dTaXplID0gJXUiLCBjYm9yQ21kLnNpemUoKSwgKm1f
aW5mby5tYXhNc2dTaXplKCkpOwotICAgIHByb3RlY3QoZHJpdmVyKCkpLT50cmFuc2FjdChXVEY6
Om1vdmUoY2JvckNtZCksIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
ICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlz
LT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFdURjo6bW92ZShk
YXRhKSk7Ci0gICAgfSk7CisgICAgYm9vbCBzdXBwb3J0c0htYWNTZWNyZXRNYyA9IGF1dGhlbnRp
Y2F0b3JTdXBwb3J0ZWRFeHRlbnNpb25zLmNvbnRhaW5zKGtFeHRlbnNpb25IbWFjU2VjcmV0TWMp
OworICAgIGJvb2wgc2hvdWxkUHJlcGFyZUhtYWNTZWNyZXQgPSBuZWVkc1BSRiAmJiBzdXBwb3J0
c0htYWNTZWNyZXQgJiYgb3B0aW9ucy5leHRlbnNpb25zLT5wcmYtPmV2YWwgJiYgc3VwcG9ydHNI
bWFjU2VjcmV0TWM7CisKKyAgICBhdXRvIHNlbmRNYWtlQ3JlZGVudGlhbCA9IFt0aGlzLCAmb3B0
aW9ucywgaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSwgZWZmZWN0aXZlVVZSZXF1aXJlbWVudCwgcmVz
aWRlbnRLZXlBdmFpbGFiaWxpdHksIGF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRFeHRlbnNpb25zID0g
V1RGOjptb3ZlKGF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRFeHRlbnNpb25zKSwgb3ZlcnJpZGVFeGNs
dWRlQ3JlZGVudGlhbHMgPSBXVEY6Om1vdmUob3ZlcnJpZGVFeGNsdWRlQ3JlZGVudGlhbHMpXShz
dGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPiBobWFjU2VjcmV0UGFyYW1zKSBtdXRh
YmxlIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7CisgICAgICAgIGlmIChpbnRl
cm5hbFVWQXZhaWxhYmlsaXR5ID09IFVWQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmln
dXJlZCAmJiBlZmZlY3RpdmVVVlJlcXVpcmVtZW50ICE9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJl
bWVudDo6RGlzY291cmFnZWQgJiYgbV9waW5BdXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNi
b3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVudGlhbFJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5o
YXNoLCBvcHRpb25zLCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJlcXVpcmVt
ZW50LCByZXNpZGVudEtleUF2YWlsYWJpbGl0eSwgYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVu
c2lvbnMsIHN0ZDo6bnVsbG9wdCwgbV9pbmZvLmFsZ29yaXRobXMoKSwgV1RGOjptb3ZlKG92ZXJy
aWRlRXhjbHVkZUNyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNTZWNyZXRQYXJhbXMpKTsKKyAg
ICAgICAgZWxzZSBpZiAobV9pbmZvLm9wdGlvbnMoKS5jbGllbnRQaW5BdmFpbGFiaWxpdHkoKSA9
PSBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6Q2xpZW50UGluQXZhaWxhYmlsaXR5Ojpr
U3VwcG9ydGVkQW5kUGluU2V0ICYmIGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQgIT0gVXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCkKKyAgICAgICAgICAgIGNib3JDbWQgPSBl
bmNvZGVNYWtlQ3JlZGVudGlhbFJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNoLCBvcHRp
b25zLCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJlcXVpcmVtZW50LCByZXNp
ZGVudEtleUF2YWlsYWJpbGl0eSwgYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVuc2lvbnMsIFBp
blBhcmFtZXRlcnMgeyBzdGF0aWNfY2FzdDx1aW50OF90PihzZWxlY3RQaW5Qcm90b2NvbCgpKSwg
bV9waW5BdXRoIH0sIG1faW5mby5hbGdvcml0aG1zKCksIFdURjo6bW92ZShvdmVycmlkZUV4Y2x1
ZGVDcmVkZW50aWFscyksIFdURjo6bW92ZShobWFjU2VjcmV0UGFyYW1zKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNib3JDbWQgPSBlbmNvZGVNYWtlQ3JlZGVudGlhbFJlcXVlc3RBc0NC
T1IocmVxdWVzdERhdGEoKS5oYXNoLCBvcHRpb25zLCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBl
ZmZlY3RpdmVVVlJlcXVpcmVtZW50LCByZXNpZGVudEtleUF2YWlsYWJpbGl0eSwgYXV0aGVudGlj
YXRvclN1cHBvcnRlZEV4dGVuc2lvbnMsIHN0ZDo6bnVsbG9wdCwgbV9pbmZvLmFsZ29yaXRobXMo
KSwgV1RGOjptb3ZlKG92ZXJyaWRlRXhjbHVkZUNyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNT
ZWNyZXRQYXJhbXMpKTsKKyAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygibWFrZUNyZWRlbnRpYWw6
IFNlbmRpbmcgJXMiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhjYm9yQ21kKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgaWYgKG1faW5mby5tYXhNc2dTaXplKCkgJiYgY2JvckNtZC5zaXplKCkgPj0g
Km1faW5mby5tYXhNc2dTaXplKCkpCisgICAgICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJDdGFw
QXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwgY21kU2l6ZSA9ICVsdSBtYXhNc2dTaXplID0g
JXUiLCBjYm9yQ21kLnNpemUoKSwgKm1faW5mby5tYXhNc2dTaXplKCkpOworICAgICAgICBwcm90
ZWN0KGRyaXZlcigpKS0+dHJhbnNhY3QoV1RGOjptb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeworICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha1RoaXMtPmNvbnRpbnVlTWFr
ZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVjZWl2ZWQoV1RGOjptb3ZlKGRhdGEpKTsKKyAgICAg
ICAgfSk7CisgICAgfTsKKworICAgIGlmIChzaG91bGRQcmVwYXJlSG1hY1NlY3JldCkgeworICAg
ICAgICBDVEFQX1JFTEVBU0VfTE9HKCJjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4
Y2x1ZGVkQ3JlZGVudGlhbHM6IFBSRiBleHRlbnNpb24gZm91bmQgd2l0aCBldmFsLCBwcmVwYXJp
bmcgaG1hYy1zZWNyZXQiKTsKKyAgICAgICAgcHJlcGFyZUhtYWNTZWNyZXRQYXJhbWV0ZXJzKCpv
cHRpb25zLmV4dGVuc2lvbnMtPnByZiwgc3RkOjpudWxsb3B0LCBbc2VuZE1ha2VDcmVkZW50aWFs
ID0gV1RGOjptb3ZlKHNlbmRNYWtlQ3JlZGVudGlhbCldKHN0ZDo6b3B0aW9uYWw8SG1hY1NlY3Jl
dFBhcmFtZXRlcnM+IHBhcmFtcykgbXV0YWJsZSB7CisgICAgICAgICAgICBzZW5kTWFrZUNyZWRl
bnRpYWwoV1RGOjptb3ZlKHBhcmFtcykpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAobmVlZHNQUkYpCisgICAgICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJjb250aW51
ZU1ha2VDcmVkZW50aWFsQWZ0ZXJDaGVja0V4Y2x1ZGVkQ3JlZGVudGlhbHM6IFBSRiByZXF1ZXN0
ZWQgYnV0IGNvbmRpdGlvbnMgbm90IG1ldCAtIHN1cHBvcnRzSG1hY1NlY3JldD0lZCwgaGFzRXZh
bD0lZCwgc3VwcG9ydHNIbWFjU2VjcmV0TWM9JWQiLAorICAgICAgICAgICAgICAgIHN1cHBvcnRz
SG1hY1NlY3JldCwgb3B0aW9ucy5leHRlbnNpb25zLT5wcmYtPmV2YWwuaGFzX3ZhbHVlKCksIHN1
cHBvcnRzSG1hY1NlY3JldE1jKTsKKyAgICAgICAgc2VuZE1ha2VDcmVkZW50aWFsKHN0ZDo6bnVs
bG9wdCk7CisgICAgfQogfQogCiB2b2lkIEN0YXBBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCkBA
IC00MDQsNyArNDA0LDYgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkK
IHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0Fs
bG93Q3JlZGVudGlhbHMoKQogewogICAgIEFTU0VSVCghbV9pc0Rvd25ncmFkZWQpOwotICAgIFZl
Y3Rvcjx1aW50OF90PiBjYm9yQ21kOwogICAgIGF1dG8mIG9wdGlvbnMgPSBzdGQ6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAK
ICAgICBhdXRvIGludGVybmFsVVZBdmFpbGFiaWxpdHkgPSBtX2luZm8ub3B0aW9ucygpLnVzZXJW
ZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKTsKQEAgLTQxOSw0NCArNDE4LDQ4IEBAIHZvaWQgQ3Rh
cEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVu
dGlhbHMoKQogICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJD
aGVja0FsbG93Q3JlZGVudGlhbHM6IFBSRiBjaGVjayAtIGV4dGVuc2lvbnM9JWQsIHByZj0lZCIs
ICEhb3B0aW9ucy5leHRlbnNpb25zLCBuZWVkc1BSRik7CiAgICAgYm9vbCBzdXBwb3J0c0htYWNT
ZWNyZXQgPSBhdXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucy5jb250YWlucyhrRXh0ZW5z
aW9uSG1hY1NlY3JldCk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJz
PiBobWFjU2VjcmV0UGFyYW1zOworICAgIENUQVBfUkVMRUFTRV9MT0coImdldEFzc2VydGlvbiB1
djogJWhodSBpbnRlcm5hbFV2QXZhaWxhYmlsaXR5ICVkIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
b3B0aW9ucy51c2VyVmVyaWZpY2F0aW9uKSwgaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSk7CisKKyAg
ICBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgZWZmZWN0aXZlVVZSZXF1aXJlbWVudCA9IChu
ZWVkc1BSRiAmJiBzdXBwb3J0c0htYWNTZWNyZXQpCisgICAgICAgID8gVXNlclZlcmlmaWNhdGlv
blJlcXVpcmVtZW50OjpSZXF1aXJlZAorICAgICAgICA6IG9wdGlvbnMudXNlclZlcmlmaWNhdGlv
bjsKKworICAgIC8vIEV4dHJhY3QgY3JlZGVudGlhbElkIGJlZm9yZSBvdmVycmlkZUFsbG93Q3Jl
ZGVudGlhbHMgaXMgbW92ZWQgaW50byB0aGUgbGFtYmRhLgorICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjcmVkZW50aWFsSWQ7CiAgICAgaWYgKG5lZWRzUFJGICYmIHN1cHBvcnRz
SG1hY1NlY3JldCkgewotICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJjb250aW51ZUdldEFzc2Vy
dGlvbkFmdGVyQ2hlY2tBbGxvd0NyZWRlbnRpYWxzOiBQUkYgZXh0ZW5zaW9uIGZvdW5kLCBwcmVw
YXJpbmcgaG1hYy1zZWNyZXQiKTsKLSAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNyZWRlbnRp
YWwgSUQgdG8gdXNlIGZvciBldmFsQnlDcmVkZW50aWFsIG1hdGNoaW5nCi0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVkZW50aWFsSWQ7CiAgICAgICAgIGlmIChvdmVy
cmlkZUFsbG93Q3JlZGVudGlhbHMgJiYgIW92ZXJyaWRlQWxsb3dDcmVkZW50aWFscy0+aXNFbXB0
eSgpKQogICAgICAgICAgICAgY3JlZGVudGlhbElkID0gb3ZlcnJpZGVBbGxvd0NyZWRlbnRpYWxz
LT5maXJzdCgpLmlkLnNwYW4oKTsKICAgICAgICAgZWxzZSBpZiAoIW9wdGlvbnMuYWxsb3dDcmVk
ZW50aWFscy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjcmVkZW50aWFsSWQgPSBvcHRpb25zLmFs
bG93Q3JlZGVudGlhbHMuZmlyc3QoKS5pZC5zcGFuKCk7Ci0gICAgICAgIGhtYWNTZWNyZXRQYXJh
bXMgPSBwcmVwYXJlSG1hY1NlY3JldFBhcmFtZXRlcnMoKm9wdGlvbnMuZXh0ZW5zaW9ucy0+cHJm
LCBjcmVkZW50aWFsSWQpOwotICAgICAgICBpZiAoaG1hY1NlY3JldFBhcmFtcykKLSAgICAgICAg
ICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93
Q3JlZGVudGlhbHM6IFBSRiBobWFjLXNlY3JldCBwYXJhbWV0ZXJzIHByZXBhcmVkIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0coImNvbnRpbnVlR2V0QXNzZXJ0
aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVudGlhbHM6IFBSRiBobWFjLXNlY3JldCBwYXJhbWV0ZXJz
IGZhaWxlZCB0byBwcmVwYXJlIik7Ci0gICAgfSBlbHNlIGlmIChuZWVkc1BSRikKLSAgICAgICAg
Q1RBUF9SRUxFQVNFX0xPRygiY29udGludWVHZXRBc3NlcnRpb25BZnRlckNoZWNrQWxsb3dDcmVk
ZW50aWFsczogUFJGIHJlcXVlc3RlZCBhdXRoZW50aWNhdG9yIGRvZXMgbm90IHN1cHBvcnQgaG1h
Yy1zZWNyZXQiKTsKLQotICAgIENUQVBfUkVMRUFTRV9MT0coImdldEFzc2VydGlvbiB1djogJWho
dSBpbnRlcm5hbFV2QXZhaWxhYmlsaXR5ICVkIiwgc3RhdGljX2Nhc3Q8dWludDhfdD4ob3B0aW9u
cy51c2VyVmVyaWZpY2F0aW9uKSwgaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSk7CisgICAgfQogCi0g
ICAgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50IGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQgPSAo
bmVlZHNQUkYgJiYgc3VwcG9ydHNIbWFjU2VjcmV0KQotICAgICAgICA/IFVzZXJWZXJpZmljYXRp
b25SZXF1aXJlbWVudDo6UmVxdWlyZWQKLSAgICAgICAgOiBvcHRpb25zLnVzZXJWZXJpZmljYXRp
b247CisgICAgYXV0byBzZW5kR2V0QXNzZXJ0aW9uID0gW3RoaXMsICZvcHRpb25zLCBpbnRlcm5h
bFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJlcXVpcmVtZW50LCBhdXRoZW50aWNhdG9yU3Vw
cG9ydGVkRXh0ZW5zaW9ucyA9IFdURjo6bW92ZShhdXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5z
aW9ucyksIG92ZXJyaWRlQWxsb3dDcmVkZW50aWFscyA9IFdURjo6bW92ZShvdmVycmlkZUFsbG93
Q3JlZGVudGlhbHMpXShzdGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPiBobWFjU2Vj
cmV0UGFyYW1zKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7Cisg
ICAgICAgIGlmIChpbnRlcm5hbFVWQXZhaWxhYmlsaXR5ID09IFVWQXZhaWxhYmlsaXR5OjprU3Vw
cG9ydGVkQW5kQ29uZmlndXJlZCAmJiBlZmZlY3RpdmVVVlJlcXVpcmVtZW50ICE9IFVzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudDo6RGlzY291cmFnZWQgJiYgbV9waW5BdXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNib3JDbWQgPSBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKHJl
cXVlc3REYXRhKCkuaGFzaCwgb3B0aW9ucywgaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSwgZWZmZWN0
aXZlVVZSZXF1aXJlbWVudCwgYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVuc2lvbnMsIHN0ZDo6
bnVsbG9wdCwgV1RGOjptb3ZlKG92ZXJyaWRlQWxsb3dDcmVkZW50aWFscyksIFdURjo6bW92ZSho
bWFjU2VjcmV0UGFyYW1zKSk7CisgICAgICAgIGVsc2UgaWYgKG1faW5mby5vcHRpb25zKCkuY2xp
ZW50UGluQXZhaWxhYmlsaXR5KCkgPT0gQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OkNs
aWVudFBpbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZFBpblNldCAmJiBlZmZlY3RpdmVVVlJl
cXVpcmVtZW50ICE9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6RGlzY291cmFnZWQpCisg
ICAgICAgICAgICBjYm9yQ21kID0gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihyZXF1
ZXN0RGF0YSgpLmhhc2gsIG9wdGlvbnMsIGludGVybmFsVVZBdmFpbGFiaWxpdHksIGVmZmVjdGl2
ZVVWUmVxdWlyZW1lbnQsIGF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRFeHRlbnNpb25zLCBQaW5QYXJh
bWV0ZXJzIHsgc3RhdGljX2Nhc3Q8dWludDhfdD4oc2VsZWN0UGluUHJvdG9jb2woKSksIG1fcGlu
QXV0aCB9LCBXVEY6Om1vdmUob3ZlcnJpZGVBbGxvd0NyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGht
YWNTZWNyZXRQYXJhbXMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2JvckNtZCA9IGVu
Y29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNoLCBvcHRpb25z
LCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJlcXVpcmVtZW50LCBhdXRoZW50
aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucywgc3RkOjpudWxsb3B0LCBXVEY6Om1vdmUob3ZlcnJp
ZGVBbGxvd0NyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNTZWNyZXRQYXJhbXMpKTsKKyAgICAg
ICAgaWYgKG1faW5mby5tYXhNc2dTaXplKCkgJiYgY2JvckNtZC5zaXplKCkgPj0gKm1faW5mby5t
YXhNc2dTaXplKCkpCisgICAgICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJnZXRBc3NlcnRpb24g
Y21kU2l6ZSA9ICVsdSBtYXhNc2dTaXplID0gJXUiLCBjYm9yQ21kLnNpemUoKSwgKm1faW5mby5t
YXhNc2dTaXplKCkpOworICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJnZXRBc3NlcnRpb246IFNl
bmRpbmcgJXMiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhjYm9yQ21kKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcHJvdGVjdChkcml2ZXIoKSktPnRyYW5zYWN0KFdURjo6bW92ZShjYm9yQ21kKSwg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
KyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5jb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVzcG9uc2VSZWNlaXZlZChXVEY6Om1vdmUoZGF0
YSkpOworICAgICAgICB9KTsKKyAgICB9OwogCi0gICAgaWYgKGludGVybmFsVVZBdmFpbGFiaWxp
dHkgPT0gVVZBdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkICYmIGVmZmVjdGl2
ZVVWUmVxdWlyZW1lbnQgIT0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdl
ZCAmJiBtX3BpbkF1dGguaXNFbXB0eSgpKQotICAgICAgICBjYm9yQ21kID0gZW5jb2RlR2V0QXNz
ZXJ0aW9uUmVxdWVzdEFzQ0JPUihyZXF1ZXN0RGF0YSgpLmhhc2gsIG9wdGlvbnMsIGludGVybmFs
VVZBdmFpbGFiaWxpdHksIGVmZmVjdGl2ZVVWUmVxdWlyZW1lbnQsIGF1dGhlbnRpY2F0b3JTdXBw
b3J0ZWRFeHRlbnNpb25zLCBzdGQ6Om51bGxvcHQsIFdURjo6bW92ZShvdmVycmlkZUFsbG93Q3Jl
ZGVudGlhbHMpLCBXVEY6Om1vdmUoaG1hY1NlY3JldFBhcmFtcykpOwotICAgIGVsc2UgaWYgKG1f
aW5mby5vcHRpb25zKCkuY2xpZW50UGluQXZhaWxhYmlsaXR5KCkgPT0gQXV0aGVudGljYXRvclN1
cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBpbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZFBpblNl
dCAmJiBlZmZlY3RpdmVVVlJlcXVpcmVtZW50ICE9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVu
dDo6RGlzY291cmFnZWQpCi0gICAgICAgIGNib3JDbWQgPSBlbmNvZGVHZXRBc3NlcnRpb25SZXF1
ZXN0QXNDQk9SKHJlcXVlc3REYXRhKCkuaGFzaCwgb3B0aW9ucywgaW50ZXJuYWxVVkF2YWlsYWJp
bGl0eSwgZWZmZWN0aXZlVVZSZXF1aXJlbWVudCwgYXV0aGVudGljYXRvclN1cHBvcnRlZEV4dGVu
c2lvbnMsIFBpblBhcmFtZXRlcnMgeyBzdGF0aWNfY2FzdDx1aW50OF90PihzZWxlY3RQaW5Qcm90
b2NvbCgpKSwgbV9waW5BdXRoIH0sIFdURjo6bW92ZShvdmVycmlkZUFsbG93Q3JlZGVudGlhbHMp
LCBXVEY6Om1vdmUoaG1hY1NlY3JldFBhcmFtcykpOwotICAgIGVsc2UKLSAgICAgICAgY2JvckNt
ZCA9IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IocmVxdWVzdERhdGEoKS5oYXNoLCBv
cHRpb25zLCBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5LCBlZmZlY3RpdmVVVlJlcXVpcmVtZW50LCBh
dXRoZW50aWNhdG9yU3VwcG9ydGVkRXh0ZW5zaW9ucywgc3RkOjpudWxsb3B0LCBXVEY6Om1vdmUo
b3ZlcnJpZGVBbGxvd0NyZWRlbnRpYWxzKSwgV1RGOjptb3ZlKGhtYWNTZWNyZXRQYXJhbXMpKTsK
LSAgICBpZiAobV9pbmZvLm1heE1zZ1NpemUoKSAmJiBjYm9yQ21kLnNpemUoKSA+PSAqbV9pbmZv
Lm1heE1zZ1NpemUoKSkKLSAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiZ2V0QXNzZXJ0aW9uIGNt
ZFNpemUgPSAlbHUgbWF4TXNnU2l6ZSA9ICV1IiwgY2JvckNtZC5zaXplKCksICptX2luZm8ubWF4
TXNnU2l6ZSgpKTsKLSAgICBDVEFQX1JFTEVBU0VfTE9HKCJnZXRBc3NlcnRpb246IFNlbmRpbmcg
JXMiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhjYm9yQ21kKS51dGY4KCkuZGF0YSgpKTsKLSAgICBw
cm90ZWN0KGRyaXZlcigpKS0+dHJhbnNhY3QoV1RGOjptb3ZlKGNib3JDbWQpLCBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0oVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewotICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVHZXRBc3NlcnRpb25BZnRl
clJlc3BvbnNlUmVjZWl2ZWQoV1RGOjptb3ZlKGRhdGEpKTsKLSAgICB9KTsKKyAgICBpZiAobmVl
ZHNQUkYgJiYgc3VwcG9ydHNIbWFjU2VjcmV0KSB7CisgICAgICAgIENUQVBfUkVMRUFTRV9MT0co
ImNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJDaGVja0FsbG93Q3JlZGVudGlhbHM6IFBSRiBleHRl
bnNpb24gZm91bmQsIHByZXBhcmluZyBobWFjLXNlY3JldCIpOworICAgICAgICBwcmVwYXJlSG1h
Y1NlY3JldFBhcmFtZXRlcnMoKm9wdGlvbnMuZXh0ZW5zaW9ucy0+cHJmLCBjcmVkZW50aWFsSWQs
IFdURjo6bW92ZShzZW5kR2V0QXNzZXJ0aW9uKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KG5lZWRzUFJGKQorICAgICAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiY29udGludWVHZXRBc3Nl
cnRpb25BZnRlckNoZWNrQWxsb3dDcmVkZW50aWFsczogUFJGIHJlcXVlc3RlZCBhdXRoZW50aWNh
dG9yIGRvZXMgbm90IHN1cHBvcnQgaG1hYy1zZWNyZXQiKTsKKyAgICAgICAgc2VuZEdldEFzc2Vy
dGlvbihzdGQ6Om51bGxvcHQpOworICAgIH0KIH0KIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6
Y29udGludWVHZXRBc3NlcnRpb25BZnRlclJlc3BvbnNlUmVjZWl2ZWQoVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSkKQEAgLTg4NywxMyArODkwLDM2IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OnBl
cmZvcm1BdXRoZW50aWNhdG9yU2VsZWN0aW9uRm9yU2V0dXBQaW4oKQogICAgIH0KIH0KIAotc3Rk
OjpvcHRpb25hbDxIbWFjU2VjcmV0UGFyYW1ldGVycz4gQ3RhcEF1dGhlbnRpY2F0b3I6OnByZXBh
cmVIbWFjU2VjcmV0UGFyYW1ldGVycyhjb25zdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRJbnB1dHM6OlBSRklucHV0cyYgcHJmSW5wdXRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4mIGNyZWRlbnRpYWxJZCkKK3ZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6OnByZXBh
cmVIbWFjU2VjcmV0UGFyYW1ldGVycyhjb25zdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRJbnB1dHM6OlBSRklucHV0cyYgcHJmSW5wdXRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4mIGNyZWRlbnRpYWxJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFtX2NhY2hlZFBlZXJLZXkpIHsKLSAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygicHJl
cGFyZUhtYWNTZWNyZXRQYXJhbWV0ZXJzOiBObyBjYWNoZWQgcGVlciBrZXkgYXZhaWxhYmxlIChs
aWtlbHkgZmlyc3QgYXR0ZW1wdCBiZWZvcmUgUElOKSIpOwotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJwcmVwYXJlSG1hY1NlY3JldFBhcmFt
ZXRlcnM6IE5vIGNhY2hlZCBwZWVyIGtleSwgZmV0Y2hpbmcga2V5IGFncmVlbWVudCIpOworICAg
ICAgICBhdXRvIGNib3JDbWQgPSBlbmNvZGVBc0NCT1IocGluOjpLZXlBZ3JlZW1lbnRSZXF1ZXN0
IHsgc2VsZWN0UGluUHJvdG9jb2woKSB9KTsKKyAgICAgICAgcHJvdGVjdChkcml2ZXIoKSktPnRy
YW5zYWN0KFdURjo6bW92ZShjYm9yQ21kKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHByZklucHV0cywgY3JlZGVudGlhbElkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92ZShj
b21wbGV0aW9uSGFuZGxlcildKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIG11dGFibGUgeworICAg
ICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICAgICAgICAgIFJlZlB0ciBw
cm90ZWN0ZWRUaGlzID0gd2Vha1RoaXMuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXByb3RlY3Rl
ZFRoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CisKKyAgICAgICAgICAgIGF1dG8ga2V5QWdyZWVtZW50ID0gcGluOjpLZXlBZ3JlZW1l
bnRSZXNwb25zZTo6cGFyc2UoZGF0YSk7CisgICAgICAgICAgICBpZiAoIWtleUFncmVlbWVudCkg
eworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBnZXRSZXNwb25zZUNvZGUoZGF0YSk7Cisg
ICAgICAgICAgICAgICAgQ1RBUF9SRUxFQVNFX0xPR19XSVRIX1RISVMocHJvdGVjdGVkVGhpcywg
InByZXBhcmVIbWFjU2VjcmV0UGFyYW1ldGVyczogRmFpbGVkIHRvIGdldCBrZXkgYWdyZWVtZW50
LiBFcnJvciBjb2RlOiAlaGh1Iiwgc3RkOjp0b191bmRlcmx5aW5nKGVycm9yKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2FjaGVkUGVlcktleSA9IGtl
eUFncmVlbWVudC0+cGVlcktleS5wdHIoKTsKKyAgICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0df
V0lUSF9USElTKHByb3RlY3RlZFRoaXMsICJwcmVwYXJlSG1hY1NlY3JldFBhcmFtZXRlcnM6IEtl
eSBhZ3JlZW1lbnQgY2FjaGVkIik7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5idWlsZEht
YWNTZWNyZXRQYXJhbWV0ZXJzKHByZklucHV0cywgY3JlZGVudGlhbElkLCBXVEY6Om1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBidWlsZEhtYWNTZWNyZXRQYXJhbWV0ZXJzKHByZklucHV0cywgY3JlZGVudGlhbElkLCBX
VEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBDdGFwQXV0aGVudGljYXRv
cjo6YnVpbGRIbWFjU2VjcmV0UGFyYW1ldGVycyhjb25zdCBBdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHM6OlBSRklucHV0cyYgcHJmSW5wdXRzLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4mIGNyZWRlbnRpYWxJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CiAgICAgY29uc3QgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjpQUkZW
YWx1ZXMqIHNlbGVjdGVkVmFsdWVzID0gbnVsbHB0cjsKIAogICAgIGlmIChwcmZJbnB1dHMuZXZh
bEJ5Q3JlZGVudGlhbCAmJiBjcmVkZW50aWFsSWQpIHsKQEAgLTkwMSw3ICs5MjcsNyBAQCBzdGQ6
Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPiBDdGFwQXV0aGVudGljYXRvcjo6cHJlcGFy
ZUhtYWNTZWNyZXRQYXJhbWV0ZQogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogKnBy
ZklucHV0cy5ldmFsQnlDcmVkZW50aWFsKSB7CiAgICAgICAgICAgICBpZiAoZW50cnkua2V5ID09
IGNyZWRlbnRpYWxJZFN0cmluZykgewogICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzID0g
JmVudHJ5LnZhbHVlOwotICAgICAgICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0coInByZXBhcmVI
bWFjU2VjcmV0UGFyYW1ldGVyczogVXNpbmcgZXZhbEJ5Q3JlZGVudGlhbCBmb3IgY3JlZGVudGlh
bCIpOworICAgICAgICAgICAgICAgIENUQVBfUkVMRUFTRV9MT0coImJ1aWxkSG1hY1NlY3JldFBh
cmFtZXRlcnM6IFVzaW5nIGV2YWxCeUNyZWRlbnRpYWwgZm9yIGNyZWRlbnRpYWwiKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTA5LDEyICs5
MzUsMTIgQEAgc3RkOjpvcHRpb25hbDxIbWFjU2VjcmV0UGFyYW1ldGVycz4gQ3RhcEF1dGhlbnRp
Y2F0b3I6OnByZXBhcmVIbWFjU2VjcmV0UGFyYW1ldGUKIAogICAgIGlmICghc2VsZWN0ZWRWYWx1
ZXMgJiYgcHJmSW5wdXRzLmV2YWwpIHsKICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSAmKnByZklu
cHV0cy5ldmFsOwotICAgICAgICBDVEFQX1JFTEVBU0VfTE9HKCJwcmVwYXJlSG1hY1NlY3JldFBh
cmFtZXRlcnM6IFVzaW5nIGV2YWwiKTsKKyAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiYnVpbGRI
bWFjU2VjcmV0UGFyYW1ldGVyczogVXNpbmcgZXZhbCIpOwogICAgIH0KIAogICAgIGlmICghc2Vs
ZWN0ZWRWYWx1ZXMpIHsKLSAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygicHJlcGFyZUhtYWNTZWNy
ZXRQYXJhbWV0ZXJzOiBObyBhcHBsaWNhYmxlIFBSRiB2YWx1ZXMiKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygiYnVpbGRIbWFjU2VjcmV0
UGFyYW1ldGVyczogTm8gYXBwbGljYWJsZSBQUkYgdmFsdWVzIik7CisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGF1dG8gc2FsdDEg
PSBoYXNoUFJGSW5wdXQoc2VsZWN0ZWRWYWx1ZXMtPmZpcnN0KTsKQEAgLTkyNCw4ICs5NTAsOCBA
QCBzdGQ6Om9wdGlvbmFsPEhtYWNTZWNyZXRQYXJhbWV0ZXJzPiBDdGFwQXV0aGVudGljYXRvcjo6
cHJlcGFyZUhtYWNTZWNyZXRQYXJhbWV0ZQogCiAgICAgYXV0byBobWFjU2VjcmV0UmVxdWVzdCA9
IHBpbjo6SG1hY1NlY3JldFJlcXVlc3Q6OmNyZWF0ZShzZWxlY3RQaW5Qcm90b2NvbCgpLCBzYWx0
MSwgc2FsdDIsIG1fY2FjaGVkUGVlcktleS5jb3B5UmVmKCkpOwogICAgIGlmICghaG1hY1NlY3Jl
dFJlcXVlc3QpIHsKLSAgICAgICAgQ1RBUF9SRUxFQVNFX0xPRygicHJlcGFyZUhtYWNTZWNyZXRQ
YXJhbWV0ZXJzOiBGYWlsZWQgdG8gY3JlYXRlIEhtYWNTZWNyZXRSZXF1ZXN0Iik7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIENUQVBfUkVMRUFTRV9MT0coImJ1aWxkSG1h
Y1NlY3JldFBhcmFtZXRlcnM6IEZhaWxlZCB0byBjcmVhdGUgSG1hY1NlY3JldFJlcXVlc3QiKTsK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfQog
CiAgICAgSG1hY1NlY3JldFBhcmFtZXRlcnMgcGFyYW1zOwpAQCAtOTQwLDcgKzk2Niw3IEBAIHN0
ZDo6b3B0aW9uYWw8SG1hY1NlY3JldFBhcmFtZXRlcnM+IEN0YXBBdXRoZW50aWNhdG9yOjpwcmVw
YXJlSG1hY1NlY3JldFBhcmFtZXRlCiAKICAgICBtX2htYWNTZWNyZXRSZXF1ZXN0ID0gV1RGOjpt
b3ZlKGhtYWNTZWNyZXRSZXF1ZXN0KTsKIAotICAgIHJldHVybiBwYXJhbXM7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjptb3ZlKHBhcmFtcykpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3Rh
cEF1dGhlbnRpY2F0b3IuaAppbmRleCAzY2FjZWIyYzAxLi45MzllNTM1ZGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRo
ZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9DdGFwQXV0aGVudGljYXRvci5oCkBAIC03MCw3ICs3MCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb250aW51ZVJlcXVlc3RBZnRlckdldFBpblRva2VuKFZlY3Rvcjx1aW50OF90PiYm
LCBjb25zdCBmaWRvOjpwaW46OlRva2VuUmVxdWVzdCYpOwogICAgIGJvb2wgdHJ5UmVzdGFydFBp
bihjb25zdCBmaWRvOjpDdGFwRGV2aWNlUmVzcG9uc2VDb2RlJik7CiAKLSAgICBzdGQ6Om9wdGlv
bmFsPGZpZG86OkhtYWNTZWNyZXRQYXJhbWV0ZXJzPiBwcmVwYXJlSG1hY1NlY3JldFBhcmFtZXRl
cnMoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjpQ
UkZJbnB1dHMmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGNyZWRlbnRp
YWxJZCk7CisgICAgdm9pZCBwcmVwYXJlSG1hY1NlY3JldFBhcmFtZXRlcnMoY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOjpQUkZJbnB1dHMmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGNyZWRlbnRpYWxJZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGZpZG86OkhtYWNTZWNyZXRQYXJhbWV0ZXJzPik+
JiYpOworICAgIHZvaWQgYnVpbGRIbWFjU2VjcmV0UGFyYW1ldGVycyhjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHM6OlBSRklucHV0cyYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYgY3JlZGVudGlhbElkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Zmlkbzo6SG1hY1NlY3JldFBhcmFtZXRlcnM+KT4mJik7
CiAKICAgICBib29sIGNhbkRvd25ncmFkZVRvVTJmKCkgY29uc3Q7CiAgICAgYm9vbCB0cnlEb3du
Z3JhZGUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>