<?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>230125</bug_id>
          
          <creation_ts>2021-09-09 14:41:53 -0700</creation_ts>
          <short_desc>Modernize CertificateInfo decoder</short_desc>
          <delta_ts>2021-09-10 09:12:23 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1792097</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-09 14:41:53 -0700</bug_when>
    <thetext>Modernize CertificateInfo decoder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792098</commentid>
    <comment_count>1</comment_count>
      <attachid>437789</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-09 14:42:54 -0700</bug_when>
    <thetext>Created attachment 437789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792235</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-09 20:56:15 -0700</bug_when>
    <thetext>Committed r282258 (241536@main): &lt;https://commits.webkit.org/241536@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437789.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792364</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-10 09:12:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/82975052&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437789</attachid>
            <date>2021-09-09 14:42:54 -0700</date>
            <delta_ts>2021-09-09 20:56:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230125-20210909144253.patch</filename>
            <type>text/plain</type>
            <size>40663</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFmMGM5NzIwMmIwOWVjYzky
NjhjNjdjZjZhNjFmOWFkYjc1Mjc5YTMuLmYzOTczYWIzODUxOTJmN2UwMWVjODQyMDVmZTNmMTZk
YjNiY2YxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDktMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb2Rlcm5pemUg
Q2VydGlmaWNhdGVJbmZvIGRlY29kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJldHVybiBzdGQ6Om9wdGlvbmFsIGluc3RlYWQgb2YgYm9vbC4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENG
VHlwZVJlZj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJldGFpblB0
cjxDRkFycmF5UmVmPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmV0
YWluUHRyPENGQm9vbGVhblJlZj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJldGFpblB0cjxDRkRhdGFSZWY+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZXRhaW5QdHI8Q0ZEYXRlUmVmPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRk51bWJlclJlZj4+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlVSTFJlZj4+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8
U2VjQ2VydGlmaWNhdGVSZWY+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVtUmVmPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8U2VjVHJ1c3RSZWY+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5oOgorICAgICAgICAq
IFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUpOgorCiAyMDIxLTA5LTA5ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IFByaXZhdGVDbGlja01lYXN1cmVtZW50IGRhZW1vbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggODdmZWM3ZmVmMWRhYjRlOGJkYTdlZDJh
ZjE5YzM3OWQ5MTM0MDk4ZC4uZmFiY2VmNmMyMTI1MjNlZjAxY2M4OWE0OTg0NjAwNmQ4ZWEyZGY5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25VbmRlcmxpbmUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0N1cnNvci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlNzA0ZWNiODgx
NGNjZGQwNjEwYTdiMjI4MWM3NGM3Mjk1YTBjNTc1Li5iYmY4OTRjMGE1ZDEyNzIyMjgzOTI1YjE0
ODQwY2YwZWEyMDM5MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMjk0LDcgKzI5NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U3ByaW5nVGltaW5nRnVuY3Rpb24+IHsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpOwot
ICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRQb2ludD4gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAppbmRleCA0N2E4NDY2YzIyNjQ2MTgwMzI2
NjVjNGU4OTUzNTA5ZDA4NjVlZGJmLi42ZDc1Nzc0Y2JmZTY5YzU4ZjgzODAyMzVkYWJiNzlhZWRk
NWFjOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cApAQCAtMTkzLDEyMyArMTkzLDEyMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZUeXBlUmVmPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIENGVHlwZVJlZiB0eXBlUmVmKQogdGVtcGxhdGUgdm9p
ZCBBcmd1bWVudENvZGVyPENGVHlwZVJlZj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgQ0ZU
eXBlUmVmKTsKIHRlbXBsYXRlIHZvaWQgQXJndW1lbnRDb2RlcjxDRlR5cGVSZWY+OjplbmNvZGU8
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgQ0ZUeXBl
UmVmKTsKIAotYm9vbCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlR5cGVSZWY+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlR5cGVSZWY+JiByZXN1bHQpCitzdGQ6Om9w
dGlvbmFsPFJldGFpblB0cjxDRlR5cGVSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlR5
cGVSZWY+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxD
RlR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dp
dGNoICgqdHlwZSkgewogICAgIGNhc2UgQ0ZUeXBlOjpDRkFycmF5OiB7Ci0gICAgICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBhcnJheTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcnJh
eSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1vdmUo
YXJyYXkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4+IGFycmF5OworICAgICAgICBkZWNvZGVyID4+IGFycmF5OworICAg
ICAgICBpZiAoIWFycmF5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKmFycmF5KTsKICAgICB9CiAgICAgY2FzZSBDRlR5cGU6OkNGQm9v
bGVhbjogewotICAgICAgICBSZXRhaW5QdHI8Q0ZCb29sZWFuUmVmPiBib29sZWFuOwotICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xlYW4pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGJvb2xlYW4pOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZCb29sZWFuUmVmPj4gYm9vbGVh
bjsKKyAgICAgICAgZGVjb2RlciA+PiBib29sZWFuOworICAgICAgICBpZiAoIWJvb2xlYW4pCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gV1RGTW92ZSgq
Ym9vbGVhbik7CiAgICAgfQogICAgIGNhc2UgQ0ZUeXBlOjpDRkRhdGE6IHsKLSAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShk
YXRhKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPENGRGF0YVJlZj4+IGRhdGE7CisgICAgICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICAgICAg
aWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoKmRhdGEpOwogICAgIH0KICAgICBjYXNlIENGVHlwZTo6Q0ZEYXRlOiB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRkRhdGVSZWY+IGRhdGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9
IFdURk1vdmUoZGF0ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJldGFpblB0cjxDRkRhdGVSZWY+PiBkYXRlOworICAgICAgICBkZWNvZGVyID4+IGRhdGU7
CisgICAgICAgIGlmICghZGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKCpkYXRlKTsKICAgICB9CiAgICAgY2FzZSBDRlR5cGU6OkNG
RGljdGlvbmFyeTogewotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9u
YXJ5OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRpY3Rpb25hcnkpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGRpY3Rpb25hcnkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPj4gZGljdGlvbmFyeTsKKyAgICAgICAgZGVjb2RlciA+PiBkaWN0aW9uYXJ5
OworICAgICAgICBpZiAoIWRpY3Rpb25hcnkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gV1RGTW92ZSgqZGljdGlvbmFyeSk7CiAgICAgfQogICAgIGNh
c2UgQ0ZUeXBlOjpDRk51bGw6Ci0gICAgICAgIHJlc3VsdCA9IGFkb3B0Q0Yoa0NGTnVsbCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGTnVsbFJlZj4o
a0NGTnVsbCk7CiAgICAgY2FzZSBDRlR5cGU6OkNGTnVtYmVyOiB7Ci0gICAgICAgIFJldGFpblB0
cjxDRk51bWJlclJlZj4gbnVtYmVyOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG51bWJl
cikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1vdmUo
bnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0
YWluUHRyPENGTnVtYmVyUmVmPj4gbnVtYmVyOworICAgICAgICBkZWNvZGVyID4+IG51bWJlcjsK
KyAgICAgICAgaWYgKCFudW1iZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gV1RGTW92ZSgqbnVtYmVyKTsKICAgICB9CiAgICAgY2FzZSBDRlR5cGU6
OkNGU3RyaW5nOiB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1vdmUoc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGU3RyaW5nUmVmPj4gc3RyaW5n
OworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gV1RGTW92ZSgqc3Ry
aW5nKTsKICAgICB9CiAgICAgY2FzZSBDRlR5cGU6OkNGVVJMOiB7Ci0gICAgICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gdXJsOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IFdURk1vdmUodXJsKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGVVJM
UmVmPj4gdXJsOworICAgICAgICBkZWNvZGVyID4+IHVybDsKKyAgICAgICAgaWYgKCF1cmwpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gV1RGTW92ZSgq
dXJsKTsKICAgICB9CiAgICAgY2FzZSBDRlR5cGU6OkNHQ29sb3JTcGFjZTogewotICAgICAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXN1bHQgPSBXVEZNb3ZlKGNvbG9yU3BhY2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gY29sb3JTcGFj
ZTsKKyAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgICAgICBpZiAoIWNvbG9yU3Bh
Y2UpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gV1RG
TW92ZSgqY29sb3JTcGFjZSk7CiAgICAgfQogICAgIGNhc2UgQ0ZUeXBlOjpTZWNDZXJ0aWZpY2F0
ZTogewotICAgICAgICBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IGNlcnRpZmljYXRlOwot
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShjZXJ0aWZpY2F0ZSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxTZWNDZXJ0
aWZpY2F0ZVJlZj4+IGNlcnRpZmljYXRlOworICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRl
OworICAgICAgICBpZiAoIWNlcnRpZmljYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoKmNlcnRpZmljYXRlKTsKICAgICB9CiAjaWYg
SEFWRShTRUNfS0VZQ0hBSU4pCiAgICAgY2FzZSBDRlR5cGU6OlNlY0tleWNoYWluSXRlbTogewot
ICAgICAgICBSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVtUmVmPiBrZXljaGFpbkl0ZW07Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5Y2hhaW5JdGVtKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShrZXljaGFpbkl0ZW0pOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8U2VjS2V5Y2hh
aW5JdGVtUmVmPj4ga2V5Y2hhaW5JdGVtOworICAgICAgICBkZWNvZGVyID4+IGtleWNoYWluSXRl
bTsKKyAgICAgICAgaWYgKCFrZXljaGFpbkl0ZW0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gV1RGTW92ZSgqa2V5Y2hhaW5JdGVtKTsKICAgICB9CiAj
ZW5kaWYKICNpZiBIQVZFKFNFQ19BQ0NFU1NfQ09OVFJPTCkKICAgICBjYXNlIENGVHlwZTo6U2Vj
QWNjZXNzQ29udHJvbDogewotICAgICAgICBSZXRhaW5QdHI8U2VjQWNjZXNzQ29udHJvbFJlZj4g
YWNjZXNzQ29udHJvbDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY2Nlc3NDb250cm9s
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShh
Y2Nlc3NDb250cm9sKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+PiBhY2Nlc3NDb250cm9sOworICAgICAg
ICBkZWNvZGVyID4+IGFjY2Vzc0NvbnRyb2w7CisgICAgICAgIGlmICghYWNjZXNzQ29udHJvbCkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KCphY2Nlc3NDb250cm9sKTsKICAgICB9CiAjZW5kaWYKICNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJ
QUxJWkFUSU9OKQogICAgIGNhc2UgQ0ZUeXBlOjpTZWNUcnVzdDogewotICAgICAgICBSZXRhaW5Q
dHI8U2VjVHJ1c3RSZWY+IHRydXN0OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRydXN0
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0ID0gV1RGTW92ZSh0
cnVzdCk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxTZWNUcnVzdFJlZj4+IHRydXN0OworICAgICAgICBkZWNvZGVyID4+IHRydXN0OworICAg
ICAgICBpZiAoIXRydXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKnRydXN0KTsKICAgICB9CiAjZW5kaWYKICAgICBjYXNlIENGVHlw
ZTo6TnVsbHB0cjoKLSAgICAgICAgcmVzdWx0ID0gdG9rZW5OdWxscHRyVHlwZVJlZigpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRva2VuTnVsbHB0clR5cGVSZWYoKTsK
ICAgICBjYXNlIENGVHlwZTo6VW5rbm93bjoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CkBAIC0zNDcsMzYgKzM0
NSwzNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZBcnJheVJlZj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBDRkFycmF5UmVmIGFycmF5KQogdGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENG
QXJyYXlSZWY+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIENGQXJyYXlSZWYpOwogdGVtcGxh
dGUgdm9pZCBBcmd1bWVudENvZGVyPENGQXJyYXlSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlv
bkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgQ0ZBcnJheVJlZik7CiAKLWJvb2wg
QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZBcnJheVJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgUmV0YWluUHRyPENGQXJyYXlSZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxDRkFycmF5UmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZBcnJheVJlZj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaXNOdWxsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIGRlY29kZXIgPj4gaXNOdWxsOworICAg
IGlmICghaXNOdWxsKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKGlz
TnVsbCkgewotICAgICAgICByZXN1bHQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgaWYgKCppc051bGwpCisgICAgICAgIHJldHVybiB7eyBudWxscHRyIH19Owog
Ci0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKKyAg
ICBkZWNvZGVyID4+IHNpemU7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBhcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gZWxlbWVudDsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlR5cGVSZWY+PiBlbGVtZW50OworICAgICAg
ICBkZWNvZGVyID4+IGVsZW1lbnQ7CiAgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgaWYgKCEqZWxlbWVudCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5
LmdldCgpLCBlbGVtZW50LmdldCgpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5
LmdldCgpLCBlbGVtZW50LT5nZXQoKSk7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gYWRvcHRDRihh
cnJheS5sZWFrUmVmKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKGFy
cmF5KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KQEAgLTM4OCwxNCArMzg2LDE0
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDRkJvb2xlYW5SZWY+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgQ0ZCb29sZWFuUmVmIGJvb2xlYW4pCiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8
Q0ZCb29sZWFuUmVmPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBDRkJvb2xlYW5SZWYpOwog
dGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENGQm9vbGVhblJlZj46OmVuY29kZTxTdHJlYW1D
b25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBDRkJvb2xlYW5SZWYp
OwogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGQm9vbGVhblJlZj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPENGQm9vbGVhblJlZj4mIHJlc3VsdCkKK3N0ZDo6
b3B0aW9uYWw8UmV0YWluUHRyPENGQm9vbGVhblJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRy
PENGQm9vbGVhblJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBib29sIGJv
b2xlYW47Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sZWFuKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gYm9vbGVhbjsKKyAgICBkZWNvZGVyID4+
IGJvb2xlYW47CisgICAgaWYgKCFib29sZWFuKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgcmVzdWx0ID0gYWRvcHRDRihib29sZWFuID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZC
b29sZWFuRmFsc2UpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBhZG9wdENGKCpib29s
ZWFuID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2UpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPgpAQCAtNDA3LDE0ICs0MDUsMTQgQEAgdm9pZCBBcmd1bWVudENvZGVy
PENGRGF0YVJlZj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBDRkRhdGFSZWYgZGF0YSkKIHRl
bXBsYXRlIHZvaWQgQXJndW1lbnRDb2RlcjxDRkRhdGFSZWY+OjplbmNvZGU8RW5jb2Rlcj4oRW5j
b2RlciYsIENGRGF0YVJlZik7CiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZEYXRhUmVm
Pjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ciYsIENGRGF0YVJlZik7CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZEYXRhUmVm
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYgcmVzdWx0
KQorc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gQXJndW1lbnRDb2RlcjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZTsKKyAgICBkZWNvZGVyID4+IGRhdGFSZWZl
cmVuY2U7CisgICAgaWYgKCFkYXRhUmVmZXJlbmNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgcmVzdWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIGRhdGFSZWZlcmVuY2UtPmRhdGEoKSwgZGF0
YVJlZmVyZW5jZS0+c2l6ZSgpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CkBA
IC00MjYsMTQgKzQyNCwxNCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZEYXRlUmVmPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIENGRGF0ZVJlZiBkYXRlKQogdGVtcGxhdGUgdm9pZCBBcmd1bWVu
dENvZGVyPENGRGF0ZVJlZj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgQ0ZEYXRlUmVmKTsK
IHRlbXBsYXRlIHZvaWQgQXJndW1lbnRDb2RlcjxDRkRhdGVSZWY+OjplbmNvZGU8U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgQ0ZEYXRlUmVmKTsKIAot
Ym9vbCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRkRhdGVSZWY+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFJldGFpblB0cjxDRkRhdGVSZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxDRkRhdGVSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRkRhdGVSZWY+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgZG91YmxlIGFic29sdXRlVGltZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGFic29sdXRlVGltZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYWJzb2x1dGVUaW1lOworICAgIGRlY29kZXIg
Pj4gYWJzb2x1dGVUaW1lOworICAgIGlmICghYWJzb2x1dGVUaW1lKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgcmVzdWx0ID0gYWRvcHRDRihDRkRhdGVDcmVhdGUoMCwgYWJz
b2x1dGVUaW1lKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRl
Q3JlYXRlKDAsICphYnNvbHV0ZVRpbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KQEAgLTQ3NywzNiArNDc1LDM3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDRkRpY3Rpb25hcnlS
ZWY+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZEaWN0aW9uYXJ5UmVmIGRpCiB0ZW1wbGF0
ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZEaWN0aW9uYXJ5UmVmPjo6ZW5jb2RlPEVuY29kZXI+KEVu
Y29kZXImLCBDRkRpY3Rpb25hcnlSZWYpOwogdGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENG
RGljdGlvbmFyeVJlZj46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXImLCBDRkRpY3Rpb25hcnlSZWYpOwogCi1ib29sIEFyZ3VtZW50Q29kZXI8
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4mIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBib29sIGlzTnVsbCA9IGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNOdWxsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOworICAgIGRlY29kZXIgPj4gaXNOdWxs
OworICAgIGlmICghaXNOdWxsKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
aWYgKGlzTnVsbCkgewotICAgICAgICByZXN1bHQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9CisgICAgaWYgKCppc051bGwpCisgICAgICAgIHJldHVybiB7eyBudWxscHRy
IH19OwogCi0gICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gc2l6
ZTsKKyAgICBkZWNvZGVyID4+IHNpemU7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGRp
Y3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwotICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAg
UmV0YWluUHRyPENGVHlwZVJlZj4ga2V5OwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtl
eSkgfHwgIWtleSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVpbnQ2NF90
IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJldGFpblB0
cjxDRlR5cGVSZWY+PiBrZXk7CisgICAgICAgIGRlY29kZXIgPj4ga2V5OworICAgICAgICBpZiAo
IWtleSB8fCAhKmtleSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgUmV0YWluUHRyPENGVHlwZVJlZj4gdmFsdWU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodmFsdWUpIHx8ICF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj4gdmFsdWU7CisgICAgICAgIGRlY29k
ZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUgfHwgISp2YWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZGlj
dGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS0+Z2V0KCksIHZhbHVlLT5nZXQoKSk7
CiAgICAgfQogCi0gICAgcmVzdWx0ID0gV1RGTW92ZShkaWN0aW9uYXJ5KTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92ZShkaWN0aW9uYXJ5KTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KQEAgLTU2NCwyNiArNTYzLDI1IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZUZv
ck51bWJlclR5cGUoQ0ZOdW1iZXJUeXBlIG51bWJlclR5cGUpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LWJvb2wgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxDRk51bWJlclJlZj4mIHJlc3VsdCkKK3N0ZDo6b3B0aW9u
YWw8UmV0YWluUHRyPENGTnVtYmVyUmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDx1
aW50OF90PiBudW1iZXJUeXBlRnJvbUlQQzsKICAgICBkZWNvZGVyID4+IG51bWJlclR5cGVGcm9t
SVBDOwogICAgIGlmICghbnVtYmVyVHlwZUZyb21JUEMgfHwgKm51bWJlclR5cGVGcm9tSVBDID4g
a0NGTnVtYmVyTWF4VHlwZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGF1dG8gbnVtYmVyVHlwZSA9IHN0YXRpY19jYXN0PENGTnVtYmVy
VHlwZT4oKm51bWJlclR5cGVGcm9tSVBDKTsKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4g
ZGF0YVJlZmVyZW5jZTsKKyAgICBkZWNvZGVyID4+IGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKCFk
YXRhUmVmZXJlbmNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90
IG5lZWRlZEJ1ZmZlclNpemUgPSBzaXplRm9yTnVtYmVyVHlwZShudW1iZXJUeXBlKTsKLSAgICBp
ZiAoIW5lZWRlZEJ1ZmZlclNpemUgfHwgZGF0YVJlZmVyZW5jZS5zaXplKCkgIT0gbmVlZGVkQnVm
ZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQVNTRVJUKGRhdGFSZWZlcmVu
Y2UuZGF0YSgpKTsKLSAgICByZXN1bHQgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIG51bWJl
clR5cGUsIGRhdGFSZWZlcmVuY2UuZGF0YSgpKSk7CisgICAgaWYgKCFuZWVkZWRCdWZmZXJTaXpl
IHx8IGRhdGFSZWZlcmVuY2UtPnNpemUoKSAhPSBuZWVkZWRCdWZmZXJTaXplKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJUKGRhdGFS
ZWZlcmVuY2UtPmRhdGEoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwg
bnVtYmVyVHlwZSwgZGF0YVJlZmVyZW5jZS0+ZGF0YSgpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CkBAIC02MDgsMjcgKzYwNiwyNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZT
dHJpbmdSZWY+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgQ0ZTdHJpbmdSZWYgc3RyaW5nKQog
dGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENGU3RyaW5nUmVmPjo6ZW5jb2RlPEVuY29kZXI+
KEVuY29kZXImLCBDRlN0cmluZ1JlZik7CiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZT
dHJpbmdSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiwgQ0ZTdHJpbmdSZWYpOwogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmV0YWluUHRy
PENGU3RyaW5nUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5nUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGVuY29kaW5nRnJvbUlQQzsKICAg
ICBkZWNvZGVyID4+IGVuY29kaW5nRnJvbUlQQzsKICAgICBpZiAoIWVuY29kaW5nRnJvbUlQQykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGF1dG8gZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ0VuY29kaW5nPigqZW5jb2RpbmdG
cm9tSVBDKTsKIAogICAgIGlmICghQ0ZTdHJpbmdJc0VuY29kaW5nQXZhaWxhYmxlKGVuY29kaW5n
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YVJlZmVyZW5jZTsKKyAgICBkZWNv
ZGVyID4+IGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKCFkYXRhUmVmZXJlbmNlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzKDAsIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNp
emUoKSwgZW5jb2RpbmcsIGZhbHNlKSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIGRhdGFSZWZlcmVuY2UtPmRhdGEoKSwgZGF0YVJlZmVyZW5j
ZS0+c2l6ZSgpLCBlbmNvZGluZywgZmFsc2UpKTsKICAgICBpZiAoIXN0cmluZykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmVzdWx0
ID0gV1RGTW92ZShzdHJpbmcpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3Zl
KHN0cmluZyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CkBAIC02NDcsMzQgKzY0
NSw0MCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0ZVUkxSZWY+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgQ0ZVUkxSZWYgdXJsKQogdGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPENGVVJMUmVm
Pjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBDRlVSTFJlZik7CiB0ZW1wbGF0ZSB2b2lkIEFy
Z3VtZW50Q29kZXI8Q0ZVUkxSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgQ0ZVUkxSZWYpOwogCi1ib29sIEFyZ3VtZW50Q29kZXI8
UmV0YWluUHRyPENGVVJMUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8
Q0ZVUkxSZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlVSTFJlZj4+IEFy
Z3VtZW50Q29kZXI8UmV0YWluUHRyPENGVVJMUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYmFzZVVSTDsKLSAgICBib29sIGhhc0Jhc2VV
Ukw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNCYXNlVVJMKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChoYXNCYXNlVVJMKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYmFzZVVSTCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgSVBD
OjpEYXRhUmVmZXJlbmNlIHVybEJ5dGVzOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsQnl0
ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNC
YXNlVVJMOworICAgIGRlY29kZXIgPj4gaGFzQmFzZVVSTDsKKyAgICBpZiAoIWhhc0Jhc2VVUkwp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCpoYXNCYXNlVVJMKSB7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGVVJMUmVmPj4gZGVjb2RlZEJhc2VVUkw7
CisgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZEJhc2VVUkw7CisgICAgICAgIGlmICghZGVjb2Rl
ZEJhc2VVUkwpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBiYXNl
VVJMID0gV1RGTW92ZSgqZGVjb2RlZEJhc2VVUkwpOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9u
YWw8SVBDOjpEYXRhUmVmZXJlbmNlPiB1cmxCeXRlczsKKyAgICBkZWNvZGVyID4+IHVybEJ5dGVz
OworICAgIGlmICghdXJsQnl0ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNp
ZiBVU0UoRk9VTkRBVElPTikKICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEFyZ3VtZW50Q29k
ZXJzQ0ZNYWMubW0gYW5kIGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0byBiZSBDKysKICAgICAvLyBp
bnN0ZWFkIG9mIE9iamVjdGl2ZS1DKysuCi0gICAgaWYgKHVybEJ5dGVzLmlzRW1wdHkoKSkgewor
ICAgIGlmICh1cmxCeXRlcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENGVVJMIGNhbid0IGhv
bGQgYW4gZW1wdHkgVVJMLCB1bmxpa2UgTlNVUkwuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRp
c2NhcmRzIGJhc2UgVVJMLCB3aGljaCBzZWVtcyBpbmNvcnJlY3QuCi0gICAgICAgIHJlc3VsdCA9
IChfX2JyaWRnZSBDRlVSTFJlZilbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHt7IChfX2JyaWRnZSBDRlVSTFJlZilbTlNVUkwg
VVJMV2l0aFN0cmluZzpAIiJdIH19OwogICAgIH0KICNlbmRpZgogCi0gICAgcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPih1cmxCeXRlcy5kYXRhKCkpLCB1cmxCeXRlcy5zaXplKCksIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCwgYmFzZVVSTC5nZXQoKSwgdHJ1ZSkpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgYXV0byByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxX
aXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHVybEJ5dGVz
LT5kYXRhKCkpLCB1cmxCeXRlcy0+c2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGJhc2VV
UkwuZ2V0KCksIHRydWUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBlbnVtIGNsYXNzIENH
Q29sb3JTcGFjZUVuY29kaW5nU2NoZW1lIHsgTmFtZSwgUHJvcGVydHlMaXN0IH07CkBAIC02OTMs
NDEgKzY5Nyw0MiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q0dDb2xvclNwYWNlUmVmPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIENHQ29sb3JTcGFjZVJlZiBjbwogdGVtcGxhdGUgdm9pZCBBcmd1
bWVudENvZGVyPENHQ29sb3JTcGFjZVJlZj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgQ0dD
b2xvclNwYWNlUmVmKTsKIHRlbXBsYXRlIHZvaWQgQXJndW1lbnRDb2RlcjxDR0NvbG9yU3BhY2VS
ZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyJiwgQ0dDb2xvclNwYWNlUmVmKTsKIAotYm9vbCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgQ0dDb2xvclNwYWNlRW5jb2RpbmdTY2hlbWUgZW5j
b2RpbmdTY2hlbWU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmNvZGluZ1NjaGVtZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPENHQ29sb3JTcGFjZUVuY29k
aW5nU2NoZW1lPiBlbmNvZGluZ1NjaGVtZTsKKyAgICBkZWNvZGVyID4+IGVuY29kaW5nU2NoZW1l
OworICAgIGlmICghZW5jb2RpbmdTY2hlbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzd2l0Y2ggKGVuY29kaW5nU2NoZW1lKSB7CisgICAgc3dpdGNoICgqZW5jb2RpbmdT
Y2hlbWUpIHsKICAgICBjYXNlIENHQ29sb3JTcGFjZUVuY29kaW5nU2NoZW1lOjpOYW1lOiB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZTsKLSAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBuYW1lOworICAgICAgICBkZWNvZGVyID4+
IG5hbWU7CisgICAgICAgIGlmICghbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShuYW1lLmdldCgpKSk7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUobmFtZS0+Z2V0KCkpKTsKICAgICAgICAgaWYg
KCFjb2xvclNwYWNlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGNvbG9yU3BhY2Up
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoY29sb3JTcGFj
ZSk7CiAgICAgfQogICAgIGNhc2UgQ0dDb2xvclNwYWNlRW5jb2RpbmdTY2hlbWU6OlByb3BlcnR5
TGlzdDogewotICAgICAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBwcm9wZXJ0eUxpc3Q7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydHlMaXN0KSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZUeXBlUmVmPj4gcHJv
cGVydHlMaXN0OworICAgICAgICBkZWNvZGVyID4+IHByb3BlcnR5TGlzdDsKKyAgICAgICAgaWYg
KCFwcm9wZXJ0eUxpc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aFByb3Bl
cnR5TGlzdChwcm9wZXJ0eUxpc3QuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoUHJvcGVydHlMaXN0KHByb3BlcnR5TGlzdC0+
Z2V0KCkpKTsKICAgICAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICByZXN1bHQg
PSBXVEZNb3ZlKGNvbG9yU3BhY2UpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoY29sb3JTcGFjZSk7CiAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiAKQEAgLTc0MCwxNCArNzQ1LDE0IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWNDZXJ0aWZp
Y2F0ZVJlZj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBTZWNDZXJ0aWZpY2F0ZVJlCiB0ZW1w
bGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8U2VjQ2VydGlmaWNhdGVSZWY+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIFNlY0NlcnRpZmljYXRlUmVmKTsKIHRlbXBsYXRlIHZvaWQgQXJndW1lbnRD
b2RlcjxTZWNDZXJ0aWZpY2F0ZVJlZj46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4o
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBTZWNDZXJ0aWZpY2F0ZVJlZik7CiAKLWJvb2wgQXJn
dW1lbnRDb2RlcjxSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4mIHJlc3VsdCkKK3N0ZDo6b3B0
aW9uYWw8UmV0YWluUHRyPFNlY0NlcnRpZmljYXRlUmVmPj4gQXJndW1lbnRDb2RlcjxSZXRhaW5Q
dHI8U2VjQ2VydGlmaWNhdGVSZWY+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZE
YXRhUmVmPj4gZGF0YTsKKyAgICBkZWNvZGVyID4+IGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmVzdWx0ID0gYWRvcHRDRihTZWNDZXJ0
aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEuZ2V0KCkpKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEt
PmdldCgpKSk7CiB9CiAKICNpZiBIQVZFKFNFQ19LRVlDSEFJTikKQEAgLTc2NiwyNSArNzcxLDI1
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWNLZXljaGFpbkl0ZW1SZWY+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgU2VjS2V5Y2hhaW5JdGVtCiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8
U2VjS2V5Y2hhaW5JdGVtUmVmPjo6ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBTZWNLZXljaGFp
bkl0ZW1SZWYpOwogdGVtcGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPFNlY0tleWNoYWluSXRlbVJl
Zj46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXImLCBTZWNLZXljaGFpbkl0ZW1SZWYpOwogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmV0YWluUHRy
PFNlY0tleWNoYWluSXRlbVJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRy
PFNlY0tleWNoYWluSXRlbVJlZj4mIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFNl
Y0tleWNoYWluSXRlbVJlZj4+IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFNlY0tleWNoYWluSXRl
bVJlZj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc0NyZWRlbnRpYWxz
KSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
dGFpblB0cjxDRkRhdGFSZWY+PiBkYXRhOworICAgIGRlY29kZXIgPj4gZGF0YTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBDRkRhdGFSZWYgZHJl
ZiA9IGRhdGEuZ2V0KCk7CisgICAgQ0ZEYXRhUmVmIGRyZWYgPSBkYXRhLT5nZXQoKTsKICAgICAv
LyBTZWNLZXljaGFpbkl0ZW1Db3B5RnJvbVBlcnNpc3RlbnRSZWZlcmVuY2UoKSBjYW5ub3QgaGFu
ZGxlIDAtbGVuZ3RoIENGRGF0YVJlZnMuCiAgICAgaWYgKCFDRkRhdGFHZXRMZW5ndGgoZHJlZikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIFNlY0tleWNoYWluSXRlbVJlZiBpdGVtOwogICAgIGlmIChTZWNLZXljaGFpbkl0ZW1Db3B5
RnJvbVBlcnNpc3RlbnRSZWZlcmVuY2UoZHJlZiwgJml0ZW0pICE9IGVyclNlY1N1Y2Nlc3MgfHwg
IWl0ZW0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKLSAgICByZXN1bHQgPSBhZG9wdENGKGl0ZW0pOwotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBhZG9wdENGKGl0ZW0pOwogfQogI2VuZGlmCiAKQEAgLTgwMCwxNyArODA1LDE4
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWNBY2Nlc3NDb250cm9sUmVmPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIFNlY0FjY2Vzc0NvbnRyCiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8
U2VjQWNjZXNzQ29udHJvbFJlZj46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgU2VjQWNjZXNz
Q29udHJvbFJlZik7CiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8U2VjQWNjZXNzQ29udHJv
bFJlZj46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXImLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKIAotYm9vbCBBcmd1bWVudENvZGVyPFJldGFp
blB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRh
aW5QdHI8U2VjQWNjZXNzQ29udHJvbFJlZj4mIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxTZWNBY2Nl
c3NDb250cm9sUmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+
IGRhdGE7CisgICAgZGVjb2RlciA+PiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJlc3VsdCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJv
bENyZWF0ZUZyb21EYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEuZ2V0KCksIG51bGxwdHIp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZUZyb21E
YXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEtPmdldCgpLCBudWxscHRyKSk7CiAgICAgaWYg
KCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9
CiAjZW5kaWYKIApAQCAtODMwLDI1ICs4MzYsMjYgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlY1Ry
dXN0UmVmPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFNlY1RydXN0UmVmIHRydXN0KQogdGVt
cGxhdGUgdm9pZCBBcmd1bWVudENvZGVyPFNlY1RydXN0UmVmPjo6ZW5jb2RlPEVuY29kZXI+KEVu
Y29kZXImLCBTZWNUcnVzdFJlZik7CiB0ZW1wbGF0ZSB2b2lkIEFyZ3VtZW50Q29kZXI8U2VjVHJ1
c3RSZWY+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyJiwgU2VjVHJ1c3RSZWYpOwogCi1ib29sIEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFNl
Y1RydXN0UmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8U2VjVHJ1c3RS
ZWY+JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxTZWNUcnVzdFJlZj4+IEFyZ3Vt
ZW50Q29kZXI8UmV0YWluUHRyPFNlY1RydXN0UmVmPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIGJvb2wgaGFzVHJ1c3Q7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUcnVz
dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
VHJ1c3Q7CisgICAgZGVjb2RlciA+PiBoYXNUcnVzdDsKICAgICBpZiAoIWhhc1RydXN0KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
ICghKmhhc1RydXN0KQorICAgICAgICByZXR1cm4geyBudWxscHRyIH07CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiB0cnVzdERhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cnVzdERh
dGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8
Q0ZEYXRhUmVmPj4gdHJ1c3REYXRhOworICAgIGRlY29kZXIgPj4gdHJ1c3REYXRhOworICAgIGlm
ICghdHJ1c3REYXRhKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byB0
cnVzdCA9IGFkb3B0Q0YoU2VjVHJ1c3REZXNlcmlhbGl6ZSh0cnVzdERhdGEuZ2V0KCksIG51bGxw
dHIpKTsKKyAgICBhdXRvIHRydXN0ID0gYWRvcHRDRihTZWNUcnVzdERlc2VyaWFsaXplKHRydXN0
RGF0YS0+Z2V0KCksIG51bGxwdHIpKTsKICAgICBpZiAoIXRydXN0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXN1bHQgPSBXVEZN
b3ZlKHRydXN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV1RGTW92ZSh0cnVzdCk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1l
bnRDb2RlcnNDRi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5o
CmluZGV4IDRhYzBmNTFlOTM4MDdmNzBkYmE4NDFiZGY2ZTkxZjcyNTg5ZWY5YTUuLjZlY2E1ZmI5
ZmYzMzI3ZGY4NGNhYWZiMjhmMTMyOTA3Y2I4NmYyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZi9Bcmd1bWVudENvZGVyc0NGLmgKQEAgLTUyLDEzNSArNTIsMTA3IEBAIHN0cnVjdCBDRlJl
dGFpblB0ckFyZ3VtZW50Q29kZXIgewogICAgIH0KIH07CiAKLS8vIENGVHlwZVJlZgogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDRlR5cGVSZWY+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPiBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIENGVHlwZVJlZik7CiB9
OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlR5cGVSZWY+
PiA6IENGUmV0YWluUHRyQXJndW1lbnRDb2RlcjxDRlR5cGVSZWY+IHsKLSAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXRhaW5QdHI8Q0ZUeXBlUmVm
PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRlR5cGVSZWY+PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAotLy8gQ0ZBcnJheVJlZgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxDRkFycmF5UmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDRkFycmF5UmVmKTsKIH07Ci0KIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGQXJyYXlSZWY+PiA6IENGUmV0YWlu
UHRyQXJndW1lbnRDb2RlcjxDRkFycmF5UmVmPiB7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPENGQXJyYXlSZWY+Jik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBkZWNvZGUoRGVjb2Rl
ciYpOwogfTsKIAotLy8gQ0ZCb29sZWFuUmVmCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPENGQm9vbGVhblJlZj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgQ0ZCb29sZWFuUmVmKTsKIH07Ci0KIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGQm9vbGVhblJlZj4+IDogQ0ZSZXRhaW5Q
dHJBcmd1bWVudENvZGVyPENGQm9vbGVhblJlZj4gewotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJldGFpblB0cjxDRkJvb2xlYW5SZWY+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGQm9vbGVhblJlZj4+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCi0vLyBDRkRhdGFSZWYKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8Q0ZEYXRhUmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBDRkRhdGFSZWYpOwogfTsKLQogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gOiBDRlJldGFpblB0ckFyZ3Vt
ZW50Q29kZXI8Q0ZEYXRhUmVmPiB7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPENGRGF0YVJlZj4mKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
LS8vIENGRGF0ZVJlZgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxDRkRhdGVSZWY+
IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIENGRGF0ZVJlZik7CiB9OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJldGFpblB0cjxDRkRhdGVSZWY+PiA6IENGUmV0YWluUHRyQXJndW1lbnRDb2RlcjxDRkRhdGVS
ZWY+IHsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxDRkRhdGVSZWY+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotLy8gQ0ZEaWN0aW9uYXJ5
UmVmCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENGRGljdGlvbmFyeVJlZj4gewog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgQ0ZEaWN0aW9uYXJ5UmVmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IDogQ0ZSZXRhaW5QdHJBcmd1bWVudENvZGVy
PENGRGljdGlvbmFyeVJlZj4gewotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGRlY29kZShEZWNvZGVy
Jik7CiB9OwogCi0vLyBDRk51bWJlclJlZgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxDRk51bWJlclJlZj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgQ0ZOdW1iZXJSZWYpOwogfTsKLQogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+PiA6IENGUmV0YWluUHRyQXJn
dW1lbnRDb2RlcjxDRk51bWJlclJlZj4gewotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFJldGFpblB0cjxDRk51bWJlclJlZj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+PiBkZWNvZGUoRGVjb2RlciYp
OwogfTsKIAotLy8gQ0ZTdHJpbmdSZWYKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
Q0ZTdHJpbmdSZWY+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIENGU3RyaW5nUmVmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPENGU3RyaW5nUmVmPj4gOiBDRlJldGFpblB0ckFyZ3Vt
ZW50Q29kZXI8Q0ZTdHJpbmdSZWY+IHsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGU3RyaW5nUmVmPj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAKLS8vIENGVVJMUmVmCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENGVVJM
UmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBDRlVSTFJlZik7CiB9OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJldGFpblB0cjxDRlVSTFJlZj4+IDogQ0ZSZXRhaW5QdHJBcmd1bWVudENvZGVyPENGVVJM
UmVmPiB7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgUmV0YWluUHRyPENGVVJMUmVmPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxDRlVSTFJlZj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi0vLyBDR0NvbG9yU3BhY2VS
ZWYKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q0dDb2xvclNwYWNlUmVmPiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBDR0NvbG9yU3BhY2VSZWYpOwogfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gOiBDRlJldGFpblB0ckFyZ3VtZW50Q29kZXI8
Q0dDb2xvclNwYWNlUmVmPiB7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPj4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKLS8vIFNlY0NlcnRpZmljYXRlUmVmCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFNlY0NlcnRpZmljYXRlUmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4gc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTZWNDZXJ0aWZpY2F0ZVJlZik7CiB9Owot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0
ZVJlZj4+IDogQ0ZSZXRhaW5QdHJBcmd1bWVudENvZGVyPFNlY0NlcnRpZmljYXRlUmVmPiB7Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWlu
UHRyPFNlY0NlcnRpZmljYXRlUmVmPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFp
blB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCiAjaWYgSEFW
RShTRUNfS0VZQ0hBSU4pCi0vLyBTZWNLZXljaGFpbkl0ZW1SZWYKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8U2VjS2V5Y2hhaW5JdGVtUmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTZWNLZXljaGFpbkl0ZW1S
ZWYpOwogfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8U2Vj
S2V5Y2hhaW5JdGVtUmVmPj4gOiBDRlJldGFpblB0ckFyZ3VtZW50Q29kZXI8U2VjS2V5Y2hhaW5J
dGVtUmVmPiB7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgUmV0YWluUHRyPFNlY0tleWNoYWluSXRlbVJlZj4mKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZXRhaW5QdHI8U2VjS2V5Y2hhaW5JdGVtUmVmPj4gZGVjb2RlKERlY29kZXImKTsK
IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoU0VDX0FDQ0VTU19DT05UUk9MKQotLy8gU2VjQWNjZXNz
Q29udHJvbFJlZgogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTZWNBY2Nlc3NDb250
cm9sUmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKIH07Ci0KIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+PiA6IENGUmV0
YWluUHRyQXJndW1lbnRDb2RlcjxTZWNBY2Nlc3NDb250cm9sUmVmPiB7Ci0gICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPFNlY0FjY2Vz
c0NvbnRyb2xSZWY+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFNlY0Fj
Y2Vzc0NvbnRyb2xSZWY+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKICNlbmRpZgogCiAjaWYgSEFW
RShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKLS8vIFNlY1RydXN0UmVmCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFNlY1RydXN0UmVmPiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4gc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBTZWNUcnVzdFJlZik7CiB9Owot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJldGFpblB0cjxTZWNUcnVzdFJlZj4+
IDogQ0ZSZXRhaW5QdHJBcmd1bWVudENvZGVyPFNlY1RydXN0UmVmPiB7Ci0gICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmV0YWluUHRyPFNlY1RydXN0
UmVmPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxTZWNUcnVzdFJlZj4+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmluZGV4IDZiNGMw
NmFlMWZmNjY3ZGFmZTExZDdkODZkMjUwMmYyMDI2ZTI1NWEuLjc1Y2Q1MzM0YTM1MjAwMmE3YzQ5
NmFjNDEyNWU5ZDRiOGE0ZGY0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1
cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtNTksMjggKzU5LDI5IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQ2VydGlmaWNhdGVJCiAgICAgICAgIGVuY29kZXIgPDwgY2VydGlmaWNhdGU7
CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCitzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBpbnQgdmVyaWZpY2F0aW9uRXJyb3I7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh2ZXJpZmljYXRpb25FcnJvcikpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludD4gdmVyaWZpY2F0aW9uRXJyb3I7CisgICAgZGVj
b2RlciA+PiB2ZXJpZmljYXRpb25FcnJvcjsKKyAgICBpZiAoIXZlcmlmaWNhdGlvbkVycm9yKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc2l6ZV90IGNlcnRpZmljYXRlQ2hh
aW5TaXplOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVDaGFpblNpemUpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGNlcnRpZmlj
YXRlQ2hhaW5TaXplOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVDaGFpblNpemU7CisgICAg
aWYgKCFjZXJ0aWZpY2F0ZUNoYWluU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGVDaGFpbiBjZXJ0aWZpY2F0ZUNoYWlu
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2VydGlmaWNhdGVDaGFpblNpemU7IGkrKykg
ewotICAgICAgICBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIGNlcnRpZmljYXRlOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpjZXJ0aWZpY2F0ZUNoYWluU2l6
ZTsgaSsrKSB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZp
Y2F0ZT4gY2VydGlmaWNhdGU7CisgICAgICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGU7CisgICAg
ICAgIGlmICghY2VydGlmaWNhdGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIGNlcnRpZmljYXRlQ2hhaW4uYXBwZW5kKGNlcnRpZmljYXRlKTsKKyAgICAgICAg
Y2VydGlmaWNhdGVDaGFpbi5hcHBlbmQoV1RGTW92ZSgqY2VydGlmaWNhdGUpKTsKICAgICB9CiAK
LSAgICBjZXJ0aWZpY2F0ZUluZm8gPSBDZXJ0aWZpY2F0ZUluZm8geyB2ZXJpZmljYXRpb25FcnJv
ciwgV1RGTW92ZShjZXJ0aWZpY2F0ZUNoYWluKSB9OwotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIENlcnRpZmljYXRlSW5mbyB7ICp2ZXJpZmljYXRpb25FcnJvciwgV1RGTW92ZShjZXJ0
aWZpY2F0ZUNoYWluKSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46
OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJD
b3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggNTQ2NDg2YTMwZWJlYjYyZTViN2FhYzBkMjhh
ZGY2NzAyZWM3MzM4NS4uODFkNzUwYWY1NmVlZTU3NzE1MTg2OGFkNTcwZDQ2NjM0M2QxMzAzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVy
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCkBAIC02MywzNyArNjMsMzggQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWIKICAg
ICB9CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZp
Y2F0ZUluZm8pCitzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5cGUgY2VydGlmaWNhdGVJbmZv
VHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlSW5mb1R5cGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm86OlR5cGU+IGNlcnRpZmljYXRlSW5mb1R5cGU7CisgICAgZGVjb2RlciA+PiBjZXJ0aWZp
Y2F0ZUluZm9UeXBlOworICAgIGlmICghY2VydGlmaWNhdGVJbmZvVHlwZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN3aXRjaCAoY2VydGlmaWNhdGVJbmZvVHlwZSkgewor
ICAgIHN3aXRjaCAoKmNlcnRpZmljYXRlSW5mb1R5cGUpIHsKICNpZiBIQVZFKFNFQ19UUlVTVF9T
RVJJQUxJWkFUSU9OKQogICAgIGNhc2UgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpUeXBlOjpU
cnVzdDogewotICAgICAgICBSZXRhaW5QdHI8U2VjVHJ1c3RSZWY+IHRydXN0OwotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHRydXN0KSB8fCAhdHJ1c3QpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPFNlY1RydXN0UmVmPj4gdHJ1
c3Q7CisgICAgICAgIGRlY29kZXIgPj4gdHJ1c3Q7CisgICAgICAgIGlmICghdHJ1c3QgfHwgISp0
cnVzdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgY2VydGlm
aWNhdGVJbmZvID0gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUodHJ1c3QpKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8oV1RGTW92ZSgqdHJ1c3QpKTsKICAgICB9CiAjZW5kaWYKICAgICBjYXNlIFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjogewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gY2VydGlmaWNhdGVDaGFpbjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShjZXJ0aWZpY2F0ZUNoYWluKSB8fCAhY2VydGlmaWNhdGVDaGFpbikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4+IGNlcnRpZmljYXRlQ2hhaW47CisgICAgICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVDaGFp
bjsKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZUNoYWluIHx8ICEqY2VydGlmaWNhdGVDaGFpbikK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgY2VydGlmaWNhdGVJ
bmZvID0gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoY2VydGlmaWNhdGVDaGFpbikp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9ICAgIAorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoKmNlcnRpZmljYXRlQ2hhaW4pKTsKKyAgICB9CiAg
ICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5cGU6Ok5vbmU6CiAgICAgICAgIC8v
IERvIG5vdGhpbmcuCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiB7eyB9fTsKIH0KIAogc3RhdGljIHZvaWQgZW5jb2RlTlNFcnJvcihFbmNvZGVy
JiBlbmNvZGVyLCBOU0Vycm9yICpuc0Vycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggMmFkNGU4M2Q0
YzY3NjRiYzViOTRhYmUzOTA2NTA1MGQ0NzZkYTYzMi4uOTdiZTFjOGMwMDZhZTkyNmQ4ZjkxOGFm
MzcxYzg3YzNjOGUwOGJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9z
b3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC02NCwyMyArNjQsMjUgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBDZXJ0aWZpY2F0ZUkKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihjZXJ0aWZpY2F0ZUluZm8udGxzRXJyb3JzKCkpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8
Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvKQorc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IEFyZ3Vt
ZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgc3RkOjpvcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IGNlcnRpZmljYXRlOwog
ICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgQ2Vy
dGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBpZiAoY2VydGlmaWNhdGUudmFsdWUo
KSkgewotICAgICAgICB1aW50MzJfdCB0bHNFcnJvcnM7Ci0gICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodGxzRXJyb3JzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gdGxzRXJyb3JzOworICAgICAgICBkZWNvZGVyID4+IHRsc0Vy
cm9yczsKKyAgICAgICAgaWYgKCF0bHNFcnJvcnMpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZp
Y2F0ZS0+Z2V0KCkpOwotICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0VExTRXJyb3JzKHN0YXRp
Y19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPih0bHNFcnJvcnMpKTsKKyAgICAgICAgY2VydGlm
aWNhdGVJbmZvLnNldFRMU0Vycm9ycyhzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4o
KnRsc0Vycm9ycykpOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXVEZN
b3ZlKGNlcnRpZmljYXRlSW5mbyk7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVy
cm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIHJlc291cmNlRXJyb3IpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>