<?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>190163</bug_id>
          
          <creation_ts>2018-10-01 14:32:19 -0700</creation_ts>
          <short_desc>Create a RELEASE_AND_RETURN macro for ExceptionScopes</short_desc>
          <delta_ts>2018-10-01 16:24:22 -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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465235</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-10-01 14:32:19 -0700</bug_when>
    <thetext>Create a RELEASE_AND_RETURN macro for ExceptionScopes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465236</commentid>
    <comment_count>1</comment_count>
      <attachid>351300</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-10-01 14:34:34 -0700</bug_when>
    <thetext>Created attachment 351300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465245</commentid>
    <comment_count>2</comment_count>
      <attachid>351300</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 14:44:19 -0700</bug_when>
    <thetext>Comment on attachment 351300
Patch

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

r=me with unnecessary braces removed.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:266
&gt;      if (prototype.isObject()) {
&gt; -        scope.release();
&gt; -        return constructEmptyObject(exec, asObject(prototype));
&gt; +        RELEASE_AND_RETURN(scope, constructEmptyObject(exec, asObject(prototype)));
&gt;      }

Don&apos;t need braces anymore.  Ditto many places below.

&gt; Source/JavaScriptCore/runtime/ExceptionScope.h:96
&gt; +#define RELEASE_AND_RETURN(scope__, expression__) do { \

Pity that this name is so much more generic that RETURN_IF_EXCEPTION, but no one else has this idiom yet.  So, I&apos;m ok going with this until there&apos;s a need to rename it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465263</commentid>
    <comment_count>3</comment_count>
      <attachid>351300</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-10-01 15:10:38 -0700</bug_when>
    <thetext>Comment on attachment 351300
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:266
&gt;&gt;      }
&gt; 
&gt; Don&apos;t need braces anymore.  Ditto many places below.

Weird that the linter didn&apos;t catch that :(

&gt;&gt; Source/JavaScriptCore/runtime/ExceptionScope.h:96
&gt;&gt; +#define RELEASE_AND_RETURN(scope__, expression__) do { \
&gt; 
&gt; Pity that this name is so much more generic that RETURN_IF_EXCEPTION, but no one else has this idiom yet.  So, I&apos;m ok going with this until there&apos;s a need to rename it.

How would you feel about RELEASE_SCOPE_AND_RETURN?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465276</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-10-01 15:32:55 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #3)
&gt; How would you feel about RELEASE_SCOPE_AND_RETURN?

RELEASE_SCOPE_AND_RETURN is slightly less generic but also more verbose.  I think we should just leave it as RELEASE_AND_RETURN for now.  Don&apos;t fix it if it ain&apos;t broke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465283</commentid>
    <comment_count>5</comment_count>
      <attachid>351317</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-10-01 15:44:12 -0700</bug_when>
    <thetext>Created attachment 351317
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465296</commentid>
    <comment_count>6</comment_count>
      <attachid>351317</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-01 16:23:16 -0700</bug_when>
    <thetext>Comment on attachment 351317
Patch for landing

Clearing flags on attachment: 351317

Committed r236697: &lt;https://trac.webkit.org/changeset/236697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465297</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-01 16:23:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465298</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-01 16:24:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/44925105&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351300</attachid>
            <date>2018-10-01 14:34:34 -0700</date>
            <delta_ts>2018-10-01 15:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190163-20181001143433.patch</filename>
            <type>text/plain</type>
            <size>193805</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmQ5YzUzMjE5OTdhMjNkMzkwMjQ1YTY3ZjkwMGUxODE3MTEyNzFjLi44NTNmYTZmMWIxNzY5OGQ4
YjhiMjRlMzUwZmUwNDNjNjQ3ZDIwNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODAgQEAKKzIwMTgtMTAtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgUkVMRUFTRV9BTkRfUkVUVVJOIG1hY3JvIGZvciBF
eGNlcHRpb25TY29wZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDE2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBuZXcgUkVMRUFTRV9BTkRfUkVUVVJOIGRvZXMgYWxsIHRoZSB3b3JrIGZvciBj
YXNlcworICAgICAgICB3aGVyZSB5b3Ugd2FudCB0byByZXR1cm4gdGhlIHJlc3VsdCBvZiBzb21l
IGV4cHJlc3Npb24KKyAgICAgICAgd2l0aG91dCBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBhbiBl
eGNlcHRpb24uIFRoaXMgaXMKKyAgICAgICAgbXVjaCBsaWtlIHRoZSBleGlzdGluZyBSRVRVUk5f
SUZfRVhDRVBUSU9OIG1hY3JvLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldEJ5VmFsKToKKyAgICAg
ICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNh
c3QpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0
YWJhc2U6OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5jcHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2
ZUltcG9ydGVkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OmZhc3RKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNU
b1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVBy
b3RvRnVuY1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1l
bWNweSk6CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OnRvQmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgor
ICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbCk6CisgICAgICAgICogcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAg
ICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQYXJz
ZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVj
dEFyZ3VtZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpjb25zdHJ1Y3RXaXRoRXJyb3JDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVy
cm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uU2NvcGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdldHRlcik6CisgICAg
ICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OkludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAg
ICogcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
Q29sbGF0b3JGdW5jQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9y
bWF0RnVuY0Zvcm1hdERhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRGdW5jRm9ybWF0TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmludGxOdW1iZXJPcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50
bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJh
bFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNDb25zdHJ1
Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlRnVuY1NlbGVjdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZSk6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJy
YXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6c2hhcmVk
QXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXlJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnRvTGVuZ3RoKToKKyAgICAgICAgKiBy
dW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25D
YWxsKToKKyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9JbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
UHJvcGVydHlLZXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXRQcm9wZXJ0eVNsb3QgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpnZXRPd25Qcm9wZXJ0eVNsb3QgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZp
ZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpwdXQpOgorICAgICAgICAoSlNDOjpK
U0RhdGFWaWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAo
SlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1By
aXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxG
dW5jUHJvdG9HZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3Bw
OgorICAgICAgICAoSlNDOjpKU0ludGVybmFsUHJvbWlzZTo6dGhlbik6CisgICAgICAgICogcnVu
dGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZp
cm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnByb3ZpZGVGZXRjaCk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUxvYWRlcjo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVy
OjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6
cmVxdWVzdEltcG9ydE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpnZXRN
b2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJSZXF1ZXN0
ZWRNb2R1bGVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdpZmllcjo6c3RyaW5naWZ5KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6
OnRvSlNPTik6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpT
T05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpvcmRpbmFyeVNldFNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0SW5saW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0b1ByaW1pdGl2ZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0Ojp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZp
bmVPd25JbmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldCBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAgICogcnVudGlt
ZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KToK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKToKKyAg
ICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JE
ZWZpbmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
b2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6
CisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToKKyAgICAg
ICAgKEpTQzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUGFyc2VJbnQuaDoKKyAgICAg
ICAgKEpTQzo6dG9TdHJpbmdWaWV3KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojp0b1N0
cmluZ05hbWUpOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlND
OjpQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChKU0M6
OlByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1
dEJ5SW5kZXhDb21tb24pOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAg
ICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmpl
Y3Q6OnBlcmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4
dGVuc2libGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blBy
b3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUp
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAg
ICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9i
amVjdENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXQpOgorICAgICAgICAoSlNDOjpyZWZs
ZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cmVmbGVj
dE9iamVjdEdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktl
eXMpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UmVnRXhwKToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4
cE9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6
Om1hdGNoR2xvYmFsKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KToKKyAgICAgICAgKEpTQzo6cmVn
RXhwUHJvdG9GdW5jRXhlYyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5n
KToKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUv
U2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJz
ZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRy
eTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNv
ZGVQb2ludCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0
QnlJbmRleCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
anNTcGxpY2VTdWJzdHJpbmdzKToKKyAgICAgICAgKEpTQzo6anNTcGxpY2VTdWJzdHJpbmdzV2l0
aFNlcGFyYXRvcnMpOgorICAgICAgICAoSlNDOjpyZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCk6Cisg
ICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6Om9w
ZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChK
U0M6OnJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJh
Y3Rlcik6CisgICAgICAgIChKU0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNT
cGxpdEZhc3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKToKKyAgICAgICAgKEpTQzo6
dG9Mb2NhbGVDYXNlKToKKyAgICAgICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ0lu
Y2x1ZGVzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpub3JtYWxpemUpOgorICAgICAgICAoSlND
OjpzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiB0b29scy9KU0Rv
bGxhclZNLmNwcDoKKyAgICAgICAgKFdURjo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRk
Qnl0ZXMpOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24pOgorCiAyMDE4LTEwLTAxICBLb2J5IEJveWFuZ28gIDxrb2J5LmJAbWNlLXN5cy5jb20+CiAK
ICAgICAgICAgW0pTQ10gQWRkIGEgSlNPTlN0cmluZ2lmeSBvdmVybG9hZCB0aGF0IHJlY2VpdmVz
IGEgSlNWYWx1ZSBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNWQ2YTY3NzNiM2Y1ZTFlMWNlZGNlZGEx
YjRhYjJmNjAwYjMzNjkuLjZiMDI2M2U2ZWZmYTQzNDg2MTdkODI1YzhlYmZkODZmZGRiOTBmYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0wMSAgS2VpdGggTWlsbGVyICA8
a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYSBSRUxFQVNFX0FORF9S
RVRVUk4gbWFjcm8gZm9yIEV4Y2VwdGlvblNjb3BlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBSRUxFQVNFX0FORF9SRVRVUk4gZG9lcyBh
bGwgdGhlIHdvcmsgZm9yIGNhc2VzCisgICAgICAgIHdoZXJlIHlvdSB3YW50IHRvIHJldHVybiB0
aGUgcmVzdWx0IG9mIHNvbWUgZXhwcmVzc2lvbgorICAgICAgICB3aXRob3V0IGV4cGxpY2l0bHkg
Y2hlY2tpbmcgZm9yIGFuIGV4Y2VwdGlvbi4gVGhpcyBpcworICAgICAgICBtdWNoIGxpa2UgdGhl
IGV4aXN0aW5nIFJFVFVSTl9JRl9FWENFUFRJT04gbWFjcm8uCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIHNpbmNlIHRoaXMgaXMgYSByZWZhY3Rvci4KKworICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXQpOgorCiAyMDE4LTEw
LTAxICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
TVNFXVtHU3RyZWFtZXJdIFNldCBhIG1pbmltdW0gc2FtcGxlIGR1cmF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyN2I4ZjI5OTkyM2VhMjYy
MzFkMmU0ZTA3MjBkMjhkYjllNjhlMGJlLi43NTQ2OThjNzI5YjY3Zjc5Yzg5NzVmMDNkMWFjYTdm
ZDZjMWYyMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTE5OSw4ICsxOTksNyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLAogICAgIGlmICh2
ZWN0b3IpCiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3Jl
YXRlV2l0aEZhc3RWZWN0b3IoZXhlYywgc3RydWN0dXJlLCBzaXplLCB2ZWN0b3IpKTsKIAotICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xh
c3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIHNpemUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGJpdHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3Ry
dWN0dXJlLCBzaXplKSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBAIC0yNjMsMTEg
KzI2Miw5IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvCiAgICAgfQogCiAgICAgaWYgKHByb3Rv
dHlwZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0KHByb3RvdHlwZSkpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IGFzT2JqZWN0KHByb3RvdHlwZSkpKTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSkpOwogfQogCiBKU0Nl
bGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHByb3RvdHlwZSkKQEAgLTMzNCw4ICszMzEsNyBAQCBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogICAgICAgICB9CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiB2YWx1ZS50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgdmFsdWUudG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRBbmQo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKQpAQCAtNjMyLDE1ICs2MjgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGUKICAgICAgICAgSlNDZWxsKiBiYXNlID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwogCiAgICAgICAg
IGlmIChwcm9wZXJ0eS5pc1VJbnQzMigpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHkuYXNVSW50
MzIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFsKGV4
ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
cHJvcGVydHkuaXNEb3VibGUoKSkgewogICAgICAgICAgICAgZG91YmxlIHByb3BlcnR5QXNEb3Vi
bGUgPSBwcm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAgICAgICAgdWludDMyX3QgcHJvcGVydHlB
c1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eUFzVUludDMyID09IHByb3BlcnR5QXNEb3VibGUgJiYgaXNJbmRl
eChwcm9wZXJ0eUFzVUludDMyKSkgewotICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHlBc1VJ
bnQzMik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZh
bChleGVjLCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgewogICAgICAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqYmFzZS0+c3RydWN0dXJlKHZtKTsKQEAgLTY1Nyw4ICs2NTEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gcHJvcGVydHkudG9Qcm9w
ZXJ0eUtleShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHlO
YW1lKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5KQpAQCAtNjcwLDE1ICs2NjMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJh
c2UKICAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRQcm9wZXJ0
eSk7CiAKICAgICBpZiAocHJvcGVydHkuaXNVSW50MzIoKSkgewotICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJ
bnQzMigpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZhbChleGVj
LCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKSk7CiAgICAgfQogICAgIGlmIChwcm9wZXJ0eS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eUFzRG91YmxlID0gcHJvcGVydHku
YXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3QgcHJvcGVydHlBc1VJbnQzMiA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKICAgICAgICAgaWYgKHByb3BlcnR5QXNV
SW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICAgICAgcmV0dXJuIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50
MzIpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnZXRCeVZhbChleGVj
LCBiYXNlLCBwcm9wZXJ0eUFzVUludDMyKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKHBy
b3BlcnR5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFz
ZS0+c3RydWN0dXJlKHZtKTsKQEAgLTY5Miw4ICs2ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
YmFzZQogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4
ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
YmFzZSkuZ2V0KGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoYmFzZSkuZ2V0KGV4ZWMsIHByb3BlcnR5TmFt
ZSkpKTsKIH0KIAogQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbENlbGxJbnQo
RXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIGludDMyX3QgaW5kZXgpCkBAIC03MzAsOCAr
NzIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9i
amVjdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2UKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGFzU3RyaW5nKHN0cmluZyktPnRvSWRlbnRpZmllcihleGVjKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdldEJ5VmFsT2JqZWN0KGV4ZWMsIHZtLCBhc09i
amVjdChiYXNlKSwgcHJvcGVydHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWxPYmplY3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2Up
LCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlWYWxPYmplY3RTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2Us
IEpTQ2VsbCogc3ltYm9sKQpAQCAtMTA5Nyw4ICsxMDg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWlucHV0
KTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKLSAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmpl
Y3QtPmV4ZWNJbmxpbmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlY0lubGlu
ZShleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KSkpOwogfQogICAgICAgICAKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQpAQCAtMTEyMCw4ICsxMTA4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmEKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gIWlucHV0KTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+ZXhlYyhleGVjLCBnbG9iYWxPYmplY3Qs
IGlucHV0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
cmVnZXhwLT5leGVjKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwKiBy
ZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcpCkBAIC0xMTgwLDIwICsxMTY3LDE4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlCiAKICAgICBpZiAocmVnRXhwLT51bmljb2RlKCkpIHsKICAgICAgICAg
dW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsKLSAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbGxlY3RNYXRjaGVzKAorICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsZWN0TWF0
Y2hlcygKICAgICAgICAgICAgIHZtLCBleGVjLCBzdHJpbmcsIHMsIHJlZ0V4cENvbnN0cnVjdG9y
LCByZWdFeHAsCiAgICAgICAgICAgICBbJl0gKHNpemVfdCBlbmQpIC0+IHNpemVfdCB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGFkdmFuY2VTdHJpbmdVbmljb2RlKHMsIHN0cmluZ0xlbmd0aCwg
ZW5kKTsKLSAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIH0pKSk7CiAgICAgfQogCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGVjdE1hdGNo
ZXMoCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGVj
dE1hdGNoZXMoCiAgICAgICAgIHZtLCBleGVjLCBzdHJpbmcsIHMsIHJlZ0V4cENvbnN0cnVjdG9y
LCByZWdFeHAsCiAgICAgICAgIFsmXSAoc2l6ZV90IGVuZCkgLT4gc2l6ZV90IHsKICAgICAgICAg
ICAgIHJldHVybiBlbmQgKyAxOwotICAgICAgICB9KSk7CisgICAgICAgIH0pKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnROb1JhZGl4R2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQpAQCAtMTI4OCw4ICsxMjcz
LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCoKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIWlucHV0KTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiByZWdleHAtPnRlc3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCByZWdleHAtPnRlc3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwogfQogCiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQml0QW5kQmlnSW50KEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiBvcDEsIEpTQ2VsbCogb3AyKQpAQCAtMTM2MSw4ICsxMzQ1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEoKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmlu
ZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkpOwogICAgICAg
ICAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaSwgc2xvdCkpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGksIHNsb3Qp
KSk7CiAgICAgfQogCiAgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7
CkBAIC0xMzcwLDggKzEzNTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogCiAgICAgYXV0
byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVy
dHksIHNsb3QpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSkpOwogfQogCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQpAQCAt
MTk5NCw4ICsxOTc2LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3Bl
cnR5RW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1YKICAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGJhc2UudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcHJvcGVy
dHlOYW1lRW51bWVyYXRvcihleGVjLCBiYXNlT2JqZWN0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHByb3BlcnR5TmFtZUVudW1lcmF0b3IoZXhlYywgYmFzZU9iamVjdCkpOwogfQog
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2Vs
bChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKQEAgLTIwMDcsOCArMTk4OCw3IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsKEV4
ZWNTdGF0ZSogZXhlYywgSlNDZWxsCiAgICAgSlNPYmplY3QqIGJhc2UgPSBjZWxsLT50b09iamVj
dChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHBy
b3BlcnR5TmFtZUVudW1lcmF0b3IoZXhlYywgYmFzZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKGV4ZWMsIGJhc2UpKTsKIH0KIAogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvSW5kZXhTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBp
bnQzMl90IGluZGV4KQpAQCAtMjA4MCw4ICsyMDYwLDcgQEAgSlNTdHJpbmcqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5n
LAogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0gaW5wdXRTdHJpbmcuaXM4Qml0KCkgPyBp
bnB1dFN0cmluZy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlU3RhcnRpbmdBdEZhaWxp
bmdJbmRleDhCaXQoZmFpbGluZ0luZGV4KSA6IGlucHV0U3RyaW5nLmNvbnZlcnRUb0xvd2VyY2Fz
ZVdpdGhvdXRMb2NhbGUoKTsKICAgICBpZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gaW5w
dXRTdHJpbmcuaW1wbCgpKQogICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgbG93ZXJjYXNlZFN0cmluZyk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBsb3dlcmNhc2VkU3RyaW5n
KSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW50MzJUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpCkBAIC0yMjMwLDggKzIy
MDksNyBAQCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYSwgRW5jbwogICAgIEpTU3RyaW5nKiBzdHIyID0gSlNW
YWx1ZTo6ZGVjb2RlKGIpLnRvU3RyaW5nKGV4ZWMpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IHN0cjEsIHN0cjIpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhl
Yywgc3RyMSwgc3RyMikpOwogfQogICAgIAogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU3RyQ2F0MyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGEsIEVuY29kZWRKU1Zh
bHVlIGIsIEVuY29kZWRKU1ZhbHVlIGMpCkBAIC0yMjUwLDggKzIyMjgsNyBAQCBKU1N0cmluZyog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgYSwgRW5jbwogICAgIEpTU3RyaW5nKiBzdHIzID0gSlNWYWx1ZTo6ZGVjb2RlKGMpLnRv
U3RyaW5nKGV4ZWMpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0cjEsIHN0cjIsIHN0cjMp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywgc3RyMSwgc3Ry
Miwgc3RyMykpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkZpbmRTd2l0Y2hJ
bW1UYXJnZXRGb3JEb3VibGUoCkBAIC0yNjQyLDEwICsyNjE5LDggQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblNwcmVhZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGl0
ZXJhYmxlKQogCiAgICAgaWYgKGlzSlNBcnJheShpdGVyYWJsZSkpIHsKICAgICAgICAgSlNBcnJh
eSogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGl0ZXJhYmxlKTsKLSAgICAgICAgaWYgKGFycmF5
LT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKSB7Ci0gICAgICAgICAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU0ZpeGVkQXJyYXk6
OmNyZWF0ZUZyb21BcnJheShleGVjLCB2bSwgYXJyYXkpOwotICAgICAgICB9CisgICAgICAgIGlm
IChhcnJheS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU0ZpeGVkQXJyYXk6OmNyZWF0
ZUZyb21BcnJheShleGVjLCB2bSwgYXJyYXkpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogd2Ug
Y2FuIHByb2JhYmx5IG1ha2UgdGhpcyBwYXRoIGZhc3RlciBieSBoYXZpbmcgb3VyIGNhbGxlciBK
UyBjb2RlIGNhbGwgZGlyZWN0bHkgaW50bwpAQCAtMjY2Nyw4ICsyNjQyLDcgQEAgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblNwcmVhZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGl0ZXJhYmxlKQogICAgICAgICBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oYXJyYXlSZXN1
bHQpOwogICAgIH0KIAotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU0Zp
eGVkQXJyYXk6OmNyZWF0ZUZyb21BcnJheShleGVjLCB2bSwgYXJyYXkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU0ZpeGVkQXJyYXk6OmNyZWF0ZUZyb21BcnJheShleGVj
LCB2bSwgYXJyYXkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNwcmVh
ZEZhc3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKQEAgLTI3MTYsOCArMjY5
MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0RHluYW1pY1Zh
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBpbXBsKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBz
bG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgR2V0
UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRzKTsKICAgICAgICAgICAgIGlmIChnZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpAQCAtMjczNiw3ICsyNzA5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXREeW5hbWljVmFy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKLSAgICB9KSk7CisgICAgfSkpKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYXIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogc2NvcGUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBVbmlxdWVkU3RyaW5nSW1w
bCogaW1wbCwgdW5zaWduZWQgZ2V0UHV0SW5mb0JpdHMpCkBAIC0yODY1LDggKzI4MzgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b3RvdHlwZSk7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhy
b3dERkcoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZVRvVGhyb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRl
eCBiYmM2OWRiNjliMWU3Zjk4NDRjMjc4MTQ2OTJlMGIwZGYzZmRkN2ZmLi4yNWUxN2NiOWRiYTM5
ZGE0ZmUyOTE5ZTNiYmNhYTVjYzVjYjY3MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDEyIEBAIEpT
VmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgICAgIGlmIChwcm9ncmFt
U291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNlcjxMQ2hhcj4g
cHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBwcm9ncmFt
U291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAgICAgICAgICBpZiAoSlNW
YWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcGFyc2VkT2JqZWN0OworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHBhcnNlZE9iamVjdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoY2Fs
bEZyYW1lLCBwcm9ncmFtU291cmNlLmNoYXJhY3RlcnMxNigpLCBwcm9ncmFtU291cmNlLmxlbmd0
aCgpLCBOb25TdHJpY3RKU09OKTsKICAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRP
YmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkT2Jq
ZWN0OworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBhcnNl
ZE9iamVjdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKQEAgLTE3MCw4ICsxNjgsNyBA
QCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxlckZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSB2bS5pbnRlcnByZXRlcjsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJu
IGludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJT
Y29wZUNoYWluKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGludGVycHJldGVyLT5l
eGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNoYWluKSk7CiB9
CiAKIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
YXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGZkNDI1ZDgwZWMzZjdlY2RkMzVlNjAz
MzNmMzAyNzM1YmM5ZjgyYTkuLmQwNDRkYmNjNDE4N2M0Y2ZhYzM5ZGVhMjRhNzYyOTA0MzRmZTNm
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
MTk4LDggKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlJZERpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0CiAgICAgYm9vbCBmb3VuZCA9
IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm91bmQgPyBzbG90LmdldFZh
bHVlKGV4ZWMsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVu
dCkgOiBqc1VuZGVmaW5lZCgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjE1LDggKzIxNCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMo
RXhlY1N0YXRlKiBleGVjLCBFbmNvCiAgICAgYm9vbCBmb3VuZCA9IGJhc2VWYWx1ZS5nZXRPd25Q
cm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZm91bmQgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA6
IGpzVW5kZWZpbmVkKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjM1LDgg
KzIzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZERp
cmVjdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RyCiAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmcoZXhlYy0+Y29kZUJsb2NrKCksIGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCiAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3Qs
ICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OkRpcmVjdCk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywg
aWRlbnQpIDoganNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoZm91bmQgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA6IGpzVW5k
ZWZpbmVkKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNv
ZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMTAxOCw4ICsxMDE1
LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGkKICAgICAgICAgICAgIHZvaWQqIGxpbmtlZFRh
cmdldCA9IGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQobGlua2VkVGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlu
a0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2Vl
cFRoZUZyYW1lKSk7CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBj
YWxsTGlua0luZm8pOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgaGFu
ZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKSk7CiAg
ICAgfQogCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCk7CkBAIC0xMTMyLDggKzExMjgsNyBAQCBpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oCiAgICAgICAgICAgICBBU1NFUlQoISFj
b2RlUHRyKTsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxN
b2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7
CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVy
biBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8p
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgaGFuZGxlSG9zdENhbGwo
ZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKSk7CiAgICAgfQogICAgIAog
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCk7CkBAIC0xODI3LDggKzE4MjIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwg
QgogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAo
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpIHsKICAgICAgICAgICAgICAgICBj
dGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MocmV0dXJuQWRkcmVzcywgb3BlcmF0aW9uR2V0QnlW
YWxTdHJpbmcpOwotICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleChleGVjLCBpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBieVZhbElu
Zm8tPmFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKICAgICAgICAgfSBlbHNlIGlmIChi
YXNlVmFsdWUuaXNPYmplY3QoKSkgewpAQCAtMTg1Myw4ICsxODQ3LDcgQEAgc3RhdGljIEpTVmFs
dWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBz
dWJzY3JpcHQsIEIKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChleGVjLCBpKSk7CiAgICAg
fQogCiAgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CkBAIC0xODY2
LDggKzE4NTksNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgQgogICAgIGlmIChieVZhbEluZm8t
PnN0dWJJbmZvICYmICghaXNTdHJpbmdPclN5bWJvbChzdWJzY3JpcHQpIHx8IGJ5VmFsSW5mby0+
Y2FjaGVkSWQgIT0gcHJvcGVydHkpKQogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9
IHRydWU7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQo
ZXhlYywgcHJvcGVydHkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVl
LmdldChleGVjLCBwcm9wZXJ0eSkpOwogfQogCiBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRy
eUdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCkBAIC0yMDU5LDggKzIwNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VgogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQz
Ml90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFz
ZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc1N0cmluZyhiYXNlVmFs
dWUpLT5nZXRJbmRleChleGVjLCBpKSkpOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGJh
c2VWYWx1ZS5nZXQoZXhlYywgaSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjMwNSw4ICsyMjk2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbioKICAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9zdXJl
VmFyIGZvciBnZXRfZnJvbV9zY29wZS4KICAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpICE9IE1vZHVsZVZhcik7CiAKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsm
XSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90
KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKGdl
dFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCiAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihleGVjLCBpZGVudCkpOwpAQCAtMjMyOCw3ICsyMzE4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbioKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSkp
OworICAgIH0pKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3Bl
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IGEwYjFjODdlYTYxOTMxNmI3ZTBjYmJhNDgxNzllN2U0MzYxOGZkMjYuLmY2YzFl
ODI1NmJhMjYwYmE1MTM1N2MyNmJjNWQxY2ZiOTBjNWY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0xNzY2LDggKzE3NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAgIGFyZ3Mu
YXBwZW5kKGpzTnVtYmVyKG1lc3NhZ2UtPmluZGV4KCkpKTsKICAgICBpZiAoVU5MSUtFTFkoYXJn
cy5oYXNPdmVyZmxvd2VkKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBj
YWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGNhbGxiYWNrLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGpzTnVsbCgpLCBhcmdzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggYzFjMmM2NzQ2YWUzYTU1
N2ZjYTNlNGRkN2Y5ZGE0ZGU3YTIzOTNkYS4uZWVhZDI0ZDcwZjU5YzkyYTQ0ZmZhOWEwYmFiZWRj
NzljZWExODk0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC0xNDY3LDggKzE0NjcsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZQog
ICAgICAgICAgICAgUG9pc29uZWRNYXNtUHRyOjphc3NlcnRJc05vdFBvaXNvbmVkKGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
LCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIEpTRW50cnlQdHJUYWcp
OwogICAgICAgICB9Ci0gICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1
cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOwor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgaGFuZGxlSG9zdENhbGwoZXhl
Y0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpKTsKICAgICB9CiAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAg
ICAgSlNTY29wZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CkBAIC0xNTQzLDE1
ICsxNTQyLDEzIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKLSAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDYWxsKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2VuZXJpY0Nh
bGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7Ci0gICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgZ2Vu
ZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAogTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCkBAIC0xNjE3LDggKzE2
MTQsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZhcmFyZ3NTZXR1cChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZQogICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CiAgICAgZXhlYy0+c2V0
Q3VycmVudFZQQyhwYyk7CiAKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
c2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5k
LCBjYWxsZWVBc1ZhbHVlKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsX3ZhcmFyZ3MpCkBAIC0xNjUxLDEwICsxNjQ3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NhbGxfZXZhbCkKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAg
ICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCi0gICAgaWYgKCFpc0hvc3RGdW5jdGlv
bihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpIHsKLSAgICAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVG
b3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKLSAgICB9CisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxs
ZWVBc1ZhbHVlKSk7CiAgICAgCiAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhl
Y0NhbGxlZSk7CiAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgZXhlY0NhbGxlZSwgTExJbnQ6
OmdldENvZGVQdHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5j
cHAKaW5kZXggOTExZDY4MTc0Yzk2YTk0ZTYzY2JmODU0ZWY4OTY1ZGZhZjI2YTU2OC4uMGE3OGIw
Y2M5ZGNjYWZhZTBmZDFhNDI5MGIzNTU2ZjFkY2FkMjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcApAQCAtMTQzLDggKzE0
Myw3IEBAIFN0cmluZyBEYXRhYmFzZTo6dG9KU09OKCkgY29uc3QKIAogICAgIGF1dG8gdmFsdWUg
PSB0b0pTKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBTdHJpbmcoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBK
U09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB2YWx1ZSwgMCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCB2YWx1ZSwgMCkpOwogfQogCiBib29sIERhdGFiYXNlOjpzYXZlKGNvbnN0IGNo
YXIqIGZpbGVuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGZjMDNlNDMzNjJiZDAyZWJhOTdj
N2RmNzEyZjgyZjI3MGQxMDgxNzQuLmE0YWQxMmNjZjRlZTM1ZmMxNDgyNmFmY2IwNmY4OThlNTg3
M2JjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0
TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTE0Niw4ICsxNDYsNyBAQCBBYnN0cmFjdE1vZHVsZVJl
Y29yZCogQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhl
Y1N0YXRlKgogICAgIEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1
ZSh2bSwgbW9kdWxlTmFtZSk7CiAgICAgSlNWYWx1ZSBlbnRyeSA9IG1fZGVwZW5kZW5jaWVzTWFw
LT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBq
c0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihlbnRyeS5nZXQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibW9kdWxlIikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGpzQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KGVudHJ5LmdldChleGVjLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtb2R1bGUiKSkpKTsKIH0KIAogYXV0byBBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCA3NTI1ZjVmYzZiYzIwZTljMTYy
NjQ0NmVmMDQwY2RiZDBhNTY4MTlhLi5hOGI3M2UyNDQxZGRkMTgzZjdkYzQzNjhiNDcxZWE2ZjU4
OTQ5MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcApAQCAtNzQsOCArNzQsNyBAQCBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcgog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmICghbGVuZ3RoLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQo
ZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCAmbGVuZ3RoLCAxLCBuZXdUYXJnZXQpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9iamVjdCwgJmxlbmd0aCwgMSwgbmV3VGFyZ2V0KSk7
CiAgICAgfQogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgudG9VSW50MzIoZXhlYyk7CkBA
IC04Myw4ICs4Miw3IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVj
U3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcnJheSBzaXplIGlz
IG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjb25z
dHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9iamVjdCwgbiwgbmV3VGFyZ2V0
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdUYXJnZXQpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjMTQ3MjkyZjk3
YTkxZDlmY2ZjYmYyZGM2NWIzYTVhMmYwOTE1NmQ0Li5hMzMwMWJiOTkxOTUzOTNlMjNhODcwMjJl
MmQwMWUxOGE1ZDQyM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNjYsMTEgKzE2Niw5IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0
LCB1bnNpCiAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBp
ZiAoVU5MSUtFTFkoc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSkgewotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBvYmplY3QtPmdldChleGVjLCBpbmRleCk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb2JqZWN0LT5nZXQoZXhlYywgaW5k
ZXgpKTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBzbG90LmdldFZh
bHVlKGV4ZWMsIGluZGV4KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNsb3QuZ2V0
VmFsdWUoZXhlYywgaW5kZXgpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBwdXRM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqZWN0KiBvYmosIEpTVmFsdWUgdmFs
dWUpCkBAIC00NTMsOCArNDUxLDcgQEAgaW5saW5lIEpTVmFsdWUgZmFzdEpvaW4oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFN0cmluZ1ZpZXcgc2VwYXIKICAgICAgICAg
ICAgICAgICBqb2luZXIuYXBwZW5kRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqb2luZXIuam9p
bihzdGF0ZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgam9pbmVyLmpvaW4o
c3RhdGUpKTsKICAgICB9CiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzog
ewogICAgICAgICBhdXRvJiBidXR0ZXJmbHkgPSAqdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CkBA
IC00NzksOCArNDc2LDcgQEAgaW5saW5lIEpTVmFsdWUgZmFzdEpvaW4oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNPYmplY3QqIHRoaXNPYmplY3QsIFN0cmluZ1ZpZXcgc2VwYXIKICAgICAgICAgICAgICAg
ICBqb2luZXIuYXBwZW5kRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqb2luZXIuam9pbihzdGF0
ZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgam9pbmVyLmpvaW4oc3RhdGUp
KTsKICAgICB9CiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAg
IGF1dG8mIGJ1dHRlcmZseSA9ICp0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKQEAgLTUwNSw4ICs1
MDEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBmYXN0Sm9pbihFeGVjU3RhdGUmIHN0YXRlLCBKU09iamVj
dCogdGhpc09iamVjdCwgU3RyaW5nVmlldyBzZXBhcgogICAgICAgICAgICAgICAgIGpvaW5lci5h
cHBlbmRFbXB0eVN0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpvaW5lci5qb2luKHN0YXRlKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqb2luZXIuam9pbihzdGF0ZSkpOwogICAgIH0K
ICAgICB9CiAKQEAgLTUxOSw4ICs1MTQsNyBAQCBnZW5lcmFsQ2FzZToKICAgICAgICAgam9pbmVy
LmFwcGVuZChzdGF0ZSwgZWxlbWVudCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgfQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gam9pbmVy
LmpvaW4oc3RhdGUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgam9pbmVyLmpvaW4o
c3RhdGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTU0NywxNCArNTQxLDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0gdHJ1ZTsKIAogICAgIGlmIChVTkxJS0VMWShj
dXN0b21Kb2luQ2FzZSkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3Qg
IiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0p
LCAiXSIpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LCB2bSksICJdIikpKTsKICAgICB9
CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUg
YW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmpl
Y3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgKnZtLmVtcHR5TGlzdCkpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNPYmplY3QsICp2bS5lbXB0eUxpc3QpKSk7CiAgICAg
fQogCiAgICAgQVNTRVJUKGlzSlNBcnJheSh0aGlzVmFsdWUpKTsKQEAgLTYwNCw4ICs1OTYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqb2luZXIuam9pbigqZXhlYykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpvaW5lci5qb2luKCpleGVjKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtNjUzLDggKzY0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIH0K
IAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmlu
Z0pvaW5lci5qb2luKCpleGVjKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoc3RyaW5nSm9pbmVyLmpvaW4oKmV4ZWMpKSk7CiB9CiAKIHN0YXRpYyBKU1Zh
bHVlIHNsb3dKb2luKEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTU3Ry
aW5nKiBzZXBhcmF0b3IsIHVpbnQ2NF90IGxlbmd0aCkKQEAgLTczNiwxNSArNzI2LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIEpTU3RyaW5nKiBqc1NlcGFyYXRvciA9IGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGV4ZWMsIGNvbW1hKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0aGlz
T2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0aGlzT2JqZWN0
LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKSk7CiAgICAgICAgIH0KIAogICAgICAgICB1bnNpZ25l
ZCB1bnNpZ25lZExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpOwogICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8ZG91YmxlPih1bnNpZ25lZExlbmd0aCkgPT0gbGVuZ3RoKTsK
IAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZmFzdEpvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIHsgJmNvbW1hLCAxIH0sIHVuc2lnbmVkTGVu
Z3RoKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGZhc3RKb2luKCpleGVjLCB0aGlzT2JqZWN0LCB7ICZjb21tYSwgMSB9LCB1bnNpZ25lZExlbmd0
aCkpKTsKICAgICB9CiAKICAgICAvLyA0LiBMZXQgc2VwIGJlID8gVG9TdHJpbmcoc2VwYXJhdG9y
KS4KQEAgLTc1NSwxNSArNzQzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgdWludDY0X3QgbGVuZ3Ro
NjQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKTsKICAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGRvdWJsZT4obGVuZ3RoNjQpID09IGxlbmd0aCk7CiAKLSAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3dKb2luKCpleGVjLCB0
aGlzT2JqZWN0LCBqc1NlcGFyYXRvciwgbGVuZ3RoNjQpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3Qs
IGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKICAgICB9CiAKICAgICBhdXRvIHZpZXdXaXRoU3Ry
aW5nID0ganNTZXBhcmF0b3ItPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpleGVjLCB0
aGlzT2JqZWN0LCB2aWV3V2l0aFN0cmluZy52aWV3LCBsZW5ndGgpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVj
dCwgdmlld1dpdGhTdHJpbmcudmlldywgbGVuZ3RoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTc3NCw4
ICs3NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9w
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1Zh
bHVlKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZXhlYykpOworICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBv
cChleGVjKSkpOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRv
T2JqZWN0KGV4ZWMpOwpAQCAtMTQ1OCw4ICsxNDQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgSlNWYWx1ZSBzZWNvbmQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAg
ICBpZiAoIWlzSlNBcnJheShzZWNvbmQpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIGNvbmNhdEFwcGVuZE9uZShleGVjLCB2bSwgZmlyc3RBcnJheSwgc2Vjb25k
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25jYXRBcHBlbmRPbmUoZXhl
Yywgdm0sIGZpcnN0QXJyYXksIHNlY29uZCkpOwogICAgIH0KIAogICAgIEpTQXJyYXkqIHNlY29u
ZEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihzZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDZhYTk1ZWEzZTNm
ZjBjYWUyZDc1YzAwM2IxMzlkMDIwZWRlZTBkMTYuLmNiZDI2NzNhNzBhOTU2MmEwYzllYTEwNTZh
M2UxNDQ5YjQyMWQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTk5LDggKzk5LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHRvQmlnSW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYXJndW1lbnQpCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGlmIChhcmd1
bWVudC5pc0Jvb2xlYW4oKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIGFyZ3VtZW50LmFz
Qm9vbGVhbigpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSkpKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJn
dW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKQpAQCAtMTA4LDEwICsxMDcs
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9CaWdJbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSBhcmd1bWVudCkKICAgICAKICAgICBBU1NFUlQoYXJndW1lbnQuaXNTdHJpbmcoKSk7CiAg
ICAgCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoJnN0YXRl
LCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHRvU3RyaW5nVmlldygmc3RhdGUsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcg
dmlldykgewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50OjpwYXJzZUlu
dCgmc3RhdGUsIHZpZXcpKTsKLSAgICB9KTsKKyAgICB9KSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAppbmRleCAxZWNlODk1OTJjZDYzMTE4ZGQ5Yjg5ZjFiOTZiZDAwOGRkMGFiNWVkLi5lYjEwZmQ3
MDA4ZDYwMDc4OGU4YzU0ODkzMDE2NmIwMTlmNzZmNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTAzLDE0ICsxMDMsMTIgQEAg
aW5saW5lIGJvb2wgb3BJbkJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBK
U1ZhbHVlIHByb3BOYW1lLCBBcnJheVAKICAgICBpZiAocHJvcE5hbWUuZ2V0VUludDMyKGkpKSB7
CiAgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCiAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9i
c2VydmVJbmRleGVkUmVhZCh2bSwgYmFzZU9iaiwgaSk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkp
KTsKICAgICB9CiAKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcE5hbWUudG9Qcm9wZXJ0eUtleShl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBiYXNlT2JqLT5oYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0
eSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlT2JqLT5oYXNQcm9wZXJ0eShl
eGVjLCBwcm9wZXJ0eSkpOwogfQogCiBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9i
YWwoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3RE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3Bw
CmluZGV4IDNhZWJiZDBhNDYwNGNhZjI4Y2ZmYjZjODQxMDNiZGExMzIzMmY2YTMuLjg3OGIwODli
MDk4YzM0OWYzMTUzNmVkMDJmYjM3OTQ2ZDBiNDgxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCkBAIC00NCw4ICs0NCw3IEBAIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0
LCBjb25zdCBBcmdMaXN0JiBhCiAgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlw
ZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjb25zdHJ1Y3Qo
ZXhlYywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFy
Z3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNv
bnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0
RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3QpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAppbmRleCBlMzhlNWVkODc0
NTVmMGIwOTQyZTgwMjE1YmE4M2VjZGFmODAxYmY0Li5kYmFmNjM2ZDcwNmU5MWE2YmRlYjFlNzg4
ZWE1NzlkMDc5ZDYxYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2OSw4ICsxNjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cmluZyBkYXRlU3RyID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGV4ZWMsIHZtLCBkYXRlU3RyKSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBh
cnNlRGF0ZShleGVjLCB2bSwgZGF0ZVN0cikpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZU5vdyhFeGVjU3RhdGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA1ZWFkMzc2OTRlZjA3MzI3M2M3NjEwYzBk
MzA0NmE3NmZmN2Y5NjgwLi5jMmQ0MmEwOTJmYzcyMzE2NTYwMjY1ODg5YzY1MTM3Mjk3YmZkZDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNw
cApAQCAtNjM2LDggKzYzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodHlwZSA9
PSBOb1ByZWZlcmVuY2UpCiAgICAgICAgIHR5cGUgPSBQcmVmZXJTdHJpbmc7CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5vcmRp
bmFyeVRvUHJpbWl0aXZlKGV4ZWMsIHR5cGUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5vcmRpbmFyeVRvUHJpbWl0aXZlKGV4ZWMs
IHR5cGUpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldFRpbWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EaXJlY3RBcmd1bWVudHMuaAppbmRleCAxYTJjYzZmMTA1N2VmY2RjMWUzOTVlMmY1ZjVk
ZDc4N2YxZDhlZTQ1Li4yYTc4ZmQwZmVhM2U4M2FmMTQwNDAwNWQ2YWMzYmU1YmUxM2EwY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuaApA
QCAtNzksOCArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0KGV4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCAwKTsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAg
IHJldHVybiB2YWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdmFsdWUudG9VSW50MzIoZXhlYykpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX2xlbmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDAyYjFiODZhYzk0ZDQ4N2IxM2RjMjM5MmUy
MmQ1MDQ3YzA1ZGJlMTcuLmIwOWMwNTg3MGNkMjE5NWZjYjdiMTVmY2FhN2JkYThlMzE1NzJkY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0
b3IuY3BwCkBAIC01OSw4ICs1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
ZXJwcmV0ZXI6OmNvbnN0cnVjdFdpdGhFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0CiAgICAgSlNW
YWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgU3RydWN0dXJlKiBlcnJvclN0
cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMs
IGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGV4ZWMtPmpzQ2Fs
bGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhl
YywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBmYWxzZSkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlw
ZU5vdGhpbmcsIGZhbHNlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGVycHJldGVyOjpjYWxsRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggMDZm
MGMyMDEyYjM1OTRlYzdjODBmNmI0MjI1YjY4MTI0ODkzN2Q0NS4uMGU2MjBjNjBhNjcyZjVjZjZk
Yzg3MTY5Y2RlOWM5ZWNhZDE4Y2IyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAtMTIwLDggKzEyMCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmFtZS5pc1N0cmluZygpID8gbmFtZSA6
IGpzU3RyaW5nKGV4ZWMsIG5hbWVTdHJpbmcpKTsKIAogICAgIC8vIDEwLiBSZXR1cm4gdGhlIHJl
c3VsdCBvZiBjb25jYXRlbmF0aW5nIG5hbWUsICI6IiwgYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVy
LCBhbmQgbXNnLgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgbmFtZVN0cmluZywgIjogIiwgbWVzc2Fn
ZVN0cmluZykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgbmFtZVN0cmluZywgIjogIiwgbWVzc2FnZVN0
cmluZykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaAppbmRleCAwODBlYTU5ZGVmYzEzMjFkMzM4YzE0
ZWE0MzQ1ZTA0ZmNhNmJlZmVmLi5hMzBhMjkxY2UzZWY3NTQ1ZWRhZGEzNTc2N2IxZTFiMmEwYTE0
ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25T
Y29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3Bl
LmgKQEAgLTkzLDQgKzkzLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIHZhbHVl
X187IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAorI2RlZmluZSBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGVfXywgZXhwcmVzc2lvbl9fKSBkbyB7IFwKKyAgICAgICAgc2NvcGVfXy5yZWxlYXNlKCk7
IFwKKyAgICAgICAgcmV0dXJuIGV4cHJlc3Npb25fXzsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZmMzMGZjZjMxMGRmODA5MDFjYzA2
YzlhYjkzMjRhODVhMjE2NGQzMi4uMzRmYjExOGQ1OGJlMWUzZjY1NDUxMWQ2ZWZjY2UzZjgzYzJj
Nzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKQEAgLTcxLDggKzcxLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJldHVybiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
ayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlT3JpZ2luLCBz
b3VyY2VVUkwsIHBvc2l0aW9uLCAtMSwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlLCBuZXdUYXJn
ZXQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5h
bWUsIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSwgbmV3VGFyZ2V0KSk7CiB9CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
blNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCA4ZmMzMDEzNzFmNWEyNWIzODNh
NTNlNTBlMmMzNWJhYTczMWEzZDMxLi40MzMyNDA1YWU4Y2VkMzE4MDBjZGQ0MjI4NzVkNjgzYjU5
YWZiZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCkBAIC04OCw4ICs4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlm
IChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewotICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSh2bSksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywg
ImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpKTsKICAgICAgICAgfQogCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKQEAgLTE0MSwyMSArMTQwLDE4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291
cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCiAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKSwKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNT
dGFydE9mZnNldCgpICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBz
b3VyY2UpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24t
Pm5hbWUodm0pLCBzb3VyY2UpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0
czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xu
ICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9u
ICIsIGZ1bmN0aW9uLT5uYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAg
ICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5pc0Z1
bmN0aW9uKHZtKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5j
dGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0
aXZlIGNvZGVdXG59IikpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwg
b2JqZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2ZSBjb2Rl
XVxufSIpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCmluZGV4IDI1ZWJhOTI2
NDYwMmU5NjQ0ZGRhMTJlNjdmYTdhMWQzNGViMGQ0YjguLjQwZGJjNjA5NDM0M2Q5NzMxMGQ5ZmRj
OTdkOGY2YmJiODM5NzQwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApAQCAtMjU0LDggKzI1NCw3IEBAIGJv
b2wgR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBleGVjCiAgICAgfQogCiAgICAgLy8gTm93IGp1c3QgbGV0IHRoZSBu
b3JtYWwgb2JqZWN0IG1hY2hpbmVyeSBkbyBpdHMgdGhpbmcuCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIGlkZW50
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIGlkZW50LCBkZXNjcmlwdG9y
LCBzaG91bGRUaHJvdykpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKaW5kZXggYzVhNTI0M2Vj
MWJhZWE3NGQ0Y2FjMmM0MWM4NTQ0MDE0ZjI4NTlkYy4uOTk4ZDE4NDc2YjJhMmM4NzgxMGYzMWM4
ZjM0ZDg2Y2RmMjY3NWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCkBAIC01Nyw4ICs1Nyw3IEBAIEpTVmFsdWUgY2FsbEdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIpCiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9k
VGFibGUodm0pLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGJhc2UsIEFyZ0xpc3QoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsKGV4
ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpKTsKIH0KIAog
Ym9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdl
dHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNzljNTBmYzEzMWE0OTBjMzQ0ZjFkNzlmMGMyMWQ3ZmRhYzM1YThkYS4uYWYx
NWJiYjBmMzQ1ZGFkZGRlZTVlOTI0MTg1NTcxZjBiMzczNjg2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNw
cApAQCAtMTQxLDggKzE0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENv
bGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4ZWNTCiAKICAgICAvLyAz
LiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyglQ29sbGF0b3IlLltbYXZhaWxhYmxlTG9jYWxlc11d
LCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gc3RhdGUtPmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygq
c3RhdGUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpLCByZXF1
ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgZ2xvYmFs
T2JqZWN0LT5pbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCksIHJlcXVlc3RlZExvY2FsZXMs
IHN0YXRlLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogdm9pZCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKaW5kZXggOTBiZmVmZTAzYzI0ZjdmZGEyZmEzYWY5ZWVhMzE5MjI0NjVjZDU0Yi4u
MzUyNjlkMGI1MTQ3NDhjYTkzOTc0MmVjZmMwMTg4ZTg2OWU4ODdiMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3Bw
CkBAIC0xMDQsOCArMTA0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bENvbGxhdG9yRnVuY0NvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIHlWaWV3V2l0aFN0
cmluZyA9IHktPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhzdGF0ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKCpz
dGF0ZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0cmluZy52aWV3KSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBh
cmVTdHJpbmdzKCpzdGF0ZSwgeFZpZXdXaXRoU3RyaW5nLnZpZXcsIHlWaWV3V2l0aFN0cmluZy52
aWV3KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclBy
b3RvdHlwZUdldHRlckNvbXBhcmUoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTE0Nyw4ICsxNDYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKgogICAgIGlmICghY29sbGF0b3IpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5D
b2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIl9zKSk7CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2
ZWRPcHRpb25zKCpzdGF0ZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA1ZmNiZmZl
YmQ2NDUxM2Q5NzE2Y2I0MzI4OGUxZjg0NDk0YjdiZmJiLi5lZDQ4YmFmYTIzZGU2ZTcwZDc0YjMy
ZGY1OTYwZWE2NGEwYmFjZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0x
NDIsOCArMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBTdXBw
b3J0ZWRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMp
LgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBv
cnRlZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBz
dGF0ZS0+YXJndW1lbnQoMSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB2b2lkIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCBhZjkxNTczYmUy
N2NkYzQwOTNiMzNiMjJjZTg2YjJmNTc2ZGZjYjc3Li4xZTRkNzYwNGM1ZGZhNzdlNzZjZTNiYjJh
YTIzMzJhOWQwOGY2YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTExMSw4ICsx
MTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVG
b3JtYXRGdW5jRm9ybWF0RGF0ZVRpbWUoRXhlY1N0YQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXQtPmZvcm1hdCgqc3RhdGUsIHZh
bHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm9y
bWF0LT5mb3JtYXQoKnN0YXRlLCB2YWx1ZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0YXRl
KiBzdGF0ZSkKQEAgLTE3Niw4ICsxNzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdAogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9
CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkYXRl
VGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqc3RhdGUsIHZhbHVlKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdFRv
UGFydHMoKnN0YXRlLCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCkBAIC0yMDAsOCArMTk4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWMKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIklu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJf
cykpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRP
cHRpb25zKCpzdGF0ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yLmNwcAppbmRleCBmYjdiZTNjNmU2YTg4ZmQ4OTlhYTEyYjQ4YjUzNGU2YTMxNWRmN2Zm
Li4wM2VmMzlhODJiOGM3ODVhMzA4NDVmMTE4YjM1ZWJkZWEyNmNkNjJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTE0Miw4ICsxNDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2Yo
RQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVz
dGVkTG9jYWxlcywgb3B0aW9ucykuCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcygqc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1bWVudCgxKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBh
dmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7
CiB9CiAKIHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDFkNTJhYTRkODU5MWY3M2EwMGM5MDk1YmNjMjg0NWJjOTVjZTY5ODcuLjY3OWZlNjhjYzdm
M2Y5ZDYxNjdhNDJjZTVkYzYyODdhNjE3OTgxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBA
IC0xMDYsOCArMTA2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIoRXhlY1N0YXRlKgogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gNi4gUmV0dXJuIEZv
cm1hdE51bWJlcihuZiwgeCkuCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKnN0YXRlLCBudW1iZXIpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3Jt
YXQtPmZvcm1hdE51bWJlcigqc3RhdGUsIG51bWJlcikpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC0xNjMsOCArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoRXhlY1N0YXQK
ICAgICBkb3VibGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0
LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPmZvcm1hdFRvUGFydHMoKnN0YXRl
LCB2YWx1ZSkpKTsKIH0KICNlbmRpZgogCkBAIC0xODcsOCArMTg1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjU3QKICAgICBpZiAoIW51bWJlckZvcm1hdCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwogCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNv
bHZlZE9wdGlvbnMoKnN0YXRlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggYjE5ZTk1Y2QwZWM4MTZhZTAyYWU3Y2U5ZjYwMjE2YmIzM2FkNzVh
YS4uN2ExOGIzZGJkODk4MDYzZjU0M2Q5N2JiNGQwYTM3OGY5MzVjMDhmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTIxMiw4ICsyMTIsNyBA
QCB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgb3B0
aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcgogICAgIEpTVmFsdWUgdmFsdWUgPSBvcHRzLT5nZXQo
JnN0YXRlLCBwcm9wZXJ0eSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgMCk7CiAK
LSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGludGxEZWZhdWx0TnVtYmVyT3B0aW9u
KHN0YXRlLCB2YWx1ZSwgcHJvcGVydHksIG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKHN0YXRl
LCB2YWx1ZSwgcHJvcGVydHksIG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSk7CiB9CiAKIHVu
c2lnbmVkIGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQg
bWF4aW11bSwgdW5zaWduZWQgZmFsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA2YmJkMDAwZTZmNDRmYWJlNWUxM2Qy
M2Q4MTIxNGE1NmM5MDU2ODAyLi5kODc1Y2YxOGYzNDAxNzNhMDViYzdhYmFmMjMxY2M1NzM5YjI2
NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJ
bmxpbmVzLmgKQEAgLTU3LDggKzU3LDcgQEAgSlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VX
aXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUmIHMKICAgICAg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0OwogICAgICAgICB9CiAgICAgfQotICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICByZXR1cm4gZmFjdG9yeSh2bSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBmYWN0b3J5KHZtKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggNGFm
NTcyNmU0ZTllMGVkZTVlY2ViOTdiMTZlYmQ3NTRiYjcxYThlNC4uNWZmOWMwYmMyZmI3MzJiYTI5
MTNhNDcyY2QwMjYyY2RhNzVmY2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0yMzUsOCArMjM1LDcgQEAgSlNPYmplY3Qq
IEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSYgZXhlYykKICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAicGx1cmFs
Q2F0ZWdvcmllcyIpLCBjYXRlZ29yaWVzKTsKICNlbmRpZgogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBvcHRpb25zOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3B0
aW9ucyk7CiB9CiAKIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoRXhlY1N0YXRlJiBl
eGVjLCBkb3VibGUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNzU5N2JkNzFi
NzY0MDY2NThmMzE0MDNkNGE0YzVkNWYzMmJiYjM1OC4uMmFlOGIwNjdlYmVkOWQ5YzYyYTBmMWJm
ZmVjMzgyMmRhZmI1YmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcApAQCAtMTI0LDggKzEy
NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEV4CiAgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVz
dGVkTG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3Vw
cG9ydGVkTG9jYWxlcygqc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IHN0YXRlLT5hcmd1bWVudCgxKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCBy
ZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKIHZvaWQgSW50bFBs
dXJhbFJ1bGVzQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCmluZGV4IDBjYzk1ZDdmZmI3MTlmOTQz
NTVlNTI5YTAyNDFiNjhiMGYzMDYxNWQuLjkyYTQzNjdlZjMxODQ2MmMwYWUwMGEwNDk2ZDI5ZWQ1
MjJmYWExNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcApAQCAtOTIsOCArOTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNTZWxlY3Qo
RXhlY1N0YXRlKiBzdGF0ZQogICAgIGRvdWJsZSB2YWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b051bWJlcihzdGF0ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KCpzdGF0ZSwgdmFsdWUpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+c2VsZWN0KCpzdGF0
ZSwgdmFsdWUpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQpAQCAt
MTA4LDggKzEwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhCiAgICAgaWYgKCFwbHVyYWxS
dWxlcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUGx1cmFs
UnVsZXMiX3MpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnJlc29sdmVk
T3B0aW9ucygqc3RhdGUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCBhOWUxZTU0NDQyMDIyZjUzNjg1NDUy
YjYzNzg4NTg0NTUyZTU1MTdhLi43NThmZmEyY2ZiZDAxNjBlMTg0M2UxZGViNGQxNzY3NzM0ZGM4
N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtMjUz
LDEyICsyNTMsMTAgQEAgYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZQogICAgICAgICAvLyBlLmkuIFNl
dCBvbGRMZW5EZXNjLltbVmFsdWVdXSB0byBpbmRleCArIDEuCiAgICAgICAgIC8vIGUuaWkuIENh
bGwgdGhlIGRlZmF1bHQgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCAoOC4x
Mi45KSBvbiBBIHBhc3NpbmcgImxlbmd0aCIsIG9sZExlbkRlc2MsIGFuZCBmYWxzZSBhcyBhcmd1
bWVudHMuIFRoaXMgY2FsbCB3aWxsIGFsd2F5cyByZXR1cm4gdHJ1ZS4KICAgICAgICAgLy8gZi4g
UmV0dXJuIHRydWUuCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGFy
cmF5LT5kZWZpbmVPd25JbmRleGVkUHJvcGVydHkoZXhlYywgaW5kZXgsIGRlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcnJheS0+
ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KGV4ZWMsIGluZGV4LCBkZXNjcmlwdG9yLCB0aHJvd0V4
Y2VwdGlvbikpOwogICAgIH0KIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYXJy
YXktPkpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYXJyYXktPkpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAogYm9vbCBKU0Fy
cmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yODMs
OCArMjgxLDcgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmEKICAgICBKU0FycmF5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNW
YWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZXhlYywg
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5p
c1N0cmljdE1vZGUoKSkpOwogICAgIH0KIAogICAgIHRoaXNPYmplY3QtPmVuc3VyZVdyaXRhYmxl
KHZtKTsKQEAgLTMwMCwxMiArMjk3LDEwIEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhCiAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3MpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiB0aGlz
T2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0aGlzT2JqZWN0LT5zZXRMZW5ndGgo
ZXhlYywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgfQogCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNPYmplY3Q6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KSk7CiB9CiAKIGJvb2wgSlNBcnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC01ODksMTAgKzU4
NCw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
bmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uCiAgICAgICAgIGlmICghbmV3TGVuZ3RoKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChuZXdMZW5ndGggPj0gTUlOX1NQ
QVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAg
ICAgICAgICAgZXhlYywgbmV3TGVuZ3RoLCB0aHJvd0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAg
ICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKKyAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0
b3JhZ2Uodm0pKSk7CiAgICAgICAgIH0KICAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZCh2
bSwgbmV3TGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MTUsMTAgKzYwOSw5IEBA
IGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbmV3TGVu
Z3RoLCBib29sIHRocm93RXhjZXB0aW9uCiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIIC8vIFRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGNhbiBkbyBm
YXN0IHB1c2guCiAgICAgICAgICAgICB8fCAobmV3TGVuZ3RoID49IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVgKICAgICAgICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5n
dGgsIGNvdW50RWxlbWVudHMoKSkpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAg
ICAgICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFy
cmF5U3RvcmFnZSh2bSkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobmV3TGVuZ3RoID4gYnV0
dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSkgewogICAgICAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgo
dm0sIG5ld0xlbmd0aCkpIHsKQEAgLTY0OCw4ICs2NDEsNyBAQCBib29sIEpTQXJyYXk6OnNldExl
bmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2Vw
dGlvbgogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgcmV0dXJuIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgbmV3TGVuZ3Ro
LCB0aHJvd0V4Y2VwdGlvbiwgYXJyYXlTdG9yYWdlKCkpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgbmV3TGVuZ3RoLCB0
aHJvd0V4Y2VwdGlvbiwgYXJyYXlTdG9yYWdlKCkpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQ1JBU0goKTsKQEAgLTEwOTMsOCArMTA4NSw3IEBAIGJvb2wgSlNBcnJheTo6dW5z
aGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0
YXJ0SW5kCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBhcnJheSB0
byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAgICAgICAvLyBvbmx5
IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRMZW5ndGggLSBzdGFy
dEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdl
KGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdW5zaGlmdENvdW50V2l0aEFycmF5U3Rv
cmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNo
ZWNrZWRMZW5ndGgob2xkTGVuZ3RoKTsKQEAgLTExMTcsOCArMTEwOCw3IEBAIGJvb2wgSlNBcnJh
eTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIHN0YXJ0SW5kCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0aDsgaS0tID4g
c3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGJ1dHRlcmZseS0+Y29udGln
dW91cygpLmF0KHRoaXMsIGkpLmdldCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2KSkg
ewotICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwg
ZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgs
IGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtMTE0Niw4ICsxMTM2LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRo
QW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmQKICAgICAg
ICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1bnNo
aWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBub3Qg
aG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0gTUlO
X1NQQVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJ
bmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOworICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0
YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZExlbmd0aChv
bGRMZW5ndGgpOwpAQCAtMTE3MCw4ICsxMTU5LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291
bnRXaXRoQW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmQK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFydEluZGV4Oykg
ewogICAgICAgICAgICAgZG91YmxlIHYgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5h
dCh0aGlzLCBpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh2ICE9IHYpKSB7Ci0gICAgICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0
Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJh
eVN0b3JhZ2Uodm0pKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVu
c3VyZUFycmF5U3RvcmFnZSh2bSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0x
MTkxLDggKzExNzksNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGlu
Z1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZAogICAgICAgICAKICAgICBj
YXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHVuc2hp
ZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGFycmF5U3Rv
cmFnZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBhcnJheVN0b3JhZ2UoKSkp
OwogICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNw
cAppbmRleCAyODgxMWNjNTA3OTE3YTBiM2JhMDE5N2MzMzc3NmQ4M2U2YzY1ZGViLi42YzBiOTcx
MDViN2U3NzE5Njk3YjU0MjFhMjYzNmYxYTRhZjJlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAt
ODIsOSArODIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1
ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YQogICAgIGlmICh0aGlzT2JqZWN0
LT5pc1NoYXJlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBub3QgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsKIAot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIodGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCkt
PmJ5dGVMZW5ndGgoKSkpKTsKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFzY3Jp
cHRfc2hhcmVkbWVtL3NobWVtLmh0bWwjU3RydWN0dXJlZERhdGEuU2hhcmVkQXJyYXlCdWZmZXIu
cHJvdG90eXBlLmdldF9ieXRlTGVuZ3RoCkBAIC0xMDIsOSArMTAwLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoKEUKICAgICBpZiAoIXRoaXNPYmplY3QtPmlzU2hhcmVkKCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
c2hhcmVkIGFycmF5IGJ1ZmZlciJfcyk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxl
bmd0aCgpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIodGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpzX2luZm8gPSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAppbmRleCA1MDk1NzM1MGJm
ZGRkZDM0MTVmYWIyMTBlN2MwNjg3MjcwZTdkNGE1Li4xNjliZWQyYmFiNmQzNWNlOGI2NjJjZWEx
OWYxNTBhMmQ2NDBlNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlJbmxpbmVzLmgKQEAgLTEwMCw4ICsxMDAsNyBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSB0
b0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCiAKICAgICBKU1ZhbHVlIGxl
bmd0aFZhbHVlID0gb2JqLT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBQTmFOKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIGxlbmd0aFZhbHVlLnRvTGVuZ3RoKGV4ZWMpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgbGVuZ3RoVmFsdWUudG9MZW5ndGgoZXhlYykpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHZvaWQgSlNBcnJheTo6cHVzaElubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5k
RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0
aW9uLmNwcAppbmRleCAyY2JkYjkzNWM1MmU0NWQ1NjIyZTZlNzYzZmE1MTI3YjNhOWFlYTY2Li5m
ZjQ5ZWFmYjkwZjcwNTNlYTQ3MTcyNmVkYzQ3NmVlNmZlNTExMDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTc5LDggKzc5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgYm91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdl
dEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygp
LCBhcmdzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05v
QXJnc0Z1bmN0aW9uQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyMyw4ICsxMjIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjKQogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25z
dHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5j
dGlvbiwgY29uc3RydWN0RGF0YSk7CiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3Ry
dWN0VHlwZTo6Tm9uZSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhLCBhcmdzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBl
LCBjb25zdHJ1Y3REYXRhLCBhcmdzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGlzQm91bmRGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IDk2ODE5NjJlYWQyMGNhODNkZGEzOTI1
Mjg4NWIxNzAzMTc5ZDVlYjYuLmRkNGI0ZmZiNWFhNWQ3ZmE4NjFlMTJlOTU0MjEzOTUwM2ZlMzU4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBA
IC0xNTMsOCArMTUzLDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGlu
ZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKICAgICB9CiAKICAgICAvLyBDaGVj
ayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNo
YWluCkBAIC0xODIsOCArMTgxLDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKIAogICAgICAg
ICAgICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7CiAgICAgICAgICAgICBp
ZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZh
bHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFNldHRlcihleGVj
LCAqdGhpcywgZ3MsIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5v
dFN0cmljdE1vZGUpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGdzLmlzQ3Vz
dG9tR2V0dGVyU2V0dGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBiODg1ZGFmOTE5MzliMDYyYTYxNjBjYTg3NmZmYjcz
YjhkNzVjMWZiLi42N2Y2NzEwZjA2ZjE2NjkzYWRjNDkyYWJlMjM3YmE4NTRkODY2YzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
QEAgLTc0LDggKzc0LDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0CiAKICAgICBpZiAoaXNJbnQz
MigpKQogICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gSlNDOjp0b0ludDMyKGQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNDOjp0b0ludDMyKGQpKTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVSW50MzIoKSBj
b25zdApAQCAtNjQ4LDE4ICs2NDcsMTUgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTVmFs
dWU6OnRvUHJvcGVydHlLZXkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChpc1N0cmluZygpKSB7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGFzU3RyaW5nKCp0aGlzKS0+dG9J
ZGVudGlmaWVyKGV4ZWMpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3Ry
aW5nKCp0aGlzKS0+dG9JZGVudGlmaWVyKGV4ZWMpKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIHBy
aW1pdGl2ZSA9IHRvUHJpbWl0aXZlKGV4ZWMsIFByZWZlclN0cmluZyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAg
ICBpZiAocHJpbWl0aXZlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZChhc1N5bWJvbChwcmltaXRpdmUpLT5w
cml2YXRlTmFtZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBJZGVudGlm
aWVyOjpmcm9tVWlkKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1lKCkpKTsKICAgICB9
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBwcmltaXRpdmUudG9TdHJpbmcoZXhl
YyktPnRvSWRlbnRpZmllcihleGVjKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBy
aW1pdGl2ZS50b1N0cmluZyhleGVjKS0+dG9JZGVudGlmaWVyKGV4ZWMpKTsKIH0KIAogaW5saW5l
IEpTVmFsdWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CkBAIC04NDMsOCArODM5LDcgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFAKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCAhaGFzU2xvdCk7CiAgICAgaWYgKCFoYXNTbG90KQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNs
b3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENhbGxiYWNrV2hlbk5vRXhjZXB0aW9uPgpAQCAtODYwLDggKzg1NSw3IEBAIEFMV0FZU19JTkxJ
TkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oYm9vbCwg
UHJvcGVydHlTbG90CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgYm9vbCBmb3VuZCA9IGdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjYWxsYmFjayhmb3VuZCwgc2xvdCk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsYmFjayhmb3VuZCwgc2xvdCkpOwogfQogCiBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdApAQCAt
ODg0LDggKzg3OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpnZXRQcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgfSBlbHNlCiAgICAg
ICAgIG9iamVjdCA9IGFzT2JqZWN0KGFzQ2VsbCgpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wg
SlNWYWx1ZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KSBjb25zdApAQCAtODk1LDE1ICs4ODgs
MTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmdldE93blByb3BlcnR5U2xvdChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWlzT2JqZWN0KCkpKSB7
CiAgICAgICAgIGlmIChpc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoKnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgYXNTdHJpbmcoKnRoaXMpLT5nZXRTdHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
Tm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYXNPYmplY3QoYXNDZWxsKCkp
LT5nZXRPd25Qcm9wZXJ0eVNsb3RJbmxpbmUoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzT2JqZWN0KGFzQ2VsbCgpKS0+Z2V0T3duUHJv
cGVydHlTbG90SW5saW5lKGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQogCiBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lKSBjb25zdApAQCAtOTIzLDggKzkxNCw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFBy
b3BlCiAgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gYXNTdHJpbmcoKnRoaXMpLT5nZXRT
dHJpbmdQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoaGFzUHJv
cGVydHkpIHsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVy
dHlOYW1lKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgb2JqZWN0ID0gc3lu
dGhlc2l6ZVByb3RvdHlwZShleGVjKTsKQEAgLTkzOCw4ICs5MjgsNyBAQCBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlO
YW1lLCBQcm9wZQogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFo
YXNTbG90KTsKICAgICBpZiAoIWhhc1Nsb3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2xvdC5nZXRWYWx1
ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3QKQEAg
LTEwMDYsOCArOTk1LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nh
c2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1YKICAgICAgICAgYm9vbCBz
MSA9IHYxLmlzU3RyaW5nKCk7CiAgICAgICAgIGJvb2wgczIgPSB2Mi5pc1N0cmluZygpOwogICAg
ICAgICBpZiAoczEgJiYgczIpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgICAgIHJldHVybiBhc1N0cmluZyh2MSktPmVxdWFsKGV4ZWMsIGFzU3RyaW5nKHYyKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKHYxKS0+ZXF1YWwo
ZXhlYywgYXNTdHJpbmcodjIpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodjEuaXNCaWdJ
bnQoKSAmJiBzMikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAppbmRleCBhN2Y1N2NlNWI0Yzk0YmE1NTgyNzVjZDBkNzEyYTRiNDZlYzM1MDQzLi44ZDkw
OGMwNmZlMmM4MWJhZTZjYjkzOGIwOWIxY2JjNTBmMmI4YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtMTI4LDE2ICsxMjgsMTQgQEAgYm9v
bCBKU0RhdGFWaWV3OjpwdXQoCiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0RhdGFWaWV3Kj4oY2VsbCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVk
KHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3Qs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2Rl
KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
PmJ5dGVMZW5ndGgKICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMt
PmJ5dGVPZmZzZXQpCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBh
cnJheSBwcm9wZXJ0eS4iX3MpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBC
YXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlZmlu
ZU93blByb3BlcnR5KApAQCAtMTUxLDggKzE0OSw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5l
T3duUHJvcGVydHkoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5ieXRlT2Zmc2V0KQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91
bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9w
ZXJ0eS4iX3MpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpkZWZp
bmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHNob3VsZFRocm93KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmlu
ZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
c2hvdWxkVGhyb3cpKTsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9wZXJ0eSgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNTE0M2Y3
ZTYxM2JkMzgwYjI0ODQwODk0NjRmMDJkMmI3OWViNWJkYi4uYWNlOTdiZjRiMzMxZGVjMTY0ZTFj
OGU0ZGU2ZmRiNDM2ODZlNzg4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKQEAgLTQ5OCwxNiArNDk4LDE0IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Vs
bCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmpl
Y3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBvcmRpbmFy
eVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlz
VmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKICAgICB9CiAK
ICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICBQcm9wZXJ0eVN0YXR1cyBwcm9wZXJ0eVR5cGUgPSB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9w
ZXJ0eUZvckhvc3RPckJ1aWx0aW5JZk5lZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgaWYgKGlzTGF6eShwcm9wZXJ0eVR5cGUpKQogICAgICAgICAgICAgc2xvdC5kaXNhYmxl
Q2FjaGluZygpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICB9CiAKICAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSkgewpAQCAtNTE4LDE0ICs1MTYsMTIg
QEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBnZXRTbG90KTsKICAgICAgICAgaWYgKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpCiAgICAgICAg
ICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHBy
b3BlcnR5IG9mIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikgewogICAgICAgICBpZiAoIXRoaXNP
YmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkp
IHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgICAgIH0KICAgICAgICAgc2xv
dC5kaXNhYmxlQ2FjaGluZygpOwogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBzbG90LmlzU3RyaWN0TW9kZSgpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CkBAIC01
MzMsOCArNTI5LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEoKICAgICBQcm9wZXJ0eVN0YXR1
cyBwcm9wZXJ0eVR5cGUgPSB0aGlzT2JqZWN0LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKHZt
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChpc0xhenkocHJvcGVydHlUeXBlKSkKICAg
ICAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9u
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKQEAgLTU2Nyw4ICs1NjIsNyBAQCBib29sIEpTRnVuY3Rpb246OmRl
ZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYQogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9i
amVjdCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsK
ICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlGb3JIb3N0T3JCdWlsdGluSWZO
ZWVkZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpIHsKQEAgLTU3
OCwyNyArNTcyLDIzIEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hCiAgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRh
KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHBy
b3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CiAgICAgfQogCiAg
ICAgYm9vbCB2YWx1ZUNoZWNrOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+YXJndW1lbnRzKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxl
KCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkgewotICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2Vw
dGlvbikpOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlQ2hlY2sgPSAhZGVzY3JpcHRvci52YWx1
ZSgpIHx8IHNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHJldHJpZXZlQXJndW1l
bnRzKGV4ZWMsIHRoaXNPYmplY3QpKTsKICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIpIHsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5qc0V4
ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7Ci0gICAgICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3du
UHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWVDaGVjayA9ICFkZXNjcmlw
dG9yLnZhbHVlKCkgfHwgc2FtZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgcmV0cmll
dmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqZWN0KSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZXhlYywgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHRocm93RXhjZXB0aW9uKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAgICAgIAogICAgIGlmIChkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggMjc5YTc4MWNh
ZmExNTUxOWYyNTE0ZTQ3OGVhMDFmZWExYTdlNGNjNy4uODVhNzY0YWZmYjFmMGY0OTNkOTk5OGY0
Y2Y5ZTY3ZDRmODY0NGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCkBAIC0xMzMsOCArMTMzLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QK
ICAgICAgICAgICAgIGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBW
aWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogICAgICAgICB9CiAKLSAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBX
VEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVm
ZmVyKSwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAgICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxl
bmd0aE9wdCk7CiAgICAgCkBAIC0xNzEsOCArMTcwLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywg
U3QKICAgICAgICAgICAgICAgICAgICAgfHwgbGVuZ3RoU2xvdC5pc0FjY2Vzc29yKCkgfHwgbGVu
Z3RoU2xvdC5pc0N1c3RvbSgpIHx8IGxlbmd0aFNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3Qo
KQogICAgICAgICAgICAgICAgICAgICB8fCBoYXNBbnlBcnJheVN0b3JhZ2Uob2JqZWN0LT5pbmRl
eGluZ1R5cGUoKSkpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
RnJvbUl0ZXJhdG9yPFZpZXdDbGFzcz4oZXhlYywgc3RydWN0dXJlLCBvYmplY3QsIGl0ZXJhdG9y
RnVuYyk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0ZXJhdG9yPFZpZXdDbGFzcz4oZXhlYywg
c3RydWN0dXJlLCBvYmplY3QsIGl0ZXJhdG9yRnVuYykpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAobGVuZ3RoU2xvdC5pc1Vuc2V0KCkpCkBAIC0yMDAsOCArMTk4LDcgQEAgaW5s
aW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
KEV4ZWNTdGF0ZSogZXhlYywgU3QKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUu
dG9JbmRleChleGVjLCAibGVuZ3RoIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBWaWV3Q2xhc3M6OmNy
ZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCkpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkBAIC0yMjEsOCArMjE4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQuIl9zKTsKIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCAwKSk7Cisg
ICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFz
czo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGZp
cnN0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTI0Nyw4ICsyNDMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPFZpZXdDbGFzcz4oZXhlYywgc3RydWN0dXJlLCBKU1ZhbHVl
OjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxWaWV3Q2xhc3M+KGV4ZWMsIHN0cnVjdHVyZSwgSlNWYWx1ZTo6ZW5j
b2RlKGZpcnN0VmFsdWUpLCBvZmZzZXQsIGxlbmd0aCkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA1YjJkMWZiZTU4
N2JkM2QyZWE0ODkyNzc0NGYzOGFjMzE5MDg4ZjZmLi5jYTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2
ZDdlMTRjNmY4NzkyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMjYyLDQx
ICsyNjIsMzIgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0KAog
ICAgIAogICAgIHN3aXRjaCAoY2ktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewogICAgIGNhc2Ug
VHlwZUludDg6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNldFdp
dGhTcGVjaWZpY1R5cGU8SW50OEFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBq
c0Nhc3Q8SlNJbnQ4QXJyYXkqPihvYmplY3QpLCBvYmplY3RPZmZzZXQsIGxlbmd0aCwgdHlwZSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2V0V2l0aFNwZWNpZmljVHlwZTxJ
bnQ4QWRhcHRvcj4oCisgICAgICAgICAgICBleGVjLCBvZmZzZXQsIGpzQ2FzdDxKU0ludDhBcnJh
eSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2FzZSBUeXBl
SW50MTY6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNldFdpdGhT
cGVjaWZpY1R5cGU8SW50MTZBZGFwdG9yPigKLSAgICAgICAgICAgIGV4ZWMsIG9mZnNldCwganND
YXN0PEpTSW50MTZBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lmaWNUeXBlPElu
dDE2QWRhcHRvcj4oCisgICAgICAgICAgICBleGVjLCBvZmZzZXQsIGpzQ2FzdDxKU0ludDE2QXJy
YXkqPihvYmplY3QpLCBvYmplY3RPZmZzZXQsIGxlbmd0aCwgdHlwZSkpOwogICAgIGNhc2UgVHlw
ZUludDMyOgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRXaXRo
U3BlY2lmaWNUeXBlPEludDMyQWRhcHRvcj4oCi0gICAgICAgICAgICBleGVjLCBvZmZzZXQsIGpz
Q2FzdDxKU0ludDMyQXJyYXkqPihvYmplY3QpLCBvYmplY3RPZmZzZXQsIGxlbmd0aCwgdHlwZSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2V0V2l0aFNwZWNpZmljVHlwZTxJ
bnQzMkFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNJbnQzMkFy
cmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5ndGgsIHR5cGUpKTsKICAgICBjYXNlIFR5
cGVVaW50ODoKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gc2V0V2l0
aFNwZWNpZmljVHlwZTxVaW50OEFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBq
c0Nhc3Q8SlNVaW50OEFycmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5ndGgsIHR5cGUp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNldFdpdGhTcGVjaWZpY1R5cGU8
VWludDhBZGFwdG9yPigKKyAgICAgICAgICAgIGV4ZWMsIG9mZnNldCwganNDYXN0PEpTVWludDhB
cnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2FzZSBU
eXBlVWludDhDbGFtcGVkOgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVy
biBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQ4Q2xhbXBlZEFkYXB0b3I+KAotICAgICAgICAgICAg
ZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+KG9iamVjdCksIG9iamVj
dE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQ4Q2xhbXBlZEFkYXB0b3I+KAorICAgICAgICAgICAg
ZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+KG9iamVjdCksIG9iamVj
dE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2FzZSBUeXBlVWludDE2OgotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQx
NkFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50MTZBcnJh
eSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQxNkFkYXB0b3I+KAor
ICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50MTZBcnJheSo+KG9iamVjdCks
IG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2FzZSBUeXBlVWludDMyOgotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRXaXRoU3BlY2lmaWNUeXBl
PFVpbnQzMkFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50
MzJBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQzMkFkYXB0
b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50MzJBcnJheSo+KG9i
amVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2FzZSBUeXBlRmxvYXQz
MjoKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gc2V0V2l0aFNwZWNp
ZmljVHlwZTxGbG9hdDMyQWRhcHRvcj4oCi0gICAgICAgICAgICBleGVjLCBvZmZzZXQsIGpzQ2Fz
dDxKU0Zsb2F0MzJBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lmaWNUeXBlPEZs
b2F0MzJBZGFwdG9yPigKKyAgICAgICAgICAgIGV4ZWMsIG9mZnNldCwganNDYXN0PEpTRmxvYXQz
MkFycmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5ndGgsIHR5cGUpKTsKICAgICBjYXNl
IFR5cGVGbG9hdDY0OgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBz
ZXRXaXRoU3BlY2lmaWNUeXBlPEZsb2F0NjRBZGFwdG9yPigKLSAgICAgICAgICAgIGV4ZWMsIG9m
ZnNldCwganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5n
dGgsIHR5cGUpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNldFdpdGhTcGVj
aWZpY1R5cGU8RmxvYXQ2NEFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nh
c3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpLCBvYmplY3RPZmZzZXQsIGxlbmd0aCwgdHlwZSkp
OwogICAgIGNhc2UgTm90VHlwZWRBcnJheToKICAgICBjYXNlIFR5cGVEYXRhVmlldzogewogICAg
ICAgICBib29sIHN1Y2Nlc3MgPSB2YWxpZGF0ZVJhbmdlKGV4ZWMsIG9mZnNldCwgbGVuZ3RoKTsK
QEAgLTQxNCwxNCArNDA1LDEyIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OmRlZmluZU93blByb3BlcnR5KAogCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkp
IHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCB1bnVzZWQoSlNWYWx1ZSh0aGlzT2JqZWN0
KSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IudmFsdWUoKSwgdW51c2VkKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdGhpc09iamVjdC0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvci52YWx1ZSgpLCB1bnVzZWQpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHNob3VsZFRocm93KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IDdj
OWU2Y2U5NmZhMzg0ZTJmMWJiZjBlOGU3YmVhY2RmNjFiMWU3NjQuLjYxNzc3YWEwYjQ5ZWU5OTFi
NzY2MDczMTllZmEzMzBmZWFlMTc0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTIsOCArNTIsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZl
clZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXhlbXBs
YXIsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICBpZiAo
Y29uc3RydWN0b3IuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3IoKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBkZWZhdWx0Q29uc3RydWN0b3IoKSk7CiAgICAgfQogICAgIGlmICghY29u
c3RydWN0b3IuaXNPYmplY3QoKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCJfcyk7CkBAIC02NCw4
ICs2Myw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBleGVtcGxhciwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKIAogICAgIGlmIChzcGVjaWVzLmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0
cnVjdG9yKCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdENvbnN0
cnVjdG9yKCkpOwogICAgIH0KIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY29uc3RydWN0KGV4ZWMs
IHNwZWNpZXMsIGFyZ3MsICJzcGVjaWVzIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CkBAIC0yNzks
OCArMjc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgRXhlY1N0YXQKICAgICAgICAgICAgIGpvaW5lci5h
cHBlbmQoKmV4ZWMsIHRoaXNPYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICAgICAg
fQotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoam9pbmVyLmpvaW4oKmV4ZWMpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmV4ZWMpKSk7CiAgICAgfTsKIAogICAgIEpT
VmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKQEAgLTU1MywxMSArNTUw
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAgICAgaWYgKHNwZWNpZXMgPT0gZGVmYXVs
dENvbnN0cnVjdG9yKSB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5n
bG9iYWxPYmplY3Qodm0pLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKTsKIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRlKAogICAgICAg
ICAgICAgZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKGFycmF5QnVmZmVyKSwKICAgICAgICAgICAg
IHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQoKSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNp
emUsCi0gICAgICAgICAgICBsZW5ndGgpKTsKKyAgICAgICAgICAgIGxlbmd0aCkpKTsKICAgICB9
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDMzNjNkZGU1ODU4YjlkNTk2
NThmMjU1NzI1NjUxODBjNmQ2ODU2MzkuLjI2YWI2NDUwOGZmODI2YThkYzY0ZmMzYzc5NDYxMzZk
YmZiMGQ0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTEwOTgsOCArMTA5OCw3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnB1
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBI
ZWFwOjpoZWFwKHRoaXNPYmplY3QpKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFs
dGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmlj
dE1vZGUoKSkpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yID0g
c2xvdC5pc1N0cmljdE1vZGUoKTsKQEAgLTExMDksOCArMTEwOCw3IEBAIGJvb2wgSlNHbG9iYWxP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtCiAgICAgRVhDRVBUSU9OX0FTU0VSVCgoISFzY29wZS5leGNlcHRpb24oKSA9PSAo
ZG9uZSAmJiAhcHV0UmVzdWx0KSkgfHwgIXNob3VsZFRocm93UmVhZE9ubHlFcnJvcik7CiAgICAg
aWYgKGRvbmUpCiAgICAgICAgIHJldHVybiBwdXRSZXN1bHQ7Ci0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIEpT
R2xvYmFsT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRl
eCA4ODJhZjk3ZjJjMDU1NmVkMzhjNDk5OTU4NGY4MDBiMGU3YzI1MDI4Li5lYWYxMzBlMTBkZjhk
MjE0MTgxMjc4OTBjMjZkYWI4MWI4YWNmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0yMjks
OCArMjI5LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Q2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGMKICAgICAgICAgaysrOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChjKTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSkpOwogfQogCiBz
dGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBCaXRtYXA8MjU2PiYg
ZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCkBAIC01MDQsOCArNTAzLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKCFldmFsKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLmludGVycHJldGVyLT5l
eGVjdXRlKGV2YWwsIGV4ZWMsIGNhbGxlZUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCBjYWxs
ZWVHbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZSh2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBleGVj
LCBjYWxsZWVHbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSwgY2FsbGVlR2xvYmFsT2JqZWN0LT5n
bG9iYWxTY29wZSgpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNQYXJzZUludChFeGVjU3RhdGUqIGV4ZWMpCkBAIC03MTQsOCArNzEyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb3RvdHlwZSk7CiAgICAgfQog
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09i
amVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRl
cihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0ludGVybmFsUHJvbWlzZS5jcHAKaW5kZXggMTJmNTI5NDVmMzJlMTdiYWQ3NjY0NzNhOGI5
Nzg0MTI2YWQ5OGM5Mi4uNTI4ZDdjMmVhN2ZmYTdjY2YwNzFiNTQyOTEyZTUyYTFiMWIyOTEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9t
aXNlLmNwcApAQCAtNjYsOCArNjYsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFBy
b21pc2U6OnRoZW4oRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9uKiBvbkZ1bGZpbAogICAgIGFy
Z3VtZW50cy5hcHBlbmQob25SZWplY3RlZCA/IG9uUmVqZWN0ZWQgOiBqc1VuZGVmaW5lZCgpKTsK
ICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAppbmRleCA1MDUwNjM0OTdhMjJiMjAwZTk5
M2IwY2ZlYWJkMzYzY2NlOGU0N2RhLi44Y2IwZTVmNWQyZmFmZGYwN2MyMTY3MGNiMzdmMDZmYTE5
MzE3YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50LmNwcApAQCAtMTIzLDggKzEyMyw3IEBAIGJvb2wgSlNNb2R1bGVFbnZp
cm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVyCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQog
CiBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDQ1NTM4Mjkw
MzlmN2EwM2FkODJiMmYyZmU3MzJkMzExZWE2MGE5ODkuLmVjMGE1ZjRmY2UwOTVlZGI1NjU3YThl
MzNlOWVlNTc4YWNmM2QzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTEzOCw4ICsxMzgsNyBAQCBKU1ZhbHVlIEpTTW9kdWxl
TG9hZGVyOjpwcm92aWRlRmV0Y2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgY29uc3Qg
U291cmNlQwogICAgIGFyZ3VtZW50cy5hcHBlbmQoSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFdU
Rk1vdmUoc291cmNlKSkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7
CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
cywgYXJndW1lbnRzKSk7CiB9CiAKIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6
bG9hZEFuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1l
LCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAgLTE1OSw4ICsx
NTgsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0
ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgIGFyZ3VtZW50cy5hcHBlbmQoc2Ny
aXB0RmV0Y2hlcik7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKIAot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNl
Kj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVu
dHMpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxKU0ludGVybmFsUHJv
bWlzZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJn
dW1lbnRzKSkpOwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRN
b2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1l
dGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMTgwLDggKzE3OCw3IEBAIEpTSW50ZXJu
YWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbW9kdWxlTmFtCiAgICAgYXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9CiAK
IEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgbW9kdWxlS2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMDAs
OCArMTk3LDcgQEAgSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVLZXkKICAgICBhcmd1bWVudHMuYXBwZW5k
KHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7
CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
cywgYXJndW1lbnRzKSk7CiB9CiAKIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6
cmVxdWVzdEltcG9ydE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZUtleSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0y
MjEsOCArMjE3LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0
SW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWQKICAgICBhcmd1bWVudHMuYXBw
ZW5kKHNjcmlwdEZldGNoZXIpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQo
KSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzQ2FzdDxKU0ludGVybmFs
UHJvbWlzZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNJbnRl
cm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRo
aXMsIGFyZ3VtZW50cykpKTsKIH0KIAogSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjppbXBvcnRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogbW9kdWxlTmFtZSwgSlNW
YWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKQpAQCAtMzMzLDgg
KzMyOCw3IEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Z2V0TW9k
dWxlTmFtZXNwYWNlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gbW9kdWxlUmVjb3Jk
LT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBtb2R1bGVSZWNvcmQtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTM5Niw4ICszOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBtb2R1bGVSZWNv
cmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIW1vZHVsZVJlY29yZCkgewotICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCBudWxscHRyKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpKTsKICAgICB9CiAK
ICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIs
IG1vZHVsZVJlY29yZC0+cmVxdWVzdGVkTW9kdWxlcygpLnNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDc0MDRlNzE0MGRkZGEzODIw
Y2IzYzAwOGQ3ZDA1ZjI0MWRlZDgzN2EuLjI5OTg3MDJjMjViZjQ3NjZhMjBhZDY0M2YzNzQ5NjFi
OGRiYzQ5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCkBAIC0yODAsOCArMjgwLDcgQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6c3RyaW5naWZ5KEpT
VmFsdWUgdmFsdWUpCiAgICAgaWYgKFVOTElLRUxZKHN0cmluZ2lmeVJlc3VsdCAhPSBTdHJpbmdp
ZnlTdWNjZWVkZWQpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4ganNTdHJpbmcobV9leGVjLCByZXN1bHQudG9TdHJpbmco
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhtX2V4ZWMsIHJlc3Vs
dC50b1N0cmluZygpKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6
dG9KU09OKEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2Fs
bCYgcHJvcGVydHlOYW1lKQpAQCAtMjk4LDggKzI5Nyw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBTdHJpbmdpZmllcjo6dG9KU09OKEpTT2JqZWN0KiBvYmplY3QsIGNvbnN0IFByb3BlcnR5TmFt
ZUZvCiAKICAgICBKU1ZhbHVlIHRvSlNPTkZ1bmN0aW9uID0gc2xvdC5nZXRWYWx1ZShtX2V4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPnRvSlNPTik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHRvSlNPTkltcGwodm0s
IG9iamVjdCwgdG9KU09ORnVuY3Rpb24sIHByb3BlcnR5TmFtZSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCB0b0pTT05JbXBsKHZtLCBvYmplY3QsIHRvSlNPTkZ1bmN0aW9uLCBwcm9w
ZXJ0eU5hbWUpKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QsIEpTVmFsdWUgdG9KU09ORnVuY3Rpb24sIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQpAQCAtNzc4LDggKzc3Niw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoZmluYWxIb2xkZXIpOwogICAgIGZpbmFsSG9sZGVyLT5tZXRo
b2RUYWJsZSh2bSktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
bXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gY2FsbFJldml2
ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9leGVjKSwgb3V0VmFsdWUpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbFJldml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlT
dHJpbmcobV9leGVjKSwgb3V0VmFsdWUpKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMgpA
QCAtODM2LDggKzgzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3Rv
RnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJObyBpbnB1dCB0byBzdHJpbmdpZnki
X3MpKTsKICAgICBTdHJpbmdpZmllciBzdHJpbmdpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgx
KSwgZXhlYy0+YXJndW1lbnQoMikpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3Ry
aW5naWZpZXIuc3RyaW5naWZ5KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3RyaW5naWZpZXIuc3RyaW5n
aWZ5KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpOwogfQogCiBKU1ZhbHVlIEpTT05QYXJz
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA1OWNmYjZkZGJmNTg0YzMyMTBiODFjNmMx
Njg5MDA5ODliYTkzNzdmLi44MWY1ZmFhZjY4YmFmOGE3Y2Q4NTE1YjhiM2ZkZjUxNzU0Y2RhOTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC02NTcs
OCArNjU3LDcgQEAgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW0KICAgICAgICAgaWYgKGN1cnJlbnQt
PnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUgJiYgcHJvcGVydHlOYW1lICE9IHZtLnByb3BlcnR5
TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewogICAgICAgICAgICAgUHJveHlPYmplY3QqIHByb3h5
ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY3VycmVudCk7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5Qcm94eU9iamVjdDo6cHV0KHByb3h5
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgcHJveHktPlByb3h5T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDkuMS45
LjEtMiBMZXQgb3duRGVzYyBiZSA/IE8uW1tHZXRPd25Qcm9wZXJ0eV1dKFApLgpAQCAtNzE2LDE0
ICs3MTUsMTIgQEAgYm9vbCBvcmRpbmFyeVNldFNsb3coRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW0KICAgICAgICAgICAgIHZhbHVlRGVz
Y3JpcHRvci5zZXRWYWx1ZSh2YWx1ZSk7CiAKICAgICAgICAgICAgIC8vIDkuMS45LjEtNC1kLWl2
IFJldHVybiA/IFJlY2VpdmVyLltbRGVmaW5lT3duUHJvcGVydHldXShQLCB2YWx1ZURlc2MpLgot
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHJlY2VpdmVy
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHJlY2VpdmVyT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlRGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWNlaXZlck9iamVjdC0+bWV0aG9k
VGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShyZWNlaXZlck9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZURlc2NyaXB0b3IsIHNob3VsZFRocm93KSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyA5LjEuOS4xLTQtZSBFbHNlIFJlY2VpdmVyIGRvZXMgbm90IGN1cnJlbnRseSBoYXZl
IGEgcHJvcGVydHkgUCwKICAgICAgICAgLy8gOS4xLjkuMS00LWUtaSBSZXR1cm4gPyBDcmVhdGVE
YXRhUHJvcGVydHkoUmVjZWl2ZXIsIFAsIFYpLgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgICAgIHJldHVybiByZWNlaXZlck9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Q
cm9wZXJ0eShyZWNlaXZlck9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3IodmFsdWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9u
ZSkpLCBzaG91bGRUaHJvdyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVj
ZWl2ZXJPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkocmVjZWl2ZXJP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKSwgc2hvdWxkVGhyb3cp
KTsKICAgICB9CiAKICAgICAvLyA5LjEuOS4xLTUgQXNzZXJ0OiBJc0FjY2Vzc29yRGVzY3JpcHRv
cihvd25EZXNjKSBpcyB0cnVlLgpAQCAtODAzLDggKzgwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlCiAgICAgICAgIGlmICghb2JqLT5zdGF0aWNQcm9wZXJ0aWVzUmVpZmllZCh2bSkpIHsK
ICAgICAgICAgICAgIGlmIChvYmotPmNsYXNzSW5mbyh2bSktPmhhc1N0YXRpY1NldHRlck9yUmVh
ZG9ubHlQcm9wZXJ0aWVzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBlbnRyeSA9IG9i
ai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHZtLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1
dEVudHJ5KGV4ZWMsIGVudHJ5LT50YWJsZS0+Y2xhc3NGb3JUaGlzLCBlbnRyeS0+dmFsdWUsIG9i
aiwgdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0RW50cnkoZXhlYywgZW50cnktPnRhYmxlLT5j
bGFzc0ZvclRoaXMsIGVudHJ5LT52YWx1ZSwgb2JqLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC04MTMsOCArODA5LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gZG8gbW9yZSBiZWNhdXNlIHRoaXMgaXMgb2JzZXJ2YWJsZSBiZWhhdmlvci4K
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUwMTIKICAgICAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KG9iaik7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1
cm4gcHJveHktPlByb3h5T2JqZWN0OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwcm94eS0+
UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkp
OwogICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5
cGUodm0sIGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CkBAIC0yMTQxLDggKzIxMzYsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVAogICAgIGlmICh2
YWx1ZSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiB0aGlzLT5tZXRob2RUYWJsZSh2bSktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBw
cmVmZXJyZWRUeXBlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRoaXMtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVmYXVsdFZhbHVlKHRoaXMsIGV4ZWMsIHByZWZlcnJlZFR5cGUpKTsKIH0K
IAogYm9vbCBKU09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3QKQEAgLTIyMDQsMTIgKzIxOTgsMTAg
QEAgYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlIGhhc0luc3RhbmNlVmEKICAgICBpZiAoaW5mby5pbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKCkpIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnZXQoZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVy
biBkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvdHlwZSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBw
cm90b3R5cGUpKTsKICAgICB9CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkp
IHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUo
dm0pLT5jdXN0b21IYXNJbnN0YW5jZSh0aGlzLCBleGVjLCB2YWx1ZSk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgbWV0aG9kVGFibGUodm0pLT5jdXN0b21IYXNJbnN0YW5jZSh0
aGlzLCBleGVjLCB2YWx1ZSkpOwogICAgIH0KICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKGV4ZWMs
IHRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjIyLDggKzIyMTQsNyBAQCBib29sIEpT
T2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAg
SlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlID0gZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmhh
c0luc3RhbmNlU3ltYm9sKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7
CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGhhc0luc3RhbmNlKGV4ZWMsIHZh
bHVlLCBoYXNJbnN0YW5jZVZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhh
c0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKSk7CiB9CiAKIGJvb2wgSlNP
YmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IEpTVmFsdWUgcHJvdG8pCkBAIC0yMzg0LDggKzIzNzUsNyBAQCBkb3VibGUgSlNPYmplY3Q6OnRv
TnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVj
LCBQcmVmZXJOdW1iZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDAuMCk7IC8v
IHNob3VsZCBiZSBwaWNrZWQgdXAgc29vbiBpbiBOb2Rlcy5jcHAKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIHByaW1pdGl2ZS50b051bWJlcihleGVjKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIHByaW1pdGl2ZS50b051bWJlcihleGVjKSk7CiB9CiAKIEpTU3RyaW5n
KiBKU09iamVjdDo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtMjU0OSw4ICsy
NTM5LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIGNvbnN0IFAKICAgICAgICAgLy8gc3RhdGUgKGkuZS4g
ZGVmaW5lT3duUHJvcGVydHkgY291bGQgYmUgdXNlZCB0byBzZXQgYSB2YWx1ZSB3aXRob3V0IG5l
ZWRpbmcgdG8gZW50ZXJpbmcgJ1NwYXJzZU1vZGUnKS4KICAgICAgICAgaWYgKCFkZXNjcmlwdG9y
LmF0dHJpYnV0ZXMoKSAmJiBkZXNjcmlwdG9yLnZhbHVlKCkgJiYgY2FuRG9GYXN0UHV0RGlyZWN0
SW5kZXgodm0sIHRoaXMpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWRlc2NyaXB0b3IuaXNBY2Nl
c3NvckRlc2NyaXB0b3IoKSk7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGRlc2NyaXB0b3IudmFsdWUo
KSwgMCwgdGhyb3dFeGNlcHRpb24gPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGly
ZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBkZXNjcmlwdG9yLnZhbHVlKCksIDAs
IHRocm93RXhjZXB0aW9uID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdElu
ZGV4U2hvdWxkTm90VGhyb3cpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZW5zdXJl
QXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKQEAg
LTI4MTEsOCArMjgwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAgIH0KICAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQg
dGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCiAg
ICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwotICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWFw
LT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKICAgICB9CiAK
ICAgICAvLyBVcGRhdGUgbV9sZW5ndGggaWYgbmVjZXNzYXJ5LgpAQCAtMjgyOSw4ICsyODE3LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0
b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnMKICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0byB1
c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBiZSB0
b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZhbHVl
c0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7CiAg
ICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0
aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVjdG9yTGVuZ3RoKHZtLCBsZW5ndGgp
KSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50
cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91
bGRUaHJvdykpOwogICAgIH0KIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVh
c2VWZWN0b3JMZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjk1Miw4ICsy
OTM5LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgfQogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvLCBvciBjYW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3Bl
cnR5IC0gYWxsb2NhdGUgYSBzcGFyc2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KICAgICAgICAgbWFw
ID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgcmV0dXJuIG1hcC0+cHV0RGlyZWN0KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBhdHRy
aWJ1dGVzLCBtb2RlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBtYXAtPnB1
dERpcmVjdChleGVjLCB0aGlzLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSkpOwogICAgIH0K
IAogICAgIC8vIFVwZGF0ZSBtX2xlbmd0aCBpZiBuZWNlc3NhcnkuCkBAIC0yOTc0LDggKzI5NjAs
NyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLAogICAgIC8vIFdlIHdpbGwgY29udGludWUgIHRv
IHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBpcyBzZXQsIGEgdmVjdG9yIHdvdWxkIGJl
IHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFpbHMuCiAgICAgdW5zaWduZWQgbnVtVmFs
dWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyBtYXAtPnNpemUoKTsK
ICAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgYXR0cmlidXRlcyB8fCAhaXNEZW5zZUVub3Vn
aEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxl
bmd0aCh2bSwgbGVuZ3RoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJl
dHVybiBtYXAtPnB1dERpcmVjdChleGVjLCB0aGlzLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9k
ZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWFwLT5wdXREaXJlY3QoZXhl
YywgdGhpcywgaSwgdmFsdWUsIGF0dHJpYnV0ZXMsIG1vZGUpKTsKICAgICB9CiAKICAgICAvLyBS
ZXJlYWQgbV9zdG9yYWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9udW1W
YWx1ZXNJblZlY3Rvci4KQEAgLTM2NDUsOCArMzYzMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmlu
ZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOCiAgICAgYm9vbCBpc0N1cnJlbnREZWZpbmVkID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VycmVudCk7CiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0
aGlzLT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJvcGVydHlOYW1lLCBp
c0V4dGVuc2libGUsIGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93
RXhjZXB0aW9uKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGlzRXh0
ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNl
cHRpb24pKTsKIH0KIAogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA1NjhiMjY2ODM4OTUz
ZWRmYjBjNjFkMDNkYWMyMTYwYTE4NzQ2YzdjLi43MWRjMWZiM2U1YmE3MjEwYTVlMjE1YjBmNjBk
ZGExOTcwMGE0ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTE0NTUsOCArMTQ1NSw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIGJvb2wgaGFz
UHJvcGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpIHx8ICFoYXNQcm9wZXJ0eSk7CiAgICAgaWYgKGhhc1Byb3BlcnR5KSB7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogICAgIH0KICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIH0KQEAgLTE0NjksOCArMTQ2OCw3IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0Ojpn
ZXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkgfHwgIWhhc1Byb3BlcnR5KTsKICAgICBpZiAoaGFzUHJvcGVydHkpIHsK
LSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNs
b3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSk7CiAgICAgfQogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAppbmRleCA2NGMxOWUyZjk4M2YxODQxNzc2MjFmNTFlNmQ0NTljZjM4MDYzYjY1
Li42NDdjOGFlMWRiMDYyN2JlZjVlZmRkZDk4NzIwY2E1M2ZmNzlhYTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtMTAxLDggKzEw
MSw3IEBAIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVu
Tm9FeGNlcHRpb24oYm9vbCwgUHJvcGVydHlTbG90CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGJvb2wgZm91bmQgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4o
dGhpcyktPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiBjYWxsYmFjayhmb3VuZCwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBjYWxsYmFjayhmb3VuZCwgc2xvdCkpOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjIzLDE1ICsyMjIsMTMgQEAgQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpIHsKLSAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RN
b2RlKCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xv
dyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgp
LCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgfQogCiAgICAgLy8gVHJ5IGluZGV4ZWQgcHV0
IGZpcnN0LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgc2luY2UgbG9hZHMgb24g
cHJvcGVydHkgbmFtZXMgdGhhdCBhcHBlYXIgbGlrZQogICAgIC8vIHZhbGlkIGluZGljZXMgd2ls
bCBuZXZlciBsb29rIGluIHRoZSBuYW1lZCBwcm9wZXJ0eSBzdG9yYWdlLgogICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewot
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBwdXRCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeUluZGV4KHRoaXNPYmplY3Qs
IGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAg
fQogCiAgICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKHZtLCBwcm9w
ZXJ0eU5hbWUpKSB7CkBAIC0yNDEsOCArMjM4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpwdXRJbmxpbmVGb3JKU09iamVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+cHV0
SW5saW5lU2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKIC8vIEhh
c093blByb3BlcnR5KE8sIFApIGZyb20gc2VjdGlvbiA3LjMuMTEgaW4gdGhlIHNwZWMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZWU4NWUwMWNhMzI0MzZhOWJlOTIyMjRiZGI1Y2Y3YjBkYWFkM2ZjOS4uZjE1YWU1MmE0ZjYzOGQ3
OGU3YWM1YTE5ODlkYWFmMzBiOTc5NmI1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcApAQCAtNzMsMTQgKzczLDEyIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMp
CiAKICAgICBKU1ZhbHVlIGl0ZXJhYmxlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGl0
ZXJhYmxlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIG1h
cFN0cnVjdHVyZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAgICAgfQog
CiAgICAgaWYgKGF1dG8qIGl0ZXJhYmxlTWFwID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KHZtLCBp
dGVyYWJsZSkpIHsKICAgICAgICAgaWYgKGl0ZXJhYmxlTWFwLT5jYW5DbG9uZUZhc3RBbmROb25P
YnNlcnZhYmxlKG1hcFN0cnVjdHVyZSkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNsb25lKGV4
ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhYmxlTWFwLT5jbG9uZShleGVjLCB2bSwgbWFwU3Ry
dWN0dXJlKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDVmZDNh
Njc3NjdmMDEzMGJlY2IzYTY2Yzg2OWFlN2RjMjJhNzhiNDcuLjhmM2RkNzBlYWE0OThjNjE0YTE3
YzY2MzE3YmU1OWFlYWNmZDVhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC02OSw4ICs2OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50ZXJwcmV0ZXI6OmNvbnN0cnVjdFdpdGhO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9
IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5l
d1RhcmdldCgpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMtPmpzQ2FsbGVl
KCkpLT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1cmUpOwotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlwZU5vdGhpbmcs
IGZhbHNlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNzYWdlLCBudWxs
cHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50ZXJwcmV0ZXI6OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAppbmRleCAzZjlmODFjMzRmZDI5NmNlMjdiZmJkNzBjMTk3ZWJhMDgyOTBiZTAz
Li5kNzM4YzlkZmJlY2Q0MjcwZTY4NjRjZDM2MTU0MGRkZThmNTg0NDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0x
MzksOCArMTM5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdE9i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2UKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdC0+b2JqZWN0U3RydWN0dXJlRm9y
T2JqZWN0Q29uc3RydWN0b3IoKSk7CiAKICAgICAvLyAzLiBSZXR1cm4gVG9PYmplY3QodmFsdWUp
LgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYXJnLnRvT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcmcudG9PYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0xNTksOCArMTU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQcm90b3R5cGUo
dm0sIGV4ZWMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xOTEsOCArMTg5LDcg
QEAgSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgaWYg
KCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNVbmRlZmlu
ZWQoKSk7CiAgICAgfQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAg
LTI0Myw4ICsyNDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZQogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lKSkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC0yNTMsOCArMjQ5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVz
Y3JpcHRvcnMoRXhlY1N0YXQKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4
ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhleGVjLCBvYmplY3QpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoZXhlYywgb2JqZWN0KSkpOwogfQogCiAvLyBGSVhN
RTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KQEAgLTI2NCw4ICsyNTksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1l
cyhFeGVjU3RhdGUqIGV4ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhl
Yyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVy
dHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFt
ZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAK
IC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgpAQCAtMjc1LDggKzI2OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMoRXhlY1N0YXRlKiBlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS50b09i
amVjdChleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShv
d25Qcm9wZXJ0eUtleXMoZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJv
cGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkp
KTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCkBAIC0yODYsOCAr
Mjc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcktl
eXMoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJv
cGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24o
RXhlY1N0YXRlKiBleGVjKQpAQCAtNjAxLDggKzU5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRl
OjpBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5k
ZWZpbmVPd25Qcm9wZXJ0eShvYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1
ZSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2Jq
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmopKTsK
IH0KIAogc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNjYwLDggKzY1MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9w
ZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXByb3BzKTsKICAgICBpZiAoVU5MSUtFTFkoIXByb3BzKSkKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCB0YXJnZXRPYmosIHByb3Bz
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5l
UHJvcGVydGllcyhleGVjLCB0YXJnZXRPYmosIHByb3BzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTY3OSw4ICs2NjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9wZXJ0
eSBkZXNjcmlwdG9yIGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIl9zKTsKLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMs
IG5ld09iamVjdCwgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBu
ZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSkpKTsKIH0KIAogZW51bSBjbGFz
cyBJbnRlZ3JpdHlMZXZlbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCAxODc3OWYyODJmZGIyZTdkMjQ5ZTRmMmI1MDdhYjNj
NjQxMWUzZDJhLi4yNzViNTZmN2NjZWM3YjRiMTYxMGQ2MWRhNjIzM2QwNjI1ZjJkODhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
QEAgLTMwNiw4ICszMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIHRvU3RyaW5nIHBhc3Np
bmcgdGhlIHRoaXMgdmFsdWUgYW5kIG5vIGFyZ3VtZW50cy4KLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRvU3RyaW5nLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5TGlzdCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdG9TdHJpbmcsIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCAqdm0uZW1wdHlMaXN0KSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKQEAgLTMyOCw4ICszMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogCiAgICAgUHJvcGVydHlOYW1lIHRvU3RyaW5nVGFnU3lt
Ym9sID0gdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2w7Ci0gICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sLCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5
U2xvdCYgdG9TdHJpbmdUYWdTbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgdG9TdHJpbmdUYWdTeW1ib2wsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiB0b1N0
cmluZ1RhZ1Nsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoZm91bmQpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgc3RyaW5nVGFnID0gdG9TdHJpbmdUYWdTbG90LmdldFZhbHVlKGV4ZWMsIHRv
U3RyaW5nVGFnU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CkBAIC0zNTYsNyArMzU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGF1dG8gcmVz
dWx0ID0ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgbmV3U3RyaW5nKTsKICAgICAgICAgdGhpc09i
amVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLCB2bSwgcmVz
dWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0pKTsK
KyAgICB9KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggMWJjODEwMWYwMWM1NWRlZTM5MmZmMjBh
MWRmNDk1MjljMWQ4NWExYS4uYTA4OGFkMWNiYzIwNzhkNjIwNWFmZjBhYmFkM2RhNzNhOTZmNWIy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAg
LTU0LDE1ICs1NCwxMyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgIGlmIChwMS5pc1N0
cmluZygpKSB7CiAgICAgICAgIEpTU3RyaW5nKiBwMlN0cmluZyA9IHAyLnRvU3RyaW5nKGNhbGxG
cmFtZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGNhbGxGcmFtZSwgYXNT
dHJpbmcocDEpLCBwMlN0cmluZyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
anNTdHJpbmcoY2FsbEZyYW1lLCBhc1N0cmluZyhwMSksIHAyU3RyaW5nKSk7CiAgICAgfQogCiAg
ICAgaWYgKHAyLmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNTdHJpbmcqIHAxU3RyaW5nID0gcDEu
dG9TdHJpbmcoY2FsbEZyYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4ganNTdHJpbmco
Y2FsbEZyYW1lLCBwMVN0cmluZywgYXNTdHJpbmcocDIpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBqc1N0cmluZyhjYWxsRnJhbWUsIHAxU3RyaW5nLCBhc1N0cmluZyhwMikp
KTsKICAgICB9CiAKICAgICBhdXRvIGxlZnROdW1lcmljID0gcDEudG9OdW1lcmljKGNhbGxGcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5kZXggMDAx
MmIyNjdjNjg0ZGY1ZmEzNDUwNmQ1ZmFmZmM0ZmRjN2E0ZTdmZS4uM2M4ZjNjYjNkMjBkMDFjYWYy
YmE2ODBlYmMyN2U4ZjYzY2MzZTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaApAQCAtNjMsMTggKzYzLDE1IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcq
IGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpT
CiAKICAgICBpbnQzMl90IGxlbmd0aDEgPSBzMS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgx
KSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHMyLCBzMyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmco
ZXhlYywgczIsIHMzKSk7CiAgICAgfQogICAgIGludDMyX3QgbGVuZ3RoMiA9IHMyLT5sZW5ndGgo
KTsKICAgICBpZiAoIWxlbmd0aDIpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgczEsIHMzKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBzMSwgczMpKTsKICAgICB9CiAgICAgaW50MzJfdCBs
ZW5ndGgzID0gczMtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoMykgewotICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzMSwgczIpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIHMxLCBzMikpOwog
ICAgIH0KIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMiwg
bGVuZ3RoMykpIHsKQEAgLTk5LDE2ICs5NiwxMyBAQCBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBq
c1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZwog
ICAgIH0KICAgICAKICAgICBpZiAoIWxlbmd0aDEpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywganNTdHJpbmcodm0sIHUyKSwganNTdHJp
bmcodm0sIHUzKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmco
ZXhlYywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSkpOwogICAgIH0KICAgICBp
ZiAoIWxlbmd0aDIpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmcodm0sIHUzKSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywganNTdHJpbmcodm0s
IHUxKSwganNTdHJpbmcodm0sIHUzKSkpOwogICAgIH0KICAgICBpZiAoIWxlbmd0aDMpIHsKLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywganNT
dHJpbmcodm0sIHUxKSwganNTdHJpbmcodm0sIHUyKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwganNTdHJpbmcoZXhlYywganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmcodm0s
IHUyKSkpOwogICAgIH0KIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwg
bGVuZ3RoMiwgbGVuZ3RoMykpIHsKQEAgLTI3MSw4ICsyNjUsNyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wganNMZXNzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQog
CiAgICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChw
MS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlKGNhbGxGcmFtZSwgcDEsIHAy
LCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmlnSW50Q29tcGFyZShjYWxsRnJhbWUsIHAxLCBwMiwgSlNC
aWdJbnQ6OkNvbXBhcmlzb25Nb2RlOjpMZXNzVGhhbikpOwogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIG4xIDwgbjI7CkBAIC0zMTgsOCArMzExLDcgQEAgQUxXQVlTX0lOTElORSBib29sIGpz
TGVzc0VxKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogCiAg
ICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7CiAgICAgICAgIGlmIChwMS5p
c0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlKGNhbGxGcmFtZSwgcDEsIHAyLCBK
U0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7CisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJpZ0ludENvbXBhcmUoY2FsbEZyYW1lLCBwMSwgcDIs
IEpTQmlnSW50OjpDb21wYXJpc29uTW9kZTo6TGVzc1RoYW5PckVxdWFsKSk7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gbjEgPD0gbjI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9QYXJzZUludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UGFyc2VJbnQuaAppbmRleCBmMzEwMTU4NjNkZGY3ZGExZWNkMDdmOTJlYWZiOTA4Y2ZiNzg1OTg5
Li5hOWNkNDEyY2NlZDExOWM4OWRlZThkMjdhOGRkZjdlNGJkNGQxYjY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJzZUludC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKQEAgLTIyMiw4ICsyMjIsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5Ob0V4Y2Vw
dGlvbihTdHJpbmdWaWV3KQogICAgICAgICByZXR1cm4geyB9OwogICAgIGF1dG8gdmlld1dpdGhT
dHJpbmcgPSBzdHJpbmctPnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhleGVjKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gY2FsbGJhY2sodmlld1dpdGhTdHJpbmcudmlldyk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBjYWxsYmFjayh2aWV3V2l0aFN0cmluZy52aWV3KSk7CiB9CiAKIC8vIE1hcHBp
bmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVudGlmeWluZyB0aGlzIHZhbHVlLCBm
b3IgcmFkaXggMi4uMzYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5Q29uc3RydWN0b3IuY3BwCmluZGV4IGEyN2I5NzhjY2ZiYmU1MDY1YTQyZTM2OTM3NmExYWIw
OTNiODIxYWIuLmNlYzBlNDEwYjRkNWM1ZDcxYzBjMDRiYjBlNDBmNDc3NTM0YjRmOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
CkBAIC0xMDIsOCArMTAyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKICAgICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CiAgICAgSlNWYWx1ZSBoYW5k
bGVyID0gYXJncy5hdCgxKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShQcm94eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgdGFyZ2V0LCBoYW5kbGVyKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmplY3Q6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHRhcmdldCwgaGFuZGxlcikpKTsKIH0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCA3NTIxZGM5NWVj
MjNmZTM0NzUzMGEyZDBlNjVlMzg5N2IxODdhYzBiLi45YThmMDM1NmZiY2ZiZWI2ZmRlZGRkODIx
NmUzZWM3ZTUyNDc5ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCkBAIC02Miw4ICs2Miw3IEBAIFN0cmluZyBQcm94eU9iamVjdDo6dG9TdHJp
bmdOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBpZiAodGFyZ2V0SXNBcnJheSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIHRhcmdldC0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9kVGFibGUudG9T
dHJpbmdOYW1lKHRhcmdldCwgZXhlYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHRhcmdldC0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9kVGFibGUudG9TdHJpbmdOYW1lKHRh
cmdldCwgZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgcHJveHkgPSBqc0R5bmFtaWNDYXN0
PGNvbnN0IFByb3h5T2JqZWN0Kj4odm0sIHRhcmdldCk7CkBAIC0xMzksOCArMTM4LDcgQEAgc3Rh
dGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3Qq
IHByb3h5T2JqZWN0LCBKU1ZhbHUKICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRhcmdldC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNQcm9wZXJ0eSk7CiAgICAgICAg
IGlmIChoYXNQcm9wZXJ0eSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9
OwpAQCAtMjE1LDggKzIxMyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1l
dGhvZEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAgfTsKIAog
ICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKSB7Ci0gICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdEdldE93blBy
b3BlcnR5KCkpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFu
ZGxlcigpOwpAQCAtMjMxLDggKzIyOCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRl
cm5hbE1ldGhvZEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOCiAgICAg
SlNWYWx1ZSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRo
b2QoZXhlYywgY2FsbERhdGEsIGNhbGxUeXBlLCBtYWtlSWRlbnRpZmllcih2bSwgImdldE93blBy
b3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcHJvcGVydHkg
b2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGdldE93blByb3BlcnR5RGVzY3Jp
cHRvck1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKTsKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdEdldE93blByb3BlcnR5KCkpOwog
ICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTMyNCw4ICsz
MjAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIH07CiAKICAgICBpZiAocHJvcGVy
dHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdEhhc1Byb3BlcnR5KCk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHRIYXNQcm9wZXJ0eSgpKTsKICAgICB9CiAK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKQEAgLTM0MCw4ICsz
MzUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIEpTVmFsdWUgaGFzTWV0aG9kID0g
aGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwgdm0ucHJvcGVydHlO
YW1lcy0+aGFzLCAiJ2hhcycgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHkoKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdEhhc1Byb3BlcnR5KCkpOwog
ICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTM4NywxNCAr
MzgxLDExIEBAIGJvb2wgUHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdENvbW1vbihFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAgICAgc2xvdC5zZXRJc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdCgpOwogICAgIHN3aXRjaCAoc2xvdC5pbnRlcm5hbE1ldGhvZFR5cGUoKSkg
ewogICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldDoKLSAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybUdldChleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZv
cm1HZXQoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSk7CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHk6Ci0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgcmV0dXJuIHBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSk7CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
SGFzUHJvcGVydHk6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHBl
cmZvcm1IYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1IYXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtNDI5LDggKzQyMCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgfQogCiAgICAg
aWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRQdXQoKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVsdFB1dCgpKTsKICAgICB9CiAKICAgICBK
U1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKQEAgLTQ0Niw4ICs0MzYsNyBA
QCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
dXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGZhbHNlKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYg
KHNldE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0UHV0KCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHRQdXQoKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJndW1lbnRzOwpAQCAtNTA1LDggKzQ5NCw3IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
dW5zaWduZWQKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBpc1N0cmlj
dE1vZGUpOyAvLyBXZSBtdXN0IHByZXNlcnZlIHRoZSAidGhpcyIgdGFyZ2V0IG9mIHRoZSBwdXRC
eUluZGV4LgogICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJn
ZXQsIGV4ZWMsIGlkZW50LmltcGwoKSwgcHV0VmFsdWUsIHNsb3QpOwogICAgIH07Ci0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBwZXJmb3JtUHV0KGV4ZWMsIHB1dFZhbHVlLCB0aGlz
VmFsdWUsIGlkZW50LmltcGwoKSwgcGVyZm9ybURlZmF1bHRQdXQpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgcGVyZm9ybVB1dChleGVjLCBwdXRWYWx1ZSwgdGhpc1ZhbHVlLCBpZGVu
dC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KSk7CiB9CiAKIGJvb2wgUHJveHlPYmplY3Q6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTU0MCw4ICs1MjgsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRhcmdl
dCwgY2FsbERhdGEpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6Tm9uZSk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBleGVjLT50
aGlzVmFsdWUoKSwgQXJnTGlzdChleGVjKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldCwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBleGVjLT50aGlzVmFsdWUoKSwgQXJnTGlzdChleGVjKSkpKTsKICAgICB9CiAKICAgICBK
U0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5
QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7CkBAIC01NTEsOCAr
NTM4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXJndW1lbnRzLmFwcGVuZChleGVjLT50aGlzVmFs
dWUoKS50b1RoaXMoZXhlYywgRUNNQU1vZGU6OlN0cmljdE1vZGUpKTsKICAgICBhcmd1bWVudHMu
YXBwZW5kKGFyZ0FycmF5KTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkp
OwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGwo
ZXhlYywgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRz
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCBhcHBseU1ldGhvZCwgY2FsbFR5cGUsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMp
KSk7CiB9CiAKIENhbGxUeXBlIFByb3h5T2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGws
IENhbGxEYXRhJiBjYWxsRGF0YSkKQEAgLTU5Myw4ICs1NzksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1
Y3REYXRhKHRhcmdldCwgY29uc3RydWN0RGF0YSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNv
bnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7Ci0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFy
Z2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBBcmdMaXN0KGV4ZWMpLCBleGVjLT5u
ZXdUYXJnZXQoKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3RE
YXRhLCBBcmdMaXN0KGV4ZWMpLCBleGVjLT5uZXdUYXJnZXQoKSkpKTsKICAgICB9CiAKICAgICBK
U0FycmF5KiBhcmdBcnJheSA9IGNvbnN0cnVjdEFycmF5KGV4ZWMsIHN0YXRpY19jYXN0PEFycmF5
QWxsb2NhdGlvblByb2ZpbGUqPihudWxscHRyKSwgQXJnTGlzdChleGVjKSk7CkBAIC02MzcsOCAr
NjIyLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERlZmEKICAgICB9CiAKICAgICBpZiAocHJvcGVy
dHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdERlbGV0ZSgpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKCkpOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwpAQCAtNjU0LDggKzYzOCw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoZGVs
ZXRlUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdERlbGV0ZSgpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKCkpOwogICAgIH0KIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTcyOSw4ICs3MTIsNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVj
KQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCog
dGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKHByZXZlbnRFeHRlbnNpb25zTWV0aG9k
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1
cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCwgZXhl
Yyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdGFyZ2V0LT5tZXRob2RUYWJs
ZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCwgZXhlYykpOwogICAgIH0KIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTc4NCw4ICs3NjYsNyBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpT
T2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoaXNFeHRlbnNpYmxlTWV0
aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBy
ZXR1cm4gdGFyZ2V0LT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdGFyZ2V0LT5pc0V4dGVuc2libGUoZXhlYykpOwogICAgIH0KIAogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTgzMiw4ICs4MTMsNyBAQCBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydAogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgp
OwogICAgIGF1dG8gcGVyZm9ybURlZmF1bHREZWZpbmVPd25Qcm9wZXJ0eSA9IFsmXSB7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUo
dm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRh
cmdldC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXQsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKICAgICB9OwogCiAgICAgaWYg
KHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpCkBAIC0xMDkxLDggKzEwNzEsNyBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBwcm90b3R5cGUsIGJvb2wgcwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdl
dCgpOwogICAgIGlmIChzZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHRhcmdldC0+c2V0UHJvdG90eXBl
KHZtLCBleGVjLCBwcm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0YXJnZXQtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJv
dG90eXBlLCBzaG91bGRUaHJvd0lmQ2FudFNldCkpOwogICAgIH0KIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKQEAgLTExNTYsOCArMTEzNSw3IEBAIEpTVmFsdWUgUHJveHlP
YmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNPYmpl
Y3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgIGlmIChnZXRQcm90b3R5cGVPZk1ldGhv
ZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIHRhcmdldC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCB0YXJnZXQtPmdldFByb3RvdHlwZSh2bSwgZXhlYykpOwogICAgIH0KIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNzk5OWUzNDZhODhiNDMzNmM1
ZmRiNjVhM2VjM2Q4MjNlZDViNWU4Mi4uNmNkNzYzYjVhNzM5M2U4ZmQ5OTA0OGI2ODhkZWMzMjcw
YTkxYjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9i
amVjdC5jcHAKQEAgLTEyNiw4ICsxMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBl
LCBjb25zdHJ1Y3REYXRhLCBhcmd1bWVudHMsIG5ld1RhcmdldCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdChleGVjLCB0YXJnZXQsIGNv
bnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3VtZW50cywgbmV3VGFyZ2V0KSkpOwogfQog
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmRlZmluZXBy
b3BlcnR5CkBAIC0xNTMsOCArMTUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIFJlZmxl
Y3QuZGVmaW5lUHJvcGVydHkgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBkZWZp
bmVPd25Qcm9wZXJ0eSBvcGVyYXRpb24gZmFpbHMuCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IGZh
bHNlOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0
YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0T2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJn
ZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGFyZ2V0T2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSkpKTsKIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXQKQEAgLTE3
NSw4ICsxNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RH
ZXQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDIp
OwogCiAgICAgUHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXQpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRhcmdldC5nZXQoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0LmdldChleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yCkBAIC0xOTIsOCAr
MTg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXgKICAgICBhdXRvIGtleSA9IGV4ZWMtPmFy
Z3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihleGVjLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcihleGVjLCBhc09iamVjdCh0YXJnZXQpLCBrZXkpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0cHJvdG90eXBlb2YKQEAg
LTIwNSw4ICsyMDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBl
eGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVmbGVj
dC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0
Il9zKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNPYmplY3QodGFyZ2V0KS0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodGFyZ2V0KS0+Z2V0UHJv
dG90eXBlKHZtLCBleGVjKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQpAQCAtMjMzLDggKzIyOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKiBleGVj
KQogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJn
ZXQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+
KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+KHRh
cmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlKSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LnByZXZlbnRleHRlbnNpb25zCkBAIC0yNzMsOCArMjY3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBl
biBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0
KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXRPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXRwcm90b3R5cGVvZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IDg1NTI0
NjkxYzY4MzIxYzczYjVlNGQxNWU4NzMwMzU5NTZhMTZhNTYuLjM0Njc5MjQ2NTRlNWUzY2YyNmUz
NzczMDUzODVmNWU5ZDNmYjJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKQEAgLTI5OSw4ICsyOTksNyBAQCBKU09iamVj
dCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgQQogICAgICAgICBwYXR0ZXJuQXJnID0gcGF0dGVybjsKICAgICB9CiAK
LSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlZ0V4cENyZWF0ZShleGVjLCBnbG9i
YWxPYmplY3QsIG5ld1RhcmdldCwgcGF0dGVybkFyZywgZmxhZ3NBcmcpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgcmVnRXhwQ3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmV3VGFy
Z2V0LCBwYXR0ZXJuQXJnLCBmbGFnc0FyZykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGVzU3BlY1JlZ0V4cENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCBhMzNjMDIzMGQyNmVh
MjU3OTU4ZmM5OTM0YjkyOWY2Yzg4YTNhYTIwLi44OTg5MzgxZjI1ZDliOWZjMTgzZDc5NDM1OWFm
MWUyMThjOTUzYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAKQEAgLTEzNCw4ICsxMzQsNyBAQCBib29sIFJlZ0V4cE9iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
cmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KIAogc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0
TGFzdEluZGV4U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKQEAgLTE5NSwyMCArMTk0LDE4IEBAIEpTVmFsdWUgUmVn
RXhwT2JqZWN0OjptYXRjaEdsb2JhbChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgQVNTRVJUKCFzLmlzTnVsbCgpKTsKICAgICBpZiAocmVnRXhwLT51
bmljb2RlKCkpIHsKICAgICAgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsK
LSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gY29sbGVjdE1hdGNoZXMo
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29sbGVjdE1hdGNoZXMoCiAgICAg
ICAgICAgICB2bSwgZXhlYywgc3RyaW5nLCBzLCByZWdFeHBDb25zdHJ1Y3RvciwgcmVnRXhwLAog
ICAgICAgICAgICAgWyZdIChzaXplX3QgZW5kKSAtPiBzaXplX3QgewogICAgICAgICAgICAgICAg
IHJldHVybiBhZHZhbmNlU3RyaW5nVW5pY29kZShzLCBzdHJpbmdMZW5ndGgsIGVuZCk7Ci0gICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIGNvbGxlY3RNYXRjaGVzKAorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY29sbGVjdE1hdGNoZXMoCiAgICAgICAgIHZtLCBleGVjLCBzdHJpbmcsIHMsIHJlZ0V4
cENvbnN0cnVjdG9yLCByZWdFeHAsCiAgICAgICAgIFsmXSAoc2l6ZV90IGVuZCkgLT4gc2l6ZV90
IHsKICAgICAgICAgICAgIHJldHVybiBlbmQgKyAxOwotICAgICAgICB9KTsKKyAgICAgICAgfSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDU2ODVmMzMwNzk3NmU4ZmE4NTM5OGQy
NTM5MTE1YjgzZjg4Y2NiY2UuLmEzMWFmNjNkMDRlZDVlMTE0YjgxY2FiNzM0YjNhMDUxZDI0ZDVh
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcApAQCAtMTExLDggKzExMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhc3RyaW5nKTsKICAgICBpZiAoIXN0cmluZykK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhw
LT50ZXN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdl
eHAtPnRlc3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtMTI4LDggKzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFzdHJpbmcpOwogICAgIGlmICghc3RyaW5n
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+ZXhlYyhl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlZ2V4cC0+ZXhlYyhleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQpA
QCAtMjQ5LDggKzI0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyBmbGFncyA9IGZsYWdz
VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICcvJywgc291cmNlLCAn
LycsIGZsYWdzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAnLycsIHNvdXJjZSwgJy8nLCBmbGFncykp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckds
b2JhbChFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDYxZTEwNmMyYTI0NTQ2MWFjN2UzZDViNGZl
N2RjMGZlOTUwYzg0MTAuLjUyMzYwOTY1YmNlMmQ0ZTA5OGE4MDAyYWQ1NDM2MWQ5ODA0MzkyMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFi
bGUuY3BwCkBAIC0yNjksOSArMjY5LDggQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpu
ZXdDb2RlQmxvY2tGb3IoCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHRo
cm93U2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCB1bmxpbmtlZENvZGVCbG9jaywgc2NvcGUsIAotICAgICAgICBzb3Vy
Y2UoKS5wcm92aWRlcigpLCBzb3VyY2UoKS5zdGFydE9mZnNldCgpLCBzdGFydENvbHVtbigpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgRnVuY3Rpb25Db2RlQmxvY2s6OmNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRDb2RlQmxvY2ssIHNjb3BlLCAKKyAgICAgICAg
c291cmNlKCkucHJvdmlkZXIoKSwgc291cmNlKCkuc3RhcnRPZmZzZXQoKSwgc3RhcnRDb2x1bW4o
KSkpOwogfQogCiBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld1JlcGxhY2VtZW50Q29k
ZUJsb2NrRm9yKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDA0MTJlNTFiZDVhZjFlZWU1MjJmMTliYWZhYWIxMzliZGE1ZGYwOTcu
LmYwMmE2OGViYTlhMTZjOWQ2NWI2NzdhNGY4OGY4NDg4YzkxOTFmOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTczLDE0ICs3
MywxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNWYWx1ZSBpdGVyYWJsZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldDo6Y3Jl
YXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0
dXJlKSkpOwogICAgIH0KIAogICAgIGlmIChhdXRvKiBpdGVyYWJsZVNldCA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXQqPih2bSwgaXRlcmFibGUpKSB7CiAgICAgICAgIGlmIChpdGVyYWJsZVNldC0+Y2Fu
Q2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShzZXRTdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGl0ZXJh
YmxlU2V0LT5jbG9uZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUo
ZXhlYywgdm0sIHNldFN0cnVjdHVyZSkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApp
bmRleCA4NmFjZGU1ZTRlMDE3NTlhYWVkNzE1MTU1NGNhNzBiOTAwZjY4YjM1Li5lM2NmYTVhYmVl
NDFlYzRlNzc1NWJjZjIwZmM3YTY4M2JiOGI0NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcApAQCAtMTEzLDggKzEx
Myw3IEBAIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3Io
ZXhlYywgc2NvcGUsIHNob3VsZFRocm93LCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAg
ICAgfQogICAgIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gZW50cnkucHV0KGV4
ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZW50cnkucHV0KGV4ZWMsIGFycmF5LCB0aGlzLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpKTsKIH0KIAogYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpwdXREaXJlY3QoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFB1dERpcmVjdEluZGV4TW9kZSBtb2RlKQpAQCAtMjA0LDggKzIwMyw3
IEBAIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0
aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gY2FsbFNldHRlcihleGVjLCB0aGlz
VmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hvdWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90
U3RyaWN0TW9kZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGV4
ZWMsIHRoaXNWYWx1ZSwgQmFzZTo6Z2V0KCksIHZhbHVlLCBzaG91bGRUaHJvdyA/IFN0cmljdE1v
ZGUgOiBOb3RTdHJpY3RNb2RlKSk7CiB9CiAKIEpTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0
Tm9uU3BhcnNlTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGMyODRlMWRhMjY0ODA4OGQ5OWM4ZmEz
MmFlMGVlNGYyNGI1MWI1ZS4uYmQ0ODkzNzVlMmM2ZjQzMTAzOTk2MDY5NTAxN2U1MzEyNjRhYTcw
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcApAQCAtODksOCArODksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBidWZb
aV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9VSW50
MzIoZXhlYykpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1w
bCkpKSk7CiB9CiAKIEpTU3RyaW5nKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShF
eGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJnKQpAQCAtMTI0LDggKzEyMyw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1N0cmluZygpKSk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmco
ZXhlYywgYnVpbGRlci50b1N0cmluZygpKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAK
aW5kZXggYzM0ZGFjZWQ0NzgxODI5ZGZiMGZjOTc2NTA3MTBkNTk3OTJjMzcxOC4uZWI5ODYwYjdh
OWNlY2I5ZDUxMjMzMGNmNmMyMmMzYWFmYmEwMzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCkBAIC02OCwxOCArNjgsMTUgQEAgYm9vbCBT
dHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRl
cmVkKHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CisgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RN
b2RlKCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCkKICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihleGVjLCBzY29wZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSwgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewot
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBwdXRCeUluZGV4KGNlbGws
IGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIGluZGV4
LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgfQotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2Jq
ZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBi
b29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQpAQCAtOTAsOCArODcsNyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYQogICAgIFN0cmluZ09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAo
dGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJbmRleChwcm9wZXJ0eU5hbWUpKQog
ICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dEJ5
SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKIH0K
IAogc3RhdGljIGJvb2wgaXNTdHJpbmdPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFN0cmlu
Z09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMTIzLDEyICsx
MTksMTAgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAgQVNTRVJUKGlzQ3VycmVu
dERlZmluZWQpOwogICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXNPYmplY3QtPmlzRXh0
ZW5zaWJsZShleGVjKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZUFuZEFw
cGx5UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRl
bnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2Vw
dGlvbik7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5z
aWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNlcHRp
b24pKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEJhc2U6OmRl
ZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0
aHJvd0V4Y2VwdGlvbik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZp
bmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhy
b3dFeGNlcHRpb24pKTsKIH0KIAogYm9vbCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
aW5kZXggYTBhYmU2MWM0MzFhMmNhOGJlYTBjMGViMDU2NDM0YjVmMTFkNTNhZi4uMzgwYTEyNjAw
YWZiMjUyZjk3ZWRmMDY3ZjkxNTE5ZjdmN2NjNDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0zMjYsOCArMzI2LDcgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3UKICAgICAgICAgaWYgKHBvc2l0aW9uIDw9IDAgJiYgbGVu
Z3RoID49IHNvdXJjZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlVmFsOwogICAgICAg
ICAvLyBXZSBjb3VsZCBjYWxsIFN0cmluZzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwoKSwgYnV0IHRo
aXMgd291bGQgcmVzdWx0IGluIHJlZHVuZGFudCBjaGVja3MuCi0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmluZ0ltcGw6OmNyZWF0ZVN1
YnN0cmluZ1NoYXJpbmdJbXBsKCpzb3VyY2UuaW1wbCgpLCBzdGQ6Om1heCgwLCBwb3NpdGlvbiks
IHN0ZDo6bWluKHNvdXJjZVNpemUsIGxlbmd0aCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbCgqc291cmNlLmltcGwoKSwgc3RkOjptYXgoMCwgcG9zaXRpb24pLCBzdGQ6Om1pbihz
b3VyY2VTaXplLCBsZW5ndGgpKSkpOwogICAgIH0KIAogICAgIGludCB0b3RhbExlbmd0aCA9IDA7
CkBAIC0zNTQsOCArMzUzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3Bs
aWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3UKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpKTsKICAgICB9CiAKICAgICBV
Q2hhciogYnVmZmVyOwpAQCAtMzc1LDggKzM3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwganNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSkpOwogfQogCiBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNvbnN0IFN0cmlu
Zyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQpAQCAtMzkxLDggKzM4OCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJh
dG9ycyhFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIGlmIChwb3NpdGlvbiA8PSAwICYmIGxlbmd0
aCA+PSBzb3VyY2VTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVZhbDsKICAgICAgICAg
Ly8gV2UgY291bGQgY2FsbCBTdHJpbmc6OnN1YnN0cmluZ1NoYXJpbmdJbXBsKCksIGJ1dCB0aGlz
IHdvdWxkIHJlc3VsdCBpbiByZWR1bmRhbnQgY2hlY2tzLgotICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGVTdWJz
dHJpbmdTaGFyaW5nSW1wbCgqc291cmNlLmltcGwoKSwgc3RkOjptYXgoMCwgcG9zaXRpb24pLCBz
dGQ6Om1pbihzb3VyY2VTaXplLCBsZW5ndGgpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwganNTdHJpbmcoZXhlYywgU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmlu
Z0ltcGwoKnNvdXJjZS5pbXBsKCksIHN0ZDo6bWF4KDAsIHBvc2l0aW9uKSwgc3RkOjptaW4oc291
cmNlU2l6ZSwgbGVuZ3RoKSkpKTsKICAgICB9CiAKICAgICBDaGVja2VkPGludCwgUmVjb3JkT3Zl
cmZsb3c+IHRvdGFsTGVuZ3RoID0gMDsKQEAgLTQzOSw4ICs0MzUsNyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0
YXRlKiBleGVjLAogICAgICAgICAgICAgfQogICAgICAgICB9ICAgICAgICAKIAotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBXVEZNb3ZlKGlt
cGwpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBX
VEZNb3ZlKGltcGwpKSk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlcjsKQEAgLTQ3Myw4ICs0
NjgsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdz
V2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICB9CiAgICAgfQogCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBXVEZNb3ZlKGltcGwp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUo
aW1wbCkpKTsKIH0KIAogI2RlZmluZSBPVVRfT0ZfTUVNT1JZKGV4ZWNfXywgc2NvcGVfXykgXApA
QCAtNTIyLDggKzUxNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZW1vdmVV
c2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgaWYgKFVO
TElLRUxZKCFzb3VyY2VSYW5nZXMudHJ5Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291
cmNlTGVuIC0gbGFzdEluZGV4KSkpCiAgICAgICAgICAgICBPVVRfT0ZfTUVNT1JZKGV4ZWMsIHNj
b3BlKTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1NwbGljZVN1
YnN0cmluZ3MoZXhlYywgc3RyaW5nLCBzb3VyY2UsIHNvdXJjZVJhbmdlcy5kYXRhKCksIHNvdXJj
ZVJhbmdlcy5zaXplKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTcGxpY2VT
dWJzdHJpbmdzKGV4ZWMsIHN0cmluZywgc291cmNlLCBzb3VyY2VSYW5nZXMuZGF0YSgpLCBzb3Vy
Y2VSYW5nZXMuc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBy
ZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCkBAIC01NDYsOCArNTM5LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlOjpOb25lICYmICFyZXBsYWNlbWVudFN0cmluZy5sZW5ndGgoKSkgewotICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHJlbW92ZVVzaW5n
UmVnRXhwU2VhcmNoKHZtLCBleGVjLCBzdHJpbmcsIHNvdXJjZSwgcmVnRXhwKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0s
IGV4ZWMsIHN0cmluZywgc291cmNlLCByZWdFeHApKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NzIxLDggKzcxMyw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNp
bmdSZWdFeHBTZWFyY2goCiAgICAgICAgIGlmIChVTkxJS0VMWSghc291cmNlUmFuZ2VzLnRyeUNv
bnN0cnVjdEFuZEFwcGVuZChsYXN0SW5kZXgsIHNvdXJjZUxlbiAtIGxhc3RJbmRleCkpKQogICAg
ICAgICAgICAgT1VUX09GX01FTU9SWShleGVjLCBzY29wZSk7CiAgICAgfQotICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICByZXR1cm4ganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoZXhl
Yywgc3RyaW5nLCBzb3VyY2UsIHNvdXJjZVJhbmdlcy5kYXRhKCksIHNvdXJjZVJhbmdlcy5zaXpl
KCksIHJlcGxhY2VtZW50cy5kYXRhKCksIHJlcGxhY2VtZW50cy5zaXplKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoZXhl
Yywgc3RyaW5nLCBzb3VyY2UsIHNvdXJjZVJhbmdlcy5kYXRhKCksIHNvdXJjZVJhbmdlcy5zaXpl
KCksIHJlcGxhY2VtZW50cy5kYXRhKCksIHJlcGxhY2VtZW50cy5zaXplKCkpKTsKIH0KIAogSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBF
bXB0eVN0cigKQEAgLTczNywxNSArNzI4LDEzIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIoCiAgICAgICAgIC8vIEVT
NS4xIDE1LjUuNC4xMCBzdGVwIDguYS4KICAgICAgICAgc2VhcmNoVmFsdWUtPnNldExhc3RJbmRl
eChleGVjLCAwKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHJlbW92ZVVzaW5nUmVn
RXhwU2VhcmNoKHZtLCBleGVjLCB0aGlzVmFsdWUsIHRoaXNWYWx1ZS0+dmFsdWUoZXhlYyksIHJl
Z0V4cCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVtb3ZlVXNpbmdSZWdF
eHBTZWFyY2godm0sIGV4ZWMsIHRoaXNWYWx1ZSwgdGhpc1ZhbHVlLT52YWx1ZShleGVjKSwgcmVn
RXhwKSk7CiAgICAgfQogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgU3RyaW5nIHJlcGxh
Y2VtZW50U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
cmV0dXJuIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCgKLSAgICAgICAgdm0sIGV4ZWMsIHRoaXNW
YWx1ZSwgc2VhcmNoVmFsdWUsIGNhbGxEYXRhLCBDYWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRT
dHJpbmcsIEpTVmFsdWUoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXBsYWNl
VXNpbmdSZWdFeHBTZWFyY2goCisgICAgICAgIHZtLCBleGVjLCB0aGlzVmFsdWUsIHNlYXJjaFZh
bHVlLCBjYWxsRGF0YSwgQ2FsbFR5cGU6Ok5vbmUsIHJlcGxhY2VtZW50U3RyaW5nLCBKU1ZhbHVl
KCkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VSZWdFeHBTdHJpbmcoCkBAIC03NzIsOSArNzYxLDggQEAgc3RhdGljIEFMV0FZU19J
TkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAg
ICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiByZXBsYWNlVXNpbmdSZWdF
eHBTZWFyY2goCi0gICAgICAgIHZtLCBleGVjLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRGF0
YSwgY2FsbFR5cGUsIHJlcGxhY2VtZW50U3RyaW5nLCByZXBsYWNlVmFsdWUpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAorICAgICAgICB2
bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgY2FsbERhdGEsIGNhbGxUeXBlLCByZXBsYWNl
bWVudFN0cmluZywgcmVwbGFjZVZhbHVlKSk7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKiByZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBqc1N0cmluZywgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNl
VmFsdWUpCkBAIC04MTUsOCArODAzLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcq
IHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywKIAogICAg
IHNpemVfdCBsZWZ0TGVuZ3RoID0gc3RyaW5nSW1wbC0+bGVuZ3RoKCkgLSBtYXRjaEVuZDsKICAg
ICBTdHJpbmcgcmlnaHRQYXJ0KFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBs
KCpzdHJpbmdJbXBsLCBtYXRjaEVuZCwgbGVmdExlbmd0aCkpOwotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gSlNDOjpqc1N0cmluZyhleGVjLCBsZWZ0UGFydCwgbWlkZGxlUGFydCwg
cmlnaHRQYXJ0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTQzo6anNTdHJpbmco
ZXhlYywgbGVmdFBhcnQsIG1pZGRsZVBhcnQsIHJpZ2h0UGFydCkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgY2hlY2tPYmplY3RDb2VyY2libGUoSlNWYWx1ZSB0aGlzVmFsdWUpCkBAIC04NDgs
OCArODM1LDcgQEAgc3RhdGljIGlubGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVyKEV4ZWNT
dGF0ZSYgZXhlYywgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIKIAogICAgIHN0ZDo6ZmlsbF9uKGJ1
ZmZlciwgcmVwZWF0Q291bnQsIGNoYXJhY3Rlcik7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBXVEZNb3ZlKGltcGwpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKCZleGVjLCBXVEZNb3ZlKGltcGwpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVy
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTkwNSw4ICs4OTEsNyBAQCBBTFdBWVNfSU5MSU5FIEpTU3Ry
aW5nKiByZXBsYWNlKAogICAgIH0KICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVwbGFjZSh2bSwgZXhlYywgc3RyaW5n
LCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHJlcGxhY2Uodm0sIGV4ZWMsIHN0cmluZywgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxh
Y2VVc2luZ1JlZ0V4cChFeGVjU3RhdGUqIGV4ZWMpCkBAIC05MjEsOCArOTA2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAo
RXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghc2VhcmNoVmFsdWUuaW5oZXJpdHM8UmVnRXhwT2Jq
ZWN0Pih2bSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBs
YWNlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgc2VhcmNoVmFsdWUsIGV4ZWMt
PmFyZ3VtZW50KDEpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKHZtLCBleGVjLCBzdHJpbmcsIHNlYXJjaFZh
bHVlLCBleGVjLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKiBl
eGVjKQpAQCAtOTMzLDggKzkxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jUmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKEV4ZWNTdGF0ZSoKICAgICBKU1N0
cmluZyogc3RyaW5nID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBsYWNlVXNpbmdTdHJpbmdT
ZWFyY2godm0sIGV4ZWMsIHN0cmluZywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50
KDEpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVw
bGFjZVVzaW5nU3RyaW5nU2VhcmNoKHZtLCBleGVjLCBzdHJpbmcsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBleGVjLT5hcmd1bWVudCgxKSkpKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljKApAQCAtMTMwOSwxMyArMTI5MiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgaWYgKHN0cmluZ0ltcGwtPmlzOEJpdCgpKSB7CiAg
ICAgICAgICAgICBpZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8TENoYXI+KGV4ZWMs
IHJlc3VsdCwgdGhpc1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVy
LCBwb3NpdGlvbiwgcmVzdWx0TGVuZ3RoLCBsaW1pdCkpIHsKLSAgICAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPFVDaGFyPihleGVjLCByZXN1
bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRvckNoYXJhY3RlciwgcG9z
aXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0NjgsOCArMTQ0OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2Uo
RXhlY1N0YXRlKiBleGVjKQogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0
VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7CiAgICAgaWYgKGxvd2VyY2FzZWRTdHJpbmcuaW1w
bCgpID09IHMuaW1wbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNWYWwpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KGV4ZWMsIGxvd2VyY2FzZWRTdHJpbmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBsb3dlcmNhc2VkU3RyaW5nKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNl
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0ODYsOCArMTQ2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjKQog
ICAgIFN0cmluZyB1cHBlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0
TG9jYWxlKCk7CiAgICAgaWYgKHVwcGVyY2FzZWRTdHJpbmcuaW1wbCgpID09IHMuaW1wbCgpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNWYWwpOwotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHVwcGVyY2FzZWRT
dHJpbmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyhleGVjLCB1cHBlcmNhc2VkU3RyaW5nKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVj
KQpAQCAtMTU4OSw4ICsxNTY4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2Fz
ZShFeGVjU3RhdGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGEKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCB1X2Vycm9yTmFtZShlcnJvcikp
OwogCiAgICAgLy8gMTguIFJldHVybiBMLgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHN0YXRlLCBsb3dlcikpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHN0YXRlLCBsb3dlcikp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xv
Y2FsZUxvd2VyQ2FzZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTYzOSw4ICsxNjE3LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgaW50IHRyaW1LaW4KICAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IHN0ci5s
ZW5ndGgoKSAmJiB0aGlzVmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRoaXNWYWx1
ZTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3Ry
LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGxlZnQsIHJpZ2h0IC0gbGVmdCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywgc3RyLnN1YnN0cmluZ1NoYXJpbmdJbXBs
KGxlZnQsIHJpZ2h0IC0gbGVmdCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNUcmltKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE3NzcsOCArMTc1NCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMo
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBzdHJpbmdJbmNsdWRl
c0ltcGwodm0sIGV4ZWMsIHN0cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25B
cmcpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc3RyaW5nSW5jbHVkZXNJbXBsKHZt
LCBleGVjLCBzdHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTc5OCw4ICsxNzc0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbChFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CiAK
LSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwg
ZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZyk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGV4ZWMsIHN0
cmluZ1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUq
IGV4ZWMpCkBAIC0xODY2LDggKzE4NDEsNyBAQCBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBVQ2hhciogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgV1RGTW92ZShpbXBsKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0
cmluZyhleGVjLCBXVEZNb3ZlKGltcGwpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE5MDAs
OCArMTg3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Tm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgImFyZ3VtZW50IGRvZXMgbm90
IG1hdGNoIGFueSBub3JtYWxpemF0aW9uIGZvcm0iX3MpKTsKICAgICB9CiAKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoZXhlYywgdmll
dy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdmlldy5sZW5ndGgoKSwgZm9ybSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCB2
aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3Lmxlbmd0aCgpLCBmb3JtKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwCmluZGV4IGY0ZTlkMWNiMWQyMDc2YjgxZTY3MDQ5MmY4Zjk4
M2FiM2MwZTA1OTEuLmNiOTk5NDU5NWI0Yzk3MWRkZjQyYjg0YmMxYWJhMWU0YTE4Zjk2MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cApAQCAtMTA5LDggKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9s
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgIFN5bWJvbCogc3ltYm9sID0g
dHJ5RXh0cmFjdFN5bWJvbCh2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3ltYm9s
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVG9T
dHJpbmdUeXBlRXJyb3IpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHN5bWJvbC0+ZGVzY3JpcHRpdmVTdHJp
bmcoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIHN5bWJvbC0+ZGVzY3JpcHRpdmVTdHJpbmcoKSkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4
ZWNTdGF0ZSogZXhlYykKQEAgLTEyMiw4ICsxMjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICgh
c3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3lt
Ym9sVmFsdWVPZlR5cGVFcnJvcik7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzeW1ib2wpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHN5bWJvbCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA4YTQ2MWU3NmVjODAx
MWE5YjIzNzhkNmQ0Mjc1ZDMxYWMxMjExMDljLi43ZDhkYTA4MTM5MWExNGFiNjE5NmUxNDcyMTEz
YjVjZGVlYWM4NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCkBAIC0xMTUyLDEzICsxMTUyLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMoRXhlY1N0YXRlKiBleGVjCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgYXV0byog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8V2FzbVN0cmVhbWluZ1BhcnNlcio+KHZtLCBleGVj
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KSB7Ci0gICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2Up
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGZhbHNlKSkpOwogICAgIH0KICAgICBhdXRvIGRhdGEgPSBnZXRXYXNtQnVmZmVyRnJv
bVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0aGlzT2Jq
ZWN0LT5zdHJlYW1pbmdQYXJzZXIoKS5hZGRCeXRlcyhiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuZmlyc3QpLCBkYXRhLnNlY29uZCkpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGhp
c09iamVjdC0+c3RyZWFtaW5nUGFyc2VyKCkuYWRkQnl0ZXMoYml0d2lzZV9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmZpcnN0KSwgZGF0YS5zZWNvbmQpKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShFeGVj
U3RhdGUqIGV4ZWMpCkBAIC0xODEwLDggKzE4MDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaWYgKCFpZGVudCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29w
ZSwgIlVua25vd24gcHJpdmF0ZSBuYW1lLiIpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+YXJndW1lbnQoMCkuZ2V0KGV4ZWMsICppZGVu
dCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
PmFyZ3VtZW50KDApLmdldChleGVjLCAqaWRlbnQpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlUm9vdChFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBp
bGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDlmNWNiNjU5N2Q5ZjE0
NjVkMmZkMmZhZTU0NTZlNmZlOWRlZDJiODUuLjdlZWZjN2VhMzJhYzdhODg5ZjAwZmRjMWIxY2I4
ODY3ODMyZjhkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCkBA
IC01MSw4ICs1MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSBtZXNz
YWdlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oZXhlYy0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dCh2bSktPldlYkFzc2VtYmx5Q29tcGlsZUVycm9yU3RydWN0dXJlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6
OmNyZWF0ZShleGVjLCB2bSwgc3RydWN0dXJlLCBtZXNzYWdlKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcjo6
Y3JlYXRlKGV4ZWMsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpKSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2E4ZjkyNTMz
ZjI1ZTA3OTg4Y2U1ZDAwODJlYmRiNjg3ZmU2ODE5NC4uZGIwNDljMTgxYzIzMmUxNjFhY2M5OTU4
NGIzOTBlYTY4OTU5ZDYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Niw4
ICsxNjYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYwogICAgIFZlY3Rvcjx1aW50OF90PiBz
b3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKGV4ZWMsIFdURk1vdmUoc291cmNlKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShleGVjLCBXVEZNb3ZlKHNvdXJjZSkpKSk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE4NSw4ICsxODQsNyBAQCBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLAogICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBzdHJ1
Y3R1cmUsIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92
ZShidWZmZXIpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1dlYkFzc2VtYmx5
TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBzdHJ1Y3R1cmUsIFdhc206Ok1vZHVsZTo6dmFs
aWRhdGVTeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShidWZmZXIpKSkpOwogfQogCiBXZWJB
c3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUqIHRoaXNQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAppbmRleCA0MWZk
MTM0YzcwYzE5NGVmYTdjOWFjNWYxZDA5MWUwMjU1ZTFiYzliLi4wNzZjNzg3OGY1ZGUyNmVjYjAx
N2JmODU3ODhiMDAxOTdlYTMyYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTk2
LDkgKzk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNXZWJBc3NlbWJseVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgImNvdWxkbid0IGNyZWF0ZSBUYWJsZSJfcykpKTsKICAgICB9CiAKLSAg
ICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNX
ZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+V2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFzZU5vbk51
bGwoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoSlNXZWJBc3NlbWJseVRhYmxlOjpjcmVhdGUoZXhlYywgdm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+V2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFz
ZU5vbk51bGwoKSkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bi5jcHAKaW5kZXggNDQ0ZWZiZjhiNGE3YTM1ZjQwZjAxY2ViNGM3OWVjODQzZWIxNjQ2Zi4uYTM0
NjI1YTJiYTQwMTgwZTgwZmQ1NWUxMGU2MmZlYzExYmUxN2RiMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmNwcApAQCAtNTAsOCArNTAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBleAogICAgIEpT
T2JqZWN0KiBmdW5jdGlvbiA9IHdhc21GdW5jdGlvbi0+ZnVuY3Rpb24oKTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGU6
Ok5vbmUpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
QXJnTGlzdChleGVjKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmlu
ZWQoKSwgQXJnTGlzdChleGVjKSkpKTsKIH0KIAogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246
OldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxl
RnVuY3Rpb24gaW1wb3J0YWJsZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuY3BwCmluZGV4IDRkMzRjMDdhYzRjZDliNDAwN2EyNWJjYjkxOTc3YjQ0MjRlYTM0MjUu
LjU5YjM2MmFkZWQ3NDU0YjFlNzAzODg1MDVmNmI0OTcxYmI0MGRjNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTEzMCw4ICsxMzAsNyBAQCBib29sIFJ1bnRp
bWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLAogICAgIGlmIChzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPmdldENv
bmNyZXRlQXJyYXkoKS0+c2V0VmFsdWVBdChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSk7CiAK
LSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTT2JqZWN0OjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpKTsKIH0KIAogYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBi
b29sKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351317</attachid>
            <date>2018-10-01 15:44:12 -0700</date>
            <delta_ts>2018-10-01 16:23:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190163-20181001154411.patch</filename>
            <type>text/plain</type>
            <size>202677</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmQ5YzUzMjE5OTdhMjNkMzkwMjQ1YTY3ZjkwMGUxODE3MTEyNzFjLi40YTBjNjY4MTc5YzhmODQw
MTdkOWY0NmM0Mzk4ZjY4MjI2Y2ViNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODAgQEAKKzIwMTgtMTAtMDEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ3JlYXRlIGEgUkVMRUFTRV9BTkRfUkVUVVJOIG1hY3JvIGZvciBF
eGNlcHRpb25TY29wZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDE2MworCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAg
IFRoZSBuZXcgUkVMRUFTRV9BTkRfUkVUVVJOIGRvZXMgYWxsIHRoZSB3b3JrIGZvciBjYXNlcwor
ICAgICAgICB3aGVyZSB5b3Ugd2FudCB0byByZXR1cm4gdGhlIHJlc3VsdCBvZiBzb21lIGV4cHJl
c3Npb24KKyAgICAgICAgd2l0aG91dCBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBhbiBleGNlcHRp
b24uIFRoaXMgaXMKKyAgICAgICAgbXVjaCBsaWtlIHRoZSBleGlzdGluZyBSRVRVUk5fSUZfRVhD
RVBUSU9OIG1hY3JvLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmdldEJ5VmFsKToKKyAgICAgICAgKiBq
c2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QpOgor
ICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgIChKU0M6OkxMSW50Ojp2YXJhcmdzU2V0dXApOgorICAgICAgICAqIHByb2ZpbGVy
L1Byb2ZpbGVyRGF0YWJhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6
OnRvSlNPTiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5j
cHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OmZhc3RKb2luKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAg
ICAoSlNDOjphcnJheVByb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVu
Y1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweSk6
CisgICAgICAgICogcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
OnRvQmlnSW50KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbCk6CisgICAgICAgICogcnVudGltZS9D
b25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQYXJzZSk6Cisg
ICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKToKKyAgICAgICAgKiBydW50aW1lL0RpcmVjdEFyZ3Vt
ZW50cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpjb25zdHJ1Y3RXaXRoRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVycm9yUHJv
dG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaDoKKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJp
Y0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUv
R2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdldHRlcik6CisgICAgICAgICog
cnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxD
b2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZik6CisgICAgICAgICogcnVu
dGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0
b3JGdW5jQ29tcGFyZSk6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0RnVu
Y0Zvcm1hdERhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMpOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3Jt
YXRGdW5jRm9ybWF0TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OmludGxOdW1iZXJPcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3Rh
bmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
OjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVu
Y1NlbGVjdCk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZm
ZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6c2hhcmVkQXJyYXlC
dWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJy
YXlJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnRvTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsKToK
KyAgICAgICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9JbmRleCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvUHJvcGVy
dHlLZXkgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpnZXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpnZXRQcm9wZXJ0eVNsb3QgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U1ZhbHVlOjpnZXRPd25Qcm9wZXJ0eVNsb3QgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0RhdGFW
aWV3OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OnNldCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpz
cGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jU3ViYXJyYXlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cHV0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJv
dG9HZXR0ZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwOgorICAg
ICAgICAoSlNDOjpKU0ludGVybmFsUHJvbWlzZTo6dGhlbik6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVu
dDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OnByb3ZpZGVGZXRjaCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlTG9hZGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUxvYWRlcjo6bG9hZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpsaW5r
QW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6cmVxdWVz
dEltcG9ydE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpnZXRNb2R1bGVO
YW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1
bGVzKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6c3RyaW5naWZ5KToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnRvSlNP
Tik6CisgICAgICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90
b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpvcmRpbmFyeVNldFNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5s
aW5lU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0b1ByaW1pdGl2ZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0Ojp0b051bWJlciBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVPd25J
bmRleGVkUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldCBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldFByb3BlcnR5U2xvdCBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXRJbmxpbmVGb3JKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAgICogcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNvbnN0
cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0T2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKToKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JDcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNU
b1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpT
Qzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNMZXNzKToKKyAgICAgICAgKEpT
Qzo6anNMZXNzRXEpOgorICAgICAgICAqIHJ1bnRpbWUvUGFyc2VJbnQuaDoKKyAgICAgICAgKEpT
Qzo6dG9TdHJpbmdWaWV3KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojp0b1N0cmluZ05h
bWUpOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpwZXJmb3JtUHV0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnB1dEJ5SW5k
ZXhDb21tb24pOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBl
cmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRF
eHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2li
bGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5
KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICog
cnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2Jq
ZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVj
dEdldFByb3RvdHlwZU9mKToKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdE93bktleXMpOgor
ICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UmVnRXhwKToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6Om1hdGNo
R2xvYmFsKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJv
dG9GdW5jRXhlYyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3Jp
cHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5
VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2lu
dCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRl
eCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6anNTcGxp
Y2VTdWJzdHJpbmdzKToKKyAgICAgICAgKEpTQzo6anNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFy
YXRvcnMpOgorICAgICAgICAoSlNDOjpyZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAg
IChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6CisgICAgICAgIChKU0M6Om9wZXJhdGlv
blN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cik6CisgICAgICAgIChKU0M6OnJl
cGxhY2VVc2luZ1N0cmluZ1NlYXJjaCk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6
CisgICAgICAgIChKU0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlVXNpbmdSZWdFeHApOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNl
VXNpbmdTdHJpbmdTZWFyY2gpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTcGxpdEZh
c3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKToKKyAgICAgICAgKEpTQzo6dG9Mb2Nh
bGVDYXNlKToKKyAgICAgICAgKEpTQzo6dHJpbVN0cmluZyk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ0luY2x1ZGVz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpub3JtYWxpemUpOgorICAgICAgICAoSlNDOjpzdHJp
bmdQcm90b0Z1bmNOb3JtYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAo
SlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZN
LmNwcDoKKyAgICAgICAgKFdURjo6ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMp
OgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9k
dWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5VGFibGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pOgor
CiAyMDE4LTEwLTAxICBLb2J5IEJveWFuZ28gIDxrb2J5LmJAbWNlLXN5cy5jb20+CiAKICAgICAg
ICAgW0pTQ10gQWRkIGEgSlNPTlN0cmluZ2lmeSBvdmVybG9hZCB0aGF0IHJlY2VpdmVzIGEgSlNW
YWx1ZSBzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNWQ2YTY3NzNiM2Y1ZTFlMWNlZGNlZGExYjRhYjJm
NjAwYjMzNjkuLmUyYmFiMjJhMmMyMzhjNTA3NGIyNjM2MzZlYzk5N2IxZjBlYTEzNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMC0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBDcmVhdGUgYSBSRUxFQVNFX0FORF9SRVRVUk4g
bWFjcm8gZm9yIEV4Y2VwdGlvblNjb3BlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0u
CisKKyAgICAgICAgVGhlIG5ldyBSRUxFQVNFX0FORF9SRVRVUk4gZG9lcyBhbGwgdGhlIHdvcmsg
Zm9yIGNhc2VzCisgICAgICAgIHdoZXJlIHlvdSB3YW50IHRvIHJldHVybiB0aGUgcmVzdWx0IG9m
IHNvbWUgZXhwcmVzc2lvbgorICAgICAgICB3aXRob3V0IGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9y
IGFuIGV4Y2VwdGlvbi4gVGhpcyBpcworICAgICAgICBtdWNoIGxpa2UgdGhlIGV4aXN0aW5nIFJF
VFVSTl9JRl9FWENFUFRJT04gbWFjcm8uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRo
aXMgaXMgYSByZWZhY3Rvci4KKworICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoK
KyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXQpOgorCiAyMDE4LTEwLTAxICBBbGljaWEg
Qm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXVtHU3RyZWFt
ZXJdIFNldCBhIG1pbmltdW0gc2FtcGxlIGR1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyN2I4ZjI5OTkyM2VhMjYyMzFkMmU0ZTA3MjBk
MjhkYjllNjhlMGJlLi42MzYwZTU1MWQwODAzNTM5MDI2N2U3MTcyNTdjY2QwNTk4YjMzMGI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE5OSw4
ICsxOTksNyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBzaXplLAogICAgIGlmICh2ZWN0b3IpCiAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlV2l0aEZhc3RW
ZWN0b3IoZXhlYywgc3RydWN0dXJlLCBzaXplLCB2ZWN0b3IpKTsKIAotICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShl
eGVjLCBzdHJ1Y3R1cmUsIHNpemUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJp
dHdpc2VfY2FzdDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXpl
KSkpOwogfQogCiB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CkBAIC0yNjIsMTIgKzI2MSw5IEBAIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVjdChwcm90
b3R5cGUpKTsKLSAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgaWYgKHByb3RvdHlwZS5pc09iamVjdCgpKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIGFzT2JqZWN0KHByb3RvdHlwZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogcHJvdG90eXBlKQpAQCAtMzM0LDggKzMzMCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHZh
bHVlLnRvT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCB2YWx1ZS50b09iamVjdChleGVjLCBnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdEFuZChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIp
CkBAIC02MzEsMTcgKzYyNiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZQogICAgIGlmIChM
SUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkgewogICAgICAgICBKU0NlbGwqIGJhc2UgPSBiYXNl
VmFsdWUuYXNDZWxsKCk7CiAKLSAgICAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpIHsKLSAg
ICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChl
eGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
cHJvcGVydHkuaXNVSW50MzIoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIoKSkpOworCiAgICAgICAg
IGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgcHJvcGVydHlB
c0RvdWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBwcm9w
ZXJ0eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwot
ICAgICAgICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSAmJiBp
c0luZGV4KHByb3BlcnR5QXNVSW50MzIpKSB7Ci0gICAgICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0
eUFzVUludDMyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUFzVUlu
dDMyID09IHByb3BlcnR5QXNEb3VibGUgJiYgaXNJbmRleChwcm9wZXJ0eUFzVUludDMyKSkKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldEJ5VmFsKGV4ZWMsIGJh
c2UsIHByb3BlcnR5QXNVSW50MzIpKTsKKwogICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5Lmlz
U3RyaW5nKCkpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2UtPnN0
cnVjdHVyZSh2bSk7CiAgICAgICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJv
cGVydHkoc3RydWN0dXJlKSkgewpAQCAtNjU3LDggKzY1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eS50b1Byb3BlcnR5S2V5KGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eU5hbWUpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpCkBA
IC02NjksMTcgKzY2MSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZQogCiAgICAgSlNWYWx1
ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkUHJvcGVydHkpOwogCi0gICAgaWYg
KHByb3BlcnR5LmlzVUludDMyKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHkuYXNVSW50MzIoKSk7Ci0gICAg
fQorICAgIGlmIChwcm9wZXJ0eS5pc1VJbnQzMigpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5LmFzVUludDMyKCkpKTsKKwog
ICAgIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eUFz
RG91YmxlID0gcHJvcGVydHkuYXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3QgcHJvcGVydHlB
c1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9wZXJ0eUFzRG91YmxlKTsKLSAgICAg
ICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkgewotICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEJ5VmFsKGV4ZWMsIGJh
c2UsIHByb3BlcnR5QXNVSW50MzIpOwotICAgICAgICB9CisgICAgICAgIGlmIChwcm9wZXJ0eUFz
VUludDMyID09IHByb3BlcnR5QXNEb3VibGUpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50MzIpKTsKKwogICAg
IH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkgewogICAgICAgICBTdHJ1Y3R1cmUmIHN0
cnVjdHVyZSA9ICpiYXNlLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAoSlNDZWxsOjpjYW5V
c2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewpAQCAtNjkyLDggKzY4Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBiYXNlCiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5
LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShiYXNlKS5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKSkpOwogfQogCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGdldEJ5VmFsQ2VsbEludChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgaW50MzJfdCBp
bmRleCkKQEAgLTczMCw4ICs3MTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNDZQogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gYXNTdHJpbmcoc3RyaW5nKS0+dG9JZGVudGlmaWVyKGV4ZWMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWxPYmpl
Y3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2UpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnZXRCeVZhbE9iamVjdChleGVjLCB2
bSwgYXNPYmplY3QoYmFzZSksIHByb3BlcnR5TmFtZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBzeW1ib2wpCkBAIC0xMDk3LDggKzEwODUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdAogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhaW5wdXQpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVybiBlbmNv
ZGVkSlNWYWx1ZSgpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlY0lubGluZShleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0
KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnRXhw
T2JqZWN0LT5leGVjSW5saW5lKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpKSk7CiB9CiAgICAg
ICAgIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2Vu
ZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCkBA
IC0xMTIwLDggKzExMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYQogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhaW5wdXQpOwogICAgIGlmICghaW5wdXQp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnZXhwLT5leGVjKGV4
ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShyZWdleHAtPmV4ZWMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVj
Tm9uR2xvYmFsT3JTdGlja3koRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcqIHN0cmluZykKQEAgLTExODAsMjAgKzEx
NjYsMTggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBNYXRj
aEZhc3RHbG9iYWxTdHJpbmcoRXhlY1N0YXRlKiBleGUKIAogICAgIGlmIChyZWdFeHAtPnVuaWNv
ZGUoKSkgewogICAgICAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzLmxlbmd0aCgpOwotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29s
bGVjdE1hdGNoZXMoCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNvbGxlY3RNYXRjaGVzKAogICAgICAgICAgICAgdm0sIGV4ZWMsIHN0cmluZywgcywg
cmVnRXhwQ29uc3RydWN0b3IsIHJlZ0V4cCwKICAgICAgICAgICAgIFsmXSAoc2l6ZV90IGVuZCkg
LT4gc2l6ZV90IHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWR2YW5jZVN0cmluZ1VuaWNvZGUo
cywgc3RyaW5nTGVuZ3RoLCBlbmQpOwotICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgfSkp
KTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb2xsZWN0TWF0Y2hlcygKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjb2xsZWN0TWF0Y2hlcygKICAgICAgICAgdm0sIGV4ZWMsIHN0cmluZywgcywg
cmVnRXhwQ29uc3RydWN0b3IsIHJlZ0V4cCwKICAgICAgICAgWyZdIChzaXplX3QgZW5kKSAtPiBz
aXplX3QgewogICAgICAgICAgICAgcmV0dXJuIGVuZCArIDE7Ci0gICAgICAgIH0pKTsKKyAgICAg
ICAgfSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QYXJz
ZUludE5vUmFkaXhHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
CkBAIC0xMjg4LDggKzEyNzIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KgogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhaW5wdXQpOwogICAgIGlmICghaW5w
dXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0
dXJuIHJlZ2V4cC0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIHJlZ2V4cC0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0
KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25CaXRBbmRCaWdJbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIG9wMSwgSlNDZWxsKiBvcDIpCkBAIC0xMzYxLDggKzEzNDQs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRo
aXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSgogICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNl
VmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChl
eGVjLCBpKSk7CiAgICAgICAgIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5n
ZXQoZXhlYywgaSwgc2xvdCkpKTsKICAgICB9CiAKICAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVj
dENvZXJjaWJsZShleGVjKTsKQEAgLTEzNzAsOCArMTM1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKCiAKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhl
Yyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVl
LmdldChleGVjLCBwcm9wZXJ0eSwgc2xvdCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHksIHNsb3QpKSk7
CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3Qo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGltcGwpCkBAIC0xOTk0LDggKzE5NzUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VgogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZS50b09iamVjdChleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKGV4ZWMsIGJhc2VPYmplY3QpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJvcGVydHlOYW1lRW51bWVyYXRvcihleGVjLCBi
YXNlT2JqZWN0KSk7CiB9CiAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9w
ZXJ0eUVudW1lcmF0b3JDZWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxsKQpAQCAtMjAw
Nyw4ICsxOTg3LDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5
RW51bWVyYXRvckNlbGwoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwKICAgICBKU09iamVjdCogYmFz
ZSA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gcHJvcGVydHlOYW1lRW51bWVyYXRvcihleGVjLCBiYXNlKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHByb3BlcnR5TmFtZUVudW1lcmF0b3IoZXhlYywgYmFz
ZSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9JbmRleFN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgaW5kZXgpCkBAIC0yMDgwLDggKzIwNTksNyBAQCBKU1N0
cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBzdHJpbmcsCiAgICAgU3RyaW5nIGxvd2VyY2FzZWRTdHJpbmcgPSBpbnB1dFN0
cmluZy5pczhCaXQoKSA/IGlucHV0U3RyaW5nLmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2Nh
bGVTdGFydGluZ0F0RmFpbGluZ0luZGV4OEJpdChmYWlsaW5nSW5kZXgpIDogaW5wdXRTdHJpbmcu
Y29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwogICAgIGlmIChsb3dlcmNhc2VkU3Ry
aW5nLmltcGwoKSA9PSBpbnB1dFN0cmluZy5pbXBsKCkpCiAgICAgICAgIHJldHVybiBzdHJpbmc7
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBsb3dlcmNh
c2VkU3RyaW5nKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMs
IGxvd2VyY2FzZWRTdHJpbmcpKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25J
bnQzMlRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRp
eCkKQEAgLTIyMzAsOCArMjIwOCw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0ckNhdDIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBhLCBFbmNvCiAgICAgSlNT
dHJpbmcqIHN0cjIgPSBKU1ZhbHVlOjpkZWNvZGUoYikudG9TdHJpbmcoZXhlYyk7CiAgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4ganNTdHJpbmcoZXhlYywgc3RyMSwgc3RyMik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBqc1N0cmluZyhleGVjLCBzdHIxLCBzdHIyKSk7CiB9CiAgICAgCiBKU1N0cmluZyogSklU
X09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgYSwgRW5jb2RlZEpTVmFsdWUgYiwgRW5jb2RlZEpTVmFsdWUgYykKQEAgLTIyNTAsOCArMjIy
Nyw3IEBAIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBhLCBFbmNvCiAgICAgSlNTdHJpbmcqIHN0cjMgPSBKU1Zh
bHVlOjpkZWNvZGUoYykudG9TdHJpbmcoZXhlYyk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywg
c3RyMSwgc3RyMiwgc3RyMyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmlu
ZyhleGVjLCBzdHIxLCBzdHIyLCBzdHIzKSk7CiB9CiAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uRmluZFN3aXRjaEltbVRhcmdldEZvckRvdWJsZSgKQEAgLTI2NDIsMTAgKzI2MTgsOCBA
QCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogaXRlcmFibGUpCiAKICAgICBpZiAoaXNKU0FycmF5KGl0ZXJhYmxlKSkg
ewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4oaXRlcmFibGUpOwot
ICAgICAgICBpZiAoYXJyYXktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxl
KCkpIHsKLSAgICAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0
dXJuIEpTRml4ZWRBcnJheTo6Y3JlYXRlRnJvbUFycmF5KGV4ZWMsIHZtLCBhcnJheSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGFycmF5LT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSgpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
Rml4ZWRBcnJheTo6Y3JlYXRlRnJvbUFycmF5KGV4ZWMsIHZtLCBhcnJheSkpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiB3ZSBjYW4gcHJvYmFibHkgbWFrZSB0aGlzIHBhdGggZmFzdGVyIGJ5IGhh
dmluZyBvdXIgY2FsbGVyIEpTIGNvZGUgY2FsbCBkaXJlY3RseSBpbnRvCkBAIC0yNjY3LDggKzI2
NDEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogaXRlcmFibGUpCiAgICAgICAgIGFycmF5ID0ganNDYXN0PEpT
QXJyYXkqPihhcnJheVJlc3VsdCk7CiAgICAgfQogCi0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIEpTRml4ZWRBcnJheTo6Y3JlYXRlRnJvbUFycmF5KGV4ZWMsIHZtLCBhcnJh
eSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTRml4ZWRBcnJheTo6Y3Jl
YXRlRnJvbUFycmF5KGV4ZWMsIHZtLCBhcnJheSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBjZWxs
KQpAQCAtMjcxNiw4ICsyNjg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXREeW5hbWljVmFyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHMKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+
IEpTVmFsdWUgeworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5k
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7
CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8oZ2V0UHV0SW5mb0JpdHMpOwogICAg
ICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQp
CkBAIC0yNzM2LDcgKzI3MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldER5bmFtaWNWYXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogICAgICAgICB9
CiAKICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOwotICAgIH0pKTsK
KyAgICB9KSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RHluYW1pY1Zh
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzY29wZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCBnZXRQdXRJbmZvQml0cykKQEAgLTI4
NjUsOCArMjgzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvdG90eXBlKTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0s
IGV4ZWMpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
aGlzT2JqZWN0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UaHJvd0RGRyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZh
bHVlVG9UaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGJiYzY5ZGI2OWIxZTdmOTg0NGMyNzgxNDY5MmUwYjBkZjNmZGQ3
ZmYuLjZlNjY4Yzc3NGI2YTMwOTNmNGM0NjM0MmVjNWIxYWRiZTlkMGY3ZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQ0
LDE2ICsxNDQsMTQgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAg
ICBpZiAoIWNhbGxlckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgICAgIGlm
IChwcm9ncmFtU291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgTGl0ZXJhbFBhcnNl
cjxMQ2hhcj4gcHJlcGFyc2VyKGNhbGxGcmFtZSwgcHJvZ3JhbVNvdXJjZS5jaGFyYWN0ZXJzOCgp
LCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKLSAgICAgICAgICAgICAg
ICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VkT2JqZWN0OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBhcnNl
KCkpCisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGFyc2Vk
T2JqZWN0KTsKKwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMaXRlcmFs
UGFyc2VyPFVDaGFyPiBwcmVwYXJzZXIoY2FsbEZyYW1lLCBwcm9ncmFtU291cmNlLmNoYXJhY3Rl
cnMxNigpLCBwcm9ncmFtU291cmNlLmxlbmd0aCgpLCBOb25TdHJpY3RKU09OKTsKLSAgICAgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJhbFBh
cnNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VkT2JqZWN0OwotICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSBwYXJzZWRPYmplY3QgPSBwcmVwYXJzZXIudHJ5TGl0ZXJh
bFBhcnNlKCkpCisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
cGFyc2VkT2JqZWN0KTsKKwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgfQpAQCAtMTcwLDggKzE2OCw3IEBA
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIAogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbGVyRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IHZtLmludGVycHJldGVyOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGNhbGxlclNj
b3BlQ2hhaW4pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgaW50ZXJwcmV0ZXItPmV4
ZWN1dGUoZXZhbCwgY2FsbEZyYW1lLCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pKTsKIH0K
IAogdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBh
cmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZmQ0MjVkODBlYzNmN2VjZGQzNWU2MDMz
M2YzMDI3MzViYzlmODJhOS4uYjVlMTkyYzBkYTQ0Y2E4MTY3MDBmMDcwODU2NzZhYTkxMzE3NThk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0x
OTgsOCArMTk4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3QKICAgICBib29sIGZvdW5kID0g
YmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0VmFs
dWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZm91bmQgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50
KSA6IGpzVW5kZWZpbmVkKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0yMTUsOCArMjE0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY28KICAgICBib29sIGZvdW5kID0gYmFzZVZhbHVlLmdldE93blBy
b3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDog
anNVbmRlZmluZWQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoZm91bmQgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGly
ZWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0yMzUsOCAr
MjMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkRGly
ZWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHIKICAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZyhleGVjLT5jb2RlQmxvY2soKSwgYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgp
KSkKICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwg
KnN0dWJJbmZvLCBHZXRCeUlES2luZDo6RGlyZWN0KTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBp
ZGVudCkgOiBqc1VuZGVmaW5lZCgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRl
ZmluZWQoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0xMDE4LDggKzEwMTUs
NyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbChF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENhbGxMaQogICAgICAgICAgICAgdm9pZCogbGlua2VkVGFy
Z2V0ID0gY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChsaW5rZWRUYXJnZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5r
SW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVw
VGhlRnJhbWUpKTsKICAgICAgICAgfQotICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGNh
bGxMaW5rSW5mbyk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBoYW5k
bGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAg
ICB9CiAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxl
ZUFzRnVuY3Rpb25DZWxsKTsKQEAgLTExMzIsOCArMTEyOCw3IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgdmlydHVhbEZvcldpdGhGdW5jdGlvbigKICAgICAgICAgICAgIEFTU0VSVCghIWNv
ZGVQdHIpOwogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1dGFi
bGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1v
ZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsK
ICAgICAgICAgfQotICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJu
IGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbyk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBoYW5kbGVIb3N0Q2FsbChl
eGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9CiAgICAgCiAg
ICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVu
Y3Rpb25DZWxsKTsKQEAgLTE4MjcsOCArMTgyMiw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFs
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBC
CiAgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIGlmIChh
c1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkgewogICAgICAgICAgICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBvcGVyYXRpb25HZXRCeVZh
bFN0cmluZyk7Ci0gICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmdldEluZGV4KGV4ZWMsIGkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJ5VmFsSW5m
by0+YXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOwogICAgICAgICB9IGVsc2UgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC0xODUzLDggKzE4NDcsNyBAQCBzdGF0aWMgSlNWYWx1
ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1
YnNjcmlwdCwgQgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpKTsKICAgICB9
CiAKICAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShleGVjKTsKQEAgLTE4NjYs
OCArMTg1OSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBCCiAgICAgaWYgKGJ5VmFsSW5mby0+
c3R1YkluZm8gJiYgKCFpc1N0cmluZ09yU3ltYm9sKHN1YnNjcmlwdCkgfHwgYnlWYWxJbmZvLT5j
YWNoZWRJZCAhPSBwcm9wZXJ0eSkpCiAgICAgICAgIGJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoID0g
dHJ1ZTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIHByb3BlcnR5KSk7CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5
R2V0QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCwgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKQEAgLTIwNTgsMTAgKzIwNTAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VgogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKLSAgICAg
ICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVj
LCBpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBh
c1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdl
dEluZGV4KGV4ZWMsIGkpKSk7CisKICAgICAgICAgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVj
LCBpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgICAgIGlmICghaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CkBAIC0yMzA1LDggKzIy
OTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29w
ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKgogICAgIC8vIE1vZHVsZVZhciBpcyBhbHdh
eXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3BlLgogICAgIEFTU0VS
VChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKIAotICAgIHRocm93U2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
IC0+IEpTVmFsdWUgeworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZv
dW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZO
b3RGb3VuZCkKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CkBAIC0yMzI4LDcg
KzIzMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21T
Y29wZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKgogICAgICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9KSk7CisgICAgfSkpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogYnl0
ZWNvZGVQQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYTBiMWM4N2VhNjE5MzE2YjdlMGNiYmE0
ODE3OWU3ZTQzNjE4ZmQyNi4uZjZjMWU4MjU2YmEyNjBiYTUxMzU3YzI2YmM1ZDFjZmI5MGM1Zjhi
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NjYsOCArMTc2Niw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhl
Y1N0YXRlKiBleGVjCiAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobWVzc2FnZS0+aW5kZXgoKSkp
OwogICAgIGlmIChVTkxJS0VMWShhcmdzLmhhc092ZXJmbG93ZWQoKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7Ci0g
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVj
LCBjYWxsYmFjaywgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgYXJncykpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZXhlYywgY2FsbGJh
Y2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGFyZ3MpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydChFeGVjU3RhdGUq
IGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCBjMWMyYzY3NDZhZTNhNTU3ZmNhM2U0ZGQ3ZjlkYTRkZTdhMjM5M2RhLi5lZWFkMjRk
NzBmNTljOTJhNDRmZmE5YTBiYWJlZGM3OWNlYTE4OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE0NjcsOCArMTQ2Nyw3IEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAgICAgICAgICAgICBQb2lzb25lZE1hc21QdHI6OmFzc2Vy
dElzTm90UG9pc29uZWQoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICAgICAgICAg
IExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIGV4ZWNDYWxsZWUsIGNvZGVQdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywg
Y2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCkp
OwogICAgIH0KICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNh
bGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVV
bmNoZWNrZWQoKTsKQEAgLTE1NDMsMTUgKzE1NDIsMTMgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNw
ZWMKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQogewogICAgIExMSU5UX0JF
R0lOX05PX1NFVF9QQygpOwotICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpKTsKIH0KIAog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCkKIHsKICAgICBMTElOVF9C
RUdJTl9OT19TRVRfUEMoKTsKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
Z2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVj
dCkpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2l6ZV9mcmFtZV9mb3Jf
dmFyYXJncykKQEAgLTE2MTcsOCArMTYxNCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
dmFyYXJnc1NldHVwKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlCiAg
ICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihDYWxsRnJhbWVTbG90OjpjYWxsZWUpID0gY2FsbGVl
QXNWYWx1ZTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjKTsKIAotICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNh
bGxlZUFzVmFsdWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncykKQEAgLTE2NTEsMTAgKzE2NDcsOCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKQogICAgIGV4ZWNDYWxs
ZWUtPnNldENvZGVCbG9jaygwKTsKICAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjKTsKICAgICAK
LSAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkg
ewotICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwotICAgIH0KKyAg
ICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChleGVjQ2FsbGVl
LCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsKICAgICAKICAgICB2bS5ob3N0Q2Fs
bFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKICAgICBMTElOVF9DQUxMX1JFVFVSTihl
eGVjLCBleGVjQ2FsbGVlLCBMTEludDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSwgQ0Z1bmN0aW9uUHRyVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAppbmRleCA5MTFkNjgxNzRjOTZhOTRlNjNjYmY4NTRl
Zjg5NjVkZmFmMjZhNTY4Li4wYTc4YjBjYzlkY2NhZmFlMGZkMWE0MjkwYjM1NTZmMWRjYWQyMGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0
YWJhc2UuY3BwCkBAIC0xNDMsOCArMTQzLDcgQEAgU3RyaW5nIERhdGFiYXNlOjp0b0pTT04oKSBj
b25zdAogCiAgICAgYXV0byB2YWx1ZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN0cmluZygpKTsKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTT05TdHJpbmdpZnkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIHZhbHVlLCAwKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT05TdHJp
bmdpZnkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHZhbHVlLCAwKSk7CiB9CiAKIGJvb2wg
RGF0YWJhc2U6OnNhdmUoY29uc3QgY2hhciogZmlsZW5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKaW5k
ZXggZmMwM2U0MzM2MmJkMDJlYmE5N2M3ZGY3MTJmODJmMjcwZDEwODE3NC4uYTRhZDEyY2NmNGVl
MzVmYzE0ODI2YWZjYjA2Zjg5OGU1ODczYmMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMTQ2LDggKzE0
Niw3IEBAIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqCiAgICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFs
dWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVOYW1lKTsKICAgICBKU1ZhbHVlIGVu
dHJ5ID0gbV9kZXBlbmRlbmNpZXNNYXAtPkpTTWFwOjpnZXQoZXhlYywgbW9kdWxlTmFtZVZhbHVl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29yZCo+KGVudHJ5
LmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJtb2R1bGUiKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4o
ZW50cnkuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm1vZHVsZSIpKSkp
OwogfQogCiBhdXRvIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDc1MjVmNWZjNmJjMjBlOWMxNjI2NDQ2ZWYwNDBjZGJkMGE1NjgxOWEuLmQ4MmNlZjMwNDM0
OGFmMDgyZDgzNzI5MTZjZTAyYTFhNzE2NzEyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC03MywxOCArNzMsMTUgQEAg
SlNBcnJheSogY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSogcHIKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBpZiAoIWxlbmd0aC5p
c051bWJlcigpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9iamVjdCwg
Jmxlbmd0aCwgMSwgbmV3VGFyZ2V0KTsKLSAgICB9CisgICAgaWYgKCFsZW5ndGguaXNOdW1iZXIo
KSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3RBcnJheU5lZ2F0
aXZlSW5kZXhlZChleGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3QsICZsZW5ndGgsIDEsIG5ld1Rh
cmdldCkpOwogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgudG9VSW50MzIoZXhlYyk7CiAg
ICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGV4ZWMpKSB7CiAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJBcnJheSBzaXplIGlzIG5v
dCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjb25zdHJ1
Y3RFbXB0eUFycmF5KGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9iamVjdCwgbiwgbmV3VGFyZ2V0KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywg
cHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdUYXJnZXQpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjMTQ3MjkyZjk3YTkx
ZDlmY2ZjYmYyZGM2NWIzYTVhMmYwOTE1NmQ0Li5jMzczODlhYTg1N2Y4OWNlMjE3ZDc3M2Y3M2Q2
NjNiYTJlYTE3MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMCBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIGdldFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwg
dW5zaQogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNQcm9w
ZXJ0eSk7CiAgICAgaWYgKCFoYXNQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBp
ZiAoVU5MSUtFTFkoc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSkgewotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBvYmplY3QtPmdldChleGVjLCBpbmRleCk7
Ci0gICAgfQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShl
eGVjLCBpbmRleCk7CisgICAgaWYgKFVOTElLRUxZKHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb2JqZWN0LT5nZXQoZXhl
YywgaW5kZXgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2xvdC5nZXRWYWx1
ZShleGVjLCBpbmRleCkpOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHB1dExlbmd0
aChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIG9iaiwgSlNWYWx1ZSB2YWx1ZSkK
QEAgLTQ1Myw4ICs0NTEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBmYXN0Sm9pbihFeGVjU3RhdGUmIHN0
YXRlLCBKU09iamVjdCogdGhpc09iamVjdCwgU3RyaW5nVmlldyBzZXBhcgogICAgICAgICAgICAg
ICAgIGpvaW5lci5hcHBlbmRFbXB0eVN0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpvaW5lci5qb2luKHN0
YXRlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqb2luZXIuam9pbihzdGF0
ZSkpOwogICAgIH0KICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOiB7CiAg
ICAgICAgIGF1dG8mIGJ1dHRlcmZseSA9ICp0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKQEAgLTQ3
OSw4ICs0NzYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBmYXN0Sm9pbihFeGVjU3RhdGUmIHN0YXRlLCBK
U09iamVjdCogdGhpc09iamVjdCwgU3RyaW5nVmlldyBzZXBhcgogICAgICAgICAgICAgICAgIGpv
aW5lci5hcHBlbmRFbXB0eVN0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpvaW5lci5qb2luKHN0YXRlKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqb2luZXIuam9pbihzdGF0ZSkpOwog
ICAgIH0KICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgYXV0
byYgYnV0dGVyZmx5ID0gKnRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwpAQCAtNTA1LDggKzUwMSw3
IEBAIGlubGluZSBKU1ZhbHVlIGZhc3RKb2luKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCBTdHJpbmdWaWV3IHNlcGFyCiAgICAgICAgICAgICAgICAgam9pbmVyLmFwcGVu
ZEVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gam9pbmVyLmpvaW4oc3RhdGUpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpvaW5lci5qb2luKHN0YXRlKSk7CiAgICAgfQogICAg
IH0KIApAQCAtNTE5LDggKzUxNCw3IEBAIGdlbmVyYWxDYXNlOgogICAgICAgICBqb2luZXIuYXBw
ZW5kKHN0YXRlLCBlbGVtZW50KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqb2luZXIuam9p
bihzdGF0ZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqb2luZXIuam9pbihzdGF0
ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtNTQ2LDE2ICs1NDAsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIGN1c3RvbUpvaW5D
YXNlID0gdHJ1ZTsKIAotICAgIGlmIChVTkxJS0VMWShjdXN0b21Kb2luQ2FzZSkpIHsKLSAgICAg
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5jbGFzc05hbWUodGhpc09iamVjdCwgdm0pLCAiXSIpKTsKLSAgICB9CisgICAgaWYg
KFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVj
dCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0LCB2
bSksICJdIikpKTsKIAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUg
dGhpcyB2YWx1ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCi0gICAgaWYgKCFpc0pTQXJy
YXkodGhpc09iamVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uICE9IGFycmF5UHJvdG9GdW5jSm9pbikgewotICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCAqdm0uZW1wdHlMaXN0KSk7Ci0g
ICAgfQorICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmplY3QpIHx8IGNhbGxUeXBlICE9IENhbGxU
eXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pv
aW4pCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgKnZtLmVt
cHR5TGlzdCkpKTsKIAogICAgIEFTU0VSVChpc0pTQXJyYXkodGhpc1ZhbHVlKSk7CiAgICAgSlNB
cnJheSogdGhpc0FycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtNjA0LDggKzU5NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIH0KIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpvaW5lci5qb2luKCpleGVjKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoam9pbmVyLmpvaW4oKmV4ZWMpKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMpCkBAIC02NTMsOCArNjQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQog
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5n
Sm9pbmVyLmpvaW4oKmV4ZWMpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShzdHJpbmdKb2luZXIuam9pbigqZXhlYykpKTsKIH0KIAogc3RhdGljIEpTVmFs
dWUgc2xvd0pvaW4oRXhlY1N0YXRlJiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNTdHJp
bmcqIHNlcGFyYXRvciwgdWludDY0X3QgbGVuZ3RoKQpAQCAtNzM2LDE1ICs3MjQsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICAgICAgSlNTdHJpbmcqIGpzU2VwYXJhdG9yID0ganNTaW5nbGVDaGFyYWN0
ZXJTdHJpbmcoZXhlYywgY29tbWEpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNP
YmplY3QsIGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRoaXNPYmplY3Qs
IGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVk
IHVuc2lnbmVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiAgICAgICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxkb3VibGU+KHVuc2lnbmVkTGVuZ3RoKSA9PSBsZW5ndGgpOwog
Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShmYXN0Sm9pbigqZXhlYywgdGhpc09iamVjdCwgeyAmY29tbWEsIDEgfSwgdW5zaWduZWRMZW5n
dGgpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
ZmFzdEpvaW4oKmV4ZWMsIHRoaXNPYmplY3QsIHsgJmNvbW1hLCAxIH0sIHVuc2lnbmVkTGVuZ3Ro
KSkpOwogICAgIH0KIAogICAgIC8vIDQuIExldCBzZXAgYmUgPyBUb1N0cmluZyhzZXBhcmF0b3Ip
LgpAQCAtNzU1LDE1ICs3NDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB1aW50NjRfdCBsZW5ndGg2
NCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgpOwogICAgICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8ZG91YmxlPihsZW5ndGg2NCkgPT0gbGVuZ3RoKTsKIAotICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvd0pvaW4oKmV4ZWMsIHRo
aXNPYmplY3QsIGpzU2VwYXJhdG9yLCBsZW5ndGg2NCkpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzbG93Sm9pbigqZXhlYywgdGhpc09iamVjdCwg
anNTZXBhcmF0b3IsIGxlbmd0aDY0KSkpOwogICAgIH0KIAogICAgIGF1dG8gdmlld1dpdGhTdHJp
bmcgPSBqc1NlcGFyYXRvci0+dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKGV4ZWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZmFzdEpvaW4oKmV4ZWMsIHRo
aXNPYmplY3QsIHZpZXdXaXRoU3RyaW5nLnZpZXcsIGxlbmd0aCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZhc3RKb2luKCpleGVjLCB0aGlzT2JqZWN0
LCB2aWV3V2l0aFN0cmluZy52aWV3LCBsZW5ndGgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzczLDEw
ICs3NTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUG9w
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpOwogCi0gICAgaWYgKGlzSlNBcnJheSh0aGlz
VmFsdWUpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChleGVjKSk7Ci0gICAgfQorICAgIGlm
IChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZXhlYykpKTsKIAogICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIEVYQ0VQ
VElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CkBAIC0xNDU3LDEw
ICsxNDM5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0
ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIEpTVmFsdWUgc2Vjb25kID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMSk7Ci0gICAgaWYgKCFpc0pTQXJyYXkoc2Vjb25kKSkgewotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBjb25jYXRBcHBlbmRPbmUoZXhlYywgdm0s
IGZpcnN0QXJyYXksIHNlY29uZCk7Ci0gICAgfQorICAgIGlmICghaXNKU0FycmF5KHNlY29uZCkp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uY2F0QXBwZW5kT25lKGV4ZWMs
IHZtLCBmaXJzdEFycmF5LCBzZWNvbmQpKTsKIAogICAgIEpTQXJyYXkqIHNlY29uZEFycmF5ID0g
anNDYXN0PEpTQXJyYXkqPihzZWNvbmQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDZhYTk1ZWEzZTNmZjBj
YWUyZDc1YzAwM2IxMzlkMDIwZWRlZTBkMTYuLmJhOTJiYTkxNzk1ZWVkMjY5ODg1YWUxOTBlNDE0
NThlMDQ5OGFiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTk4LDIwICs5OCwxNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgdG9CaWdJbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICAK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgaWYg
KGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1l
bnQuYXNCb29sZWFuKCkpKTsKLSAgICB9CisgICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0lu
dDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkpKSk7CiAgICAgCiAgICAgaWYg
KGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBh
cmd1bWVudC5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJf
cyk7CiAgICAgCiAgICAgQVNTRVJUKGFyZ3VtZW50LmlzU3RyaW5nKCkpOwogICAgIAotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gdG9TdHJpbmdWaWV3KCZzdGF0ZSwgYXJndW1lbnQs
IFsmXSAoU3RyaW5nVmlldyB2aWV3KSB7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0
b1N0cmluZ1ZpZXcoJnN0YXRlLCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6cGFyc2VJbnQoJnN0YXRlLCB2
aWV3KSk7Ci0gICAgfSk7CisgICAgfSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMWVj
ZTg5NTkyY2Q2MzExOGRkOWI4OWYxYjk2YmQwMDhkZDBhYjVlZC4uZWIxMGZkNzAwOGQ2MDA3ODhl
OGM1NDg5MzAxNjZiMDE5Zjc2Zjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTEwMywxNCArMTAzLDEyIEBAIGlubGluZSBib29s
IG9wSW5CeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm9w
TmFtZSwgQXJyYXlQCiAgICAgaWYgKHByb3BOYW1lLmdldFVJbnQzMihpKSkgewogICAgICAgICBp
ZiAoYXJyYXlQcm9maWxlKQogICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlSW5kZXhl
ZFJlYWQodm0sIGJhc2VPYmosIGkpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHJldHVybiBiYXNlT2JqLT5oYXNQcm9wZXJ0eShleGVjLCBpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlT2JqLT5oYXNQcm9wZXJ0eShleGVjLCBpKSk7CiAgICAgfQog
CiAgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BOYW1lLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZU9iai0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVy
dHkpKTsKIH0KIAogaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAppbmRleCAzYWVi
YmQwYTQ2MDRjYWYyOGNmZmI2Yzg0MTAzYmRhMTMyMzJmNmEzLi44NzhiMDg5YjA5OGMzNDlmMzE1
MzZlZDAyZmIzNzk0NmQwYjQ4MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25zdHJ1Y3REYXRhLmNwcApAQCAtNDQsOCArNDQsNyBAQCBKU09iamVjdCogY29uc3Ry
dWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3QgQXJn
TGlzdCYgYQogICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsK
IAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gY29uc3RydWN0KGV4ZWMsIGNvbnN0
cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzLCBjb25zdHJ1
Y3Rvck9iamVjdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjb25zdHJ1Y3QoZXhl
YywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3Ms
IGNvbnN0cnVjdG9yT2JqZWN0KSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZTM4ZTVlZDg3NDU1ZjBiMDk0MmU4
MDIxNWJhODNlY2RhZjgwMWJmNC4uZGJhZjYzNmQ3MDZlOTFhNmJkZWIxZTc4OGVhNTc5ZDA3OWQ2
MWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuY3BwCkBAIC0xNjksOCArMTY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUGFyc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBTdHJpbmcgZGF0ZVN0ciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHBhcnNlRGF0ZShleGVjLCB2bSwgZGF0ZVN0cikpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZURhdGUoZXhl
Yywgdm0sIGRhdGVTdHIpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVOb3coRXhlY1N0YXRlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKaW5kZXggNWVhZDM3Njk0ZWYwNzMyNzNjNzYxMGMwZDMwNDZhNzZmZjdm
OTY4MC4uYzJkNDJhMDkyZmM3MjMxNjU2MDI2NTg4OWM2NTEzNzI5N2JmZGQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTYzNiw4
ICs2MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1By
aW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKHR5cGUgPT0gTm9QcmVmZXJl
bmNlKQogICAgICAgICB0eXBlID0gUHJlZmVyU3RyaW5nOwogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5hcnlUb1ByaW1p
dGl2ZShleGVjLCB0eXBlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUodGhpc09iamVjdC0+b3JkaW5hcnlUb1ByaW1pdGl2ZShleGVjLCB0eXBlKSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RpcmVjdEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0
QXJndW1lbnRzLmgKaW5kZXggMWEyY2M2ZjEwNTdlZmNkYzFlMzk1ZTJmNWY1ZGQ3ODdmMWQ4ZWU0
NS4uMmE3OGZkMGZlYTNlODNhZjE0MDQwMDVkNmFjM2JlNWJlMTNhMGNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmgKQEAgLTc5LDggKzc5
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldChleGVjLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
MCk7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gdmFs
dWUudG9VSW50MzIoZXhlYyk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHZhbHVlLnRvVUludDMyKGV4ZWMpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9sZW5n
dGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNv
bnN0cnVjdG9yLmNwcAppbmRleCAwMmIxYjg2YWM5NGQ0ODdiMTNkYzIzOTJlMjJkNTA0N2MwNWRi
ZTE3Li5iMDljMDU4NzBjZDIxOTVmY2I3YjE1ZmNhYTdiZGE4ZTMxNTcyZGNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcApAQCAt
NTksOCArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGVycHJldGVyOjpj
b25zdHJ1Y3RXaXRoRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdAogICAgIEpTVmFsdWUgbWVzc2Fn
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihleGVjLT5qc0NhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KHZtKS0+ZXJyb3JTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3Ry
dWN0dXJlLCBtZXNzYWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShFcnJvckluc3RhbmNlOjpjcmVh
dGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2UsIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBm
YWxzZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRlcnByZXRlcjo6
Y2FsbEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IDA2ZjBjMjAxMmIzNTk0
ZWM3YzgwZjZiNDIyNWI2ODEyNDg5MzdkNDUuLjBlNjIwYzYwYTY3MmY1Y2Y2ZGM4NzE2OWNkZTlj
OWVjYWQxOGNiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAKQEAgLTEyMCw4ICsxMjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWUuaXNTdHJpbmcoKSA/IG5hbWUgOiBqc1N0cmluZyhl
eGVjLCBuYW1lU3RyaW5nKSk7CiAKICAgICAvLyAxMC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY29u
Y2F0ZW5hdGluZyBuYW1lLCAiOiIsIGEgc2luZ2xlIHNwYWNlIGNoYXJhY3RlciwgYW5kIG1zZy4K
LSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsIG5hbWVTdHJpbmcsICI6ICIsIG1lc3NhZ2VTdHJpbmcpKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGV4ZWMsIG5hbWVTdHJpbmcsICI6ICIsIG1lc3NhZ2VTdHJpbmcpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvblNjb3BlLmgKaW5kZXggMDgwZWE1OWRlZmMxMzIxZDMzOGMxNGVhNDM0NWUwNGZj
YTZiZWZlZi4uYTMwYTI5MWNlM2VmNzU0NWVkYWRhMzU3NjdiMWUxYjJhMGExNGY3MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uU2NvcGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5oCkBAIC05Myw0
ICs5Myw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiB2YWx1ZV9fOyBcCiAgICAg
fSB3aGlsZSAoZmFsc2UpCiAKKyNkZWZpbmUgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlX18sIGV4
cHJlc3Npb25fXykgZG8geyBcCisgICAgICAgIHNjb3BlX18ucmVsZWFzZSgpOyBcCisgICAgICAg
IHJldHVybiBleHByZXNzaW9uX187IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGZjMzBmY2YzMTBkZjgwOTAxY2MwNmM5YWI5MzI0YTg1
YTIxNjRkMzIuLjM0ZmIxMThkNThiZTFlM2Y2NTQ1MTFkNmVmY2NlM2Y4M2MyYzc5ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCkBAIC03MSw4ICs3MSw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0CiAKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5l
dmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xv
YmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZU9yaWdpbiwgc291cmNlVVJMLCBw
b3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VP
cmlnaW4sIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUs
IG5ld1RhcmdldCkpOwogfQogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFbmFibGVkQ2hlY2soCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXggOGZjMzAxMzcxZjVhMjViMzgzYTUzZTUwZTJjMzVi
YWE3MzFhM2QzMS4uZDE1MTNjOWI1YjBjOTRmODdiZmJlMmM1YjY4MDZlZjJlMmJhYjY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcApAQCAtODcsMTAgKzg3LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNG
dW5jdGlvbj4odm0pKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPih0aGlzVmFsdWUpOwotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
ZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1c
bn0iKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5G
dW5jdGlvbigpKQorICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rp
b24tPm5hbWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogCiAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUo
KTsKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQ2xhc3MoKSkgewpAQCAtMTQxLDIyICsxMzks
MTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgKICAgICAgICAgICAgIGV4ZWN1dGFi
bGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAogICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFy
YW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0g
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFt
ZSh2bSksIHNvdXJjZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBm
dW5jdGlvbi0+bmFtZSh2bSksIHNvdXJjZSkpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzPEludGVybmFsRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBJbnRlcm5hbEZ1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odGhpc1ZhbHVlKTsKLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCks
ICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
ZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
IikpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGlmIChvYmpl
Y3QtPmlzRnVuY3Rpb24odm0pKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lLCAiKCkge1xu
ICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG9iamVjdC0+
aXNGdW5jdGlvbih2bSkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBv
YmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpKTsKICAgICB9CiAKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJn
dW1lbnRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaAppbmRleCAyNWViYTkyNjQ2MDJlOTY0NGRkYTEyZTY3ZmE3YTFkMzRl
YjBkNGI4Li40MGRiYzYwOTQzNDNkOTczMTBkOWZkYzk3ZDhmNmJiYjgzOTc0MDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJ
bmxpbmVzLmgKQEAgLTI1NCw4ICsyNTQsNyBAQCBib29sIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYwogICAg
IH0KIAogICAgIC8vIE5vdyBqdXN0IGxldCB0aGUgbm9ybWFsIG9iamVjdCBtYWNoaW5lcnkgZG8g
aXRzIHRoaW5nLgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gQmFzZTo6ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBpZGVudCwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHko
b2JqZWN0LCBleGVjLCBpZGVudCwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuY3BwCmluZGV4IGM1YTUyNDNlYzFiYWVhNzRkNGNhYzJjNDFjODU0NDAxNGYy
ODU5ZGMuLjk5OGQxODQ3NmIyYTJjODc4MTBmMzFjOGYzNGQ4NmNkZjI2NzVlZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcApAQCAtNTcsOCAr
NTcsNyBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2Us
IEpTVmFsdWUgZ2V0dGVyU2V0dGVyKQogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEoZ2V0
dGVyLCBjYWxsRGF0YSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjYWxsKGV4
ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgYmFzZSwgQXJnTGlzdCgpKSk7CiB9CiAKIGJvb2wgY2FsbFNldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBnZXR0ZXJTZXR0ZXIsIEpTVmFsdWUgdmFsdWUs
IEVDTUFNb2RlIGVjbWFNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDc5YzUwZmMxMzFhNDkw
YzM0NGYxZDc5ZjBjMjFkN2ZkYWMzNWE4ZGEuLmFmMTViYmIwZjM0NWRhZGRkZWU1ZTkyNDE4NTU3
MWYwYjM3MzY4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE0MSw4ICsxNDEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBv
cnRlZExvY2FsZXNPZihFeGVjUwogCiAgICAgLy8gMy4gUmV0dXJuIFN1cHBvcnRlZExvY2FsZXMo
JUNvbGxhdG9yJS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0aW9u
cykuCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5qc0NhbGxlZSgp
LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBnbG9iYWxPYmplY3QtPmludGxD
b2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKSwgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3Vt
ZW50KDEpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
c3VwcG9ydGVkTG9jYWxlcygqc3RhdGUsIGdsb2JhbE9iamVjdC0+aW50bENvbGxhdG9yQXZhaWxh
YmxlTG9jYWxlcygpLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKSk7CiB9
CiAKIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDkwYmZlZmUwM2My
NGY3ZmRhMmZhM2FmOWVlYTMxOTIyNDY1Y2Q1NGIuLjM1MjY5ZDBiNTE0NzQ4Y2E5Mzk3NDJlY2Zj
MDE4OGU4NjllODg3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcApAQCAtMTA0LDggKzEwNCw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckZ1bmNDb21wYXJlKEV4
ZWNTdGF0ZSogc3RhdGUpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgYXV0byB5Vmlld1dpdGhTdHJpbmcgPSB5LT52aWV3V2l0aFVuZGVybHlp
bmdTdHJpbmcoc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqc3RhdGUsIHhWaWV3V2l0aFN0cmluZy52aWV3
LCB5Vmlld1dpdGhTdHJpbmcudmlldykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3RyaW5ncygqc3RhdGUsIHhWaWV3V2l0
aFN0cmluZy52aWV3LCB5Vmlld1dpdGhTdHJpbmcudmlldykpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNT
dGF0ZSogc3RhdGUpCkBAIC0xNDcsOCArMTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSoK
ICAgICBpZiAoIWNvbGxhdG9yKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVk
T3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQg
YXMgYSBDb2xsYXRvciJfcykpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2
ZWRPcHRpb25zKCpzdGF0ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWZjYmZmZWJkNjQ1MTNkOTcxNmNiNDMyODhlMWY4NDQ5
NGI3YmZiYi4uZWQ0OGJhZmEyM2RlNmU3MGQ3NGIzMmRmNTk2MGVhNjRhMGJhY2RjYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtMTQyLDggKzE0Miw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9y
dGVkTG9jYWxlc09mCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAvLyAzLiBSZXR1cm4gU3VwcG9ydGVkTG9jYWxlcyhhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zKS4KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxh
YmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxl
cygqc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIHN0YXRlLT5hcmd1
bWVudCgxKSkpKTsKIH0KIAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAKaW5kZXggYWY5MTU3M2JlMjdjZGM0MDkzYjMzYjIyY2U4NmIyZjU3NmRm
Y2I3Ny4uMWU0ZDc2MDRjNWRmYTc3ZTc2Y2UzYmIyYWEyMzMyYTlkMDhmNmM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMTEsOCArMTExLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lKEV4
ZWNTdGEKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZm9ybWF0LT5mb3JtYXQoKnN0YXRlLCB2YWx1ZSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdC0+Zm9ybWF0KCpzdGF0ZSwgdmFsdWUp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xNzYsOCArMTc1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0VG9QYXJ0cyhFeGVjU3QKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPmZvcm1hdFRvUGFydHMo
KnN0YXRlLCB2YWx1ZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKSk7CiB9
CiAjZW5kaWYKIApAQCAtMjAwLDggKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjCiAg
ICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAotICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9w
dGlvbnMoKnN0YXRlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmI3YmUzYzZl
NmE4OGZkODk5YWExMmI0OGI1MzRlNmEzMTVkZjdmZi4uMDNlZjM5YTgyYjhjNzg1YTMwODQ1ZjEx
OGIzNWViZGVhMjZjZDYyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0xNDIsOCAr
MTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDMuIFJldHVybiBTdXBwb3J0ZWRM
b2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdGlvbnMpLgotICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExv
Y2FsZXMoKnN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+
YXJndW1lbnQoMSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShzdXBwb3J0ZWRMb2NhbGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVk
TG9jYWxlcywgc3RhdGUtPmFyZ3VtZW50KDEpKSkpOwogfQogCiB2b2lkIEludGxOdW1iZXJGb3Jt
YXRDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAppbmRleCAxZDUyYWE0ZDg1OTFmNzNhMDBjOTA5
NWJjYzI4NDViYzk1Y2U2OTg3Li42NzlmZTY4Y2M3ZjNmOWQ2MTY3YTQyY2U1ZGM2Mjg3YTYxNzk4
MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMTA2LDggKzEwNiw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0TnVt
YmVyKEV4ZWNTdGF0ZSoKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIC8vIDYuIFJldHVybiBGb3JtYXROdW1iZXIobmYsIHgpLgotICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+
Zm9ybWF0TnVtYmVyKCpzdGF0ZSwgbnVtYmVyKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5mb3JtYXROdW1iZXIoKnN0YXRlLCBu
dW1iZXIpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMTYzLDggKzE2
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEV4ZWNTdGF0CiAgICAgZG91YmxlIHZhbHVlID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKHN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0VG9QYXJ0cygqc3RhdGUsIHZh
bHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVt
YmVyRm9ybWF0LT5mb3JtYXRUb1BhcnRzKCpzdGF0ZSwgdmFsdWUpKSk7CiB9CiAjZW5kaWYKIApA
QCAtMTg3LDggKzE4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0CiAgICAgaWYgKCFudW1i
ZXJGb3JtYXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9u
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBO
dW1iZXJGb3JtYXQiX3MpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+
cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGIxOWU5NWNk
MGVjODE2YWUwMmFlN2NlOWY2MDIxNmJiMzNhZDc1YWEuLjdhMThiM2RiZDg5ODA2M2Y1NDNkOTdi
YjRkMGEzNzhmOTM1YzA4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwCkBAIC0yMTIsOCArMjEyLDcgQEAgdW5zaWduZWQgaW50bE51bWJlck9wdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXIK
ICAgICBKU1ZhbHVlIHZhbHVlID0gb3B0cy0+Z2V0KCZzdGF0ZSwgcHJvcGVydHkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDApOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihzdGF0ZSwgdmFsdWUsIHByb3BlcnR5LCBt
aW5pbXVtLCBtYXhpbXVtLCBmYWxsYmFjayk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihzdGF0ZSwgdmFsdWUsIHByb3BlcnR5LCBtaW5pbXVt
LCBtYXhpbXVtLCBmYWxsYmFjaykpOwogfQogCiB1bnNpZ25lZCBpbnRsRGVmYXVsdE51bWJlck9w
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHksIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
LmgKaW5kZXggNmJiZDAwMGU2ZjQ0ZmFiZTVlMTNkMjNkODEyMTRhNTZjOTA1NjgwMi4uZDg3NWNm
MThmMzQwMTczYTA1YmM3YWJhZjIzMWNjNTczOWIyNjc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC01Nyw4ICs1Nyw3IEBA
IEpTVmFsdWUgY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRs
Q29uc3RydWN0b3IoRXhlY1N0YXRlJiBzCiAgICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdDsK
ICAgICAgICAgfQogICAgIH0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGZhY3Rv
cnkodm0pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFjdG9yeSh2bSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IDRhZjU3MjZlNGU5ZTBlZGU1ZWNlYjk3YjE2ZWJk
NzU0YmI3MWE4ZTQuLjVmZjljMGJjMmZiNzMyYmEyOTEzYTQ3MmNkMDI2MmNkYTc1ZmNiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNw
cApAQCAtMjM1LDggKzIzNSw3IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVk
T3B0aW9ucyhFeGVjU3RhdGUmIGV4ZWMpCiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgInBsdXJhbENhdGVnb3JpZXMiKSwgY2F0ZWdvcmllcyk7
CiAjZW5kaWYKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gb3B0aW9uczsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9wdGlvbnMpOwogfQogCiBKU1ZhbHVlIEludGxQ
bHVyYWxSdWxlczo6c2VsZWN0KEV4ZWNTdGF0ZSYgZXhlYywgZG91YmxlIHZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IuY3BwCmluZGV4IDc1OTdiZDcxYjc2NDA2NjU4ZjMxNDAzZDRhNGM1ZDVmMzJi
YmIzNTguLjJhZThiMDY3ZWJlZDlkOWM2MmEwZjFiZmZlYzM4MjJkYWZiNWJjODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyNCw4ICsxMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNP
ZihFeAogICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN1cHBvcnRlZExvY2FsZXMoKnN0YXRlLCBhdmFp
bGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBzdGF0ZS0+YXJndW1lbnQoMSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2Nh
bGVzKCpzdGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgc3RhdGUtPmFy
Z3VtZW50KDEpKSkpOwogfQogCiB2b2lkIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlLmNwcAppbmRleCAwY2M5NWQ3ZmZiNzE5Zjk0MzU1ZTUyOWEwMjQxYjY4YjBmMzA2MTVkLi45
MmE0MzY3ZWYzMTg0NjJjMGFlMDBhMDQ5NmQyOWVkNTIyZmFhMTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKQEAgLTkyLDggKzkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
UGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0KEV4ZWNTdGF0ZSogc3RhdGUKICAgICBkb3Vi
bGUgdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoc3RhdGUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgq
c3RhdGUsIHZhbHVlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocGx1cmFsUnVsZXMtPnNlbGVjdCgqc3RhdGUsIHZhbHVlKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKQEAgLTEwOCw4ICsxMDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMoRXhlY1N0YQogICAgIGlmICghcGx1cmFsUnVsZXMpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxl
cy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKSk7CiAKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwbHVyYWxSdWxlcy0+cmVzb2x2
ZWRPcHRpb25zKCpzdGF0ZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5j
cHAKaW5kZXggYTllMWU1NDQ0MjAyMmY1MzY4NTQ1MmI2Mzc4ODU4NDU1MmU1NTE3YS4uY2RkYmJl
MjcxZDYyNzU4YTg3MmYwZjUxZmE1MDcwYWYxMzUyMTllMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTI1MywxMiArMjUzLDEwIEBAIGJvb2wgSlNBcnJh
eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUKICAgICAgICAgLy8gZS5pLiBTZXQgb2xkTGVuRGVzYy5bW1ZhbHVlXV0gdG8g
aW5kZXggKyAxLgogICAgICAgICAvLyBlLmlpLiBDYWxsIHRoZSBkZWZhdWx0IFtbRGVmaW5lT3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2QgKDguMTIuOSkgb24gQSBwYXNzaW5nICJsZW5ndGgi
LCBvbGRMZW5EZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRzLiBUaGlzIGNhbGwgd2lsbCBhbHdh
eXMgcmV0dXJuIHRydWUuCiAgICAgICAgIC8vIGYuIFJldHVybiB0cnVlLgotICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBhcnJheS0+ZGVmaW5lT3duSW5kZXhlZFByb3Bl
cnR5KGV4ZWMsIGluZGV4LCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJyYXktPmRlZmluZU93bkluZGV4ZWRQcm9wZXJ0eShl
eGVjLCBpbmRleCwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAKLSAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGFycmF5LT5KU09iamVjdDo6ZGVmaW5lT3duTm9u
SW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0
aW9uKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFycmF5LT5KU09iamVjdDo6ZGVm
aW5lT3duTm9uSW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKSk7CiB9CiAKIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjgyLDEwICsyODAsOCBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYQogCiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4o
Y2VsbCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNP
YmplY3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBvcmRp
bmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50
aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VM
WShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7
CiAKICAgICB0aGlzT2JqZWN0LT5lbnN1cmVXcml0YWJsZSh2bSk7CiAKQEAgLTMwMCwxMiArMjk2
LDEwIEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhCiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5n
dGgiX3MpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhl
YywgbmV3TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCB0aGlzT2JqZWN0LT5zZXRMZW5ndGgoZXhlYywgbmV3TGVuZ3RoLCBzbG90
LmlzU3RyaWN0TW9kZSgpKSk7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNB
cnJheTo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC01ODksMTAgKzU4Myw5IEBAIGJvb2wgSlNBcnJheTo6
c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbmV3TGVuZ3RoLCBib29sIHRocm93
RXhjZXB0aW9uCiAgICAgICAgIGlmICghbmV3TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmIChuZXdMZW5ndGggPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewot
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHNldExlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywgbmV3TGVu
Z3RoLCB0aHJvd0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uo
dm0pKTsKKyAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKSk7CiAgICAgICAg
IH0KICAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZCh2bSwgbmV3TGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC02MTUsMTAgKzYwOCw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0
aW9uCiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC8v
IFRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGNhbiBkbyBmYXN0IHB1c2guCiAgICAgICAgICAg
ICB8fCAobmV3TGVuZ3RoID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgKICAgICAgICAgICAgICAg
ICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxlbWVudHMoKSkp
KSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc2V0
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBu
ZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3Rv
cmFnZSh2bSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobmV3TGVuZ3RoID4gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KSkgewogICAgICAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpIHsKQEAg
LTY0OCw4ICs2NDAsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbgogICAgICAgICAKICAgICBj
YXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2U6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNldExl
bmd0aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgbmV3TGVuZ3RoLCB0aHJvd0V4Y2VwdGlvbiwgYXJy
YXlTdG9yYWdlKCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNldExlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgbmV3TGVuZ3RoLCB0aHJvd0V4Y2VwdGlvbiwgYXJyYXlT
dG9yYWdlKCkpKTsKICAgICAgICAgCiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKQEAg
LTEwOTIsMTAgKzEwODMsOCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRl
eGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZAogICAgICAgICAKICAg
ICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1
bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBu
b3QgaG9ycmlibHkgc2xvdy4KLSAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3Rh
cnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwotICAgICAgICB9CisgICAg
ICAgIGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgp
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2
bSkpKTsKIAogICAgICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tl
ZExlbmd0aChvbGRMZW5ndGgpOwogICAgICAgICBjaGVja2VkTGVuZ3RoICs9IGNvdW50OwpAQCAt
MTExNiwxMCArMTEwNSw4IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4
aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kCiAgICAgICAgIC8vIHRo
cm91Z2ggc2hpZnRpbmcgYW5kIHRoZW4gcmVhbGl6ZSB3ZSBzaG91bGQgaGF2ZSBiZWVuIGluIEFy
cmF5U3RvcmFnZSBtb2RlLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGkt
LSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBidXR0ZXJmbHktPmNv
bnRpZ3VvdXMoKS5hdCh0aGlzLCBpKS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
dikpIHsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291
bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCF2KSkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQs
IGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG9sZExlbmd0aDsgaS0tID4gc3RhcnRJbmRleDspIHsKQEAgLTExNDUsMTAgKzEx
MzIsOCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZAogICAgICAgICAKICAgICAgICAgLy8gV2Ug
bWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1bnNoaWZ0LiBXZSdy
ZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBub3QgaG9ycmlibHkg
c2xvdy4KLSAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0gTUlOX1NQQVJTRV9B
UlJBWV9JTkRFWCkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAg
cmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291
bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwotICAgICAgICB9CisgICAgICAgIGlmIChvbGRM
ZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCisgICAgICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2Uo
ZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpKTsKIAogICAg
ICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZExlbmd0aChvbGRM
ZW5ndGgpOwogICAgICAgICBjaGVja2VkTGVuZ3RoICs9IGNvdW50OwpAQCAtMTE2OSwxMCArMTE1
NCw4IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kCiAgICAgICAgIC8vIHRocm91Z2ggc2hpZnRp
bmcgYW5kIHRoZW4gcmVhbGl6ZSB3ZSBzaG91bGQgaGF2ZSBiZWVuIGluIEFycmF5U3RvcmFnZSBt
b2RlLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5k
ZXg7KSB7CiAgICAgICAgICAgICBkb3VibGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJs
ZSgpLmF0KHRoaXMsIGkpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHYgIT0gdikpIHsKLSAg
ICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVu
c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3Vy
ZUFycmF5U3RvcmFnZSh2bSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHYgIT0gdikpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB1
bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1
cmVBcnJheVN0b3JhZ2Uodm0pKSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CkBAIC0xMTkxLDggKzExNzQsNyBA
QCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBzdGFydEluZAogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aEFy
cmF5U3RvcmFnZToKICAgICBjYXNlIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGFycmF5U3RvcmFnZSgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdl
KGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBhcnJheVN0b3JhZ2UoKSkpOwogICAgICAgICAKICAg
ICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCAyODgxMWNj
NTA3OTE3YTBiM2JhMDE5N2MzMzc3NmQ4M2U2YzY1ZGViLi42YzBiOTcxMDViN2U3NzE5Njk3YjU0
MjFhMjYzNmYxYTRhZjJlMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtODIsOSArODIsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvR2V0dGVy
RnVuY0J5dGVMZW5ndGgoRXhlY1N0YQogICAgIGlmICh0aGlzT2JqZWN0LT5pc1NoYXJlZCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIlJlY2VpdmVyIHNo
b3VsZCBub3QgYmUgYSBzaGFyZWQgYXJyYXkgYnVmZmVyIl9zKTsKIAotICAgIHNjb3BlLnJlbGVh
c2UoKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+
aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKSkp
KTsKIH0KIAogLy8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFzY3JpcHRfc2hhcmVkbWVtL3No
bWVtLmh0bWwjU3RydWN0dXJlZERhdGEuU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLmdldF9i
eXRlTGVuZ3RoCkBAIC0xMDIsOSArMTAwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEUKICAg
ICBpZiAoIXRoaXNPYmplY3QtPmlzU2hhcmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgc2hhcmVkIGFycmF5IGJ1
ZmZlciJfcyk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09i
amVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkpKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU0Fy
cmF5QnVmZmVyUHJvdG90eXBlOjpzX2luZm8gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAppbmRleCA1MDk1NzM1MGJmZGRkZDM0MTVmYWIyMTBl
N2MwNjg3MjcwZTdkNGE1Li4xNjliZWQyYmFiNmQzNWNlOGI2NjJjZWExOWYxNTBhMmQ2NDBlNjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgK
QEAgLTEwMCw4ICsxMDAsNyBAQCBBTFdBWVNfSU5MSU5FIGRvdWJsZSB0b0xlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCiAKICAgICBKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2Jq
LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBQTmFOKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGxl
bmd0aFZhbHVlLnRvTGVuZ3RoKGV4ZWMpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
bGVuZ3RoVmFsdWUudG9MZW5ndGgoZXhlYykpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSlNB
cnJheTo6cHVzaElubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCAy
Y2JkYjkzNWM1MmU0NWQ1NjIyZTZlNzYzZmE1MTI3YjNhOWFlYTY2Li5mZjQ5ZWFmYjkwZjcwNTNl
YTQ3MTcyNmVkYzQ3NmVlNmZlNTExMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKQEAgLTc5LDggKzc5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YSh2bSwgdGFyZ2V0RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhbGwoZXhlYywgdGFyZ2V0RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Ym91bmRGdW5jdGlvbi0+Ym91bmRUaGlzKCksIGFyZ3MpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGJvdW5kRnVuY3Rpb24tPmJvdW5kVGhpcygpLCBhcmdzKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29u
c3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyMyw4ICsxMjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXRGdW5jdGlvbiwgY29uc3RydWN0
RGF0YSk7CiAgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZTo6Tm9uZSk7
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0KGV4ZWMsIHRhcmdldEZ1bmN0aW9uLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRh
LCBhcmdzKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGlzQm91bmRGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCmluZGV4IDk2ODE5NjJlYWQyMGNhODNkZGEzOTI1Mjg4NWIxNzAzMTc5ZDVl
YjYuLjEzNjE1NzkzY2MzNzFmNTIwMDgwYjVmZDRiYmM4ZjFmNDQzYzdkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0xNTIsMTAgKzE1Miw4
IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmVCeUlu
ZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAg
ICB9CisgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dFRvUHJp
bWl0aXZlQnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1v
ZGUoKSkpOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRl
cnMgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgogICAgIEpTT2JqZWN0KiBvYmogPSBzeW50aGVzaXpl
UHJvdG90eXBlKGV4ZWMpOwpAQCAtMTgxLDEwICsxNzksOCBAQCBib29sIEpTVmFsdWU6OnB1dFRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKIAogICAgICAgICAg
ICAgSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAo
Z3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewotICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2FsbFNldHRlcihleGVjLCAqdGhpcywgZ3MsIHZhbHVl
LCBzbG90LmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGdzLmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsU2V0dGVyKGV4ZWMsICp0aGlz
LCBncywgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0
TW9kZSkpOwogCiAgICAgICAgICAgICBpZiAoZ3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gY2FsbEN1c3RvbVNldHRlcihleGVjLCBncywgYXR0cmlidXRl
cyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvciwgb2JqLCBzbG90LnRoaXNWYWx1
ZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAppbmRleCBiODg1ZGFmOTE5MzliMDYyYTYxNjBjYTg3NmZmYjczYjhkNzVj
MWZiLi42Y2YzYTIyM2MyZGFiZWNkMjhjNDI5YmYwNzI1NDE1MzI4ZDI0ZDFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTc0
LDggKzc0LDcgQEAgaW5saW5lIHVpbnQzMl90IEpTVmFsdWU6OnRvSW5kZXgoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBjaGFyKiBlcnJvck5hbWUpIGNvbnN0CiAKICAgICBpZiAoaXNJbnQzMigpKQog
ICAgICAgICByZXR1cm4gYXNJbnQzMigpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNDOjp0b0ludDMyKGQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjp0
b0ludDMyKGQpKTsKIH0KIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVSW50MzIoKSBjb25zdApA
QCAtNjQ3LDE5ICs2NDYsMTUgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpTVmFsdWU6OnRv
UHJvcGVydHlLZXkoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYg
KGlzU3RyaW5nKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4g
YXNTdHJpbmcoKnRoaXMpLT50b0lkZW50aWZpZXIoZXhlYyk7Ci0gICAgfQorICAgIGlmIChpc1N0
cmluZygpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKCp0aGlz
KS0+dG9JZGVudGlmaWVyKGV4ZWMpKTsKIAogICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gdG9Qcmlt
aXRpdmUoZXhlYywgUHJlZmVyU3RyaW5nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAgIGlmIChwcmltaXRpdmUu
aXNTeW1ib2woKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1lKCkpOwot
ICAgIH0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHByaW1pdGl2ZS50b1N0cmlu
ZyhleGVjKS0+dG9JZGVudGlmaWVyKGV4ZWMpOworICAgIGlmIChwcmltaXRpdmUuaXNTeW1ib2wo
KSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGFzU3ltYm9sKHByaW1pdGl2ZSktPnByaXZhdGVOYW1lKCkpKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgcHJpbWl0aXZlLnRvU3RyaW5nKGV4ZWMpLT50b0lkZW50aWZpZXIoZXhl
YykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKQEAgLTg0
Myw4ICs4MzgsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUAogICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFoYXNTbG90KTsKICAgICBpZiAoIWhhc1Nsb3QpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2tXaGVuTm9FeGNlcHRpb24+CkBAIC04NjAsOCArODU0
LDcgQEAgQUxXQVlTX0lOTElORSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxDYWxsYmFja1doZW5O
b0V4Y2VwdGlvbihib29sLCBQcm9wZXJ0eVNsb3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBib29sIGZvdW5kID0gZ2V0UHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGNhbGxiYWNrKGZvdW5k
LCBzbG90KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxiYWNrKGZvdW5kLCBz
bG90KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpnZXRQcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpIGNvbnN0CkBAIC04ODQsOCArODc3LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFs
dWU6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXIK
ICAgICB9IGVsc2UKICAgICAgICAgb2JqZWN0ID0gYXNPYmplY3QoYXNDZWxsKCkpOwogCi0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgb2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKIEFM
V0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIGNvbnN0
CkBAIC04OTQsMTYgKzg4NiwxNCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBybwogICAgIC8vIGFu
ZCBpZiBpdCdzIGEgc3RyaW5nIHRoZXJlIGFyZSBzcGVjaWFsIHByb3BlcnRpZXMgdG8gY2hlY2sg
Zmlyc3QuCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFpc09iamVjdCgpKSkgewotICAgICAgICBpZiAoaXNTdHJpbmco
KSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKCp0aGlzKS0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGlzU3RyaW5nKCkpCisgICAgICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGFzU3RyaW5nKCp0aGlzKS0+Z2V0U3RyaW5nUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpOworCiAgICAgICAgIGlmIChpc1VuZGVm
aW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGFzT2JqZWN0KGFzQ2Vs
bCgpKS0+Z2V0T3duUHJvcGVydHlTbG90SW5saW5lKGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc09iamVjdChhc0NlbGwoKSktPmdldE93
blByb3BlcnR5U2xvdElubGluZShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAogQUxX
QVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTkyMiwxMCArOTEyLDggQEAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFt
ZSwgUHJvcGUKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGJvb2wgaGFz
UHJvcGVydHkgPSBhc1N0cmluZygqdGhpcyktPmdldFN0cmluZ1Byb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKLSAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShl
eGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhhc1By
b3BlcnR5KQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgc2xvdC5n
ZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgfQogICAgICAgICBvYmplY3Qg
PSBzeW50aGVzaXplUHJvdG90eXBlKGV4ZWMpOwogICAgICAgICBFWENFUFRJT05fQVNTRVJUKCEh
c2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9iamVjdCk7CkBAIC05MzgsOCArOTI2LDcgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgUHJvcGUKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSB8fCAhaGFzU2xvdCk7CiAgICAgaWYgKCFoYXNTbG90KQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNsb3Qu
Z2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCB1aW50NjRfdCBwcm9wZXJ0eU5hbWUpIGNv
bnN0CkBAIC0xMDA1LDEwICs5OTIsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1
YWxTbG93Q2FzZUlubGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVgogCiAgICAg
ICAgIGJvb2wgczEgPSB2MS5pc1N0cmluZygpOwogICAgICAgICBib29sIHMyID0gdjIuaXNTdHJp
bmcoKTsKLSAgICAgICAgaWYgKHMxICYmIHMyKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmlu
Zyh2MikpOwotICAgICAgICB9CisgICAgICAgIGlmIChzMSAmJiBzMikKKyAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXNTdHJpbmcodjEpLT5lcXVhbChleGVjLCBhc1N0cmlu
Zyh2MikpKTsKIAogICAgICAgICBpZiAodjEuaXNCaWdJbnQoKSAmJiBzMikgewogICAgICAgICAg
ICAgSlNCaWdJbnQqIG4gPSBKU0JpZ0ludDo6c3RyaW5nVG9CaWdJbnQoZXhlYywgYXNTdHJpbmco
djIpLT52YWx1ZShleGVjKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwCmluZGV4IGE3ZjU3Y2U1YjRjOTRiYTU1ODI3NWNkMGQ3MTJhNGI0NmVjMzUwNDMu
LjViYTk2M2JkZTM5MGZkMjIyYWQxZGRkNWU3YTVjNjUwOTVlZmY0ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBAIC0xMjcsMTcgKzEyNywxNCBA
QCBib29sIEpTRGF0YVZpZXc6OnB1dCgKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RhdGFWaWV3
Kj4oY2VsbCk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRo
aXNPYmplY3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBv
cmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgfQorICAgIGlmIChVTkxJ
S0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgp
KSk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVMZW5n
dGgKICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVPZmZz
ZXQpCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RN
b2RlKCksICJBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9w
ZXJ0eS4iX3MpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpwdXQo
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIEpTRGF0YVZpZXc6OmRlZmluZU93blByb3Bl
cnR5KApAQCAtMTUxLDggKzE0OCw3IEBAIGJvb2wgSlNEYXRhVmlldzo6ZGVmaW5lT3duUHJvcGVy
dHkoCiAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlT2Zm
c2V0KQogICAgICAgICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywg
IkF0dGVtcHRpbmcgdG8gZGVmaW5lIHJlYWQtb25seSB0eXBlZCBhcnJheSBwcm9wZXJ0eS4iX3Mp
OwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9w
ZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRo
cm93KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpKTsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpkZWxldGVQcm9wZXJ0eSgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggNTE0M2Y3ZTYxM2JkMzgw
YjI0ODQwODk0NjRmMDJkMmI3OWViNWJkYi4uZTgwOWE1N2U5YWE1Y2IwZDkxNTFmY2JjYzg5ZGMz
MzRhYzQzNmI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKQEAgLTQ5NywxNyArNDk3LDE1IEBAIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAKICAg
ICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKIAot
ICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKSB7
Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xv
dyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgp
LCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKGlzVGhpc1Zh
bHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKKwogCiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgUHJv
cGVydHlTdGF0dXMgcHJvcGVydHlUeXBlID0gdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlG
b3JIb3N0T3JCdWlsdGluSWZOZWVkZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IGlmIChpc0xhenkocHJvcGVydHlUeXBlKSkKICAgICAgICAgICAgIHNsb3QuZGlzYWJsZUNhY2hp
bmcoKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAgfQogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpIHsKQEAgLTUxOCwyMyArNTE2LDIwIEBAIGJv
b2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKCiAgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0
U2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKQogICAgICAgICAgICAg
dGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0
eSBvZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgIH0KIAogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzIHx8IHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIpIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+aGFzQ2FsbGVyQW5kQXJndW1lbnRzUHJvcGVydGllcygpKSB7Ci0g
ICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICB9
CisgICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFy
Z3VtZW50c1Byb3BlcnRpZXMoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
KTsKKwogICAgICAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CiAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKICAgICB9CiAgICAgUHJvcGVydHlTdGF0dXMgcHJvcGVydHlUeXBlID0gdGhp
c09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1l
KTsKICAgICBpZiAoaXNMYXp5KHByb3BlcnR5VHlwZSkpCiAgICAgICAgIHNsb3QuZGlzYWJsZUNh
Y2hpbmcoKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBA
IC01NjcsOCArNTYyLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmEKICAgICBKU0Z1bmN0aW9u
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3Qt
PnJlaWZ5TGF6eVByb3BlcnR5Rm9ySG9zdE9yQnVpbHRpbklmTmVlZGVkKHZtLCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBCYXNl
OjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgdGhyb3dFeGNlcHRpb24pOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEJh
c2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7CkBAIC01NzgsMjcgKzU3MiwyMyBAQCBib29s
IEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYQogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OwogICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNP
YmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2Yg
YSBmdW5jdGlvbiIpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCB0aHJvd0V4Y2VwdGlvbikpOwogICAgIH0KIAogICAgIGJvb2wgdmFsdWVDaGVjazsK
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykgewot
ICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1
bWVudHNQcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwotICAgICAgICB9CisgICAgICAg
IGlmICghdGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1By
b3BlcnRpZXMoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6
ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Is
IHRocm93RXhjZXB0aW9uKSk7CisKICAgICAgICAgdmFsdWVDaGVjayA9ICFkZXNjcmlwdG9yLnZh
bHVlKCkgfHwgc2FtZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgcmV0cmlldmVBcmd1
bWVudHMoZXhlYywgdGhpc09iamVjdCkpOwogICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikgewotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmpz
RXhlY3V0YWJsZSgpLT5oYXNDYWxsZXJBbmRBcmd1bWVudHNQcm9wZXJ0aWVzKCkpIHsKLSAgICAg
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVP
d25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dF
eGNlcHRpb24pOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpc09iamVjdC0+anNFeGVjdXRh
YmxlKCktPmhhc0NhbGxlckFuZEFyZ3VtZW50c1Byb3BlcnRpZXMoKSkKKyAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKSk7CisKICAgICAg
ICAgdmFsdWVDaGVjayA9ICFkZXNjcmlwdG9yLnZhbHVlKCkgfHwgc2FtZVZhbHVlKGV4ZWMsIGRl
c2NyaXB0b3IudmFsdWUoKSwgcmV0cmlldmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqZWN0
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJ
Zk5lZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAgICAg
IAogICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKaW5kZXggMjc5YTc4MWNhZmExNTUxOWYyNTE0ZTQ3OGVhMDFmZWExYTdlNGNjNy4u
ODVhNzY0YWZmYjFmMGY0OTNkOTk5OGY0Y2Y5ZTY3ZDRmODY0NGFiZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xMzMsOCArMTMzLDcgQEAg
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgIGxlbmd0aCA9IChidWZmZXItPmJ5
dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogICAgICAgICB9
CiAKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpj
cmVhdGUoZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShleGVj
LCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICB9CiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCkBAIC0xNzEsOCArMTcwLDcg
QEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgICAgICAgICAgfHwgbGVuZ3Ro
U2xvdC5pc0FjY2Vzc29yKCkgfHwgbGVuZ3RoU2xvdC5pc0N1c3RvbSgpIHx8IGxlbmd0aFNsb3Qu
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKQogICAgICAgICAgICAgICAgICAgICB8fCBoYXNBbnlB
cnJheVN0b3JhZ2Uob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkpKSB7CiAKLSAgICAgICAgICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0ZXJhdG9yPFZpZXdDbGFzcz4oZXhlYywgc3Ry
dWN0dXJlLCBvYmplY3QsIGl0ZXJhdG9yRnVuYyk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0
ZXJhdG9yPFZpZXdDbGFzcz4oZXhlYywgc3RydWN0dXJlLCBvYmplY3QsIGl0ZXJhdG9yRnVuYykp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobGVuZ3RoU2xvdC5pc1Vuc2V0KCkp
CkBAIC0yMDAsOCArMTk4LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKIAogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGZpcnN0VmFsdWUudG9JbmRleChleGVjLCAibGVuZ3RoIik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1
Y3R1cmUsIGxlbmd0aCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkBAIC0y
MjEsOCArMjE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoVmlld0NsYXNz
OjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KQogICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmlldyBjb25zdHJ1Y3RvciBy
ZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIl9zKTsKIAotICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUo
ZXhlYywgc3RydWN0dXJlLCAwKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpKTsK
ICAgICB9CiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKTsKQEAgLTI0Nyw4ICsyNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPFZpZXdDbGFzcz4o
ZXhlYywgc3RydWN0dXJlLCBKU1ZhbHVlOjplbmNvZGUoZmlyc3RWYWx1ZSksIG9mZnNldCwgbGVu
Z3RoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxWaWV3Q2xhc3M+KGV4ZWMs
IHN0cnVjdHVyZSwgSlNWYWx1ZTo6ZW5jb2RlKGZpcnN0VmFsdWUpLCBvZmZzZXQsIGxlbmd0aCkp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAppbmRleCA1YjJkMWZiZTU4N2JkM2QyZWE0ODkyNzc0NGYzOGFjMzE5MDg4ZjZmLi5j
YTE4ODQ0NzcyODEwMGM1YWYzN2E1N2Q2ZDdlMTRjNmY4NzkyYjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaApAQCAtMjYyLDQxICsyNjIsMzIgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6c2V0KAogICAgIAogICAgIHN3aXRjaCAoY2ktPnR5cGVkQXJyYXlT
dG9yYWdlVHlwZSkgewogICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmV0dXJuIHNldFdpdGhTcGVjaWZpY1R5cGU8SW50OEFkYXB0b3I+KAotICAg
ICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNJbnQ4QXJyYXkqPihvYmplY3QpLCBvYmpl
Y3RPZmZzZXQsIGxlbmd0aCwgdHlwZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgc2V0V2l0aFNwZWNpZmljVHlwZTxJbnQ4QWRhcHRvcj4oCisgICAgICAgICAgICBleGVjLCBv
ZmZzZXQsIGpzQ2FzdDxKU0ludDhBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3Ro
LCB0eXBlKSk7CiAgICAgY2FzZSBUeXBlSW50MTY6Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICAgICAgcmV0dXJuIHNldFdpdGhTcGVjaWZpY1R5cGU8SW50MTZBZGFwdG9yPigKLSAgICAg
ICAgICAgIGV4ZWMsIG9mZnNldCwganNDYXN0PEpTSW50MTZBcnJheSo+KG9iamVjdCksIG9iamVj
dE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBzZXRXaXRoU3BlY2lmaWNUeXBlPEludDE2QWRhcHRvcj4oCisgICAgICAgICAgICBleGVjLCBv
ZmZzZXQsIGpzQ2FzdDxKU0ludDE2QXJyYXkqPihvYmplY3QpLCBvYmplY3RPZmZzZXQsIGxlbmd0
aCwgdHlwZSkpOwogICAgIGNhc2UgVHlwZUludDMyOgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBzZXRXaXRoU3BlY2lmaWNUeXBlPEludDMyQWRhcHRvcj4oCi0gICAg
ICAgICAgICBleGVjLCBvZmZzZXQsIGpzQ2FzdDxKU0ludDMyQXJyYXkqPihvYmplY3QpLCBvYmpl
Y3RPZmZzZXQsIGxlbmd0aCwgdHlwZSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgc2V0V2l0aFNwZWNpZmljVHlwZTxJbnQzMkFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywg
b2Zmc2V0LCBqc0Nhc3Q8SlNJbnQzMkFycmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5n
dGgsIHR5cGUpKTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgICAgICByZXR1cm4gc2V0V2l0aFNwZWNpZmljVHlwZTxVaW50OEFkYXB0b3I+KAotICAg
ICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50OEFycmF5Kj4ob2JqZWN0KSwgb2Jq
ZWN0T2Zmc2V0LCBsZW5ndGgsIHR5cGUpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHNldFdpdGhTcGVjaWZpY1R5cGU8VWludDhBZGFwdG9yPigKKyAgICAgICAgICAgIGV4ZWMs
IG9mZnNldCwganNDYXN0PEpTVWludDhBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVu
Z3RoLCB0eXBlKSk7CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgotICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQ4Q2xhbXBl
ZEFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50OENsYW1w
ZWRBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQ4Q2xhbXBl
ZEFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50OENsYW1w
ZWRBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAgICAgY2Fz
ZSBUeXBlVWludDE2OgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBz
ZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQxNkFkYXB0b3I+KAotICAgICAgICAgICAgZXhlYywgb2Zm
c2V0LCBqc0Nhc3Q8SlNVaW50MTZBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3Ro
LCB0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRoU3BlY2lm
aWNUeXBlPFVpbnQxNkFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8
SlNVaW50MTZBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBlKSk7CiAg
ICAgY2FzZSBUeXBlVWludDMyOgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJl
dHVybiBzZXRXaXRoU3BlY2lmaWNUeXBlPFVpbnQzMkFkYXB0b3I+KAotICAgICAgICAgICAgZXhl
Yywgb2Zmc2V0LCBqc0Nhc3Q8SlNVaW50MzJBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwg
bGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzZXRXaXRo
U3BlY2lmaWNUeXBlPFVpbnQzMkFkYXB0b3I+KAorICAgICAgICAgICAgZXhlYywgb2Zmc2V0LCBq
c0Nhc3Q8SlNVaW50MzJBcnJheSo+KG9iamVjdCksIG9iamVjdE9mZnNldCwgbGVuZ3RoLCB0eXBl
KSk7CiAgICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICByZXR1cm4gc2V0V2l0aFNwZWNpZmljVHlwZTxGbG9hdDMyQWRhcHRvcj4oCi0gICAgICAg
ICAgICBleGVjLCBvZmZzZXQsIGpzQ2FzdDxKU0Zsb2F0MzJBcnJheSo+KG9iamVjdCksIG9iamVj
dE9mZnNldCwgbGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBzZXRXaXRoU3BlY2lmaWNUeXBlPEZsb2F0MzJBZGFwdG9yPigKKyAgICAgICAgICAgIGV4ZWMs
IG9mZnNldCwganNDYXN0PEpTRmxvYXQzMkFycmF5Kj4ob2JqZWN0KSwgb2JqZWN0T2Zmc2V0LCBs
ZW5ndGgsIHR5cGUpKTsKICAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgIHJldHVybiBzZXRXaXRoU3BlY2lmaWNUeXBlPEZsb2F0NjRBZGFwdG9y
PigKLSAgICAgICAgICAgIGV4ZWMsIG9mZnNldCwganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2Jq
ZWN0KSwgb2JqZWN0T2Zmc2V0LCBsZW5ndGgsIHR5cGUpOworICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHNldFdpdGhTcGVjaWZpY1R5cGU8RmxvYXQ2NEFkYXB0b3I+KAorICAgICAg
ICAgICAgZXhlYywgb2Zmc2V0LCBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpLCBvYmpl
Y3RPZmZzZXQsIGxlbmd0aCwgdHlwZSkpOwogICAgIGNhc2UgTm90VHlwZWRBcnJheToKICAgICBj
YXNlIFR5cGVEYXRhVmlldzogewogICAgICAgICBib29sIHN1Y2Nlc3MgPSB2YWxpZGF0ZVJhbmdl
KGV4ZWMsIG9mZnNldCwgbGVuZ3RoKTsKQEAgLTQxNCwxNCArNDA1LDEyIEBAIGJvb2wgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5KAogCiAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnZhbHVlKCkpIHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCB1
bnVzZWQoSlNWYWx1ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwotICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IudmFsdWUoKSwgdW51c2VkKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvci52YWx1ZSgpLCB1bnVzZWQpKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUZ1bmN0aW9ucy5oCmluZGV4IDdjOWU2Y2U5NmZhMzg0ZTJmMWJiZjBlOGU3YmVhY2RmNjFi
MWU3NjQuLmU1NDlmM2I1MTM0ZDFmOWM4MjI1OWE4NDU5NjJjYWMzZDFiOTdhNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTEsMTAgKzUx
LDkgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLAogICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBl
eGVtcGxhci0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIGlmIChjb25zdHJ1Y3Rv
ci5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIGRlZmF1bHRDb25zdHJ1Y3RvcigpOwotICAgIH0KKyAgICBpZiAoY29uc3RydWN0b3IuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkZWZhdWx0Q29u
c3RydWN0b3IoKSk7CisKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91
bGQgbm90IGJlIG51bGwiX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYzLDEwICs2
Miw5IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBleGVtcGxhciwKICAgICBKU1ZhbHVlIHNwZWNpZXMgPSBjb25z
dHJ1Y3Rvci5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoc3BlY2llcy5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
cmV0dXJuIGRlZmF1bHRDb25zdHJ1Y3RvcigpOwotICAgIH0KKyAgICBpZiAoc3BlY2llcy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGRlZmF1
bHRDb25zdHJ1Y3RvcigpKTsKKwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjb25zdHJ1Y3QoZXhl
Yywgc3BlY2llcywgYXJncywgInNwZWNpZXMgaXMgbm90IGEgY29uc3RydWN0b3IiKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKQEAgLTI3OSw4ICsyNzcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0pvaW4oVk0mIHZtLCBFeGVjU3RhdAogICAgICAgICAgICAgam9pbmVyLmFwcGVuZCgqZXhlYywg
dGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICB9Ci0gICAgICAgIHNj
b3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqb2luZXIuam9p
bigqZXhlYykpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqb2luZXIuam9pbigqZXhlYykpKTsKICAgICB9OwogCiAgICAgSlNWYWx1ZSBzZXBhcmF0
b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAtNTUzLDExICs1NTAsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJnYKICAgICBpZiAoc3BlY2llcyA9PSBkZWZhdWx0Q29uc3RydWN0b3Ip
IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCh2
bSktPnR5cGVkQXJyYXlTdHJ1Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUp
OwogCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShWaWV3Q2xhc3M6OmNyZWF0ZSgKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCiAgICAgICAgICAgICBleGVjLCBz
dHJ1Y3R1cmUsIFdURk1vdmUoYXJyYXlCdWZmZXIpLAogICAgICAgICAgICAgdGhpc09iamVjdC0+
Ynl0ZU9mZnNldCgpICsgb2Zmc2V0ICogVmlld0NsYXNzOjplbGVtZW50U2l6ZSwKLSAgICAgICAg
ICAgIGxlbmd0aCkpOworICAgICAgICAgICAgbGVuZ3RoKSkpOwogICAgIH0KIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzM2M2RkZTU4NThiOWQ1OTY1OGYyNTU3MjU2NTE4
MGM2ZDY4NTYzOS4uN2JjZWFmMmUwZGQxNTk3Yzc4ODZhMDM3MzI2YmQ5YWE2OWU4M2Q5NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMTA5NywxMCArMTA5Nyw4IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtCiAgICAgSlNHbG9i
YWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKTsKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpc09iamVjdCkpOwogCi0gICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJl
ZChzbG90LCB0aGlzT2JqZWN0KSkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4gb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgIH0KKyAg
ICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0
cmljdE1vZGUoKSkpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgPSBzbG90
LmlzU3RyaWN0TW9kZSgpOwogICAgIGJvb2wgaWdub3JlUmVhZE9ubHlFcnJvcnMgPSBmYWxzZTsK
QEAgLTExMDksOCArMTEwNyw3IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtCiAgICAgRVhDRVBU
SU9OX0FTU0VSVCgoISFzY29wZS5leGNlcHRpb24oKSA9PSAoZG9uZSAmJiAhcHV0UmVzdWx0KSkg
fHwgIXNob3VsZFRocm93UmVhZE9ubHlFcnJvcik7CiAgICAgaWYgKGRvbmUpCiAgICAgICAgIHJl
dHVybiBwdXRSZXN1bHQ7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIEpTR2xvYmFsT2JqZWN0OjpkZWZpbmVP
d25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBzaG91bGRUaHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA4ODJhZjk3ZjJjMDU1NmVkMzhj
NDk5OTU4NGY4MDBiMGU3YzI1MDI4Li5lYWYxMzBlMTBkZjhkMjE0MTgxMjc4OTBjMjZkYWI4MWI4
YWNmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0yMjksOCArMjI5LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMs
IGludCBsZW5ndGgsIGMKICAgICAgICAgaysrOwogICAgICAgICBidWlsZGVyLmFwcGVuZChjKTsK
ICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1N0cmluZygmdm0sIGJ1
aWxkZXIudG9TdHJpbmcoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmlu
Zygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RVbmVzY2FwZSwgYm9vbCBz
dHJpY3QpCkBAIC01MDQsOCArNTAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFldmFsKQogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGV4ZWMsIGNh
bGxlZUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCBjYWxsZWVHbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLCBleGVjLCBjYWxsZWVHbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKSwgY2FsbGVlR2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQYXJzZUludChFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC03MTQsOCArNzEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHByb3RvdHlwZSk7CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZt
LCBleGVjKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dGhpc09iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5j
cHAKaW5kZXggMTJmNTI5NDVmMzJlMTdiYWQ3NjY0NzNhOGI5Nzg0MTI2YWQ5OGM5Mi4uNTI4ZDdj
MmVhN2ZmYTdjY2YwNzFiNTQyOTEyZTUyYTFiMWIyOTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcApAQCAtNjYsOCArNjYs
NyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNJbnRlcm5hbFByb21pc2U6OnRoZW4oRXhlY1N0YXRl
KiBleGVjLCBKU0Z1bmN0aW9uKiBvbkZ1bGZpbAogICAgIGFyZ3VtZW50cy5hcHBlbmQob25SZWpl
Y3RlZCA/IG9uUmVqZWN0ZWQgOiBqc1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50
cy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBq
c0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmly
b25tZW50LmNwcAppbmRleCA1MDUwNjM0OTdhMjJiMjAwZTk5M2IwY2ZlYWJkMzYzY2NlOGU0N2Rh
Li44Y2IwZTVmNWQyZmFmZGYwN2MyMTY3MGNiMzdmMDZmYTE5MzE3YzY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApA
QCAtMTIzLDggKzEyMyw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVyCiAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVy
biBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDQ1NTM4MjkwMzlmN2EwM2FkODJiMmYyZmU3MzJk
MzExZWE2MGE5ODkuLmIwMjIxZjMwZjgyZDU2OThhN2JkYTk1YjJkZWExM2EyOTMwMDNhMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
QEAgLTEzOCw4ICsxMzgsNyBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpwcm92aWRlRmV0Y2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgY29uc3QgU291cmNlQwogICAgIGFyZ3VtZW50
cy5hcHBlbmQoSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFdURk1vdmUoc291cmNlKSkpOwogICAg
IEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpcywgYXJndW1lbnRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7CiB9CiAK
IEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMs
IEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAgLTE1OSw4ICsxNTgsNyBAQCBKU0ludGVybmFsUHJv
bWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdQogICAgIGFyZ3VtZW50cy5hcHBlbmQoc2NyaXB0RmV0Y2hlcik7CiAgICAgQVNT
RVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxKU0ludGVybmFsUHJvbWlzZSo+KGNhbGwoZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSkpOwogfQogCiBKU0lu
dGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OmxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQpAQCAtMTgwLDggKzE3OCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxv
YWRlcjo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtCiAgICAg
YXJndW1lbnRzLmFwcGVuZChzY3JpcHRGZXRjaGVyKTsKICAgICBBU1NFUlQoIWFyZ3VtZW50cy5o
YXNPdmVyZmxvd2VkKCkpOwogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc0Nh
c3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
anNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7CiB9CiAKIEpTVmFsdWUgSlNNb2R1bGVMb2Fk
ZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxl
S2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMDAsOCArMTk3LDcgQEAgSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBtb2R1bGVLZXkKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwogICAg
IEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpcywgYXJndW1lbnRzKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7CiB9CiAK
IEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVxdWVzdEltcG9ydE1vZHVsZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBwYXJh
bWV0ZXJzLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMjEsOCArMjE3LDcgQEAgSlNJbnRl
cm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjpyZXF1ZXN0SW1wb3J0TW9kdWxlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWQKICAgICBhcmd1bWVudHMuYXBwZW5kKHNjcmlwdEZldGNoZXIpOwog
ICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgcmV0dXJuIGpzQ2FzdDxKU0ludGVybmFsUHJvbWlzZSo+KGNhbGwoZXhlYywg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywgYXJndW1lbnRzKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpKTsKIH0K
IAogSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjppbXBvcnRNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBKU1N0cmluZyogbW9kdWxlTmFtZSwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25z
dCBTb3VyY2VPcmlnaW4mIHJlZmVycmVyKQpAQCAtMzMzLDggKzMyOCw3IEBAIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5nZXRNb2R1bGVOYW1lc3BhY2Uo
ZXhlYyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBtb2R1bGVSZWNvcmQtPmdldE1v
ZHVsZU5hbWVzcGFjZShleGVjKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM5NSwx
MCArMzg5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1
ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBtb2R1
bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4odm0sIGV4ZWMt
PmFyZ3VtZW50KDApKTsKLSAgICBpZiAoIW1vZHVsZVJlY29yZCkgewotICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlB
cnJheShleGVjLCBudWxscHRyKSk7Ci0gICAgfQorICAgIGlmICghbW9kdWxlUmVjb3JkKSAKKyAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCBudWxscHRyKSkpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBtb2R1bGVSZWNvcmQtPnJlcXVlc3RlZE1v
ZHVsZXMoKS5zaXplKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAppbmRleCA3NDA0ZTcxNDBkZGRhMzgyMGNiM2MwMDhkN2QwNWYyNDFkZWQ4MzdhLi4yOTk4NzAy
YzI1YmY0NzY2YTIwYWQ2NDNmMzc0OTYxYjhkYmM0OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMjgwLDggKzI4MCw3IEBAIEpTVmFsdWUg
U3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChVTkxJS0VMWShz
dHJpbmdpZnlSZXN1bHQgIT0gU3RyaW5naWZ5U3VjY2VlZGVkKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5n
KG1fZXhlYywgcmVzdWx0LnRvU3RyaW5nKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwganNTdHJpbmcobV9leGVjLCByZXN1bHQudG9TdHJpbmcoKSkpOwogfQogCiBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU09iamVjdCogb2JqZWN0LCBjb25zdCBQ
cm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKQEAgLTI5OCw4ICsyOTcs
NyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU09iamVjdCog
b2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWVGbwogCiAgICAgSlNWYWx1ZSB0b0pTT05GdW5jdGlv
biA9IHNsb3QuZ2V0VmFsdWUobV9leGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT50b0pTT04pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgIHJldHVybiB0b0pTT05JbXBsKHZtLCBvYmplY3QsIHRvSlNPTkZ1bmN0aW9uLCBwcm9wZXJ0
eU5hbWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9KU09OSW1wbCh2bSwgb2Jq
ZWN0LCB0b0pTT05GdW5jdGlvbiwgcHJvcGVydHlOYW1lKSk7CiB9CiAKIEpTVmFsdWUgU3RyaW5n
aWZpZXI6OnRvSlNPTkltcGwoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0LCBKU1ZhbHVlIHRvSlNP
TkZ1bmN0aW9uLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFt
ZSkKQEAgLTc3OCw4ICs3NzYsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGso
SlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZpbmFsSG9sZGVy
KTsKICAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUodm0pLT5wdXQoZmluYWxIb2xkZXIsIG1f
ZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIGNhbGxSZXZpdmVyKGZpbmFsSG9sZGVyLCBqc0VtcHR5U3RyaW5nKG1f
ZXhlYyksIG91dFZhbHVlKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNhbGxSZXZp
dmVyKGZpbmFsSG9sZGVyLCBqc0VtcHR5U3RyaW5nKG1fZXhlYyksIG91dFZhbHVlKSk7CiB9CiAK
IC8vIEVDTUEtMjYyIHY1IDE1LjEyLjIKQEAgLTgzNiw4ICs4MzMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVj
LCAiTm8gaW5wdXQgdG8gc3RyaW5naWZ5Il9zKSk7CiAgICAgU3RyaW5naWZpZXIgc3RyaW5naWZp
ZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIGV4ZWMtPmFyZ3VtZW50KDIpKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ2lmaWVyLnN0cmluZ2lmeShleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHN0cmluZ2lmaWVyLnN0cmluZ2lmeShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSkp
KTsKIH0KIAogSlNWYWx1ZSBKU09OUGFyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IGpzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXgg
NTljZmI2ZGRiZjU4NGMzMjEwYjgxYzZjMTY4OTAwOTg5YmE5Mzc3Zi4uNDhiZTIzMjVlYTY5Mjli
ODE4ZmZhMjQ4ODRjOTgyZWQ5NGI4M2ZjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcApAQCAtNjU3LDggKzY1Nyw3IEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtCiAgICAgICAgIGlmIChjdXJyZW50LT50eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlICYmIHBy
b3BlcnR5TmFtZSAhPSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAg
ICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGN1cnJlbnQp
OwogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93
KTsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBwcm94
eS0+UHJveHlPYmplY3Q6OnB1dChwcm94eSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHByb3h5LT5Qcm94eU9i
amVjdDo6cHV0KHByb3h5LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyA5LjEuOS4xLTIgTGV0IG93bkRlc2MgYmUgPyBPLltbR2V0T3du
UHJvcGVydHldXShQKS4KQEAgLTcxNiwxNCArNzE1LDEyIEBAIGJvb2wgb3JkaW5hcnlTZXRTbG93
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtCiAgICAgICAgICAgICB2YWx1ZURlc2NyaXB0b3Iuc2V0VmFsdWUodmFsdWUpOwogCiAgICAg
ICAgICAgICAvLyA5LjEuOS4xLTQtZC1pdiBSZXR1cm4gPyBSZWNlaXZlci5bW0RlZmluZU93blBy
b3BlcnR5XV0oUCwgdmFsdWVEZXNjKS4KLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIHJldHVybiByZWNlaXZlck9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVP
d25Qcm9wZXJ0eShyZWNlaXZlck9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZURlc2Ny
aXB0b3IsIHNob3VsZFRocm93KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgcmVjZWl2ZXJPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkocmVj
ZWl2ZXJPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWVEZXNjcmlwdG9yLCBzaG91bGRU
aHJvdykpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gOS4xLjkuMS00LWUgRWxzZSBSZWNlaXZl
ciBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhIHByb3BlcnR5IFAsCiAgICAgICAgIC8vIDkuMS45
LjEtNC1lLWkgUmV0dXJuID8gQ3JlYXRlRGF0YVByb3BlcnR5KFJlY2VpdmVyLCBQLCBWKS4KLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcmVjZWl2ZXJPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkocmVjZWl2ZXJPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKSwgc2hvdWxkVGhyb3cpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlY2VpdmVyT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
ZmluZU93blByb3BlcnR5KHJlY2VpdmVyT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvcih2YWx1ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpOb25lKSksIHNob3VsZFRocm93KSk7CiAgICAgfQogCiAgICAgLy8gOS4xLjkuMS01IEFz
c2VydDogSXNBY2Nlc3NvckRlc2NyaXB0b3Iob3duRGVzYykgaXMgdHJ1ZS4KQEAgLTgwMiwxMCAr
Nzk5LDggQEAgYm9vbCBKU09iamVjdDo6cHV0SW5saW5lU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgfQogICAgICAgICBpZiAo
IW9iai0+c3RhdGljUHJvcGVydGllc1JlaWZpZWQodm0pKSB7CiAgICAgICAgICAgICBpZiAob2Jq
LT5jbGFzc0luZm8odm0pLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcygpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBvYmotPmZpbmRQcm9wZXJ0eUhhc2hF
bnRyeSh2bSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxl
YXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXRFbnRyeShleGVjLCBlbnRyeS0+
dGFibGUtPmNsYXNzRm9yVGhpcywgZW50cnktPnZhbHVlLCBvYmosIHRoaXMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAo
YXV0byBlbnRyeSA9IG9iai0+ZmluZFByb3BlcnR5SGFzaEVudHJ5KHZtLCBwcm9wZXJ0eU5hbWUp
KQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEVudHJ5
KGV4ZWMsIGVudHJ5LT50YWJsZS0+Y2xhc3NGb3JUaGlzLCBlbnRyeS0+dmFsdWUsIG9iaiwgdGhp
cywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIGlmIChvYmotPnR5cGUoKSA9PSBQcm94eU9iamVjdFR5cGUgJiYgcHJvcGVydHlO
YW1lICE9IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykgewpAQCAtODEzLDggKzgw
OCw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZVNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRv
IGRvIG1vcmUgYmVjYXVzZSB0aGlzIGlzIG9ic2VydmFibGUgYmVoYXZpb3IuCiAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDEyCiAgICAg
ICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihvYmopOwot
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5Q
cm94eU9iamVjdDo6cHV0KHByb3h5LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJveHktPlByb3h5T2JqZWN0
OjpwdXQocHJveHksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICAgICAg
fQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJvdG90eXBlKHZtLCBleGVj
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpAQCAtMjE0MSw4
ICsyMTM1LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFQKICAgICBpZiAodmFsdWUpCiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gdGhp
cy0+bWV0aG9kVGFibGUodm0pLT5kZWZhdWx0VmFsdWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlw
ZSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0aGlzLT5tZXRob2RUYWJsZSh2bSkt
PmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBwcmVmZXJyZWRUeXBlKSk7CiB9CiAKIGJvb2wgSlNP
YmplY3Q6OmdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYgbnVtYmVy
LCBKU1ZhbHVlJiByZXN1bHQpIGNvbnN0CkBAIC0yMjA0LDEzICsyMTk3LDExIEBAIGJvb2wgSlNP
YmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSBoYXNJbnN0YW5jZVZhCiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSgpKSB7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZh
bHNlKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gZGVmYXVsdEhh
c0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBwcm90b3R5cGUpOwotICAgIH0KLSAgICBpZiAoaW5mby5p
bXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMs
IHZhbHVlKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBkZWZhdWx0SGFzSW5z
dGFuY2UoZXhlYywgdmFsdWUsIHByb3RvdHlwZSkpOwogICAgIH0KKyAgICBpZiAoaW5mby5pbXBs
ZW1lbnRzSGFzSW5zdGFuY2UoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBt
ZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKSk7CisK
ICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQ
YXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CkBAIC0yMjIyLDggKzIyMTMsNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVl
ID0gZ2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmhhc0luc3RhbmNlU3ltYm9sKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIGhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBoYXNJbnN0YW5jZVZhbHVlKTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBo
YXNJbnN0YW5jZVZhbHVlKSk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5j
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCkBAIC0yMzg0
LDggKzIzNzQsNyBAQCBkb3VibGUgSlNPYmplY3Q6OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSBwcmltaXRpdmUgPSB0b1ByaW1pdGl2ZShleGVjLCBQcmVmZXJOdW1iZXIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIDAuMCk7IC8vIHNob3VsZCBiZSBwaWNrZWQgdXAgc29v
biBpbiBOb2Rlcy5jcHAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHByaW1pdGl2
ZS50b051bWJlcihleGVjKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHByaW1pdGl2
ZS50b051bWJlcihleGVjKSk7CiB9CiAKIEpTU3RyaW5nKiBKU09iamVjdDo6dG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdApAQCAtMjU0OSw4ICsyNTM4LDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgs
IGNvbnN0IFAKICAgICAgICAgLy8gc3RhdGUgKGkuZS4gZGVmaW5lT3duUHJvcGVydHkgY291bGQg
YmUgdXNlZCB0byBzZXQgYSB2YWx1ZSB3aXRob3V0IG5lZWRpbmcgdG8gZW50ZXJpbmcgJ1NwYXJz
ZU1vZGUnKS4KICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmJiBkZXNjcmlw
dG9yLnZhbHVlKCkgJiYgY2FuRG9GYXN0UHV0RGlyZWN0SW5kZXgodm0sIHRoaXMpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSk7Ci0gICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5k
ZXgoZXhlYywgaW5kZXgsIGRlc2NyaXB0b3IudmFsdWUoKSwgMCwgdGhyb3dFeGNlcHRpb24gPyBQ
dXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dERpcmVjdEluZGV4KGV4
ZWMsIGluZGV4LCBkZXNjcmlwdG9yLnZhbHVlKCksIDAsIHRocm93RXhjZXB0aW9uID8gUHV0RGly
ZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50
ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKQEAgLTI4MTEsOCArMjc5OSw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4
ZWNTdGF0ZSogZXhlYywgdW5zCiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRl
IGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCiAgICAgICAgIG1hcCA9IGFsbG9jYXRlU3Bh
cnNlSW5kZXhNYXAodm0pOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVy
biBtYXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBp
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgbV9sZW5ndGgg
aWYgbmVjZXNzYXJ5LgpAQCAtMjgyOCwxMCArMjgxNSw4IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5
SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywg
dW5zCiAgICAgLy8gV2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIG1hcCAtIGNoZWNrIHdoZXRoZXIg
d2Ugc3RpbGwgd2FudCB0byBiZSBkb2luZyBzby4KICAgICAvLyBXZSB3aWxsIGNvbnRpbnVlICB0
byB1c2UgYSBzcGFyc2UgbWFwIGlmIFNwYXJzZU1vZGUgaXMgc2V0LCBhIHZlY3RvciB3b3VsZCBi
ZSB0b28gc3BhcnNlLCBvciBpZiBhbGxvY2F0aW9uIGZhaWxzLgogICAgIHVuc2lnbmVkIG51bVZh
bHVlc0luQXJyYXkgPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yICsgbWFwLT5zaXplKCk7
Ci0gICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxl
bmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVjdG9yTGVuZ3RoKHZtLCBsZW5n
dGgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIG1hcC0+cHV0
RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3VsZFRocm93KTsKLSAgICB9CisgICAgaWYg
KG1hcC0+c3BhcnNlTW9kZSgpIHx8ICFpc0RlbnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVt
VmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNlVmVjdG9yTGVuZ3RoKHZtLCBsZW5ndGgpKQorICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywg
aSwgdmFsdWUsIHNob3VsZFRocm93KSk7CiAKICAgICAvLyBSZXJlYWQgbV9zdG9yYWdlIGFmdGVy
IGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICBz
dG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CkBAIC0yOTUyLDggKzI5MzcsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhl
Y1N0YXRlKiBleGVjLAogICAgICAgICB9CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8sIG9y
IGNhbid0IHVzZSBhIHZlY3RvciB0byBob2xkIHRoaXMgcHJvcGVydHkgLSBhbGxvY2F0ZSBhIHNw
YXJzZSBtYXAgJiBhZGQgdGhlIHZhbHVlLgogICAgICAgICBtYXAgPSBhbGxvY2F0ZVNwYXJzZUlu
ZGV4TWFwKHZtKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gbWFw
LT5wdXREaXJlY3QoZXhlYywgdGhpcywgaSwgdmFsdWUsIGF0dHJpYnV0ZXMsIG1vZGUpOworICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG1hcC0+cHV0RGlyZWN0KGV4ZWMsIHRoaXMs
IGksIHZhbHVlLCBhdHRyaWJ1dGVzLCBtb2RlKSk7CiAgICAgfQogCiAgICAgLy8gVXBkYXRlIG1f
bGVuZ3RoIGlmIG5lY2Vzc2FyeS4KQEAgLTI5NzMsMTAgKzI5NTcsOCBAQCBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0
YXRlKiBleGVjLAogICAgIC8vIFdlIGFyZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3
aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8gYmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250
aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1hcCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Ig
d291bGQgYmUgdG9vIHNwYXJzZSwgb3IgaWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25l
ZCBudW1WYWx1ZXNJbkFycmF5ID0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+
c2l6ZSgpOwotICAgIGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCBhdHRyaWJ1dGVzIHx8ICFpc0Rl
bnNlRW5vdWdoRm9yVmVjdG9yKGxlbmd0aCwgbnVtVmFsdWVzSW5BcnJheSkgfHwgIWluY3JlYXNl
VmVjdG9yTGVuZ3RoKHZtLCBsZW5ndGgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIG1hcC0+cHV0RGlyZWN0KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBhdHRyaWJ1
dGVzLCBtb2RlKTsKLSAgICB9CisgICAgaWYgKG1hcC0+c3BhcnNlTW9kZSgpIHx8IGF0dHJpYnV0
ZXMgfHwgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8
fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgodm0sIGxlbmd0aCkpCisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgbWFwLT5wdXREaXJlY3QoZXhlYywgdGhpcywgaSwgdmFsdWUsIGF0dHJp
YnV0ZXMsIG1vZGUpKTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VW
ZWN0b3JMZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgogICAgIHN0b3JhZ2UgPSBh
cnJheVN0b3JhZ2UoKTsKQEAgLTM2NDUsOCArMzYyNyw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmlu
ZU93bk5vbkluZGV4UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOCiAgICAgYm9vbCBpc0N1cnJlbnREZWZpbmVkID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VycmVudCk7CiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0
aGlzLT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBmYWxzZSk7Ci0gICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJvcGVydHlOYW1lLCBp
c0V4dGVuc2libGUsIGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93
RXhjZXB0aW9uKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgdmFsaWRhdGVB
bmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGlzRXh0
ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNl
cHRpb24pKTsKIH0KIAogYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA1NjhiMjY2ODM4OTUz
ZWRmYjBjNjFkMDNkYWMyMTYwYTE4NzQ2YzdjLi4yNTIzYjc5ZGYzNDFhODM3YzQ0OTU0MjRlYmZl
ZTc4MzllNGZlYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
QEAgLTE0NTQsMTAgKzE0NTQsOSBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
ICAgICBib29sIGhhc1Byb3BlcnR5ID0gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCAhaGFzUHJvcGVydHkpOwotICAgIGlmIChoYXNQcm9w
ZXJ0eSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBzbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgfQorICAgIGlmIChoYXNQcm9wZXJ0eSkK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSkpOworCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTE0Njgs
MTAgKzE0NjcsOSBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgIGJvb2wgaGFz
UHJvcGVydHkgPSBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpIHx8ICFoYXNQcm9wZXJ0eSk7Ci0gICAgaWYgKGhhc1Byb3BlcnR5KSB7Ci0gICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKTsKLSAgICB9CisgICAgaWYgKGhhc1Byb3BlcnR5KQorICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSk7
CisKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAppbmRleCA2NGMxOWUyZjk4M2YxODQxNzc2
MjFmNTFlNmQ0NTljZjM4MDYzYjY1Li44Y2NlZDkxMTNkNzIwYzkyZjU3NzllMzdlOGQ0Njk4NjZi
MGY0MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaApAQCAtMTAxLDggKzEwMSw3IEBAIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgc3RkOjpy
ZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oYm9vbCwgUHJvcGVydHlTbG90CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGJvb2wgZm91bmQgPSBj
b25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjYWxsYmFjayhmb3VuZCwgc2xvdCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjYWxsYmFjayhmb3VuZCwgc2xvdCkpOwogfQogCiBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjIyLDE3
ICsyMjEsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmVGb3JKU09i
amVjdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywKICAgICBBU1NFUlQodmFsdWUpOwog
ICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVh
cDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRl
cmVkKHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
ICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7Ci0gICAgfQor
ICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQor
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90Lmlz
U3RyaWN0TW9kZSgpKSk7CiAKICAgICAvLyBUcnkgaW5kZXhlZCBwdXQgZmlyc3QuIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNzLCBzaW5jZSBsb2FkcyBvbiBwcm9wZXJ0eSBuYW1lcyB0
aGF0IGFwcGVhciBsaWtlCiAgICAgLy8gdmFsaWQgaW5kaWNlcyB3aWxsIG5ldmVyIGxvb2sgaW4g
dGhlIG5hbWVkIHByb3BlcnR5IHN0b3JhZ2UuCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5k
ZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgIH0KKyAgICBpZiAo
c3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHV0QnlJbmRleCh0aGlzT2JqZWN0
LCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAg
ICAgaWYgKHRoaXNPYmplY3QtPmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKHZtLCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+cHJvdG90eXBlQ2hhaW5NYXlJbnRl
cmNlcHRTdG9yZVRvKHZtLCBwcm9wZXJ0eU5hbWUpKTsKQEAgLTI0MSw4ICsyMzYsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZUZvckpTT2JqZWN0KEpTQ2VsbCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dElubGluZVNsb3coZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCB0aGlzT2JqZWN0LT5wdXRJbmxpbmVTbG93KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpKTsKIH0KIAogLy8gSGFzT3duUHJvcGVydHkoTywgUCkgZnJvbSBzZWN0aW9uIDcuMy4x
MSBpbiB0aGUgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcAppbmRleCBlZTg1ZTAxY2EzMjQzNmE5YmU5MjIyNGJkYjVjZjdiMGRhYWQz
ZmM5Li43OGU1MzRiYzA2YzkxNGU3YmQ4NTEwMTBlNzRmNDk3Yjg0NzBiY2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCkBAIC03Miwx
NiArNzIsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
TWFwKEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgaXRlcmFibGUgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXA6OmNyZWF0
ZShleGVjLCB2bSwgbWFwU3RydWN0dXJlKSk7Ci0gICAgfQorICAgIGlmIChpdGVyYWJsZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAKICAg
ICBpZiAoYXV0byogaXRlcmFibGVNYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4odm0sIGl0ZXJh
YmxlKSkgewotICAgICAgICBpZiAoaXRlcmFibGVNYXAtPmNhbkNsb25lRmFzdEFuZE5vbk9ic2Vy
dmFibGUobWFwU3RydWN0dXJlKSkgewotICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShpdGVyYWJsZU1hcC0+Y2xvbmUoZXhlYywg
dm0sIG1hcFN0cnVjdHVyZSkpOwotICAgICAgICB9CisgICAgICAgIGlmIChpdGVyYWJsZU1hcC0+
Y2FuQ2xvbmVGYXN0QW5kTm9uT2JzZXJ2YWJsZShtYXBTdHJ1Y3R1cmUpKQorICAgICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaXRlcmFibGVNYXAtPmNs
b25lKGV4ZWMsIHZtLCBtYXBTdHJ1Y3R1cmUpKSk7CiAgICAgfQogCiAgICAgSlNNYXAqIG1hcCA9
IEpTTWFwOjpjcmVhdGUoZXhlYywgdm0sIG1hcFN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDVmZDNhNjc3NjdmMDEzMGJlY2IzYTY2Yzg2OWFlN2RjMjJhNzhiNDcuLjhmM2RkNzBlYWE0
OThjNjE0YTE3YzY2MzE3YmU1OWFlYWNmZDVhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC02OSw4
ICs2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50ZXJwcmV0ZXI6OmNvbnN0
cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4CiAgICAgU3RydWN0dXJlKiBlcnJvclN0
cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMs
IGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBBU1NFUlQoZXJyb3JTdHJ1Y3R1cmUpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShleGVjLCBlcnJvclN0cnVjdHVyZSwgbWVzc2FnZSwgbnVsbHB0ciwgVHlw
ZU5vdGhpbmcsIGZhbHNlKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsIGVycm9yU3RydWN0dXJlLCBtZXNz
YWdlLCBudWxscHRyLCBUeXBlTm90aGluZywgZmFsc2UpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50ZXJwcmV0ZXI6OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAzZjlmODFjMzRmZDI5NmNlMjdiZmJkNzBjMTk3ZWJh
MDgyOTBiZTAzLi43MmY1Y2NjMWJkYTFhNzkxZTFjZDc2Mjk5OTNhYjA1N2Q3MDAxOTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0xMzksOCArMTM5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNv
bnN0cnVjdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV3VGFyZ2UKICAgICAgICAg
cmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdC0+b2JqZWN0U3Ry
dWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSk7CiAKICAgICAvLyAzLiBSZXR1cm4gVG9PYmpl
Y3QodmFsdWUpLgotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gYXJnLnRvT2JqZWN0
KGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcmcu
dG9PYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMpCkBAIC0xNTksOCArMTU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdC0+Z2V0UHJvdG90eXBlKHZtLCBleGVjKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5nZXRQ
cm90b3R5cGUodm0sIGV4ZWMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xOTAs
MTAgKzE4OCw4IEBAIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqCiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUHJv
cGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7Ci0gICAgaWYgKCFvYmplY3QtPmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7Ci0gICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQor
ICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlO
YW1lLCBkZXNjcmlwdG9yKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
SlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgZGVzY3JpcHRvcik7CkBAIC0yNDMsOCArMjM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHBy
b3BlcnR5TmFtZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoRXhlY1N0YXRlKiBleGVjKQpAQCAt
MjUzLDggKzI0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEV4ZWNTdGF0CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5h
cmd1bWVudCgwKS50b09iamVjdChleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMo
ZXhlYywgb2JqZWN0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGV4ZWMsIG9i
amVjdCkpKTsKIH0KIAogLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCkBAIC0y
NjQsOCArMjU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGUKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZXhl
Yywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSkpOwogfQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNo
ZS4KQEAgLTI3NSw4ICsyNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzKEV4ZWNTdGF0ZSogZQogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIG9iamVjdCwgUHJvcGVy
dHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5
S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUpKSk7CiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0
aW9uIGNhY2hlLgpAQCAtMjg2LDggKzI3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvT2JqZWN0KGV4ZWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhleGVjLCBvYmplY3QsIFByb3BlcnR5TmFt
ZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUpKTsKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMo
ZXhlYywgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRp
ZXNNb2RlOjpFeGNsdWRlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTYwMSw4ICs1OTIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVz
KCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpKSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBv
YmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUob2JqKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRp
ZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVjdCogcHJvcGVydGll
cykKQEAgLTY2MCw4ICs2NTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFwcm9wcyk7CiAgICAgaWYgKFVOTElL
RUxZKCFwcm9wcykpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMo
ZXhlYywgdGFyZ2V0T2JqLCBwcm9wcykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRlZmluZVByb3BlcnRpZXMoZXhlYywgdGFyZ2V0T2JqLCBwcm9wcykp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NzksOCArNjY4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3T2JqZWN0KTsKICAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiUHJvcGVydHkgZGVzY3JpcHRvciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0
LiJfcyk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDEpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRl
ZmluZVByb3BlcnRpZXMoZXhlYywgbmV3T2JqZWN0LCBhc09iamVjdChleGVjLT5hcmd1bWVudCgx
KSkpKSk7CiB9CiAKIGVudW0gY2xhc3MgSW50ZWdyaXR5TGV2ZWwgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggMTg3NzlmMjgy
ZmRiMmU3ZDI0OWU0ZjJiNTA3YWIzYzY0MTFlM2QyYS4uMjc1YjU2ZjdjY2VjN2I0YjE2MTBkNjFk
YTYyMzNkMDYyNWYyZDg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCkBAIC0zMDYsOCArMzA2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IC8vIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1l
dGhvZCBvZiB0b1N0cmluZyBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFuZCBubyBhcmd1bWVudHMu
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbChl
eGVjLCB0b1N0cmluZywgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsICp2bS5lbXB0eUxp
c3QpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxs
KGV4ZWMsIHRvU3RyaW5nLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgKnZtLmVtcHR5
TGlzdCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC0zMjgsOCArMzI3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAogICAgIFByb3Bl
cnR5TmFtZSB0b1N0cmluZ1RhZ1N5bWJvbCA9IHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFn
U3ltYm9sOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCB0b1N0cmluZ1RhZ1N5bWJvbCwgWyZd
IChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHRvU3RyaW5nVGFnU2xvdCkgLT4gSlNWYWx1ZSB7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHRvU3RyaW5nVGFnU3ltYm9sLCBbJl0gKGJvb2wgZm91
bmQsIFByb3BlcnR5U2xvdCYgdG9TdHJpbmdUYWdTbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAg
aWYgKGZvdW5kKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHN0cmluZ1RhZyA9IHRvU3RyaW5nVGFn
U2xvdC5nZXRWYWx1ZShleGVjLCB0b1N0cmluZ1RhZ1N5bWJvbCk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMzU2LDcgKzM1NCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICBhdXRvIHJlc3VsdCA9IGpzTm9udHJpdmlhbFN0cmluZygmdm0sIG5ld1N0
cmluZyk7CiAgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnNldE9iamVjdFRvU3Ry
aW5nVmFsdWUoZXhlYywgdm0sIHJlc3VsdCwgdG9TdHJpbmdUYWdTbG90KTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9KSk7CisgICAgfSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDFi
YzgxMDFmMDFjNTVkZWUzOTJmZjIwYTFkZjQ5NTI5YzFkODVhMWEuLmEwODhhZDFjYmMyMDc4ZDYy
MDVhZmYwYWJhZDNkYTczYTk2ZjViMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuY3BwCkBAIC01NCwxNSArNTQsMTMgQEAgTkVWRVJfSU5MSU5FIEpTVmFs
dWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKICAgICBpZiAocDEuaXNTdHJpbmcoKSkgewogICAgICAgICBKU1N0cmluZyogcDJTdHJp
bmcgPSBwMi50b1N0cmluZyhjYWxsRnJhbWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBq
c1N0cmluZyhjYWxsRnJhbWUsIGFzU3RyaW5nKHAxKSwgcDJTdHJpbmcpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGNhbGxGcmFtZSwgYXNTdHJpbmcocDEpLCBw
MlN0cmluZykpOwogICAgIH0KIAogICAgIGlmIChwMi5pc1N0cmluZygpKSB7CiAgICAgICAgIEpT
U3RyaW5nKiBwMVN0cmluZyA9IHAxLnRvU3RyaW5nKGNhbGxGcmFtZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGNhbGxGcmFtZSwgcDFTdHJpbmcsIGFzU3RyaW5nKHAyKSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoY2FsbEZyYW1lLCBw
MVN0cmluZywgYXNTdHJpbmcocDIpKSk7CiAgICAgfQogCiAgICAgYXV0byBsZWZ0TnVtZXJpYyA9
IHAxLnRvTnVtZXJpYyhjYWxsRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5oCmluZGV4IDAwMTJiMjY3YzY4NGRmNWZhMzQ1MDZkNWZhZmZjNGZkYzdhNGU3
ZmUuLjZlODc2NTkxNWJhNzg5NzZkZGYyNmRmODcwZTY3MTZlMmU4OTE3MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTYyLDIwICs2MiwxNyBAQCBB
TFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyLCBKUwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHMxLT5sZW5ndGgoKTsKLSAgICBpZiAo
IWxlbmd0aDEpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgczIsIHMzKTsKLSAgICB9CisgICAgaWYgKCFsZW5ndGgxKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIHMyLCBzMykpOworCiAgICAg
aW50MzJfdCBsZW5ndGgyID0gczItPmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoMikgewotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzMSwg
czMpOwotICAgIH0KKyAgICBpZiAoIWxlbmd0aDIpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwganNTdHJpbmcoZXhlYywgczEsIHMzKSk7CisKICAgICBpbnQzMl90IGxlbmd0aDMg
PSBzMy0+bGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgzKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMxLCBzMik7Ci0gICAgfQorICAg
IGlmICghbGVuZ3RoMykKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmlu
ZyhleGVjLCBzMSwgczIpKTsKKwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5n
dGgxLCBsZW5ndGgyLCBsZW5ndGgzKSkgewogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOwpAQCAtOTgsMTggKzk1LDE0IEBAIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcq
IGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB1MSwgY29uc3QgU3RyaW5n
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICBpZiAoIWxlbmd0aDEp
IHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7Ci0gICAgfQotICAgIGlmICgh
bGVuZ3RoMikgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCBqc1N0cmluZyh2bSwgdTEpLCBqc1N0cmluZyh2bSwgdTMpKTsKLSAgICB9Ci0g
ICAgaWYgKCFsZW5ndGgzKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MikpOwot
ICAgIH0KKyAgICBpZiAoIWxlbmd0aDEpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwganNTdHJpbmcoZXhlYywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSkpOwor
CisgICAgaWYgKCFsZW5ndGgyKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpz
U3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MykpKTsKKworICAg
IGlmICghbGVuZ3RoMykKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmlu
ZyhleGVjLCBqc1N0cmluZyh2bSwgdTEpLCBqc1N0cmluZyh2bSwgdTIpKSk7CiAKICAgICBpZiAo
c3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMpKSB7CiAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CkBAIC0yNzAsMTAgKzI2Myw4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBqc0xlc3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogCiAgICAgaWYgKHdhc05vdFN0cmluZzEgfCB3YXNOb3RTdHJpbmcyKSB7Ci0gICAgICAgIGlm
IChwMS5pc0JpZ0ludCgpIHx8IHAyLmlzQmlnSW50KCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBiaWdJbnRDb21wYXJlKGNhbGxGcmFtZSwgcDEs
IHAyLCBKU0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAocDEuaXNCaWdJbnQoKSB8fCBwMi5pc0JpZ0ludCgpKQorICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiaWdJbnRDb21wYXJlKGNhbGxGcmFtZSwgcDEsIHAyLCBK
U0JpZ0ludDo6Q29tcGFyaXNvbk1vZGU6Okxlc3NUaGFuKSk7CiAKICAgICAgICAgcmV0dXJuIG4x
IDwgbjI7CiAgICAgfQpAQCAtMzE3LDEwICszMDgsOCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wganNM
ZXNzRXEoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgaWYgKHdhc05vdFN0cmlu
ZzEgfCB3YXNOb3RTdHJpbmcyKSB7Ci0gICAgICAgIGlmIChwMS5pc0JpZ0ludCgpIHx8IHAyLmlz
QmlnSW50KCkpIHsKLSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJl
dHVybiBiaWdJbnRDb21wYXJlKGNhbGxGcmFtZSwgcDEsIHAyLCBKU0JpZ0ludDo6Q29tcGFyaXNv
bk1vZGU6Okxlc3NUaGFuT3JFcXVhbCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHAxLmlzQmln
SW50KCkgfHwgcDIuaXNCaWdJbnQoKSkKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYmlnSW50Q29tcGFyZShjYWxsRnJhbWUsIHAxLCBwMiwgSlNCaWdJbnQ6OkNvbXBhcmlz
b25Nb2RlOjpMZXNzVGhhbk9yRXF1YWwpKTsKIAogICAgICAgICByZXR1cm4gbjEgPD0gbjI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGFyc2VJbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BhcnNlSW50LmgKaW5kZXggZjMxMDE1
ODYzZGRmN2RhMWVjZDA3ZjkyZWFmYjkwOGNmYjc4NTk4OS4uYTljZDQxMmNjZWQxMTljODlkZWU4
ZDI3YThkZGY3ZTRiZDRkMWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUGFyc2VJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QYXJz
ZUludC5oCkBAIC0yMjIsOCArMjIyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUg
c3RkOjpyZXN1bHRfb2Y8Q2FsbGJhY2tXaGVuTm9FeGNlcHRpb24oU3RyaW5nVmlldykKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3RyaW5nLT52aWV3V2l0
aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGNhbGxiYWNrKHZpZXdXaXRo
U3RyaW5nLnZpZXcpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY2FsbGJhY2sodmll
d1dpdGhTdHJpbmcudmlldykpOwogfQogCiAvLyBNYXBwaW5nIGZyb20gaW50ZWdlcnMgMC4uMzUg
dG8gZGlnaXQgaWRlbnRpZnlpbmcgdGhpcyB2YWx1ZSwgZm9yIHJhZGl4IDIuLjM2LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAppbmRl
eCBhMjdiOTc4Y2NmYmJlNTA2NWE0MmUzNjkzNzZhMWFiMDkzYjgyMWFiLi5jZWMwZTQxMGI0ZDVj
NWQ3MWMwYzA0YmIwZTQwZjQ3NzUzNGI0ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcApAQCAtMTAyLDggKzEwMiw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBhcmdzLmF0KDApOwogICAgIEpTVmFsdWUgaGFuZGxlciA9IGFyZ3MuYXQoMSk7Ci0gICAg
c2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUHJveHlPYmplY3Q6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHRhcmdldCwgaGFuZGxl
cikpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFByb3h5
T2JqZWN0OjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB0YXJnZXQs
IGhhbmRsZXIpKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNzUyMWRjOTVlYzIzZmUzNDc1MzBhMmQwZTY1ZTM4OTdi
MTg3YWMwYi4uZWJhMDg1YjJjZmQyZmUzMDE4ZDBkYzJhZGM2Mzc0YmM5Y2RkYzExZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjEsMTAg
KzYxLDggQEAgU3RyaW5nIFByb3h5T2JqZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBib29sIHRhcmdldElzQXJyYXkgPSBp
c0FycmF5KGV4ZWMsIHRhcmdldCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKHRhcmdldElzQXJyYXkpIHsK
LSAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXQt
PmNsYXNzSW5mbyh2bSktPm1ldGhvZFRhYmxlLnRvU3RyaW5nTmFtZSh0YXJnZXQsIGV4ZWMpOwot
ICAgICAgICB9CisgICAgICAgIGlmICh0YXJnZXRJc0FycmF5KQorICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCB0YXJnZXQtPmNsYXNzSW5mbyh2bSktPm1ldGhvZFRhYmxlLnRv
U3RyaW5nTmFtZSh0YXJnZXQsIGV4ZWMpKTsKIAogICAgICAgICBwcm94eSA9IGpzRHluYW1pY0Nh
c3Q8Y29uc3QgUHJveHlPYmplY3QqPih2bSwgdGFyZ2V0KTsKICAgICB9CkBAIC0xMzgsMTAgKzEz
Niw5IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3h5T2JqZWN0KiBwcm94eU9iamVjdCwgSlNWYWx1CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHJlY2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0eSA9IHRhcmdldC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlv
bigpIHx8ICFoYXNQcm9wZXJ0eSk7Ci0gICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewotICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaGFzUHJvcGVydHkp
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKSk7CisKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
fTsKIApAQCAtMjE0LDEwICsyMTEsOCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJu
YWxNZXRob2RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAg
ICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJn
ZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKIAotICAgIGlmIChwcm9wZXJ0
eU5hbWUuaXNQcml2YXRlTmFtZSgpKSB7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAg
ICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKTsKLSAgICB9CisgICAgaWYg
KHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgcGVyZm9ybURlZmF1bHRHZXRPd25Qcm9wZXJ0eSgpKTsKIAogICAgIEpTVmFsdWUg
aGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpIHsKQEAgLTIzMCwxMCArMjI1LDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlu
dGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU4KICAg
ICBDYWxsVHlwZSBjYWxsVHlwZTsKICAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ck1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1h
a2VJZGVudGlmaWVyKHZtLCAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiksICInZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUg
Y2FsbGFibGUiX3MpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLSAg
ICBpZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRHZXRP
d25Qcm9wZXJ0eSgpOwotICAgIH0KKyAgICBpZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0
aG9kLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVy
Zm9ybURlZmF1bHRHZXRPd25Qcm9wZXJ0eSgpKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CkBAIC0zMjMsMTAgKzMx
Niw4IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIHJldHVybiB0YXJnZXQtPm1l
dGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICB9OwogCi0gICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1l
KCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybURl
ZmF1bHRIYXNQcm9wZXJ0eSgpOwotICAgIH0KKyAgICBpZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0
ZU5hbWUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtRGVmYXVs
dEhhc1Byb3BlcnR5KCkpOwogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5k
bGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewpAQCAtMzM5LDEwICszMzAs
OCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLAogICAgIENhbGxUeXBlIGNhbGxUeXBlOwogICAg
IEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBj
YWxsVHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCAiJ2hhcycgcHJvcGVydHkgb2YgYSBQcm94
eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7Ci0gICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0SGFz
UHJvcGVydHkoKTsKLSAgICB9CisgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHko
KSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRz
LmFwcGVuZCh0YXJnZXQpOwpAQCAtMzg3LDE0ICszNzYsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnQKICAgICBzbG90LnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CiAgICAgc3dpdGNo
IChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpKSB7CiAgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0OgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHJldHVybiBwZXJmb3JtR2V0KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybUdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKTsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Q
cm9wZXJ0eToKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9y
bUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJmb3JtSW50ZXJuYWxNZXRob2RH
ZXRPd25Qcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKICAgICBjYXNlIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eToKLSAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybUhhc1Byb3BlcnR5KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9y
bUhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00MjgsMTAgKzQxNCw4IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBK
U1ZhbHVlIHRoaXNWYWx1CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAo
cHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOwotICAgIH0KKyAgICBpZiAocHJv
cGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBwZXJmb3JtRGVmYXVsdFB1dCgpKTsKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0g
dGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKQEAgLTQ0
NSwxMCArNDI5LDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHUKICAgICBKU1ZhbHVlIHNldE1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHZtLnBy
b3BlcnR5TmFtZXMtPnNldCwgIidzZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNo
b3VsZCBiZSBjYWxsYWJsZSJfcyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoc2V0
TWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAg
ICByZXR1cm4gcGVyZm9ybURlZmF1bHRQdXQoKTsKLSAgICB9CisgICAgaWYgKHNldE1ldGhvZC5p
c1VuZGVmaW5lZCgpKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1E
ZWZhdWx0UHV0KCkpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsKQEAgLTUwNSw4ICs0ODcsNyBAQCBib29sIFByb3h5
T2JqZWN0OjpwdXRCeUluZGV4Q29tbW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFs
dWUsIHVuc2lnbmVkCiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgaXNT
dHJpY3RNb2RlKTsgLy8gV2UgbXVzdCBwcmVzZXJ2ZSB0aGUgInRoaXMiIHRhcmdldCBvZiB0aGUg
cHV0QnlJbmRleC4KICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5wdXQo
dGFyZ2V0LCBleGVjLCBpZGVudC5pbXBsKCksIHB1dFZhbHVlLCBzbG90KTsKICAgICB9OwotICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcGVyZm9ybVB1dChleGVjLCBwdXRWYWx1ZSwg
dGhpc1ZhbHVlLCBpZGVudC5pbXBsKCksIHBlcmZvcm1EZWZhdWx0UHV0KTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1QdXQoZXhlYywgcHV0VmFsdWUsIHRoaXNWYWx1ZSwg
aWRlbnQuaW1wbCgpLCBwZXJmb3JtRGVmYXVsdFB1dCkpOwogfQogCiBib29sIFByb3h5T2JqZWN0
OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCkBAIC01NDAsOCArNTIx
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2Fs
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh0
YXJnZXQsIGNhbGxEYXRhKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGU6Ok5vbmUpOwotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0YXJnZXQsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZXhl
Yy0+dGhpc1ZhbHVlKCksIEFyZ0xpc3QoZXhlYykpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChleGVjLCB0YXJnZXQsIGNhbGxUeXBlLCBj
YWxsRGF0YSwgZXhlYy0+dGhpc1ZhbHVlKCksIEFyZ0xpc3QoZXhlYykpKSk7CiAgICAgfQogCiAg
ICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2FzdDxB
cnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoZXhlYykpOwpAQCAtNTUx
LDggKzUzMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Q
cm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQogICAgIGFyZ3VtZW50cy5hcHBlbmQoZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIEVDTUFNb2RlOjpTdHJpY3RNb2RlKSk7CiAgICAgYXJndW1l
bnRzLmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dl
ZCgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsKGV4ZWMsIGFwcGx5TWV0aG9kLCBjYWxsVHlwZSwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3Vt
ZW50cykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNh
bGwoZXhlYywgYXBwbHlNZXRob2QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1l
bnRzKSkpOwogfQogCiBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBj
ZWxsLCBDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC01OTMsOCArNTcyLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgICAgICBDb25z
dHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29u
c3RydWN0RGF0YSh0YXJnZXQsIGNvbnN0cnVjdERhdGEpOwogICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgICAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMs
IHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgQXJnTGlzdChleGVjKSwgZXhl
Yy0+bmV3VGFyZ2V0KCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29uc3RydWN0KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3Ry
dWN0RGF0YSwgQXJnTGlzdChleGVjKSwgZXhlYy0+bmV3VGFyZ2V0KCkpKSk7CiAgICAgfQogCiAg
ICAgSlNBcnJheSogYXJnQXJyYXkgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBzdGF0aWNfY2FzdDxB
cnJheUFsbG9jYXRpb25Qcm9maWxlKj4obnVsbHB0ciksIEFyZ0xpc3QoZXhlYykpOwpAQCAtNjM2
LDEwICs2MTQsOCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVmYQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpIHsKLSAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHREZWxl
dGUoKTsKLSAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpCisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHREZWxldGUoKSk7CiAK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKSB7CkBAIC02NTMsMTAgKzYyOSw4IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBEZWZhCiAgICAgSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdl
dE1ldGhvZChleGVjLCBjYWxsRGF0YSwgY2FsbFR5cGUsIG1ha2VJZGVudGlmaWVyKHZtLCAiZGVs
ZXRlUHJvcGVydHkiKSwgIidkZWxldGVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhh
bmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwotICAg
IGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0RGVsZXRlKCk7Ci0gICAg
fQorICAgIGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0RGVsZXRlKCkpOwogCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFy
Z2V0KTsKQEAgLTcyOCwxMCArNzAyLDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVByZXZl
bnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHByZXZlbnRFeHRlbnNp
b25zTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGV4ZWMsIGNhbGxEYXRhLCBjYWxsVHlwZSwg
bWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNp
b25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3Mp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCog
dGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAgaWYgKHByZXZlbnRFeHRlbnNpb25zTWV0aG9k
LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1
cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKHRhcmdldCwgZXhl
Yyk7Ci0gICAgfQorICAgIGlmIChwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZC5pc1VuZGVmaW5lZCgp
KQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRhcmdldC0+bWV0aG9kVGFibGUo
dm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQsIGV4ZWMpKTsKIAogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7CkBAIC03
ODMsMTAgKzc1NSw4IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAog
ICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKLSAgICBpZiAoaXNFeHRlbnNp
YmxlTWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICByZXR1cm4gdGFyZ2V0LT5pc0V4dGVuc2libGUoZXhlYyk7Ci0gICAgfQorICAgIGlmIChp
c0V4dGVuc2libGVNZXRob2QuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKSk7CiAKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAt
ODMyLDggKzgwMiw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAKICAgICBKU09iamVjdCog
dGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgYXV0byBwZXJmb3JtRGVmYXVsdERlZmluZU93
blByb3BlcnR5ID0gWyZdIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1
cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KHRhcmdldCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJv
dykpOwogICAgIH07CiAKICAgICBpZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkKQEAg
LTEwOTAsMTAgKzEwNTksOCBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgcwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlz
LT50YXJnZXQoKTsKLSAgICBpZiAoc2V0UHJvdG90eXBlT2ZNZXRob2QuaXNVbmRlZmluZWQoKSkg
ewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiB0YXJnZXQtPnNldFBy
b3RvdHlwZSh2bSwgZXhlYywgcHJvdG90eXBlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7Ci0gICAg
fQorICAgIGlmIChzZXRQcm90b3R5cGVPZk1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRhcmdldC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBw
cm90b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwpAQCAtMTE1NSwx
MCArMTEyMiw4IEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7Ci0gICAgaWYgKGdldFByb3RvdHlw
ZU9mTWV0aG9kLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAg
ICAgICByZXR1cm4gdGFyZ2V0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpOwotICAgIH0KKyAgICBp
ZiAoZ2V0UHJvdG90eXBlT2ZNZXRob2QuaXNVbmRlZmluZWQoKSkgCisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdGFyZ2V0LT5nZXRQcm90b3R5cGUodm0sIGV4ZWMpKTsKIAogICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRh
cmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCmluZGV4IDc5OTllMzQ2YTg4YjQzMzZjNWZkYjY1YTNlYzNkODIzZWQ1YjVlODIuLjZjZDc2
M2I1YTczOTNlOGZkOTkwNDhiNjg4ZGVjMzI3MGE5MWI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC0xMjYsOCArMTI2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgfQogCi0g
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
KGV4ZWMsIHRhcmdldCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJndW1lbnRzLCBu
ZXdUYXJnZXQpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3QoZXhlYywgdGFyZ2V0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmd1bWVudHMsIG5ld1RhcmdldCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9wZXJ0eQpAQCAtMTUzLDggKzE1Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAvLyBSZWZsZWN0LmRlZmluZVByb3BlcnR5IHNob3VsZCBub3Qg
dGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5lT3duUHJvcGVydHkgb3BlcmF0aW9uIGZhaWxz
LgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxzZTsKICAgICBKU09iamVjdCogdGFyZ2V0T2Jq
ZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRl
ZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdykpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CkBAIC0xNzUsOCArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
cmVjZWl2ZXIgPSBleGVjLT5hcmd1bWVudCgyKTsKIAogICAgIFByb3BlcnR5U2xvdCBzbG90KHJl
Y2VpdmVyLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YXJnZXQuZ2V0KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRhcmdldC5nZXQoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkpOwogfQog
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldG93bnBy
b3BlcnR5ZGVzY3JpcHRvcgpAQCAtMTkyLDggKzE4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
IGV4CiAgICAgYXV0byBrZXkgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0g
ICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgYXNPYmplY3QodGFyZ2V0KSwg
a2V5KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgYXNPYmplY3QodGFy
Z2V0KSwga2V5KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCkBAIC0yMDUsOCArMjAxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBl
eGVjKQogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0
YXJnZXQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlw
ZSh2bSwgZXhlYykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlwZSh2bSwgZXhlYykpKTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2libGUK
QEAgLTIzMyw4ICsyMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RPd25LZXlzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJSZWZsZWN0Lm93
bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5
S2V5cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2ZW50ZXh0
ZW5zaW9ucwpAQCAtMjczLDggKzI2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgLy8gRG8gbm90IHJhaXNlIGFu
eSByZWFkb25seSBlcnJvcnMgdGhhdCBoYXBwZW4gaW4gc3RyaWN0IG1vZGUuCiAgICAgYm9vbCBz
aG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHJl
Y2VpdmVyLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3Vt
ZW50KDIpLCBzbG90KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHRhcmdl
dE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT5hcmd1bWVudCgyKSwgc2xvdCkpKSk7
CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0
cHJvdG90eXBlb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcAppbmRleCA4NTUyNDY5MWM2ODMyMWM3M2I1ZTRkMTVlODczMDM1OTU2
YTE2YTU2Li4zNDY3OTI0NjU0ZTVlM2NmMjZlMzc3MzA1Mzg1ZjVlOWQzZmIyY2YzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
CkBAIC0yOTksOCArMjk5LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEEKICAgICAgICAgcGF0
dGVybkFyZyA9IHBhdHRlcm47CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiByZWdFeHBDcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQsIHBhdHRlcm5B
cmcsIGZsYWdzQXJnKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ0V4cENyZWF0
ZShleGVjLCBnbG9iYWxPYmplY3QsIG5ld1RhcmdldCwgcGF0dGVybkFyZywgZmxhZ3NBcmcpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNSZWdFeHBDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5jcHAKaW5kZXggYTMzYzAyMzBkMjZlYTI1Nzk1OGZjOTkzNGI5MjlmNmM4OGEzYWEyMC4u
ODk4OTM4MWYyNWQ5YjlmYzE4M2Q3OTQzNTlhZjFlMjE4Yzk1M2I3YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMzQsOCArMTM0LDcg
QEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSk7CiB9CiAK
IHN0YXRpYyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCkBAIC0x
OTUsMjAgKzE5NCwxOCBAQCBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6bWF0Y2hHbG9iYWwoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEFTU0VSVCghcy5p
c051bGwoKSk7CiAgICAgaWYgKHJlZ0V4cC0+dW5pY29kZSgpKSB7CiAgICAgICAgIHVuc2lnbmVk
IHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7Ci0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICAgICAgcmV0dXJuIGNvbGxlY3RNYXRjaGVzKAorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGNvbGxlY3RNYXRjaGVzKAogICAgICAgICAgICAgdm0sIGV4ZWMsIHN0cmluZywgcywg
cmVnRXhwQ29uc3RydWN0b3IsIHJlZ0V4cCwKICAgICAgICAgICAgIFsmXSAoc2l6ZV90IGVuZCkg
LT4gc2l6ZV90IHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWR2YW5jZVN0cmluZ1VuaWNvZGUo
cywgc3RyaW5nTGVuZ3RoLCBlbmQpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSk7
CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBjb2xsZWN0TWF0Y2hl
cygKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbGxlY3RNYXRjaGVzKAogICAgICAg
ICB2bSwgZXhlYywgc3RyaW5nLCBzLCByZWdFeHBDb25zdHJ1Y3RvciwgcmVnRXhwLAogICAgICAg
ICBbJl0gKHNpemVfdCBlbmQpIC0+IHNpemVfdCB7CiAgICAgICAgICAgICByZXR1cm4gZW5kICsg
MTsKLSAgICAgICAgfSk7CisgICAgICAgIH0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApp
bmRleCA1Njg1ZjMzMDc5NzZlOGZhODUzOThkMjUzOTExNWI4M2Y4OGNjYmNlLi5hMzFhZjYzZDA0
ZWQ1ZTExNGI4MWNhYjczNGIzYTA1MWQyNGQ1YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKQEAgLTExMSw4ICsxMTEsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXN0cmluZyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+dGVzdChleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIHN0cmluZykpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT50ZXN0KGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc3RyaW5nKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTEyOCw4ICsxMjcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhl
Y1N0YXRlKiBleGVjKQogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhc3RyaW5nKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZWdleHAtPmV4ZWMoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLCBzdHJpbmcpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShyZWdleHAtPmV4ZWMoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJp
bmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5j
TWF0Y2hGYXN0KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI0OSw4ICsyNDcsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBTdHJpbmcgZmxhZ3MgPSBmbGFnc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlh
bFN0cmluZyhleGVjLCAnLycsIHNvdXJjZSwgJy8nLCBmbGFncykpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgJy8nLCBzb3VyY2UsICcvJywgZmxhZ3MpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRl
eCA2MWUxMDZjMmEyNDU0NjFhYzdlM2Q1YjRmZTdkYzBmZTk1MGM4NDEwLi41MjM2MDk2NWJjZTJk
NGUwOThhODAwMmFkNTQzNjFkOTgwNDM5MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtMjY5LDkgKzI2OSw4IEBAIENv
ZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4gRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgdW5saW5rZWRDb2Rl
QmxvY2ssIHNjb3BlLCAKLSAgICAgICAgc291cmNlKCkucHJvdmlkZXIoKSwgc291cmNlKCkuc3Rh
cnRPZmZzZXQoKSwgc3RhcnRDb2x1bW4oKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHVubGlua2Vk
Q29kZUJsb2NrLCBzY29wZSwgCisgICAgICAgIHNvdXJjZSgpLnByb3ZpZGVyKCksIHNvdXJjZSgp
LnN0YXJ0T2Zmc2V0KCksIHN0YXJ0Q29sdW1uKCkpKTsKIH0KIAogQ29kZUJsb2NrKiBTY3JpcHRF
eGVjdXRhYmxlOjpuZXdSZXBsYWNlbWVudENvZGVCbG9ja0ZvcigKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCAwNDEyZTUxYmQ1YWYx
ZWVlNTIyZjE5YmFmYWFiMTM5YmRhNWRmMDk3Li4wMGI3ZjkzMjk0ZTI5Y2UyOTVkOGYxMzZhZjkw
NzE4ODFlMDhiYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
Q29uc3RydWN0b3IuY3BwCkBAIC03MiwxNiArNzIsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgaXRl
cmFibGUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoaXRlcmFibGUuaXNVbmRlZmluZWRP
ck51bGwoKSkgewotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3RydWN0dXJlKSk7Ci0gICAg
fQorICAgIGlmIChpdGVyYWJsZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKKyAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShleGVjLCB2
bSwgc2V0U3RydWN0dXJlKSkpOwogCiAgICAgaWYgKGF1dG8qIGl0ZXJhYmxlU2V0ID0ganNEeW5h
bWljQ2FzdDxKU1NldCo+KHZtLCBpdGVyYWJsZSkpIHsKLSAgICAgICAgaWYgKGl0ZXJhYmxlU2V0
LT5jYW5DbG9uZUZhc3RBbmROb25PYnNlcnZhYmxlKHNldFN0cnVjdHVyZSkpIHsKLSAgICAgICAg
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
aXRlcmFibGVTZXQtPmNsb25lKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoaXRlcmFibGVTZXQtPmNhbkNsb25lRmFzdEFuZE5vbk9ic2VydmFibGUoc2V0
U3RydWN0dXJlKSkgCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShpdGVyYWJsZVNldC0+Y2xvbmUoZXhlYywgdm0sIHNldFN0cnVjdHVyZSkpKTsK
ICAgICB9CiAKICAgICBKU1NldCogc2V0ID0gSlNTZXQ6OmNyZWF0ZShleGVjLCB2bSwgc2V0U3Ry
dWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJz
ZUFycmF5VmFsdWVNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNl
QXJyYXlWYWx1ZU1hcC5jcHAKaW5kZXggODZhY2RlNWU0ZTAxNzU5YWFlZDcxNTE1NTRjYTcwYjkw
MGY2OGIzNS4uZTNjZmE1YWJlZTQxZWM0ZTc3NTViY2YyMGZjN2E2ODNiYjhiNDU3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAKQEAgLTExMyw4ICsxMTMsNyBAQCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLAogICAgICAg
ICByZXR1cm4gdHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgIH0KICAgICAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAg
cmV0dXJuIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhpcywgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGVudHJ5LnB1dChleGVjLCBhcnJheSwgdGhp
cywgdmFsdWUsIHNob3VsZFRocm93KSk7CiB9CiAKIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6
cHV0RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQdXREaXJlY3RJbmRleE1vZGUgbW9k
ZSkKQEAgLTIwNCw4ICsyMDMsNyBAQCBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGNh
bGxTZXR0ZXIoZXhlYywgdGhpc1ZhbHVlLCBCYXNlOjpnZXQoKSwgdmFsdWUsIHNob3VsZFRocm93
ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgY2FsbFNldHRlcihleGVjLCB0aGlzVmFsdWUsIEJhc2U6OmdldCgpLCB2YWx1ZSwgc2hv
dWxkVGhyb3cgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwogfQogCiBKU1ZhbHVlIFNw
YXJzZUFycmF5RW50cnk6OmdldE5vblNwYXJzZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCmluZGV4IGRjMjg0
ZTFkYTI2NDgwODhkOTljOGZhMzJhZTBlZTRmMjRiNTFiNWUuLmJkNDg5Mzc1ZTJjNmY0MzEwMzk5
NjA2OTUwMTdlNTMxMjY0YWE3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTg5LDggKzg5LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgYnVmW2ldID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpLnRvVUludDMyKGV4ZWMpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgfQotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkp
KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
ZyhleGVjLCBXVEZNb3ZlKGltcGwpKSkpOwogfQogCiBKU1N0cmluZyogSlNDX0hPU1RfQ0FMTCBz
dHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGFyZykKQEAgLTEyNCw4
ICsxMjMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9t
Q29kZVBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGJ1
aWxkZXIudG9TdHJpbmcoKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGJ1aWxkZXIudG9TdHJpbmcoKSkpKTsKIH0KIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuY3BwCmluZGV4IGMzNGRhY2VkNDc4MTgyOWRmYjBmYzk3NjUwNzEwZDU5
NzkyYzM3MTguLjUwNGE2MDBlNjJjYzQ1NTVkYzNiZTJjODkyN2IxZjM1ZTVhOGM3YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcApAQCAtNjcs
MTkgKzY3LDE0IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAKICAgICBTdHJpbmdPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAKLSAgICBpZiAoVU5M
SUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkgewotICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBvcmRpbmFyeVNldFNsb3coZXhlYywgdGhp
c09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0
cmljdE1vZGUoKSk7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQo
c2xvdCwgdGhpc09iamVjdCkpKSAKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBv
cmRpbmFyeVNldFNsb3coZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dC50aGlzVmFsdWUoKSwgc2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAgIHJldHVybiB0eXBlRXJy
b3IoZXhlYywgc2NvcGUsIHNsb3QuaXNTdHJpY3RNb2RlKCksIFJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKTsKLSAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBy
ZXR1cm4gcHV0QnlJbmRleChjZWxsLCBleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5p
c1N0cmljdE1vZGUoKSk7Ci0gICAgfQotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4g
SlNPYmplY3Q6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpIAorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTT2JqZWN0OjpwdXQoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogfQogCiBib29sIFN0cmluZ09iamVjdDo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpAQCAtOTAsOCArODUsNyBAQCBib29s
IFN0cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgcHJvcGVydHlOYQogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxTdHJpbmdPYmplY3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1
ZSgpLT5jYW5HZXRJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBzaG91bGRUaHJvdywgUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwot
ICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2Vs
bCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKIH0KIAogc3RhdGljIGJvb2wgaXNTdHJpbmdP
d25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZ09iamVjdCogb2JqZWN0LCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQpAQCAtMTIzLDEyICsxMTcsMTAgQEAgYm9vbCBTdHJpbmdPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHkKICAgICAgICAgQVNTRVJUKGlzQ3VycmVudERlZmluZWQpOwogICAgICAgICBib29s
IGlzRXh0ZW5zaWJsZSA9IHRoaXNPYmplY3QtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKGV4
ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1
cnJlbnREZWZpbmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVj
LCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJy
ZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNlcHRpb24pKTsKICAgICB9CiAKLSAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pKTsKIH0KIAogYm9v
bCBTdHJpbmdPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggYTBhYmU2MWM0MzFhMmNhOGJl
YTBjMGViMDU2NDM0YjVmMTFkNTNhZi4uYzdmNWMyMDU2YzMzMDRiMzE1N2U4ZjYxNzgzNjA0Njg1
OWY1N2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCkBAIC0zMjYsOCArMzI2LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNT
dHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzb3UK
ICAgICAgICAgaWYgKHBvc2l0aW9uIDw9IDAgJiYgbGVuZ3RoID49IHNvdXJjZVNpemUpCiAgICAg
ICAgICAgICByZXR1cm4gc291cmNlVmFsOwogICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIFN0cmlu
Zzo6c3Vic3RyaW5nU2hhcmluZ0ltcGwoKSwgYnV0IHRoaXMgd291bGQgcmVzdWx0IGluIHJlZHVu
ZGFudCBjaGVja3MuCi0gICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGV4ZWMsIFN0cmluZ0ltcGw6OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKCpzb3Vy
Y2UuaW1wbCgpLCBzdGQ6Om1heCgwLCBwb3NpdGlvbiksIHN0ZDo6bWluKHNvdXJjZVNpemUsIGxl
bmd0aCkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVj
LCBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqc291cmNlLmltcGwoKSwg
c3RkOjptYXgoMCwgcG9zaXRpb24pLCBzdGQ6Om1pbihzb3VyY2VTaXplLCBsZW5ndGgpKSkpOwog
ICAgIH0KIAogICAgIGludCB0b3RhbExlbmd0aCA9IDA7CkBAIC0zNTQsOCArMzUzLDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3BsaWNlU3Vic3RyaW5ncyhFeGVjU3RhdGUq
IGV4ZWMsIEpTU3RyaW5nKiBzb3UKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUo
aW1wbCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMs
IFdURk1vdmUoaW1wbCkpKTsKICAgICB9CiAKICAgICBVQ2hhciogYnVmZmVyOwpAQCAtMzc1LDgg
KzM3Myw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NwbGljZVN1YnN0cmlu
Z3MoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1w
bCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywgV1RGTW92
ZShpbXBsKSkpOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxpY2VT
dWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNl
VmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1Jh
bmdlcywgaW50IHJhbmdlQ291bnQsIGNvbnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFy
YXRvckNvdW50KQpAQCAtMzkxLDggKzM4OCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3Ry
aW5nKiBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhFeGVjU3RhdGUqIGV4ZWMsCiAg
ICAgICAgIGlmIChwb3NpdGlvbiA8PSAwICYmIGxlbmd0aCA+PSBzb3VyY2VTaXplKQogICAgICAg
ICAgICAgcmV0dXJuIHNvdXJjZVZhbDsKICAgICAgICAgLy8gV2UgY291bGQgY2FsbCBTdHJpbmc6
OnN1YnN0cmluZ1NoYXJpbmdJbXBsKCksIGJ1dCB0aGlzIHdvdWxkIHJlc3VsdCBpbiByZWR1bmRh
bnQgY2hlY2tzLgotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBqc1N0
cmluZyhleGVjLCBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFyaW5nSW1wbCgqc291cmNl
LmltcGwoKSwgc3RkOjptYXgoMCwgcG9zaXRpb24pLCBzdGQ6Om1pbihzb3VyY2VTaXplLCBsZW5n
dGgpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoZXhlYywg
U3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoKnNvdXJjZS5pbXBsKCksIHN0
ZDo6bWF4KDAsIHBvc2l0aW9uKSwgc3RkOjptaW4oc291cmNlU2l6ZSwgbGVuZ3RoKSkpKTsKICAg
ICB9CiAKICAgICBDaGVja2VkPGludCwgUmVjb3JkT3ZlcmZsb3c+IHRvdGFsTGVuZ3RoID0gMDsK
QEAgLTQzOSw4ICs0MzUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTcGxp
Y2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAg
fQogICAgICAgICB9ICAgICAgICAKIAotICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBqc1N0cmluZyhleGVjLCBXVEZNb3ZlKGltcGwpKSk7CiAgICAgfQog
CiAgICAgVUNoYXIqIGJ1ZmZlcjsKQEAgLTQ3Myw4ICs0NjgsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1N0cmluZyoganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoRXhlY1N0YXRl
KiBleGVjLAogICAgICAgICB9CiAgICAgfQogCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBXVEZNb3ZlKGltcGwpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpKTsKIH0KIAogI2RlZmluZSBP
VVRfT0ZfTUVNT1JZKGV4ZWNfXywgc2NvcGVfXykgXApAQCAtNTIyLDggKzUxNiw3IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaChWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VSYW5nZXMudHJ5
Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291cmNlTGVuIC0gbGFzdEluZGV4KSkpCiAg
ICAgICAgICAgICBPVVRfT0ZfTUVNT1JZKGV4ZWMsIHNjb3BlKTsKICAgICB9Ci0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBqc1NwbGljZVN1YnN0cmluZ3MoZXhlYywgc3RyaW5nLCBz
b3VyY2UsIHNvdXJjZVJhbmdlcy5kYXRhKCksIHNvdXJjZVJhbmdlcy5zaXplKCkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNTcGxpY2VTdWJzdHJpbmdzKGV4ZWMsIHN0cmluZywg
c291cmNlLCBzb3VyY2VSYW5nZXMuZGF0YSgpLCBzb3VyY2VSYW5nZXMuc2l6ZSgpKSk7CiB9CiAK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2go
CkBAIC01NDUsMTAgKzUzOCw4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiByZXBs
YWNlVXNpbmdSZWdFeHBTZWFyY2goCiAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4
KGV4ZWMsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
IAotICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUgJiYgIXJlcGxhY2VtZW50
U3RyaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gcmVtb3ZlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgc291
cmNlLCByZWdFeHApOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSAmJiAhcmVwbGFjZW1lbnRTdHJpbmcubGVuZ3RoKCkpIAorICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZW1vdmVVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywg
c3RyaW5nLCBzb3VyY2UsIHJlZ0V4cCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHdyb25nIGJlY2F1c2Ugd2UgbWF5IGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIHRoZSBGVEwuCkBA
IC03MjEsOCArNzEyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIHJlcGxhY2VV
c2luZ1JlZ0V4cFNlYXJjaCgKICAgICAgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VSYW5nZXMudHJ5
Q29uc3RydWN0QW5kQXBwZW5kKGxhc3RJbmRleCwgc291cmNlTGVuIC0gbGFzdEluZGV4KSkpCiAg
ICAgICAgICAgICBPVVRfT0ZfTUVNT1JZKGV4ZWMsIHNjb3BlKTsKICAgICB9Ci0gICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhl
eGVjLCBzdHJpbmcsIHNvdXJjZSwgc291cmNlUmFuZ2VzLmRhdGEoKSwgc291cmNlUmFuZ2VzLnNp
emUoKSwgcmVwbGFjZW1lbnRzLmRhdGEoKSwgcmVwbGFjZW1lbnRzLnNpemUoKSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhl
eGVjLCBzdHJpbmcsIHNvdXJjZSwgc291cmNlUmFuZ2VzLmRhdGEoKSwgc291cmNlUmFuZ2VzLnNp
emUoKSwgcmVwbGFjZW1lbnRzLmRhdGEoKSwgcmVwbGFjZW1lbnRzLnNpemUoKSkpOwogfQogCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4
cEVtcHR5U3RyKApAQCAtNzM3LDE1ICs3MjcsMTMgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0cigKICAgICAgICAgLy8g
RVM1LjEgMTUuNS40LjEwIHN0ZXAgOC5hLgogICAgICAgICBzZWFyY2hWYWx1ZS0+c2V0TGFzdElu
ZGV4KGV4ZWMsIDApOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gcmVtb3ZlVXNpbmdS
ZWdFeHBTZWFyY2godm0sIGV4ZWMsIHRoaXNWYWx1ZSwgdGhpc1ZhbHVlLT52YWx1ZShleGVjKSwg
cmVnRXhwKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZW1vdmVVc2luZ1Jl
Z0V4cFNlYXJjaCh2bSwgZXhlYywgdGhpc1ZhbHVlLCB0aGlzVmFsdWUtPnZhbHVlKGV4ZWMpLCBy
ZWdFeHApKTsKICAgICB9CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBTdHJpbmcgcmVw
bGFjZW1lbnRTdHJpbmcgPSBlbXB0eVN0cmluZygpOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKAotICAgICAgICB2bSwgZXhlYywgdGhp
c1ZhbHVlLCBzZWFyY2hWYWx1ZSwgY2FsbERhdGEsIENhbGxUeXBlOjpOb25lLCByZXBsYWNlbWVu
dFN0cmluZywgSlNWYWx1ZSgpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlcGxh
Y2VVc2luZ1JlZ0V4cFNlYXJjaCgKKyAgICAgICAgdm0sIGV4ZWMsIHRoaXNWYWx1ZSwgc2VhcmNo
VmFsdWUsIGNhbGxEYXRhLCBDYWxsVHlwZTo6Tm9uZSwgcmVwbGFjZW1lbnRTdHJpbmcsIEpTVmFs
dWUoKSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZVJlZ0V4cFN0cmluZygKQEAgLTc3Miw5ICs3NjAsOCBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBKU1N0cmluZyogcmVwbGFjZVVzaW5nUmVnRXhwU2VhcmNoKFZNJiB2bSwgRXhlY1N0
YXRlKiBleGVjLAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
ICAgICB9CiAKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlcGxhY2VVc2luZ1Jl
Z0V4cFNlYXJjaCgKLSAgICAgICAgdm0sIGV4ZWMsIHN0cmluZywgc2VhcmNoVmFsdWUsIGNhbGxE
YXRhLCBjYWxsVHlwZSwgcmVwbGFjZW1lbnRTdHJpbmcsIHJlcGxhY2VWYWx1ZSk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2goCisgICAgICAg
IHZtLCBleGVjLCBzdHJpbmcsIHNlYXJjaFZhbHVlLCBjYWxsRGF0YSwgY2FsbFR5cGUsIHJlcGxh
Y2VtZW50U3RyaW5nLCByZXBsYWNlVmFsdWUpKTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNTdHJpbmcqIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIGpzU3RyaW5nLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBKU1ZhbHVlIHJlcGxh
Y2VWYWx1ZSkKQEAgLTgxNSw4ICs4MDIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmlu
ZyogcmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLAogCiAg
ICAgc2l6ZV90IGxlZnRMZW5ndGggPSBzdHJpbmdJbXBsLT5sZW5ndGgoKSAtIG1hdGNoRW5kOwog
ICAgIFN0cmluZyByaWdodFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0lt
cGwoKnN0cmluZ0ltcGwsIG1hdGNoRW5kLCBsZWZ0TGVuZ3RoKSk7Ci0gICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJldHVybiBKU0M6OmpzU3RyaW5nKGV4ZWMsIGxlZnRQYXJ0LCBtaWRkbGVQYXJ0
LCByaWdodFBhcnQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNDOjpqc1N0cmlu
ZyhleGVjLCBsZWZ0UGFydCwgbWlkZGxlUGFydCwgcmlnaHRQYXJ0KSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZShKU1ZhbHVlIHRoaXNWYWx1ZSkKQEAgLTg0
OCw4ICs4MzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiByZXBlYXRDaGFyYWN0ZXIoRXhl
Y1N0YXRlJiBleGVjLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcgogCiAgICAgc3RkOjpmaWxsX24o
YnVmZmVyLCByZXBlYXRDb3VudCwgY2hhcmFjdGVyKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsK
LSAgICByZXR1cm4ganNTdHJpbmcoJmV4ZWMsIFdURk1vdmUoaW1wbCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwganNTdHJpbmcoJmV4ZWMsIFdURk1vdmUoaW1wbCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0
ZXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTA1LDggKzg5MCw3IEBAIEFMV0FZU19JTkxJTkUgSlNT
dHJpbmcqIHJlcGxhY2UoCiAgICAgfQogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiByZXBsYWNlKHZtLCBleGVjLCBzdHJp
bmcsIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcmVwbGFjZSh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVVzaW5nUmVnRXhwKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTkyMSw4ICs5MDUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4
cChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFzZWFyY2hWYWx1ZS5pbmhlcml0czxSZWdFeHBP
YmplY3Q+KHZtKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
cGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCh2bSwgZXhlYywgc3RyaW5nLCBzZWFyY2hWYWx1ZSwgZXhl
Yy0+YXJndW1lbnQoMSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShyZXBsYWNlVXNpbmdSZWdFeHBTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgc2VhcmNo
VmFsdWUsIGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUq
IGV4ZWMpCkBAIC05MzMsOCArOTE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2goRXhlY1N0YXRlKgogICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSBleGVjLT50aGlzVmFsdWUoKS50b1N0cmluZyhleGVjKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGxhY2VVc2luZ1N0cmlu
Z1NlYXJjaCh2bSwgZXhlYywgc3RyaW5nLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1l
bnQoMSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShy
ZXBsYWNlVXNpbmdTdHJpbmdTZWFyY2godm0sIGV4ZWMsIHN0cmluZywgZXhlYy0+YXJndW1lbnQo
MCksIGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMoCkBAIC0xMzA4LDE1ICsxMjkwLDEx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFy
YXRvckltcGwtPmNoYXJhY3RlcnMxNigpWzBdOwogCiAgICAgICAgIGlmIChzdHJpbmdJbXBsLT5p
czhCaXQoKSkgewotICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBs
PExDaGFyPihleGVjLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFy
YXRvckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSB7Ci0gICAgICAg
ICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGxpdFN0
cmluZ0J5T25lQ2hhcmFjdGVySW1wbDxMQ2hhcj4oZXhlYywgcmVzdWx0LCB0aGlzVmFsdWUsIGlu
cHV0LCBzdHJpbmdJbXBsLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvc2l0aW9uLCByZXN1bHRMZW5n
dGgsIGxpbWl0KSkgCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAoc3BsaXRTdHJpbmdCeU9uZUNoYXJhY3RlckltcGw8VUNoYXI+KGV4ZWMsIHJlc3VsdCwgdGhp
c1ZhbHVlLCBpbnB1dCwgc3RyaW5nSW1wbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3NpdGlvbiwg
cmVzdWx0TGVuZ3RoLCBsaW1pdCkpIHsKLSAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHNwbGl0U3RyaW5nQnlPbmVDaGFyYWN0ZXJJbXBsPFVD
aGFyPihleGVjLCByZXN1bHQsIHRoaXNWYWx1ZSwgaW5wdXQsIHN0cmluZ0ltcGwsIHNlcGFyYXRv
ckNoYXJhY3RlciwgcG9zaXRpb24sIHJlc3VsdExlbmd0aCwgbGltaXQpKSAKKyAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsK
ICAgICAgICAgfQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICB9IGVsc2UgewpAQCAtMTQ2OCw4ICsxNDQ2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgU3RyaW5nIGxvd2VyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb0xvd2VyY2FzZVdp
dGhvdXRMb2NhbGUoKTsKICAgICBpZiAobG93ZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBs
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgc2NvcGUucmVs
ZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgbG93ZXJj
YXNlZFN0cmluZykpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIGxvd2VyY2FzZWRTdHJpbmcpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTQ4Niw4ICsxNDYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3RyaW5nIHVw
cGVyY2FzZWRTdHJpbmcgPSBzLmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKTsKICAg
ICBpZiAodXBwZXJjYXNlZFN0cmluZy5pbXBsKCkgPT0gcy5pbXBsKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoc1ZhbCk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgdXBwZXJjYXNlZFN0cmluZykpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMs
IHVwcGVyY2FzZWRTdHJpbmcpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNTg5LDgg
KzE1NjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSog
c3RhdGUsIGludDMyX3QgKCpjb252ZXJ0Q2FzZSkoVUNoYQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAKICAgICAvLyAx
OC4gUmV0dXJuIEwuCi0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoc3RhdGUsIGxvd2VyKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoc3RhdGUsIGxvd2VyKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNl
KEV4ZWNTdGF0ZSogc3RhdGUpCkBAIC0xNjM5LDggKzE2MTQsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUgdHJpbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBpbnQg
dHJpbUtpbgogICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gc3RyLmxlbmd0aCgpICYmIHRo
aXNWYWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gdGhpc1ZhbHVlOwogCi0gICAgc2Nv
cGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdHIuc3Vic3RyaW5nU2hh
cmluZ0ltcGwobGVmdCwgcmlnaHQgLSBsZWZ0KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBqc1N0cmluZyhleGVjLCBzdHIuc3Vic3RyaW5nU2hhcmluZ0ltcGwobGVmdCwgcmlnaHQg
LSBsZWZ0KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1RyaW0oRXhlY1N0YXRlKiBleGVjKQpAQCAtMTc3Nyw4ICsxNzUxLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQoMSk7CiAKLSAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgZXhl
Yywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZyk7CisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGV4ZWMsIHN0cmlu
Z1RvU2VhcmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMpCkBAIC0xNzk4LDggKzE3NzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKIAogICAg
IEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKIAotICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICByZXR1cm4gc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBzdHJpbmdU
b1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHN0cmluZ0luY2x1ZGVzSW1wbCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJ
biwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE4
NjYsOCArMTgzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIG5vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFVDaGFyKiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5nCiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBXVEZNb3Zl
KGltcGwpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzU3RyaW5nKGV4ZWMsIFdU
Rk1vdmUoaW1wbCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNOb3JtYWxpemUoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTkwMCw4ICsxODcxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5v
cm1hbGl6YXRpb24gZm9ybSJfcykpOwogICAgIH0KIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCB2aWV3LnVwY29udmVydGVk
Q2hhcmFjdGVycygpLCB2aWV3Lmxlbmd0aCgpLCBmb3JtKSk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobm9ybWFsaXplKGV4ZWMsIHZpZXcudXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzKCksIHZpZXcubGVuZ3RoKCksIGZvcm0pKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3Rv
dHlwZS5jcHAKaW5kZXggZjRlOWQxY2IxZDIwNzZiODFlNjcwNDkyZjhmOTgzYWIzYzBlMDU5MS4u
Y2I5OTk0NTk1YjRjOTcxZGRmNDJiODRiYzFhYmExZTRhMThmOTYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC0xMDksOCAr
MTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3lt
Ym9sKHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJv
cik7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKCZ2bSwgc3ltYm9sLT5kZXNjcmlwdGl2ZVN0cmluZygpKSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKCZ2bSwgc3ltYm9sLT5kZXNjcmlwdGl2ZVN0cmluZygpKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVj
KQpAQCAtMTIyLDggKzEyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9s
UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFzeW1ib2wpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlw
ZUVycm9yKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHN5bWJvbCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoc3ltYm9sKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDhhNDYxZTc2ZWM4MDExYTliMjM3OGQ2ZDQy
NzVkMzFhYzEyMTEwOWMuLmY5Njc3ODEwYmFjMzdhYzIzMmQxYmUzNTA3M2JmZDg0NTcwZjRiZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTExNTEs
MTQgKzExNTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldhc21T
dHJlYW1pbmdQYXJzZXJBZGRCeXRlcyhFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkp
OwogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFdhc21TdHJlYW1pbmdQYXJz
ZXIqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOwotICAgIGlmICghdGhpc09iamVjdCkgewotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGZhbHNlKSk7Ci0gICAgfQorICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkp
OworCiAgICAgYXV0byBkYXRhID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5h
cmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odGhpc09iamVjdC0+c3RyZWFtaW5nUGFyc2Vy
KCkuYWRkQnl0ZXMoYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmZpcnN0KSwgZGF0
YS5zZWNvbmQpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRoaXNPYmplY3QtPnN0cmVhbWluZ1Bh
cnNlcigpLmFkZEJ5dGVzKGJpdHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5maXJzdCks
IGRhdGEuc2Vjb25kKSkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTgx
MCw4ICsxODA4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZXRQcml2YXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghaWRlbnQpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsICJVbmtub3duIHByaXZhdGUg
bmFtZS4iKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPmFyZ3VtZW50KDApLmdldChleGVjLCAqaWRlbnQpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKS5nZXQoZXhl
YywgKmlkZW50KSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZVJvb3QoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmNwcAppbmRleCA5ZjVjYjY1OTdkOWYxNDY1ZDJmZDJmYWU1NDU2ZTZmZTlk
ZWQyYjg1Li43ZWVmYzdlYTMyYWM3YTg4OWYwMGZkYzFiMWNiODg2NzgzMmY4ZDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
ckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNTEsOCArNTEsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUgbWVzc2FnZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50ZXJuYWxGdW5j
dGlvbio+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5nbG9iYWxPYmplY3Qodm0pLT5XZWJBc3NlbWJseUNv
bXBpbGVFcnJvclN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZXhlYywgdm0sIHN0
cnVjdHVyZSwgbWVzc2FnZSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3I6OmNyZWF0ZShleGVjLCB2bSwgc3Ry
dWN0dXJlLCBtZXNzYWdlKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlQ29uc3RydWN0b3IuY3BwCmluZGV4IGNhOGY5MjUzM2YyNWUwNzk4OGNlNWQwMDgyZWJk
YjY4N2ZlNjgxOTQuLmRiMDQ5YzE4MWMyMzJlMTYxYWNjOTk1ODRiMzkwZWE2ODk1OWQ2MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCkBAIC0xNjYsOCArMTY2LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShF
eGVjU3RhdGUqIGV4ZWMKICAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNl
QnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0
ZU1vZHVsZShleGVjLCBXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVh
dGVNb2R1bGUoZXhlYywgV1RGTW92ZShzb3VyY2UpKSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1vZHVsZShFeGVjU3RhdGUqIGV4
ZWMpCkBAIC0xODUsOCArMTg0LDcgQEAgSlNXZWJBc3NlbWJseU1vZHVsZSogV2ViQXNzZW1ibHlN
b2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywKICAgICBhdXRv
KiBzdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJB
c3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKIAotICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gSlNXZWJBc3Nl
bWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgc3RydWN0dXJlLCBXYXNtOjpNb2R1bGU6
OnZhbGlkYXRlU3luYygmdm0ud2FzbUNvbnRleHQsIFdURk1vdmUoYnVmZmVyKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2
bSwgZXhlYywgc3RydWN0dXJlLCBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlU3luYygmdm0ud2FzbUNv
bnRleHQsIFdURk1vdmUoYnVmZmVyKSkpKTsKIH0KIAogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3RvciogV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiB0aGlzUHJvdG90eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDFmZDEzNGM3MGMxOTRlZmE3YzlhYzVm
MWQwOTFlMDI1NWUxYmM5Yi4uMDc2Yzc4NzhmNWRlMjZlY2IwMTdiZjg1Nzg4YjAwMTk3ZWEzMmIx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwCkBAIC05Niw5ICs5Niw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJjb3Vs
ZG4ndCBjcmVhdGUgVGFibGUiX3MpKSk7CiAgICAgfQogCi0gICAgdGhyb3dTY29wZS5yZWxlYXNl
KCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlUYWJsZTo6Y3Jl
YXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5VGFi
bGVTdHJ1Y3R1cmUoKSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlUYWJs
ZTo6Y3JlYXRlKGV4ZWMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2Vt
Ymx5VGFibGVTdHJ1Y3R1cmUoKSwgd2FzbVRhYmxlLnJlbGVhc2VOb25OdWxsKCkpKSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5VGFi
bGUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4IDQ0NGVmYmY4
YjRhN2EzNWY0MGYwMWNlYjRjNzllYzg0M2ViMTY0NmYuLmEzNDYyNWEyYmE0MDE4MGU4MGZkNTVl
MTBlNjJmZWMxMWJlMTdkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAgLTUwLDggKzUw
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXgKICAgICBKU09iamVjdCogZnVuY3Rpb24gPSB3
YXNtRnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlv
bi0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAg
IFJFTEVBU0VfQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKTsKLSAgICBzY29wZS5y
ZWxlYXNlKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoZXhlYykpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIEFyZ0xpc3QoZXhlYykp
KSk7CiB9CiAKIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGltcG9ydGFibGVG
dW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCA0ZDM0
YzA3YWM0Y2Q5YjQwMDdhMjViY2I5MTk3N2I0NDI0ZWEzNDI1Li41OWIzNjJhZGVkNzQ1NGIxZTcw
Mzg4NTA1ZjZiNDk3MWJiNDBkYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9hcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCkBAIC0xMzAsOCArMTMwLDcgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKICAgICBp
ZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpCiAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5nZXRDb25jcmV0ZUFycmF5KCktPnNldFZh
bHVlQXQoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUpOwogCi0gICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIHJldHVybiBKU09iamVjdDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNPYmplY3Q6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KSk7CiB9CiAK
IGJvb2wgUnVudGltZUFycmF5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>