<?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>233603</bug_id>
          
          <creation_ts>2021-11-29 15:45:56 -0800</creation_ts>
          <short_desc>AX: Reduce repetition in retrieving typed attribute values in AccessibilityUIElementMac</short_desc>
          <delta_ts>2021-11-30 08:20:11 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>andresg_22</cc>
    
    <cc>cfleizach</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818515</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-11-29 15:45:56 -0800</bug_when>
    <thetext>We have a lot of functions in both the WebKitTestRunner and DumpRenderTree versions of AccessibilityUIElementMac that repeat the same logic for getting a typed attribute value. For example:

bool AccessibilityUIElement::hasPopup() const
{
    BEGIN_AX_OBJC_EXCEPTIONS
    id value = [m_element accessibilityAttributeValue:@&quot;AXHasPopup&quot;];
    if ([value isKindOfClass:[NSNumber class]])
        return [value boolValue];
    END_AX_OBJC_EXCEPTIONS

    return false;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818516</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 15:46:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85838990&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818518</commentid>
    <comment_count>2</comment_count>
      <attachid>445358</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-11-29 15:51:24 -0800</bug_when>
    <thetext>Created attachment 445358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818709</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-30 07:13:44 -0800</bug_when>
    <thetext>tyler_w@apple.com does not have committer permissions according to https://raw.githubusercontent.com/WebKit/WebKit/main/metadata/contributors.json.

Rejecting attachment 445358 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818748</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-30 08:20:10 -0800</bug_when>
    <thetext>Committed r286298 (244657@main): &lt;https://commits.webkit.org/244657@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445358.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445358</attachid>
            <date>2021-11-29 15:51:24 -0800</date>
            <delta_ts>2021-11-30 08:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233603-20211129175123.patch</filename>
            <type>text/plain</type>
            <size>29266</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MjU4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjNkNDk1MzI0YzI3ZDEwMThmZWJmMTFjNTQ2ODlmYzU5
N2I4MzlkYS4uODVhMzc0ZmU1ZmZjZjAxNDc0NTc5YjgxZTA3Y2E5YWM1ZGE4NTdlNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1
IEBACisyMDIxLTExLTI5ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQVg6IFJlZHVjZSByZXBldGl0aW9uIGluIHJldHJpZXZpbmcgdHlwZWQgYXR0cmlidXRl
IHZhbHVlcyBpbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2MDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIGEgbG90IG9mIGZ1bmN0aW9ucyBp
biBib3RoIHRoZSBXZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZSB2ZXJzaW9ucyBv
ZgorICAgICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjIHRoYXQgcmVwZWF0IHRoZSBzYW1l
IGxvZ2ljIGZvciBnZXR0aW5nIGEgdHlwZWQgYXR0cmlidXRlIHZhbHVlLgorICAgICAgICBXZSBj
YW4gbWFrZSB0aGlzIHNpbXBsZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIE1vdmUgY29yZSBsb2dpYyB0byBuZXcgc3Ry
aW5nQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgZnVuY3Rpb24uCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IEFk
ZGVkLgorCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVW
YWx1ZSk6CisgICAgICAgIE1vdmUgY29yZSBsb2dpYyB0byBuZXcgbnVtYmVyQXR0cmlidXRlVmFs
dWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgZnVuY3Rpb24uCisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IEFkZGVkLgorCisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6
CisgICAgICAgIE1vdmUgY29yZSBsb2dpYyB0byBuZXcgYm9vbEF0dHJpYnV0ZVZhbHVlKE5TU3Ry
aW5nKiBhdHRyaWJ1dGUpIGZ1bmN0aW9uLgorCisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpkb21JZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmludFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1p
blZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCBjb25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1NlbGVjdGVkIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzRXhwYW5kZWQgY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXJpYUlzR3JhYmJlZCBjb25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRv
Y3VtZW50VVJJKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT25TY3JlZW4g
Y29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAgY29uc3Qp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9wdXBWYWx1ZSBjb25zdCk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNEb2N1bWVudFJvbGVBbmNlc3RvciBj
b25zdCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNXZWJBcHBsaWNhdGlv
bkFuY2VzdG9yIGNvbnN0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5E
ZXNjcmlwdGlvbkxpc3REZXRhaWwgY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0gY29uc3QpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNJbkNlbGwgY29uc3QpOgorICAgICAgICBSZWZhY3RvciB0byB1c2Ug
bmV3IGBOU1N0cmluZyAqYXR0cmlidXRlYCBjb252ZW5pZW5jZSBmdW5jdGlvbnMuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIE1vdmUgY29yZSBsb2dpYyB0
byBuZXcgc3RyaW5nQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgZnVuY3Rpb24u
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZh
bHVlIGNvbnN0KTogQWRkZWQuCisKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICBNb3ZlIGNvcmUgbG9naWMgdG8gbmV3
IG51bWJlckF0dHJpYnV0ZVZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUpIGZ1bmN0aW9uLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29s
QXR0cmlidXRlVmFsdWUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgTW92ZSBjb3JlIGxvZ2lj
IHRvIG5ldyBib29sQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgZnVuY3Rpb24u
CisKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUgY29uc3QpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpzb3J0RGlyZWN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCBjb25z
dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2Rp
bmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9wdXBWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc0RvY3VtZW50Um9sZUFu
Y2VzdG9yIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFz
V2ViQXBwbGljYXRpb25BbmNlc3RvciBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwgY29uc3QpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luRGVzY3JpcHRpb25MaXN0VGVybSBjb25z
dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5DZWxsIGNvbnN0
KToKKyAgICAgICAgUmVmYWN0b3IgdG8gdXNlIG5ldyBgTlNTdHJpbmcgKmF0dHJpYnV0ZWAgY29u
dmVuaWVuY2UgZnVuY3Rpb25zLgorCiAyMDIxLTExLTI5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTW92ZSBtX2luY29taW5nUG9seW1vcnBoaWND
YWxscyBvdXQgb2YgQ29kZUJsb2NrOjpKSVREYXRhCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggMWRiZjEyNDIyNzUzZTBiNzY1YzE3MmYzODAy
ZjQzN2Q2M2YwNmUzNi4uMzNjYTFmNjdkMzI3Yzk5ZTg1ODJlN2JlNjAyNzAyY2I0NTQ3ZWY4OSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAt
MzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TU3RyaW5nOworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
ZWxpZiBQTEFURk9STShXSU4pCkBAIC0xMDksOCArMTEzLDEzIEBAIHB1YmxpYzoKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKTsKICAgICBkb3VibGUgbnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKTsKICAgICB2b2lkIHVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlLCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGVsZW1lbnRzKSBj
b25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7ICAgIAorICAgIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgdWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25z
dDsKICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAq
YXR0cmlidXRlKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyaW5nQXR0
cmlidXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSkgY29uc3Q7CisgICAgZG91YmxlIG51bWJl
ckF0dHJpYnV0ZVZhbHVlKE5TU3RyaW5nICphdHRyaWJ1dGUpIGNvbnN0OworI2VuZGlmCiAgICAg
dm9pZCBzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBib29sIHZh
bHVlKTsKICAgICBib29sIGlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSk7CiAgICAgYm9vbCBpc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCmluZGV4IGUyZDM1NTcyMGQ0ZDA1YjhjZmYzODU3YWE2OTk4YzEzMDlhYzgyMjcu
LjY1OTM5MDMxNTZjYzU1YmE4ODE3YjQxMWQ3ZGMwZWIwYjI4ZGVlNWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBA
IC00OTcsOSArNDk3LDE0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSkKK3sKKyAgICByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoW05TU3RyaW5n
IHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKE5T
U3RyaW5nICphdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpb
TlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlXTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJl
dHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKQEAgLTU0Niw5ICs1NTEsMTQgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1IKIAogCiBkb3Vi
bGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQoreworICAgIHJldHVybiBudW1iZXJBdHRyaWJ1dGVWYWx1ZShbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0
ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdX
aXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOwogICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBkb3Vi
bGVWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNTU2LDEwICs1NjYsMTAg
QEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpT
U3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcg
KmF0dHJpYnV0ZSkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmlu
ZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOwogICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTU2Nyw2ICs1
NzcsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKQoreworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBib29sIHZh
bHVlKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNjY2LDEzICs2ODEsNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3Jp
cHRpb24oKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZG9tSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlET01JZGVudGlmaWVyQXR0cmlidXRlXTsKLSAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgY3Jl
YXRlSlNTdHJpbmdSZWZdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlET01JZGVudGlmaWVyQXR0cmlidXRlKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKQEAgLTc3OCwzNSAr
Nzg3LDE3IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCiAK
IGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0g
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICBy
ZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKLSAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCi0KLSAgICByZXR1cm4gMC4wZjsKKyAgICByZXR1cm4gbnVtYmVyQXR0cmlidXRl
VmFsdWUoTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGUpOwogfQogCiBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwotICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIq
KXZhbHVlIGRvdWJsZVZhbHVlXTsgCi0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAg
cmV0dXJuIDAuMGY7CisgICAgcmV0dXJuIG51bWJlckF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJp
bGl0eU1pblZhbHVlQXR0cmlidXRlKTsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1heFZhbHVlKCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eU1heFZhbHVlQXR0cmlidXRlXTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVW
YWx1ZV07IAotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiAwLjA7Cisg
ICAgcmV0dXJuIG51bWJlckF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0
cmlidXRlKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQpAQCAtODYzLDU3ICs4NTQsMjcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpCiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKIHsKLSAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVdOwotICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1
ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlF
bmFibGVkQXR0cmlidXRlKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Jl
cXVpcmVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhSZXF1aXJl
ZCJdOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShAIkFYUmVxdWlyZWQiKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzZWQoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZV07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUpOwogfQog
CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogewotICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVd
OwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAg
ICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07Ci0gICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJv
b2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUV4cGFu
ZGVkQXR0cmlidXRlKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNr
ZWQoKSBjb25zdApAQCAtOTY3LDEzICs5MjgsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdOwotICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUdy
YWJiZWRBdHRyaWJ1dGUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTE0NjMs
MjIgKzE0MTgsMTYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKIHsKLSAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEb2N1bWVudEVuY29kaW5nIl07Ci0gICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3Zh
bHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
aWYgKGF1dG8gcmVzdWx0ID0gc3RyaW5nQXR0cmlidXRlVmFsdWUoQCJBWERvY3VtZW50RW5jb2Rp
bmciKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKICAgICByZXR1cm4gV1RSOjpjcmVh
dGVKU1N0cmluZygpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWERvY3VtZW50VVJJIl07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKLSAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKGF1dG8gcmVzdWx0ID0gc3RyaW5nQXR0
cmlidXRlVmFsdWUoQCJBWERvY3VtZW50VVJJIikpCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgCiAgICAgcmV0dXJuIFdUUjo6Y3JlYXRlSlNTdHJpbmcoKTsKIH0KQEAgLTE1NjQsMTMgKzE1
MTMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPblNjcmVlbigpIGNvbnN0CiB7Ci0gICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSXNPblNjcmVlbiJdOwotICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBi
b29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc09uU2NyZWVuIik7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdApAQCAtMTYx
OSw3OSArMTU2Miw0MCBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlMaW5l
KCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0
CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSGFzUG9wdXAiXTsKLSAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBb
dmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSGFzUG9wdXAiKTsK
IH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBv
cHVwVmFsdWUoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlk
IHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBvcHVw
VmFsdWUiXTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwotICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKyAgICBpZiAoYXV0byByZXN1bHQgPSBzdHJpbmdBdHRyaWJ1dGVWYWx1
ZShAIkFYUG9wdXBWYWx1ZSIpKQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgcmV0dXJu
IFtAImZhbHNlIiBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdAogewotICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6QCJBWEhhc0RvY3VtZW50Um9sZUFuY2VzdG9yIl07Ci0gICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3Zh
bHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQCJBWEhhc0RvY3VtZW50Um9s
ZUFuY2VzdG9yIik7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzV2ViQXBw
bGljYXRpb25BbmNlc3RvcigpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpA
IkFYSGFzV2ViQXBwbGljYXRpb25BbmNlc3RvciJdOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVd
OwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNXZWJBcHBsaWNhdGlvbkFuY2VzdG9yIik7
CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdERl
dGFpbCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSXNJbkRlc2Ny
aXB0aW9uTGlzdERldGFpbCJdOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEAiQVhJc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsIik7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0oKSBjb25zdAog
ewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWElzSW5EZXNjcmlwdGlvbkxpc3RUZXJt
Il07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAg
ICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQCJB
WElzSW5EZXNjcmlwdGlvbkxpc3RUZXJtIik7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNJbkNlbGwoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJB
WElzSW5DZWxsIl07Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFz
c11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQCJBWElzSW5DZWxsIik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGFrZUZvY3VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggZjNmY2M5MmNkNDZj
MDMzN2Q5ZmMwNDkwY2FjZGE0Mzk2NmYwYjRmZC4uN2YwMWFjMDQxZTVmNThlMzFjN2FlOGUwMGMz
ZTk0MzM3NGI5NzNiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTEzMiw2ICsx
MzIsOSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IHVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3Q7CiAgICAgYm9v
bCBib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKTsKICNpZiBQTEFURk9S
TShNQUMpCisgICAgYm9vbCBib29sQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSkg
Y29uc3Q7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0F0dHJpYnV0ZVZhbHVl
KE5TU3RyaW5nICphdHRyaWJ1dGUpIGNvbnN0OworICAgIGRvdWJsZSBudW1iZXJBdHRyaWJ1dGVW
YWx1ZShOU1N0cmluZyAqYXR0cmlidXRlKSBjb25zdDsKICAgICBSZXRhaW5QdHI8aWQ+IGF0dHJp
YnV0ZVZhbHVlKE5TU3RyaW5nICopIGNvbnN0OwogICAgIHZvaWQgYXR0cmlidXRlVmFsdWVBc3lu
YyhKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IGFlYTRjMzMzNTEy
M2FkOWUyNmRiOGM1OGRhZWQxNDkyMDk3NzEwMjIuLmEwNzQwY2I3MDczMTRlZTY0YzQ5ZWM1ZDI4
MjdhZmQ0NTRkYzExOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQpAQCAtMzM1LDEwICszMzUsNyBAQCBSZXRhaW5QdHI8aWQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZVZhbHVlRm9yUGFyYW1ldGVyKE5TU3RyaW5nICphdHRyaQogCiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmll
cigpIGNvbnN0CiB7Ci0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJp
bGl0eURPTUlkZW50aWZpZXJBdHRyaWJ1dGUpOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmlu
Z1JlZl07Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZh
bHVlKE5TQWNjZXNzaWJpbGl0eURPTUlkZW50aWZpZXJBdHRyaWJ1dGUpOwogfQogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRWZWN0b3IpCkBAIC02MDcsMTcgKzYwNCwz
MyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Ry
aW5nRGVzY3JpcHRpb25PZkF0dHJpYnV0ZVZhbAogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKQogewotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Ry
aW5nQXR0cmlidXRlVmFsdWUoTlNTdHJpbmcgKmF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoYXR0
cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOworICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKQogewotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5n
V2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIHJldHVybiBudW1iZXJBdHRyaWJ1dGVW
YWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworfQorCitk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoTlNTdHJp
bmcgKmF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoYXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUg
ZG91YmxlVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVybiAw
OwogfQogCkBAIC02MzUsMTQgKzY0OCwyMiBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSgogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlKSBjb25zdAog
ewotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAg
IGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBi
b29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKK30KKwogdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZUFzeW5jKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZSB8fCAh
Y2FsbGJhY2spCkBAIC04ODIsMzUgKzkwMywxNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVJlY3RzQW5kVGV4dCgpIGNvbnN0CiAKIGRvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNj
ZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3Vi
bGVWYWx1ZV07IAotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiAwLjBm
OworICAgIHJldHVybiBudW1iZXJBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0
dHJpYnV0ZSk7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgp
CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlKTsKLSAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbKE5T
TnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
LQotICAgIHJldHVybiAwLjBmOworICAgIHJldHVybiBudW1iZXJBdHRyaWJ1dGVWYWx1ZShOU0Fj
Y2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZSk7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYXhWYWx1ZSgpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0
cmlidXRlKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBbKE5TTnVtYmVyKil2YWx1ZSBkb3VibGVWYWx1ZV07IAotICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiAwLjA7CisgICAgcmV0dXJuIG51bWJl
ckF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlKTsKIH0KIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVz
Y3JpcHRpb24oKQpAQCAtOTY3LDI0ICs5NzAsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNFbmFibGVkKCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJp
YnV0ZSk7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQot
ICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSZXF1aXJlZCIpOwot
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhSZXF1
aXJlZCIpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Zm9jdXNlZEVsZW1lbnQoKSBjb25zdApAQCAtOTk5LDEzICs5OTAsNyBAQCBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Zm9j
dXNlZEVsZW1lbnQoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9j
dXNlZCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2
YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUpOwot
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzU2VsZWN0ZWQoKSBjb25zdApAQCAtMTAzNCwxMyArMTAxOSw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmls
aXR5RXhwYW5kZWRBdHRyaWJ1dGUpOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlKTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdApAQCAtMTA1MSwx
OCArMTAzMCwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNv
bnN0CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
dXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZVZh
bHVlKE5TQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50QXR0cmlidXRlKTsKLSAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUg
Y3JlYXRlSlNTdHJpbmdSZWZdOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlBUklBQ3VycmVudEF0dHJpYnV0ZSk7CiB9
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpzb3J0
RGlyZWN0aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNB
Y2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZSk7Ci0gICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RyaW5nQXR0
cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZSk7CiB9CiAK
IGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CkBA
IC0xMTEwLDEzICsxMDgzLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNwZWFrQXMoKQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFJc0dyYWJiZWQoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmli
dXRlKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCi0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShO
U0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0CkBA
IC0xNjE0LDIxICsxNTgxLDE3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAogCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCiB7
Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0
ZVZhbHVlKEAiQVhEb2N1bWVudEVuY29kaW5nIik7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3Ry
aW5nUmVmXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgaWYgKGF1dG8gcmVzdWx0
ID0gc3RyaW5nQXR0cmlidXRlVmFsdWUoQCJBWERvY3VtZW50RW5jb2RpbmciKSkKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKwogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZygpOwogfQogCiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkko
KQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZShAIkFYRG9jdW1lbnRVUkkiKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJp
bmdSZWZdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAoYXV0byByZXN1bHQg
PSBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShAIkFYRG9jdW1lbnRVUkkiKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKwogICAgIHJldHVybiBjcmVhdGVKU1N0cmluZygpOwogfQogCkBAIC0xNzYxLDc5
ICsxNzI0LDQwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aUxpbmUoKSBj
b25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QKIHsK
LSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRl
VmFsdWUoQCJBWEhhc1BvcHVwIik7Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQotICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0gICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQCJBWEhhc1BvcHVwIik7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpwb3B1cFZhbHVlKCkgY29uc3QKIHsKLSAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlVmFsdWUo
QCJBWFBvcHVwVmFsdWUiKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwotICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZiAoYXV0byByZXN1bHQgPSBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShAIkFYUG9wdXBWYWx1ZSIpKQorICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAg
ICAgcmV0dXJuIFtAImZhbHNlIiBjcmVhdGVKU1N0cmluZ1JlZl07CiB9CiAKIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IoKSBjb25zdAogewotICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1
ZShAIkFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IiKTsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVl
XTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSGFzRG9jdW1lbnRSb2xlQW5jZXN0b3IiKTsK
IH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNXZWJBcHBsaWNhdGlvbkFuY2Vz
dG9yKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRvIHZh
bHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWEhhc1dlYkFwcGxpY2F0aW9uQW5jZXN0b3IiKTsKLSAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJl
dHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSGFzV2Vi
QXBwbGljYXRpb25BbmNlc3RvciIpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSW5EZXNjcmlwdGlvbkxpc3REZXRhaWwoKSBjb25zdAogewotICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYSXNJbkRlc2Ny
aXB0aW9uTGlzdERldGFpbCIpOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEAiQVhJc0luRGVzY3JpcHRpb25MaXN0RGV0YWlsIik7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0oKSBjb25zdAog
ewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShAIkFYSXNJbkRlc2NyaXB0aW9uTGlzdFRlcm0iKTsKLSAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbdmFsdWUgYm9v
bFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShAIkFYSXNJbkRlc2NyaXB0aW9uTGlzdFRl
cm0iKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luQ2VsbCgpIGNvbnN0
CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgYXV0byB2YWx1ZSA9IGF0dHJp
YnV0ZVZhbHVlKEAiQVhJc0luQ2VsbCIpOwotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEAiQVhJc0luQ2VsbCIpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>