<?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>215666</bug_id>
          
          <creation_ts>2020-08-19 15:14:22 -0700</creation_ts>
          <short_desc>[JSC] Add Object.getOwnPropertyNames caching as it is done for Object.keys, and accelerate Object.getOwnPropertyDescriptor</short_desc>
          <delta_ts>2020-08-19 22:08:14 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1681488</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 15:14:22 -0700</bug_when>
    <thetext>[JSC] Add Object.getOwnPropertyNames caching as it is done for Object.keys, and accelerate Object.getOwnPropertyDescriptor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681491</commentid>
    <comment_count>1</comment_count>
      <attachid>406878</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 15:18:32 -0700</bug_when>
    <thetext>Created attachment 406878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681507</commentid>
    <comment_count>2</comment_count>
      <attachid>406881</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 16:01:29 -0700</bug_when>
    <thetext>Created attachment 406881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681508</commentid>
    <comment_count>3</comment_count>
      <attachid>406882</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 16:03:53 -0700</bug_when>
    <thetext>Created attachment 406882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681565</commentid>
    <comment_count>4</comment_count>
      <attachid>406882</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-19 18:00:08 -0700</bug_when>
    <thetext>Comment on attachment 406882
Patch

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

Nice. r=me

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:944
&gt; +                            CachedPropertyNames key = node-&gt;op() == ObjectGetOwnPropertyNames ? CachedPropertyNames::OwnNames : CachedPropertyNames::OwnKeys;

nit: Just put this inline in the function call below?

&gt; Source/JavaScriptCore/runtime/StructureRareData.cpp:79
&gt; +    auto validateAndAppend = [&amp;](WriteBarrier&lt;JSImmutableButterfly&gt;&amp; slot) {

nit: why not just have this in the loop below?

&gt; Source/JavaScriptCore/runtime/StructureRareData.h:40
&gt; +enum class CachedPropertyNames : uint8_t {

nit: I&apos;d name this &quot;CachedPropertyNamesKind&quot; or similar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681576</commentid>
    <comment_count>5</comment_count>
      <attachid>406882</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 18:32:49 -0700</bug_when>
    <thetext>Comment on attachment 406882
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:944
&gt;&gt; +                            CachedPropertyNames key = node-&gt;op() == ObjectGetOwnPropertyNames ? CachedPropertyNames::OwnNames : CachedPropertyNames::OwnKeys;
&gt; 
&gt; nit: Just put this inline in the function call below?

Sounds nice, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureRareData.cpp:79
&gt;&gt; +    auto validateAndAppend = [&amp;](WriteBarrier&lt;JSImmutableButterfly&gt;&amp; slot) {
&gt; 
&gt; nit: why not just have this in the loop below?

Ah, right. Originally, they are not loop, But I made it loop by refactoring. We should put it inside loop without lambda. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureRareData.h:40
&gt;&gt; +enum class CachedPropertyNames : uint8_t {
&gt; 
&gt; nit: I&apos;d name this &quot;CachedPropertyNamesKind&quot; or similar

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681579</commentid>
    <comment_count>6</comment_count>
      <attachid>406899</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 18:56:23 -0700</bug_when>
    <thetext>Created attachment 406899
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681634</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-19 22:07:34 -0700</bug_when>
    <thetext>Committed r265934: &lt;https://trac.webkit.org/changeset/265934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681635</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-19 22:08:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/67452338&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406878</attachid>
            <date>2020-08-19 15:18:32 -0700</date>
            <delta_ts>2020-08-19 16:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215666-20200819151831.patch</filename>
            <type>text/plain</type>
            <size>75559</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Yzg1Y2M3NjdiOTk4NTU0N2JhNzVlZDhiMTQ3ODdmMWNmNTkxZjA4Li44Mjk5YWE1NTI1YTQ5MDIy
ZGRlMjA2MjFhMWIyZjYyY2ExZDFhNzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgY2FjaGlu
ZyBhcyBpdCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywgYW5kIGFjY2VsZXJhdGUgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgaXMgaW1tdXRhYmxlIGZv
ciBTdHJ1Y3R1cmUgaWYgc3RydWN0dXJlIG1lZXRzIHNvbWUgY29uZGl0aW9ucy4gQW5kIHdlIGhh
dmUgb3B0aW1pemF0aW9uIGZvciBPYmplY3Qua2V5cy4KKyAgICAgICAgVGhpcyBwYXRjaCB3aXJl
cyBleGlzdGluZyBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgT2JqZWN0LmtleXMgdG8gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMgc28gdGhhdCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBoYXMK
KyAgICAgICAgZnVsbCBzdXBwb3J0IG9mIGNhY2hpbmcgJiBpbmxpbmVkIGNvZGUgaW4gREZHIC8g
RlRMLgorCisgICAgICAgIFdlIGFsc28gcHJlLWJha2Ugc3RydWN0dXJlIGZvciB0aGUgcmVzdWx0
IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBwZXJmb3JtIGhhc2ggdGFibGUgbG9va3VwIGV2ZXJ5CisgICAgICAgIHRpbWUgd2UgY3Jl
YXRlIGFuIG9iamVjdCBmb3IgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvci4gVGhpcyBt
YWtlcyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDJ4IGZhc3RlciBmcm9tIHRoZSBt
aWNyb2JlbmNobWFyay4KKworICAgICAgICBUaGUgYWJvdmUgdHdvIG9wdGltaXphdGlvbiBtYWtl
cyBTcGVlZG9tZXRlcjIvSW5mZXJuby1Ub2RvTVZDIDclIGZhc3RlciwgYW5kIGl0IGFsc28gb3B0
aW1pemVzIFNwZWVkb21ldGVyMi9FbWJlckpTLURlYnVnIGJ5IDUlLgorICAgICAgICBJbiB0b3Rh
bCwgd2UgY2FuIGdldCAwLjcgLSAxLjAlIHByb2dyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RL
ZXlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChK
U0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAg
ICAgICogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5
cyk6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5cyk6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZURhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVBY2Nlc3NvclBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RPd25LZXlzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93blByb3BlcnR5TmFtZXMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRQcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJyZW50bHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5cyk6
IERlbGV0ZWQuCisKIDIwMjAtMDgtMTggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgVXBkYXRlIGJ5dGUgb2Zmc2V0cyBpbiBKU1N0cmluZy5oIGNvbW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCA1NTMxMTBmY2M3MzVmMTM5YTRiYzU1MTU0Y2QzYWRlZTBlMjhj
NWU5Li4xZDliYWUyOWUxNmI1OTcxMDdlNGUxOGY4YjI1NzZjN2NmNTU5ZDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0zMDcyLDEzICszMDcyLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1p
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lczoKICAgICBjYXNlIE9iamVjdEtleXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNl
dCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlOwogICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZVNldC5pc0Zpbml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgewog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJl
U2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogcmFyZURhdGEg
PSBzdHJ1Y3R1cmUtPnJhcmVEYXRhQ29uY3VycmVudGx5KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCEhcmFyZURhdGEtPmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICBDYWNoZWRQcm9wZXJ0eU5hbWVzIGtleSA9IG5vZGUtPm9wKCkgPT0gT2Jq
ZWN0R2V0T3duUHJvcGVydHlOYW1lcyA/IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzIDog
Q2FjaGVkUHJvcGVydHlOYW1lczo6T3duS2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEh
cmFyZURhdGEtPmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJyZW50bHkoa2V5KSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0
Y2hwb2ludChub2RlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0
U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNjdiYTEyZGYzMWQ5NmJjYmRkOGM5ZjI3ZDc3
MWVkOWZkOWNlOTIyNS4uNzUzMjk5YzAwZWI2NTkwMzRkMTk3NDA1OTA3MzkyMDVmNDAxMjEzZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTI5NDgsNiArMjk0OCwxNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE9iamVjdEdldE93blBy
b3BlcnR5TmFtZXNJbnRyaW5zaWM6IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA8IDIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgICAgIHNldFJlc3VsdChhZGRUb0dyYXBoKE9i
amVjdEdldE93blByb3BlcnR5TmFtZXMsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMSwgcmVnaXN0ZXJPZmZzZXQpKSkpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJp
bnNpYzogewogICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IDI3NWRkNjhhOGYyNTBiYjlhMDJmNTI4ODQ0NDliMzczZDYw
YTI3YzEuLjUyM2Y0MWQ3MTRhYmI2ZTNmODg2YjhmOTI3Y2MyYmJkNjFiZThhZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC03MTMsNiArNzEzLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBT
dHJpbmdWYWx1ZU9mOgogICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICBjYXNlIE9iamVjdEdldE93
blByb3BlcnR5TmFtZXM6CiAgICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCmluZGV4IGI5N2EyNDNmYzFjNzMzNWE0MDVkNjhlNDVkNDlhMzJjMjgxOGYxYzAu
LmQzNDQwNzdkOGYxODVmOGY5OWRkYTg2ZDUyM2NhYzk3YjkzYjkzYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBA
IC05MzQsMTMgKzkzNCwxNSBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICAgICAgICAgIGNhc2UgT2Jq
ZWN0S2V5czogewogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gT2JqZWN0VXNlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9
IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdHJ1Y3R1cmVTZXQuaXNGaW5pdGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6
ZSgpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJy
ZW50bHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFi
bGVCdXR0ZXJmbHkgPSByYXJlRGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FjaGVkUHJvcGVydHlOYW1lcyBrZXkgPSBub2Rl
LT5vcCgpID09IE9iamVjdEdldE93blByb3BlcnR5TmFtZXMgPyBDYWNoZWRQcm9wZXJ0eU5hbWVz
OjpPd25OYW1lcyA6IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXM7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5j
YWNoZWRQcm9wZXJ0eU5hbWVzQ29uY3VycmVudGx5KGtleSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hw
b2ludChub2RlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvTmV3QXJyYXlCdWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNDhhN2JhNDI1Mjg1
NzJlNThjYjE0ODc0YWY3NThkZjAzY2VlOTg1Li5mNDBlZGY4MDU2NzZmN2EyYzM4OTFhNDU4YjU2
MTkwNmE1NThmNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0zNTIsNiArMzUyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAg
ICAgY2FzZSBPYmplY3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNTYxOTliNTYzMzUzMmMxYjA1MTJhNjY4YTgx
MjgwYmRjOGJmNDZiNi4uYmI1OTI1YWU1ODA4NzhmN2NjMWY2NWM5YmFkZDkzMjZiNWJmZTNhYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTMx
LDYgKzE5MzEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0
eU5hbWVzOgogICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICB3
YXRjaEhhdmluZ0FCYWRUaW1lKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDE5ZDQ2NjNjYWFjMjBkMzc5YTI0Yzc5NGM0OTI4MWM1MTdkMmRhZGUuLjUy
NzBmZWE1ZTM0ZmE4ZmE5ZjUzMTEwYzhkMzk1Y2YwMGY1YjlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI4Niw2ICsyODYsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0R2V0T3duUHJvcGVy
dHlOYW1lcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAv
KiBBdG9taWNzIG9iamVjdCBmdW5jdGlvbnMuICovXAogICAgIG1hY3JvKEF0b21pY3NBZGQsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTFkNDg2MzdjZDMw
YmQ4OTg0NmE1YzIxMWFjMDViYjZiMWVlNmU5Ny4uMmZmZjhjMWE5NTA1YTcxY2QyY2Y5YjRhNTUx
YTI5YWRhYzVhYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRp
b25PYmplY3RLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWQKICAgICBK
U09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFs
T2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkV4Y2x1ZGUpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2Jq
ZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkV4Y2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMpOwogfQogCiBKU0Fy
cmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCkKQEAgLTI1NSw3ICsyNTUsMjggQEAg
SlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsK
KyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0
eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBDYWNo
ZWRQcm9wZXJ0eU5hbWVzOjpPd25LZXlzKTsKK30KKworSlNBcnJheSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2Jq
ZWN0KS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3duUHJvcGVy
dHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBE
b250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25O
YW1lcyk7Cit9CisKK0pTQXJyYXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0R2V0T3du
UHJvcGVydHlOYW1lc09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogb2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0
aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIHJl
dHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3Bl
cnR5TmFtZXM6Ok93bk5hbWVzKTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk9iamVjdENyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkUHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAppbmRleCA5NjY3M2JiOWRkOTUwYjRlMzdjN2VjYWM3NjA3YjA2MDZmODRiN2Q1Li5lMmM4
MGU2ZmU0ZmMwMzk2NzUzMTE4ZDBjNjdlYTgzMjkxN2ZiOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNDksNiArNDksOCBAQCBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVgogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0lt
cGwqKSBXVEZfSU5URVJOQUw7CiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVj
dEtleXMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNB
cnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25P
YmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVUaGlzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1
aW50MzJfdCBpbmxpbmVDYXBhY2l0eSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCA4NmY4N2YyNTc2ZGU3ODE0ZWZlYWNjOTA1YjY5MzI4N2ZiZWRjNmUyLi42ZjhhMjRl
M2YwODM3MWE4YzZlYTFkMGFjZjY5OTFkNjE4NTQ3ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtMTExMCw3ICsxMTEwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAg
IGNhc2UgQ3JlYXRlUmVzdDoKICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKLSAgICAgICAg
Y2FzZSBPYmplY3RLZXlzOiB7CisgICAgICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICAgICAgY2Fz
ZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9u
KFNwZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBlZTJhY2I3M2FjMWNkNWY5
MTZlNDBkYzk5ZmY1NGVhODljNWIyODJiLi44ODIyYzcyMzIzZmM4YmVkNGM2ZjI3MGQ0Y2ZjOWRh
Y2RmNDVlMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaApAQCAtNDk0LDYgKzQ5NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNl
IE9iamVjdEtleXM6CisgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAgIGNh
c2UgU2V0TG9jYWw6CiAgICAgY2FzZSBTZXRDYWxsZWU6CiAgICAgY2FzZSBQdXRTdGFjazoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXgg
NGQ2OTU4MDQ4OTQxNzY1NDg4ZGZjOTAwZmUxYjhkOGRkYTM3ZjdkNi4uYjNjODZjMTViNTIwMzVi
NWRlMGMyMmQ2MGVjNTU5OWMxOTYyOTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzMTc5LDcgKzEzMTc5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1
bHQodGVtcFJlZ3MsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0S2V5cyhOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtl
eXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgIGNhc2UgT2JqZWN0VXNlOiB7CkBAIC0x
MzIwNywxMCArMTMyMDcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtl
eXMoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
VGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1
cmUtPnN0cnVjdHVyZUlEKCkpKSkpOwogCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZD
YWNoZWRPd25LZXlzKCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMobm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gQ2FjaGVk
UHJvcGVydHlOYW1lczo6T3duS2V5cyA6IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzKSks
IHNjcmF0Y2hHUFIpOwogCi0gICAgICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSA9PSAxKTsKLSAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6
QmVsb3dPckVxdWFsLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6
Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpID09IDEpOworICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpCZWxvd09yRXF1YWwsIHNj
cmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihTdHJ1Y3R1cmVSYXJl
RGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpKSkpOwogCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CiAKQEAgLTEz
MjI0LDcgKzEzMjI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMo
Tm9kZSogbm9kZSkKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgcmVzdWx0R1BSLCAmdm0oKSwgYXJyYXlTdHJ1Y3R1cmUsIHNjcmF0Y2gzR1BSKSk7CiAKLSAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlz
ID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3Bl
cnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9i
amVjdEdQUikpOwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEzMjM5LDcgKzEzMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9iamVjdEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9
PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVj
dEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTMyNTQsNyArMTMyNTQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0S2V5cywgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5cyA6IG9wZXJh
dGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9iamVjdFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBiZDU2MWNlZWI4YzQ4ODUy
YTg2MThjMjVlMDc0ZmRhM2Y1YWU4MjE4Li41OGE4Yzk4YTYwMTM1NjA4MTViMmIyMmJlYzg4NzMw
M2MzYWQxYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCkBAIC0xNDY2LDcgKzE0NjYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAg
dm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3
VHlwZWRBcnJheShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKLSAgICB2
b2lkIGNvbXBpbGVPYmplY3RLZXlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlz
T3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RDcmVhdGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTc5MzEyZDY5
NGNiOGQ5MGExMmFjNjM0MjlhM2I1YTUwM2Y0NGUxOC4uZWNkYmZkNzYwMTM3MTg3ZGRkZmVmYjVm
ZDdkZWUwYThhNGNiMTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zMjMyLDggKzMyMzIsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGNhc2UgT2JqZWN0S2V5czogewotICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2Rl
KTsKKyAgICBjYXNlIE9iamVjdEtleXM6CisgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzOiB7CisgICAgICAgIGNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM3YTBiZWZmN2U2NWJl
Mjg1ODk1MzRhMzE2OTZjYjYyMmU2OWE1YmIuLjc0ODJhNzM1NDk5MzJkZTQ5ZmJjNGVmNTI4NDdm
MzA0Mjk2MDAxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMzgxOCw4ICszODE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNl
IE9iamVjdEtleXM6IHsKLSAgICAgICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgY2Fz
ZSBPYmplY3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczogeworICAg
ICAgICBjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDBkMzA0NTMxOTJkODYwZTc3
NGJlZGVkNzNkMmFlM2ZiZjI4Y2M0OWIuLjJiYTk5NGU3ZWZiMGU1MWY3OTI0NjE2YzQ2OGEwYjEw
N2FkMDMzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC0xNDYsNyArMTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEs
IFN0cnVjdHVyZTo6cHJldmlvdXNPclJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1
Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFj
cm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
IFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVS
YXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVS
YXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQ
cm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMpKSBcCisgICAgbWFjcm8o
U3RydWN0dXJlUmFyZURhdGFfY2FjaGVkT3duTmFtZXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZz
ZXRPZkNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lczo6T3duTmFtZXMpKSBc
CiAgICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNr
ZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFj
cm8oSGFzaE1hcEltcGxfYnVmZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcElt
cGxfaGVhZCwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCA5OWE0NzZmMmI4ODdiNWRhYWE3ZmQ2NGMxNzQ5ZjNmOTdjODA1
YWIxLi5kZTkxZjk0OTI3NzE2MTI1NmUxZTc4MGUyZjIxY2Y1N2JjNTY1NGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjIsNiArMjIy
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDYWxsTnVtYmVyQ29uc3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAg
Y2FzZSBPYmplY3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAg
ICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIFRy
eUdldEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggMjlhNzM0NmY4MjQxOTlmMDE1YjhhNDJlMDJiNWE1NWUyMzhlYTBkZC4uNGMzNWE4
YWU5MzI5YzljZDBmM2VlY2RjMWZmZGYxNTNhMWE4NjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA3OCw3ICsxMDc4LDggQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdEtleXM6Ci0gICAgICAgICAgICBj
b21waWxlT2JqZWN0S2V5cygpOworICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFt
ZXM6CisgICAgICAgICAgICBjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
ICAgICAgICAgY29tcGlsZU5ld09iamVjdCgpOwpAQCAtNjU2OSw5ICs2NTcwLDEwIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVyb0xl
bmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZU9iamVjdEtleXMoKQorICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93
blByb3BlcnR5TmFtZXMoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgTm9kZVR5cGUgb3AgPSBtX25vZGUtPm9wKCk7CiAgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQo
bV9ub2RlKSkgewpAQCAtNjU5MywxOCArNjU5NSwxOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgICAgICB1bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dDYXNl
KSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHVzZUNh
Y2hlQ2FzZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7Ci0gICAg
ICAgICAgICAgICAgTFZhbHVlIGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZpb3Vz
T3JSYXJlRGF0YSwgbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsKLSAg
ICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGNhY2hlZE93bktl
eXMsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUo
dXNlQ2FjaGVDYXNlKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkg
PT0gMSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGNhY2hlZCA9IG1fb3V0LmxvYWRQdHIocHJl
dmlvdXNPclJhcmVEYXRhLCBvcCA9PSBPYmplY3RLZXlzID8gbV9oZWFwcy5TdHJ1Y3R1cmVSYXJl
RGF0YV9jYWNoZWRPd25LZXlzIDogbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25O
YW1lcyk7CisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmJlbG93T3JFcXVhbChj
YWNoZWQsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFy
ZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2Up
LCB1bnN1cmUodXNlQ2FjaGVDYXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byh1c2VDYWNoZUNhc2UsIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UpOwogICAgICAgICAgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykpOwotICAgICAgICAgICAg
ICAgIExWYWx1ZSBmYXN0QXJyYXkgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVj
dHVyZSwgbV9vdXQuYWRkUHRyKGNhY2hlZE93bktleXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojpv
ZmZzZXRPZkRhdGEoKSksIHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UpOworICAgICAgICAgICAgICAg
IExWYWx1ZSBmYXN0QXJyYXkgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVjdHVy
ZSwgbV9vdXQuYWRkUHRyKGNhY2hlZCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0
YSgpKSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0QXJyYXkpOwogICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHNsb3dCdXRBcnJheUJ1ZmZlckNhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAg
ICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgbV92bVZhbHVlLCB3ZWFrU3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5
cyk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dBcnJheSA9IHZtQ2FsbChJbnQ2NCwgb3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXIsIG1fdm1WYWx1ZSwgd2Vha1N0cnVjdHVyZShhcnJheVN0cnVj
dHVyZSksIGNhY2hlZCk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dEFy
cmF5QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dBcnJheSk7CiAgICAgICAgICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCkBAIC02NjEzLDcgKzY2MTUsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUg
PSBsYXp5U2xvd1BhdGgoCiAgICAgICAgICAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0
b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRv
cj4gewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKHZtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk9iamVjdEtleXNP
YmplY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LCBsb2NhdGlvbnNb
MV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID09IE9iamVj
dEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3du
UHJvcGVydHlOYW1lc09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmpl
Y3QsIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdCk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwpAQCAtNjYyMywx
MSArNjYyNSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1
ZmZlclJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd09iamVjdChtX25v
ZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9w
ID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2Jq
ZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwg
bG93T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uT2JqZWN0S2V5cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0
KSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoSW50NjQsIG9wID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDog
b3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXgg
ZTRlNTc3ZmZhNTJkNzY1Mjk5YTMzNjZmOTRkMWE2YmI0YWI0YjhjNC4uODk2YzFjY2RhN2RjODQw
MDU4MGY1MjY2MzExMjU4YzQ0YTM2N2I3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwCkBAIC0xNTksNiArMTU5LDggQEAgY29uc3QgY2hhciogaW50cmlu
c2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cE1hdGNo
RmFzdEludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RDcmVhdGVJbnRyaW5zaWM6CiAgICAgICAg
IHJldHVybiAiT2JqZWN0Q3JlYXRlSW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEdldE93blBy
b3BlcnR5TmFtZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0R2V0T3duUHJvcGVy
dHlOYW1lc0ludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNp
YzoKICAgICAgICAgcmV0dXJuICJPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAg
Y2FzZSBPYmplY3RJc0ludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmgKaW5kZXggMmFhYTZkMGM4ZjFlMGU4Y2UxNzE2OTViNjJkNWExMzQ2Y2U2ZjU3Zi4u
YjM5YzU2NTEwNDUxYzEyZTlhZmJkOWYyODlhODViYTNiNzBkN2M0NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTk1LDYgKzk1LDcgQEAgZW51bSBJbnRy
aW5zaWMgOiB1aW50OF90IHsKICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywKICAgICBSZWdF
eHBNYXRjaEZhc3RJbnRyaW5zaWMsCiAgICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAorICAgIE9i
amVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBl
T2ZJbnRyaW5zaWMsCiAgICAgT2JqZWN0SXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0S2V5c0ludHJp
bnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9y
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9w
ZXJhdGlvbnMuY3BwCmluZGV4IDkxYjZkYWVkNTMxZmIyYWU4MmJiMzhhZDViMDBlNzA4NzI4ZjRk
ODAuLjY0MDU0YjgwODc2YTlmMWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApA
QCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJdGVyYXRpb25SZWNvcmQgaXRlcmF0aW9uUmVjb3JkCiAgICAgfQogfQogCi1z
dGF0aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7Ci1zdGF0
aWMgY29uc3QgUHJvcGVydHlPZmZzZXQgZG9uZVByb3BlcnR5T2Zmc2V0ID0gMTsKK3N0YXRpYyBj
b25zdGV4cHIgUHJvcGVydHlPZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7CitzdGF0aWMg
Y29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGRvbmVQcm9wZXJ0eU9mZnNldCA9IDE7CiAKIFN0cnVj
dHVyZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM5MjM1ZTIzY2QzNGM3MmJmMTY4NmQ2MDUz
YmVhZGM1NWY3MGMzNjUuLjYzNmVkOTQxMGY4ZmJjYmRhODJkNGNmZjlkZmQwZjQ3ODMyYThkYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTk3MCw2ICs5NzAsMTQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIGlu
aXQuc2V0KGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKGluaXQudm0sICppbml0
Lm93bmVyKSk7CiAgICAgICAgIH0pOworICAgIG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVj
dFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1
Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChjcmVhdGVEYXRhUHJvcGVydHlE
ZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKGluaXQudm0sICppbml0Lm93bmVyKSk7CisgICAgICAg
IH0pOworICAgIG1fYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUuaW5p
dExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkg
eworICAgICAgICAgICAgaW5pdC5zZXQoY3JlYXRlQWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JP
YmplY3RTdHJ1Y3R1cmUoaW5pdC52bSwgKmluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CiAgICAg
CiAgICAgbV9ldmFsRnVuY3Rpb24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKQEAgLTE5MzUsNiArMTk0Myw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0ZXJhdG9yU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldEl0ZXJhdG9yU3RydWN0
dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9i
amVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2FjY2Vzc29y
UHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsK
ICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
ICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDNlZGRhZTMyN2MyZWJkZjY5YjEzMjNmODg2MDQ0YTBiNjYwNDNhODQuLjRlZjc2
ODNmNDgzNmQyYTMxMWQ5NDQxZmUwOTc3ZmQ0NThlYmRmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzk0LDYgKzM5NCw4IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVj
dFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9y
T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CkBA
IC03ODQsNiArNzg2LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2Jq
ZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQcm9wZXJ0
eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc29yUHJv
cGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBN
YXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29y
ZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggNDI0ZTE1MWFhZWJkMjk0MzUyMTk0ZTU0YTU3OWEz
ZjEyYzc4YWFmMi4uOWQyNWU2MjI3ZTQ4MTZjNTQxYjY4YTVhYjc5MmE2MWY5MWRhM2JmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcApAQCAtODMwLDcgKzgzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY093bktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3lt
Ym9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2Jq
ZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDNhNmYx
ZjMzNzdhNjEyNGNkZTA4ZDU1YTY0OTFjNTU3NDFhMWUzZWUuLjZlNGVjNjIwODJkMWVmN2MyNjRk
NThkNGJkNzVmMDU5ZDZmZDFlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgQ2xh
c3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2kKICAgc2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1
Y3RvclNldFByb3RvdHlwZU9mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVz
Y3JpcHRvciAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
cyBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKLSAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJv
cGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNp
YwogICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlTeW1ib2xzICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICBrZXlzICAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMSBPYmplY3RLZXlzSW50cmluc2ljCiAgIGRlZmluZVByb3BlcnR5ICAg
ICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAzCkBAIC0yMzUsMTQgKzIzNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0ds
b2JhbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVj
dENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhnbG9iYWxPYmplY3QsIG9iamVj
dCkpKTsKIH0KIAotLy8gRklYTUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1l
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQ
cm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRl
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blBy
b3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5n
cywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgQ2FjaGVkUHJvcGVydHlOYW1lczo6
T3duTmFtZXMpKSk7CiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgpA
QCAtMjUyLDcgKzI1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMoSlNHbG9iYWxPYmplCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwg
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2Rl
OjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9k
ZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
QEAgLTI2MSw3ICsyNjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3Qs
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZTo6RXhjbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENhY2hlZFByb3Bl
cnR5TmFtZXM6Ok93bktleXMpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCkBAIC04ODYsMTYgKzg4NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpKSk7CiB9CiAKLUpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFt
ZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKK0pT
QXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVt
UHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJv
cGVydHlOYW1lcz4ga2V5KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBib29sIGlzT2Jq
ZWN0S2V5cyA9IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAm
JiBkb250RW51bVByb3BlcnRpZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGU7CiAgICAgLy8gV2UgYXR0ZW1wdCB0byBsb29rIHVwIG93biBwcm9wZXJ0eSBrZXlzIGNhY2hl
IGluIE9iamVjdC5rZXlzIGNhc2UuCi0gICAgaWYgKGlzT2JqZWN0S2V5cykgeworICAgIGlmIChr
ZXkpIHsKICAgICAgICAgaWYgKExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1l
KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5jYWNoZWRPd25LZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
KiBpbW11dGFibGVCdXR0ZXJmbHkgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSktPmNhY2hlZFByb3Bl
cnR5TmFtZXMoa2V5LnZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJh
eVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZShpbW11dGFibGVCdXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJy
YXlTdHJ1Y3R1cmUsIGltbXV0YWJsZUJ1dHRlcmZseS0+dG9CdXR0ZXJmbHkoKSk7CiAgICAgICAg
ICAgICB9CkBAIC05MTAsMTEgKzkwOCwxMSBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydAogICAg
ICAgICBBU1NFUlQocHJvcGVydHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
IHx8IHByb3BlcnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7CiAgICAg
ICAgIGlmIChwcm9wZXJ0aWVzLnNpemUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKICAg
ICAgICAgICAgIGlmIChMSUtFTFkoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkg
ewotICAgICAgICAgICAgICAgIGlmIChpc09iamVjdEtleXMpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoa2V5KSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5j
YW5DYWNoZU93bktleXMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FjaGVk
QnV0dGVyZmx5ID0gc3RydWN0dXJlLT5jYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVS
YXJlRGF0YTo6Y2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZS0+Y2FuQ2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIGNhY2hlZEJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJv
cGVydHlOYW1lc0lnbm9yaW5nU2VudGluZWwoa2V5LnZhbHVlKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVk
UHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIG5ld0J1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojpj
cmVhdGUodm0sIENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cywgbnVtUHJvcGVydGllcyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Q
cm9wZXJ0aWVzOyBpKyspIHsKQEAgLTkyMywxMyArOTIxLDEzIEBAIEpTQXJyYXkqIG93blByb3Bl
cnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQ
cm9wZXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0
SW5kZXgodm0sIGksIGpzT3duZWRTdHJpbmcodm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmUtPnNldENhY2hlZE93bktleXModm0sIG5ld0J1dHRlcmZseSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRQcm9wZXJ0eU5hbWVzKHZt
LCBrZXkudmFsdWUoKSwgbmV3QnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0
dGVyZmx5KHZtLCBudWxscHRyLCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRl
cmZseSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBudWxscHRyKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwgU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmUtPnNldENhY2hlZFByb3BlcnR5TmFtZXModm0sIGtleS52YWx1ZSgpLCBTdHJ1
Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMDExLDQgKzEwMDksMjYgQEAg
SlNBcnJheSogb3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBvYmplY3QsIFByb3BlcnQKICAgICByZXR1cm4ga2V5czsKIH0KIAorSlNPYmplY3Qq
IGNvbnN0cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sK
KyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworCisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisKKyAgICBpZiAoZGVzY3Jp
cHRvci52YWx1ZSgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWUsIGRlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgaWYgKGRlc2NyaXB0b3Iud3Jp
dGFibGVQcmVzZW50KCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT53cml0YWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSkpOworICAg
IGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSkKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmdldCwgZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisgICAg
aWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c2V0LCBkZXNjcmlwdG9yLnNldHRlcigpKTsKKyAgICBp
ZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0
b3IuZW51bWVyYWJsZSgpKSk7CisgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2Vu
dCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
ZmlndXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA2MWNmYzk5MzY2
MWRjMmJkMmFhZTYyM2VhZDM2YzczZTljODFhMTBiLi45OTU3ODE3MzViOTAwYTE4M2Y3NjJkZTJm
ZDc2NWU3N2E3ODIwNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmgKQEAgLTg5LDI2ICs4OSw3MiBAQCBpbmxpbmUgSlNPYmplY3Qq
IGNvbnN0cnVjdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFy
ZykKICAgICByZXR1cm4gYXJnLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKK0pTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9y
U2xvdyhKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYpOworCitzdGF0
aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZVBy
b3BlcnR5T2Zmc2V0ID0gMDsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVBy
b3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlUHJvcGVydHlPZmZzZXQgPSAxOworc3RhdGljIGNvbnN0
ZXhwciBQcm9wZXJ0eU9mZnNldCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3Bl
cnR5T2Zmc2V0ID0gMjsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVByb3Bl
cnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMzsKKworc3RhdGljIGNv
bnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckdldFByb3Bl
cnR5T2Zmc2V0ID0gMDsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQ
cm9wZXJ0eURlc2NyaXB0b3JTZXRQcm9wZXJ0eU9mZnNldCA9IDE7CitzdGF0aWMgY29uc3RleHBy
IFByb3BlcnR5T2Zmc2V0IGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3Bl
cnR5T2Zmc2V0ID0gMjsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQ
cm9wZXJ0eURlc2NyaXB0b3JDb25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCA9IDM7CisKK2lubGlu
ZSBTdHJ1Y3R1cmUqIGNyZWF0ZURhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gdm0uc3RydWN0dXJlQ2FjaGUuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90
b3R5cGUoJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpLCBKU0Zp
bmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0OworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCAwLCBvZmZzZXQpOworICAg
IFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBkYXRhUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVQcm9w
ZXJ0eU9mZnNldCk7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+ZG9uZSwgMCwgb2Zmc2V0KTsK
KyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQgPT0gZGF0YVByb3BlcnR5RGVzY3JpcHRvcldyaXRh
YmxlUHJvcGVydHlPZmZzZXQpOworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmVudW1lcmFibGUs
IDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0eURl
c2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQpOworICAgIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbmZpZ3VyYWJsZSwgMCwgb2Zmc2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQg
PT0gZGF0YVByb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAg
ICByZXR1cm4gc3RydWN0dXJlOworfQorCitpbmxpbmUgU3RydWN0dXJlKiBjcmVhdGVBY2Nlc3Nv
clByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5zdHJ1Y3R1
cmVDYWNoZS5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSgmZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxp
bmVDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJl
ID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJv
cGVydHlOYW1lcy0+Z2V0LCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9
PSBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckdldFByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zm
c2V0ID09IGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yU2V0UHJvcGVydHlPZmZzZXQpOworICAg
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUsIHZtLnByb3BlcnR5TmFtZXMtPmVudW1lcmFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFT
RV9BU1NFUlQob2Zmc2V0ID09IGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVBy
b3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25maWd1cmFibGUsIDAs
IG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGFjY2Vzc29yUHJvcGVydHlE
ZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJvcGVydHlPZmZzZXQpOworICAgIHJldHVybiBzdHJ1Y3R1
cmU7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZnJvbXByb3BlcnR5ZGVz
Y3JpcHRvcgogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNj
cmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwot
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qp
OwotCi0gICAgaWYgKGRlc2NyaXB0b3IudmFsdWUoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBkZXNjcmlwdG9yLnZhbHVlKCkpOwotICAg
IGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpKQotICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+d3JpdGFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9y
LndyaXRhYmxlKCkpKTsKLSAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCi0gICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIGRlc2NyaXB0
b3IuZ2V0dGVyKCkpOwotICAgIGlmIChkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnNldCwgZGVzY3JpcHRv
ci5zZXR0ZXIoKSk7Ci0gICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSkKLSAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmVudW1lcmFibGUs
IGpzQm9vbGVhbihkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkpOwotICAgIGlmIChkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZVByZXNlbnQoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbmZpZ3VyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlKCkpKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoZGVzY3JpcHRvci52
YWx1ZSgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpKSB7Cisg
ICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFs
T2JqZWN0LT5kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkpOworICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvclZhbHVlUHJvcGVy
dHlPZmZzZXQsIGRlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yV3JpdGFibGVQcm9wZXJ0eU9mZnNldCwganNCb29s
ZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvckVudW1lcmFibGVQcm9wZXJ0eU9mZnNldCwganNCb29s
ZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJvcGVydHlPZmZzZXQsIGpz
Qm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpICYmIGRlc2Ny
aXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAm
JiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSkgeworICAgICAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+YWNjZXNzb3JQ
cm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckdldFByb3BlcnR5T2Zmc2V0LCBk
ZXNjcmlwdG9yLmdldHRlcigpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGFjY2Vz
c29yUHJvcGVydHlEZXNjcmlwdG9yU2V0UHJvcGVydHlPZmZzZXQsIGRlc2NyaXB0b3Iuc2V0dGVy
KCkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgYWNjZXNzb3JQcm9wZXJ0eURlc2Ny
aXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmVudW1l
cmFibGUoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgYWNjZXNzb3JQcm9wZXJ0
eURlc2NyaXB0b3JDb25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFuKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlKCkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvclNsb3coZ2xvYmFs
T2JqZWN0LCBkZXNjcmlwdG9yKTsKIH0KIAogCkBAIC0xMTYsNyArMTYyLDcgQEAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1
Y3RvclNlYWwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogSlNWYWx1ZSBvYmplY3RDb25z
dHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0
KiwgY29uc3QgSWRlbnRpZmllciYpOwogSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93blBy
b3BlcnR5RGVzY3JpcHRvcnMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwotSlNBcnJheSog
b3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWVN
b2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKK0pTQXJyYXkqIG93blByb3BlcnR5S2V5cyhK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lcz4pOwogYm9vbCB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggYzc4YTdhNDZmZjNhMDljZWJjZWFiNjhi
MDQ1ZGQ4ZWIyMGQyMjAxOC4uYmJlNmQzZDk0YTg3ZDg2YzcxM2JkY2I5NTQxM2M1ODBjOWQwNWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5j
cHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1
ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2Jq
ZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0
PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMs
IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93
bktleXMpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJl
ZmxlY3QucHJldmVudGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDIyY2Q0MmJiNWYwM2FhY2E1NWY2ODA1YzBiNWQzY2QxNjE5ZDY1
YjAuLjFmYWJmOGNlMDhhZWEzOGQ3Mzg1MDk2YzZmNzhkM2RkZWFlYzMyNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTQwOSw3ICsxNDA5LDcg
QEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSBjb25zdAogCiBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKFZNJiB2bSkgY29uc3QKIHsKLSAgICBpZiAoIXRoaXMtPmNhbkNhY2hlT3du
S2V5cygpKQorICAgIGlmICghdGhpcy0+Y2FuQ2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiA9
IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7CkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29s
IFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSkgY29uc3QK
ICAgICAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7
Ci0gICAgICAgIGlmICghc3RydWN0dXJlLT5jYW5DYWNoZU93bktleXMoKSkKKyAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPmNhbkNhY2hlT3duUHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBjdXJyZW50U3RydWN0dXJlSUQrKzsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGEwMDQwMTBhYjRlYTM1N2M4
MjRiNTdlOGU1NjUxMDdjZjYxZmY0MTQuLjNjYjZhY2RlMjQ5ZDIxZTE3MmM2NjgxYWJhYTVmOWQx
ODcxYjg5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBA
IC01MjIsMTAgKzUyMiwxMCBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBib29sIGNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYpIGNvbnN0Owog
ICAgIGJvb2wgY2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJmbHkq
KTsKLSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OwotICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNv
bnN0OwotICAgIGJvb2wgY2FuQ2FjaGVPd25LZXlzKCkgY29uc3Q7CisgICAgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lcykgY29uc3Q7
CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1Nl
bnRpbmVsKENhY2hlZFByb3BlcnR5TmFtZXMpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVkUHJv
cGVydHlOYW1lcyhWTSYsIENhY2hlZFByb3BlcnR5TmFtZXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5
Kik7CisgICAgYm9vbCBjYW5DYWNoZU93blByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIHZv
aWQgZ2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaAppbmRleCBhZjdkMWFkZWFiYzg5Y2VhZGIzZmM2YWY0N2ExYWI4
YjcyZTIxN2JhLi41Mjk0NjJlYWRmY2VjZmJjMzBjN2NmMDlmNmNhZTMyZmY2YTc2ZjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBA
IC0yNDIsMjYgKzI0MiwyNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRy
YW5zaXRpb25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMoVk0mIHZt
LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogb3duS2V5cykKK2lubGluZSB2b2lkIFN0cnVjdHVyZTo6
c2V0Q2FjaGVkUHJvcGVydHlOYW1lcyhWTSYgdm0sIENhY2hlZFByb3BlcnR5TmFtZXMga2V5LCBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkKQogewotICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+
c2V0Q2FjaGVkT3duS2V5cyh2bSwgb3duS2V5cyk7CisgICAgZW5zdXJlUmFyZURhdGEodm0pLT5z
ZXRDYWNoZWRQcm9wZXJ0eU5hbWVzKHZtLCBrZXksIGNhY2hlZCk7CiB9CiAKLWlubGluZSBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK2lubGlu
ZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlOjpjYWNoZWRQcm9wZXJ0eU5hbWVzKENh
Y2hlZFByb3BlcnR5TmFtZXMga2V5KSBjb25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93
bktleXMoKTsKKyAgICByZXR1cm4gcmFyZURhdGEoKS0+Y2FjaGVkUHJvcGVydHlOYW1lcyhrZXkp
OwogfQogCi1pbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3du
S2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdAoraW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsKENhY2hlZFBy
b3BlcnR5TmFtZXMga2V5KSBjb25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXNJ
Z25vcmluZ1NlbnRpbmVsKCk7CisgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZFByb3BlcnR5
TmFtZXNJZ25vcmluZ1NlbnRpbmVsKGtleSk7CiB9CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6
Y2FuQ2FjaGVPd25LZXlzKCkgY29uc3QKK2lubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVP
d25Qcm9wZXJ0eU5hbWVzKCkgY29uc3QKIHsKICAgICBpZiAoaXNEaWN0aW9uYXJ5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcAppbmRleCAzMTVmMGQ5YWEzNWI5ZDg5NjExYTExNjg0Yzgx
NzZjZDZiM2FmNmY3Li4xMzZiMWZhM2Y1MzQ2MDgwNDg0Y2Q5NmUxODNkMTc4NjIzZTgwNjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURh
dGEuY3BwCkBAIC03Niw5ICs3NiwxMyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9wcmV2aW91cyk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZCh0aGlzT2JqZWN0LT5vYmplY3RUb1N0cmluZ1ZhbHVlKCkpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik7Ci0gICAgYXV0
byogY2FjaGVkT3duS2V5cyA9IHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRl
ZEdldCgpOwotICAgIGlmIChjYWNoZWRPd25LZXlzICE9IGNhY2hlZE93bktleXNTZW50aW5lbCgp
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNhY2hlZE93bktleXMpOworICAg
IGF1dG8gdmFsaWRhdGVBbmRBcHBlbmQgPSBbJl0oV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0
dGVyZmx5PiYgc2xvdCkgeworICAgICAgICBhdXRvKiBjZWxsID0gc2xvdC51bnZhbGlkYXRlZEdl
dCgpOworICAgICAgICBpZiAoY2VsbCAhPSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkK
KyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2VsbCk7CisgICAgfTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkNhY2hlZFByb3BlcnR5
TmFtZXM7ICsraW5kZXgpCisgICAgICAgIHZhbGlkYXRlQW5kQXBwZW5kKHRoaXNPYmplY3QtPm1f
Y2FjaGVkUHJvcGVydHlOYW1lc1tpbmRleF0pOwogfQogCiAvLyAtLS0tLS0tLS0tLSBPYmplY3Qu
cHJvdG90eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRh
LmgKaW5kZXggMDFkODUxNTgzOGQ0ZmViZmM1ZjcwZTBkZTNkYTAzY2VjN2RhOTdjNC4uNTg5MDY2
OTM1OWM3NzYyMzk3MzIxNzJkMTljNmIzZGUzOGNhNGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC0zNyw2ICszNywxMSBA
QCBjbGFzcyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFz
cyBPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDsK
IGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OworZW51bSBj
bGFzcyBDYWNoZWRQcm9wZXJ0eU5hbWVzIDogdWludDhfdCB7CisgICAgT3duS2V5cyA9IDAsCisg
ICAgT3duTmFtZXMsCit9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkNhY2hl
ZFByb3BlcnR5TmFtZXMgPSAyOwogCiBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogcHVibGljOgpAQCAtNzQsMjEgKzc5LDIxIEBAIGNsYXNzIFN0cnVjdHVy
ZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKiBjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKik7CiAKLSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0
OwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5l
bCgpIGNvbnN0OwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzQ29uY3Vy
cmVudGx5KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFi
bGVCdXR0ZXJmbHkqKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkUHJvcGVydHlO
YW1lcyhDYWNoZWRQcm9wZXJ0eU5hbWVzKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogY2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5nU2VudGluZWwoQ2FjaGVkUHJvcGVydHlOYW1l
cykgY29uc3Q7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXND
b25jdXJyZW50bHkoQ2FjaGVkUHJvcGVydHlOYW1lcykgY29uc3Q7CisgICAgdm9pZCBzZXRDYWNo
ZWRQcm9wZXJ0eU5hbWVzKFZNJiwgQ2FjaGVkUHJvcGVydHlOYW1lcywgSlNJbW11dGFibGVCdXR0
ZXJmbHkqKTsKIAogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBjb3B5U2hhcmVkUG9seVBy
b3RvV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQog
ICAgIGNvbnN0IEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiYgc2hhcmVkUG9seVByb3RvV2F0Y2hw
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIHZvaWQg
c2V0U2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludChCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mJiBz
aGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KSB7IG1fcG9seVByb3RvV2F0Y2hwb2ludCA9IFdURk1v
dmUoc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCk7IH0KICAgICBib29sIGhhc1NoYXJlZFBvbHlQ
cm90b1dhdGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BvbHlQ
cm90b1dhdGNocG9pbnQpOyB9CiAKLSAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNh
Y2hlZE93bktleXNTZW50aW5lbCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0ltbXV0YWJsZUJ1
dHRlcmZseSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgc3RhdGljIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFBy
b3BlcnR5TmFtZXMga2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihT
dHJ1Y3R1cmVSYXJlRGF0YSwgbV9jYWNoZWRPd25LZXlzKTsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9jYWNoZWRQcm9wZXJ0eU5hbWVzKSArIHNp
emVvZihXcml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+KSAqIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihrZXkpOwogICAgIH0KIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkBAIC0xMDks
NyArMTE0LDcgQEAgY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgc29tZSBzdG9yeSBmb3IgY2xlYXJpbmcg
dGhlc2UgcHJvcGVydHkgbmFtZXMgY2FjaGVzIGluIEdDLgogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2NTkKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yPiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci0gICAg
V3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZE93bktleXM7CisgICAg
V3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZFByb3BlcnR5TmFtZXNb
bnVtYmVyT2ZDYWNoZWRQcm9wZXJ0eU5hbWVzXSB7IH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
UHJvcGVydHlPZmZzZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3Bl
cnR5T2Zmc2V0PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9m
ZnNldD4+IFByb3BlcnR5V2F0Y2hwb2ludE1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvcGVy
dHlXYXRjaHBvaW50TWFwPiBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5l
cy5oCmluZGV4IGUyZmQ1MDRhYzZiYTE4ZjRkYjJkN2E5MzEwMDczMGM1MDlhMWZkZTYuLmYwZGIx
NzgzNmI0OTk5NjVhMzA5YTA0ZjkzNjM0N2M0OGEyMjJlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCkBA
IC02MiwzOCArNjIsMzggQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hl
ZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnQKICAgICBtX2NhY2hlZFBy
b3BlcnR5TmFtZUVudW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKIH0KIAotaW5s
aW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5
cygpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRh
OjpjYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXMga2V5KSBjb25zdAogewog
ICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKLSAgICBhdXRvKiBidXR0ZXJmbHkg
PSBtX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKLSAgICBpZiAoYnV0dGVyZmx5ID09
IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQorICAgIGF1dG8qIGJ1dHRlcmZseSA9IG1fY2FjaGVk
UHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KV0udW52YWxpZGF0ZWRHZXQo
KTsKKyAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYnV0dGVyZmx5OwogfQogCi1pbmxp
bmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlz
SWdub3JpbmdTZW50aW5lbCgpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0
cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChDYWNo
ZWRQcm9wZXJ0eU5hbWVzIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25U
aHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgpOwor
ICAgIHJldHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtl
eSldLnVudmFsaWRhdGVkR2V0KCk7CiB9CiAKLWlubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdAoraW5s
aW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVy
dHlOYW1lc0NvbmN1cnJlbnRseShDYWNoZWRQcm9wZXJ0eU5hbWVzIGtleSkgY29uc3QKIHsKLSAg
ICBhdXRvKiBidXR0ZXJmbHkgPSBtX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKLSAg
ICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQorICAgIGF1dG8qIGJ1
dHRlcmZseSA9IG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5
KV0udW52YWxpZGF0ZWRHZXQoKTsKKyAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5
TmFtZXNTZW50aW5lbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYnV0
dGVyZmx5OwogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3du
S2V5cyhWTSYgdm0sIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkpCitpbmxpbmUgdm9p
ZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lcyhWTSYgdm0sIENhY2hl
ZFByb3BlcnR5TmFtZXMga2V5LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5KQogewot
ICAgIGlmIChidXR0ZXJmbHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKLSAgICAgICAg
bV9jYWNoZWRPd25LZXlzLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoYnV0dGVyZmx5KTsKKyAgICBp
ZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKSB7CisgICAgICAg
IG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KV0uc2V0V2l0
aG91dFdyaXRlQmFycmllcihidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX2NhY2hlZE93bktleXMuc2V0KHZtLCB0
aGlzLCBidXR0ZXJmbHkpOworICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oa2V5KV0uc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggODRiMWQzNjU1MjUzOGY4YTI1ZmI3ZTA2NTk2NmQ5ODAzMzU1NDNiZi4uMjgxNGFk
ZTJjNDBkMzUxOTcwMzM3ZDkxNjhkOTMyNzRiZTgyZWRhNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0w
OC0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IEFkZCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBjYWNoaW5nIGFzIGl0IGlzIGRvbmUgZm9y
IE9iamVjdC5rZXlzLCBhbmQgYWNjZWxlcmF0ZSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU2
NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanM6IEFkZGVkLgorICAg
ICAgICAob2JqZWN0LmdldCB0ZXN0KToKKyAgICAgICAgKG9iamVjdC5zZXQgdGVzdCk6CisgICAg
ICAgICogc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtYmFkLXRpbWUuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2dl
dC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9rZXlzLWJhZC10aW1lLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVz
cy9rZXlzLWRmZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2FjaGVk
LXplcm8uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgICogc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtYXR0
cmlidXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgor
ICAgICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWlu
ZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBz
dHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0
eS1uYW1lcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKG5vSW5saW5lKToKKwogMjAyMC0wOC0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIGFuIE9PQitTYW5lQ2hhaW4gQXJyYXk6OlNwZWN1
bGF0aW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3Bl
cnR5LWRlc2NyaXB0b3IuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3Bl
cnR5LWRlc2NyaXB0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI0NzYzMTM0MDdkMGJiYTUzNmQzYWZkZjIy
MjYxYjE4NWNkMzEwMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcwpAQCAtMCwwICsxLDExIEBACit2YXIgb2Jq
ZWN0ID0geworICAgIGdldCB0ZXN0KCkgeyByZXR1cm4gNDI7IH0sCisgICAgc2V0IHRlc3QodmFs
dWUpIHsgfSwKKyAgICB2YWx1ZTogNTUKK307CisKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkgeworICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCAidGVz
dCIpOworICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCAidmFsdWUi
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMt
YmFkLXRpbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJhZC10
aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2NWZjZDU1ZWYwZDRjYzYxY2YwN2QzNzBlZmUyMzI2OTBhNjY4
MTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5h
bWVzLWJhZC10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxk
QmUpOworCit2YXIgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAor
ICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25v
SW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyJdYCk7CitPYmplY3QuZGVm
aW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAxMCwgeworICAgIHZhbHVlOiA0MgorfSk7Citz
aG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiXWApOworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkodGVzdCgpKSwgYFsiYSIsImIiLCJjIl1gKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzIGIvSlNUZXN0cy9z
dHJlc3MvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1kZmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM4YWZlM2Vh
NmY5ODFiMmYyMTUyNzYwMWRlZDQwOTI0YzFkZjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzCkBAIC0wLDAgKzEsMjcgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCit2YXIgb2JqZWN0ID0geworICAgIGE6IDQy
LAorICAgIGI6IDMzLAorfTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJjIiwgewor
ICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0
NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEi
LCJiIiwiYyJdYCk7CitvYmplY3QuZCA9IDQyOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGVz
dCgpKSwgYFsiYSIsImIiLCJjIiwiZCJdYCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytp
KQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyIsImQi
XWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mva2V5cy1iYWQtdGltZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2tleXMtYmFkLXRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlNDY1MWZmMjExZDIwMDY3
OWM5NzEzOGQ5NTlhMjJkYTU3YjJjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2tleXMtYmFkLXRpbWUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91
bGRCZSk7CisKK3ZhciBvYmplY3QgPSB7CisgICAgYTogNDIsCisgICAgYjogMzMsCit9OworT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgImMiLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2Us
CisgICAgd3JpdGFibGU6IHRydWUsCisgICAgdmFsdWU6IDQ0Cit9KTsKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkodGVzdCgpKSwgYFsiYSIsImIiXWApOworT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5
LnByb3RvdHlwZSwgMTAsIHsKKyAgICB2YWx1ZTogNDIKK30pOworc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkodGVzdCgpKSwgYFsiYSIsImIiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGVz
dCgpKSwgYFsiYSIsImIiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mva2V5cy1kZmcu
anMgYi9KU1Rlc3RzL3N0cmVzcy9rZXlzLWRmZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTA4YzUyNzEyMTc4
M2M1NzhjMmE4ZjAzZDIzOTliOGY4MjJhZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mva2V5cy1kZmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91
bGRCZSk7CisKK3ZhciBvYmplY3QgPSB7CisgICAgYTogNDIsCisgICAgYjogMzMsCit9OworT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgImMiLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2Us
CisgICAgd3JpdGFibGU6IHRydWUsCisgICAgdmFsdWU6IDQ0Cit9KTsKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJp
bmdpZnkodGVzdCgpKSwgYFsiYSIsImIiXWApOworb2JqZWN0LmQgPSA0MjsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiZCJdYCk7Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEi
LCJiIiwiZCJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1uYW1lcy1jYWNoZWQtemVyby5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LW5hbWVzLWNhY2hlZC16ZXJvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNmJjY2Q4NTBm
NWQ0NDBmZDYwODA5YTM2Mzk4OTE5NDQzYjMyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jYWNoZWQtemVyby5qcwpAQCAt
MCwwICsxLDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJl
dHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsK
KyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5n
dGgsIDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRb
MF0gPSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93
bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtYXR0cmlidXRlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjM2Q0NGRmY2I2OTQwYTg5MTY0YTM2N2U0YTA0OTE0NThjMmE3MGMKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFu
Z2VkLWF0dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7IENvY29hOiA0MiB9Owor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9i
amVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVz
dWx0WzBdLCAnQ29jb2EnKTsKK30KKworUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdD
b2NvYScsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3Vs
ZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1u
YW1lcy1jaGFuZ2VkLWluZGV4LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktbmFtZXMtY2hhbmdlZC1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGEwODhhNDI4ZTgzYzJi
ZDJkZDFmOWJhZjlkNTBmZWQ2MjU0MGY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC1pbmRleC5qcwpAQCAtMCww
ICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVy
biBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgs
IDApOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0g
PSBpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3Vs
dFswXSwgaSk7Cit9CisKK29iamVjdFswXSA9IDQyOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVz
dWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdl
ZC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5n
ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjMyNzE3MjBiOGRiODg0NmM2NDkxMDNmMGZkYzY4YzM5YTE5YWMw
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LW5hbWVzLWNoYW5nZWQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlv
biB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMo
b2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsK
KyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0s
IHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVu
Z3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQorCitvYmplY3QuQ29jb2Eg
PSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0g
dGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3Vs
ZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWluZGV4ZWQtbm9uLWNhY2hl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI1YWVkMjc1MzhlNzMxODE3ZjE4MTc2ZmY3ZmRhMjFiNTg1OTYzOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qcwpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7MDog
NDJ9OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0
ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxk
QmUocmVzdWx0WzBdLCAnMCcpOworfQorb2JqZWN0WzFdID0gNDQ7Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlMzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91
bGRCZShyZXN1bHQubGVuZ3RoLCAyKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1u
YW1lcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92
ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc4MmVhZGE0ODk1MzA3
MDQwOGQ3ZDc1ZjI4YWNjMjUxZTFmYmVkYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHkt
bmFtZXMuanMKQEAgLTAsMCArMSw2MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVj
dCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30K
K25vSW5saW5lKHRlc3QpOworCit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29h
Iik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBsZXQgcmVz
dWx0ID0gdGVzdChvYmplY3QpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCA2KTsK
KyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgICAgICBzaG91bGRCZShyZXN1
bHRbMV0sICcxJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzInKTsKKyAgICAgICAg
c2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0
Jyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ2xlbmd0aCcpOworICAgIH0KKworICAg
IG9iamVjdC5Db2NvYSA9IDQyOworICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAg
c2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcp
OworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMl0s
ICcyJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgIHNob3VsZEJlKHJlc3Vs
dFs0XSwgJzQnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAgICBzaG91
bGRCZShyZXN1bHRbNl0sICdDb2NvYScpOworfQorCit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBT
dHJpbmcoIkNvY29hIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgICAgICBzaG91bGRCZShyZXN1bHQu
bGVuZ3RoLCA2KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzIn
KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgICAgICBzaG91bGRCZShy
ZXN1bHRbNF0sICc0Jyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ2xlbmd0aCcpOwor
ICAgIH0KKworICAgIG9iamVjdFs4XSA9IDQyOworICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVj
dCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxkQmUocmVzdWx0
WzBdLCAnMCcpOworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICBzaG91bGRCZShy
ZXN1bHRbMl0sICcyJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgIHNob3Vs
ZEJlKHJlc3VsdFs0XSwgJzQnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNV0sICc4Jyk7CisgICAg
c2hvdWxkQmUocmVzdWx0WzZdLCAnbGVuZ3RoJyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406881</attachid>
            <date>2020-08-19 16:01:29 -0700</date>
            <delta_ts>2020-08-19 16:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215666-20200819160129.patch</filename>
            <type>text/plain</type>
            <size>75659</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzlmMjI5MDAyNmFmMzgwOTY1OGU2ZGEyYWNlMmQ3YzYxOWZiM2FkLi5mNzg3NGMyYzJiNGIwYTIx
NDQwYjA2NWE5NzQ4OWY5YzdlOWFlNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgY2FjaGlu
ZyBhcyBpdCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywgYW5kIGFjY2VsZXJhdGUgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgaXMgaW1tdXRhYmxlIGZv
ciBTdHJ1Y3R1cmUgaWYgc3RydWN0dXJlIG1lZXRzIHNvbWUgY29uZGl0aW9ucy4gQW5kIHdlIGhh
dmUgb3B0aW1pemF0aW9uIGZvciBPYmplY3Qua2V5cy4KKyAgICAgICAgVGhpcyBwYXRjaCB3aXJl
cyBleGlzdGluZyBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgT2JqZWN0LmtleXMgdG8gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMgc28gdGhhdCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBoYXMK
KyAgICAgICAgZnVsbCBzdXBwb3J0IG9mIGNhY2hpbmcgJiBpbmxpbmVkIGNvZGUgaW4gREZHIC8g
RlRMLgorCisgICAgICAgIFdlIGFsc28gcHJlLWJha2Ugc3RydWN0dXJlIGZvciB0aGUgcmVzdWx0
IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBwZXJmb3JtIGhhc2ggdGFibGUgbG9va3VwIGV2ZXJ5CisgICAgICAgIHRpbWUgd2UgY3Jl
YXRlIGFuIG9iamVjdCBmb3IgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvci4gVGhpcyBt
YWtlcyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDJ4IGZhc3RlciBmcm9tIHRoZSBt
aWNyb2JlbmNobWFyay4KKworICAgICAgICBUaGUgYWJvdmUgdHdvIG9wdGltaXphdGlvbiBtYWtl
cyBTcGVlZG9tZXRlcjIvSW5mZXJuby1Ub2RvTVZDIDclIGZhc3RlciwgYW5kIGl0IGFsc28gb3B0
aW1pemVzIFNwZWVkb21ldGVyMi9FbWJlckpTLURlYnVnIGJ5IDUlLgorICAgICAgICBJbiB0b3Rh
bCwgd2UgY2FuIGdldCAwLjcgLSAxLjAlIHByb2dyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RL
ZXlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChK
U0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAg
ICAgICogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5
cyk6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5cyk6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZURhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVBY2Nlc3NvclBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RPd25LZXlzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93blByb3BlcnR5TmFtZXMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRQcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJyZW50bHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5cyk6
IERlbGV0ZWQuCisKIDIwMjAtMDgtMTkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NTc3NSk6IERGRyBBU1NFUlRJT04gRkFJTEVEOiBB
SS1jbG9iYmVyaXplIGRpc2FncmVlbWVudDsgQUkgc2F5cyBGb2xkZWRDbG9iYmVyIHdoaWxlIGNs
b2JiZXJpemUgc2F5cyAoRGlyZWN0OltdLCBTdXBlcjpbXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCA3MDcwNDJiNzlkNmE3YmFiYjNjYTgyNTVkZTBlN2E0MGY5MTg0ZTAxLi45MGE5MWJmNzUxNDVk
OTcwZTBmYjdmMmIxOTRmNDhhMzA5Y2JiZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMDcy
LDEzICszMDcyLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIE9i
amVjdEtleXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmpl
Y3RVc2UpIHsKICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fc3RydWN0dXJlOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZVNldC5pc0Zp
bml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUo
KTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogcmFyZURhdGEgPSBzdHJ1Y3R1cmUtPnJhcmVE
YXRhQ29uY3VycmVudGx5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmFyZURhdGEt
PmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAgICAgICBDYWNo
ZWRQcm9wZXJ0eU5hbWVzIGtleSA9IG5vZGUtPm9wKCkgPT0gT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyA/IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzIDogQ2FjaGVkUHJvcGVydHlOYW1l
czo6T3duS2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmFyZURhdGEtPmNhY2hlZFBy
b3BlcnR5TmFtZXNDb25jdXJyZW50bHkoa2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRG
b2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVy
V29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggNjdiYTEyZGYzMWQ5NmJjYmRkOGM5ZjI3ZDc3MWVkOWZkOWNlOTIyNS4uNzUz
Mjk5YzAwZWI2NTkwMzRkMTk3NDA1OTA3MzkyMDVmNDAxMjEzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI5NDgsNiArMjk0OCwx
NSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5z
aWM6IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKKyAgICAgICAgICAgIHNldFJlc3VsdChhZGRUb0dyYXBoKE9iamVjdEdldE93blByb3BlcnR5
TmFtZXMsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSwgcmVn
aXN0ZXJPZmZzZXQpKSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDI3NWRkNjhhOGYyNTBiYjlhMDJmNTI4ODQ0NDliMzczZDYwYTI3YzEuLjUyM2Y0MWQ3MTRh
YmI2ZTNmODg2YjhmOTI3Y2MyYmJkNjFiZThhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC03MTMsNiArNzEzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAg
IGNhc2UgT2JqZWN0S2V5czoKKyAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6CiAg
ICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI5
N2EyNDNmYzFjNzMzNWE0MDVkNjhlNDVkNDlhMzJjMjgxOGYxYzAuLmQzNDQwNzdkOGYxODVmOGY5
OWRkYTg2ZDUyM2NhYzk3YjkzYjkzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC05MzQsMTMgKzkzNCwxNSBA
QCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lczoKICAgICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogewogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmVTZXQuaXNGaW5pdGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0
dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRv
KiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJl
RGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FjaGVkUHJvcGVydHlOYW1lcyBrZXkgPSBub2RlLT5vcCgpID09IE9iamVjdEdl
dE93blByb3BlcnR5TmFtZXMgPyBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25OYW1lcyA6IENhY2hl
ZFByb3BlcnR5TmFtZXM6Ok93bktleXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5jYWNoZWRQcm9wZXJ0eU5hbWVz
Q29uY3VycmVudGx5KGtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3QXJyYXlC
dWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5KSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNDhhN2JhNDI1Mjg1NzJlNThjYjE0ODc0YWY3NThk
ZjAzY2VlOTg1Li5mNDBlZGY4MDU2NzZmN2EyYzM4OTFhNDU4YjU2MTkwNmE1NThmNGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zNTIsNiArMzUyLDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlQXN5
bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlz
OgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAg
ICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNTYxOTliNTYzMzUzMmMxYjA1MTJhNjY4YTgxMjgwYmRjOGJmNDZiNi4uYmI1
OTI1YWU1ODA4NzhmN2NjMWY2NWM5YmFkZDkzMjZiNWJmZTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTMxLDYgKzE5MzEsNyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAgICAgICBj
YXNlIE9iamVjdEtleXM6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1l
KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDE5ZDQ2
NjNjYWFjMjBkMzc5YTI0Yzc5NGM0OTI4MWM1MTdkMmRhZGUuLjUyNzBmZWE1ZTM0ZmE4ZmE5ZjUz
MTEwYzhkMzk1Y2YwMGY1YjlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI4Niw2ICsyODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBBdG9taWNzIG9iamVjdCBm
dW5jdGlvbnMuICovXAogICAgIG1hY3JvKEF0b21pY3NBZGQsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTFkNDg2MzdjZDMwYmQ4OTg0NmE1YzIxMWFjMDVi
YjZiMWVlNmU5Ny4uMmZmZjhjMWE5NTA1YTcxY2QyY2Y5YjRhNTUxYTI5YWRhYzVhYWIyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWQKICAgICBKU09iamVjdCogb2JqZWN0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUp
OworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENh
Y2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMpOwogfQogCiBKU0FycmF5KiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIG9iamVjdCkKQEAgLTI1NSw3ICsyNTUsMjggQEAgSlNBcnJheSogSklUX09QRVJB
VElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEoKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gb3du
UHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsKKyAgICByZXR1cm4gb3duUHJv
cGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpP
d25LZXlzKTsKK30KKworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2JqZWN0KS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVj
dCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25OYW1lcyk7Cit9CisKK0pTQXJy
YXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtl
eXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVz
KTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG90eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA5NjY3M2Ji
OWRkOTUwYjRlMzdjN2VjYWM3NjA3YjA2MDZmODRiN2Q1Li5lMmM4MGU2ZmU0ZmMwMzk2NzUzMTE4
ZDBjNjdlYTgzMjkxN2ZiOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaApAQCAtNDksNiArNDksOCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVgogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNBcnJheSogSklUX09QRVJBVElP
TiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBX
VEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEdldE93
blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0
eU5hbWVzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBh
Y2l0eSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4NmY4N2YyNTc2
ZGU3ODE0ZWZlYWNjOTA1YjY5MzI4N2ZiZWRjNmUyLi42ZjhhMjRlM2YwODM3MWE4YzZlYTFkMGFj
ZjY5OTFkNjE4NTQ3ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTExMCw3ICsxMTEw
LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDoK
ICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7
CisgICAgICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAppbmRleCBlZTJhY2I3M2FjMWNkNWY5MTZlNDBkYzk5ZmY1NGVhODlj
NWIyODJiLi44ODIyYzcyMzIzZmM4YmVkNGM2ZjI3MGQ0Y2ZjOWRhY2RmNDVlMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNDk0LDYgKzQ5
NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVy
YXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtleXM6CisgICAg
Y2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAg
Y2FzZSBTZXRDYWxsZWU6CiAgICAgY2FzZSBQdXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNGQ2OTU4MDQ4OTQxNzY1NDg4
ZGZjOTAwZmUxYjhkOGRkYTM3ZjdkNi4uYjNjODZjMTViNTIwMzViNWRlMGMyMmQ2MGVjNTU5OWMx
OTYyOTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTEzMTc5LDcgKzEzMTc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2Rl
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgIGNhc2UgT2JqZWN0VXNlOiB7CkBAIC0xMzIwNywxMCArMTMyMDcsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkp
KSkpOwogCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5
TmFtZXMobm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gQ2FjaGVkUHJvcGVydHlOYW1lczo6T3du
S2V5cyA6IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzKSksIHNjcmF0Y2hHUFIpOwogCi0g
ICAgICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSA9PSAxKTsKLSAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBzY3Jh
dGNoR1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
c1NlbnRpbmVsKCkpID09IDEpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpCZWxvd09yRXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVy
dHlOYW1lc1NlbnRpbmVsKCkpKSkpOwogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CiAKQEAgLTEzMjI0LDcgKzEzMjI0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKIAogICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dCdXRBcnJheUJ1
ZmZlckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0R1BSLCAmdm0o
KSwgYXJyYXlTdHJ1Y3R1cmUsIHNjcmF0Y2gzR1BSKSk7CiAKLSAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk9iamVj
dEtleXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVj
dEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0
S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEzMjM5LDcgKzEzMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dEtleXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtl
eXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3Bl
cmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFt
ZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTMyNTQsNyArMTMyNTQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uT2JqZWN0S2V5cywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBP
YmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVj
dFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCBiZDU2MWNlZWI4YzQ4ODUyYTg2MThjMjVlMDc0ZmRhM2Y1
YWU4MjE4Li41OGE4Yzk4YTYwMTM1NjA4MTViMmIyMmJlYzg4NzMwM2MzYWQxYTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDY2LDcg
KzE0NjYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3QXJy
YXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RL
ZXlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0
ZVByb21pc2UoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTc5MzEyZDY5NGNiOGQ5MGExMmFjNjM0Mjlh
M2I1YTUwM2Y0NGUxOC4uZWNkYmZkNzYwMTM3MTg3ZGRkZmVmYjVmZDdkZWUwYThhNGNiMTdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC0zMjMyLDggKzMyMzIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgT2JqZWN0
S2V5czogewotICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsKKyAgICBjYXNlIE9iamVj
dEtleXM6CisgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOiB7CisgICAgICAgIGNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM3YTBiZWZmN2U2NWJlMjg1ODk1MzRhMzE2OTZjYjYy
MmU2OWE1YmIuLjc0ODJhNzM1NDk5MzJkZTQ5ZmJjNGVmNTI4NDdmMzA0Mjk2MDAxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtMzgxOCw4ICszODE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE9iamVjdEtleXM6IHsKLSAg
ICAgICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgY2FzZSBPYmplY3RLZXlzOgorICAg
IGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczogeworICAgICAgICBjb21waWxlT2JqZWN0
S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCmluZGV4IDBkMzA0NTMxOTJkODYwZTc3NGJlZGVkNzNkMmFlM2ZiZjI4
Y2M0OWIuLjJiYTk5NGU3ZWZiMGU1MWY3OTI0NjE2YzQ2OGEwYjEwN2FkMDMzZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCkBAIC0xNDYsNyArMTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
ICAgIG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEsIFN0cnVjdHVyZTo6cHJldmlv
dXNPclJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVj
dHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1
Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZD
YWNoZWRPd25LZXlzKCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25L
ZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hl
ZFByb3BlcnR5TmFtZXM6Ok93bktleXMpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFf
Y2FjaGVkT3duTmFtZXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5
TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lczo6T3duTmFtZXMpKSBcCiAgICAgbWFjcm8oSGFzaE1h
cEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERh
dGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVm
ZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+Ojpv
ZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJ
bXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCA5OWE0NzZmMmI4ODdiNWRhYWE3ZmQ2NGMxNzQ5ZjNmOTdjODA1YWIxLi5kZTkxZjk0OTI3NzE2
MTI1NmUxZTc4MGUyZjIxY2Y1N2JjNTY1NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjIsNiArMjIyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsTnVtYmVyQ29u
c3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgor
ICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIE1ha2VSb3BlOgog
ICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIFRyeUdldEJ5SWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMjlhNzM0NmY4
MjQxOTlmMDE1YjhhNDJlMDJiNWE1NWUyMzhlYTBkZC4uNGMzNWE4YWU5MzI5YzljZDBmM2VlY2Rj
MWZmZGYxNTNhMWE4NjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTA3OCw3ICsxMDc4LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE9iamVjdEtleXM6Ci0gICAgICAgICAgICBjb21waWxlT2JqZWN0S2V5cygp
OworICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6CisgICAgICAgICAgICBj
b21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcygpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZU5l
d09iamVjdCgpOwpAQCAtNjU2OSw5ICs2NTcwLDEwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVy
b0xlbmd0aFJlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoKQor
ICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoKQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgTm9kZVR5cGUg
b3AgPSBtX25vZGUtPm9wKCk7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9ub2RlKSkgewpAQCAtNjU5
MywxOCArNjU5NSwxOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAg
ICB1bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CiAKICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHVzZUNhY2hlQ2FzZSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRh
OjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVl
IGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFw
cy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsKLSAgICAgICAgICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGNhY2hlZE93bktleXMsIG1fb3V0LmNvbnN0SW50
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNT
ZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUodXNlQ2FjaGVDYXNlKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJh
cmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkgPT0gMSk7CisgICAgICAgICAg
ICAgICAgTFZhbHVlIGNhY2hlZCA9IG1fb3V0LmxvYWRQdHIocHJldmlvdXNPclJhcmVEYXRhLCBv
cCA9PSBPYmplY3RLZXlzID8gbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlz
IDogbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25OYW1lcyk7CisgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmJlbG93T3JFcXVhbChjYWNoZWQsIG1fb3V0LmNvbnN0
SW50UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3Bl
cnR5TmFtZXNTZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUodXNlQ2FjaGVD
YXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh1c2VDYWNoZUNhc2UsIHNs
b3dCdXRBcnJheUJ1ZmZlckNhc2UpOwogICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgYXJyYXlTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJy
YXkgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVjdHVyZSwgbV9vdXQuYWRkUHRy
KGNhY2hlZE93bktleXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSksIHNs
b3dCdXRBcnJheUJ1ZmZlckNhc2UpOworICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJyYXkg
PSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVjdHVyZSwgbV9vdXQuYWRkUHRyKGNh
Y2hlZCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2xvd0J1dEFycmF5
QnVmZmVyQ2FzZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihmYXN0QXJyYXkpOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dCdXRBcnJh
eUJ1ZmZlckNhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5
ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgbV92bVZhbHVlLCB3ZWFr
U3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHNsb3dBcnJheSA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTmV3QXJyYXlCdWZm
ZXIsIG1fdm1WYWx1ZSwgd2Vha1N0cnVjdHVyZShhcnJheVN0cnVjdHVyZSksIGNhY2hlZCk7CiAg
ICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHNsb3dBcnJheSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCkBAIC02NjEzLDcgKzY2MTUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCiAg
ICAgICAgICAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25P
YmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVj
dCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsIGxvY2F0aW9uc1sxXS5k
aXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAg
IG9iamVjdCk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwpAQCAtNjYyMywxMSArNjYyNSwxMSBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBv
aW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCwgc2xvd1Jl
c3VsdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wID09IE9iamVjdEtleXMgPyBv
cGVyYXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lc09iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93T2JqZWN0KG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFVudHlwZWRVc2U6Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uT2JqZWN0S2V5cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9w
ID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lcywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggZTRlNTc3ZmZhNTJkNzY1Mjk5
YTMzNjZmOTRkMWE2YmI0YWI0YjhjNC4uODk2YzFjY2RhN2RjODQwMDU4MGY1MjY2MzExMjU4YzQ0
YTM2N2I3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CkBAIC0xNTksNiArMTU5LDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMg
aW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYyI7CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGVJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiT2JqZWN0Q3Jl
YXRlSW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYyI7
CiAgICAgY2FzZSBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJu
ICJPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RJc0ludHJp
bnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggMmFh
YTZkMGM4ZjFlMGU4Y2UxNzE2OTViNjJkNWExMzQ2Y2U2ZjU3Zi4uYjM5YzU2NTEwNDUxYzEyZTlh
ZmJkOWYyODlhODViYTNiNzBkN2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmgKQEAgLTk1LDYgKzk1LDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsK
ICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywKICAgICBSZWdFeHBNYXRjaEZhc3RJbnRyaW5z
aWMsCiAgICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAorICAgIE9iamVjdEdldE93blByb3BlcnR5
TmFtZXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCiAgICAg
T2JqZWN0SXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0S2V5c0ludHJpbnNpYywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4
IDkxYjZkYWVkNTMxZmIyYWU4MmJiMzhhZDViMDBlNzA4NzI4ZjRkODAuLjY0MDU0YjgwODc2YTlm
MWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApAQCAtMTI3LDggKzEyNyw4IEBA
IHZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRp
b25SZWNvcmQgaXRlcmF0aW9uUmVjb3JkCiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgUHJvcGVy
dHlPZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7Ci1zdGF0aWMgY29uc3QgUHJvcGVydHlP
ZmZzZXQgZG9uZVByb3BlcnR5T2Zmc2V0ID0gMTsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlP
ZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5
T2Zmc2V0IGRvbmVQcm9wZXJ0eU9mZnNldCA9IDE7CiAKIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0
b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDM5MjM1ZTIzY2QzNGM3MmJmMTY4NmQ2MDUzYmVhZGM1NWY3MGMzNjUuLjYz
NmVkOTQxMGY4ZmJjYmRhODJkNGNmZjlkZmQwZjQ3ODMyYThkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk3MCw2ICs5NzAs
MTQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rv
ciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKGluaXQudm0sICppbml0Lm93bmVyKSk7CiAgICAgICAg
IH0pOworICAgIG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS5pbml0TGF0
ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChjcmVhdGVEYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlKGluaXQudm0sICppbml0Lm93bmVyKSk7CisgICAgICAgIH0pOworICAgIG1fYWNjZXNz
b3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoY3JlYXRlQWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoaW5p
dC52bSwgKmluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CiAgICAgCiAgICAgbV9ldmFsRnVuY3Rp
b24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4m
IGluaXQpIHsKQEAgLTE5MzUsNiArMTk0Myw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldEl0ZXJhdG9yU3RydWN0dXJlKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAg
IHRoaXNPYmplY3QtPm1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9y
T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDNlZGRhZTMy
N2MyZWJkZjY5YjEzMjNmODg2MDQ0YTBiNjYwNDNhODQuLjRlZjc2ODNmNDgzNmQyYTMxMWQ5NDQx
ZmUwOTc3ZmQ0NThlYmRmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMzk0LDYgKzM5NCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRhUHJvcGVydHlEZXNj
cmlwdG9yT2JqZWN0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJl
Y29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CkBAIC03ODQsNiArNzg2LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Cisg
ICAgU3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQorICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2Jq
ZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVj
dHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKaW5kZXggNDI0ZTE1MWFhZWJkMjk0MzUyMTk0ZTU0YTU3OWEzZjEyYzc4YWFmMi4uOWQyNWU2
MjI3ZTQ4MTZjNTQxYjY4YTVhYjc5MmE2MWY5MWRhM2JmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApA
QCAtODMwLDcgKzgzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y093bktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwg
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDNhNmYxZjMzNzdhNjEyNGNkZTA4ZDU1
YTY0OTFjNTU3NDFhMWUzZWUuLjZlNGVjNjIwODJkMWVmN2MyNjRkNThkNGJkNzVmMDU5ZDZmZDFl
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAg
c2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgZ2V0T3du
UHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYwogICBnZXRPd25Qcm9wZXJ0
eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENv
bnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBP
YmplY3RLZXlzSW50cmluc2ljCiAgIGRlZmluZVByb3BlcnR5ICAgICAgICAgICAgb2JqZWN0Q29u
c3RydWN0b3JEZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCkBA
IC0yMzUsMTQgKzIzNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ycyhnbG9iYWxPYmplY3QsIG9iamVjdCkpKTsKIH0KIAotLy8gRklY
TUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxP
YmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSwgQ2FjaGVkUHJvcGVydHlOYW1lczo6T3duTmFtZXMpKSk7CiB9CiAK
IC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgpAQCAtMjUyLDcgKzI1MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMoSlNHbG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5h
bWVNb2RlOjpTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0KSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTI2MSw3ICsyNjAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtl
eXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CkBAIC04ODYsMTYgKzg4NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLUpTQXJy
YXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJv
cGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKK0pTQXJyYXkqIG93blByb3BlcnR5
S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lcz4ga2V5KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBib29sIGlzT2JqZWN0S2V5cyA9IHByb3BlcnR5
TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAmJiBkb250RW51bVByb3BlcnRp
ZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGU7CiAgICAgLy8gV2UgYXR0
ZW1wdCB0byBsb29rIHVwIG93biBwcm9wZXJ0eSBrZXlzIGNhY2hlIGluIE9iamVjdC5rZXlzIGNh
c2UuCi0gICAgaWYgKGlzT2JqZWN0S2V5cykgeworICAgIGlmIChrZXkpIHsKICAgICAgICAgaWYg
KExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5j
YWNoZWRPd25LZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJm
bHkgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSktPmNhY2hlZFByb3BlcnR5TmFtZXMoa2V5LnZhbHVl
KCkpKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShpbW11dGFibGVC
dXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNBcnJh
eTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJyYXlTdHJ1Y3R1cmUsIGltbXV0
YWJsZUJ1dHRlcmZseS0+dG9CdXR0ZXJmbHkoKSk7CiAgICAgICAgICAgICB9CkBAIC05MTAsMTEg
KzkwOCwxMSBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydAogICAgICAgICBBU1NFUlQocHJvcGVy
dHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzIHx8IHByb3BlcnR5TmFtZU1v
ZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7CiAgICAgICAgIGlmIChwcm9wZXJ0aWVz
LnNpemUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIGlmIChMSUtF
TFkoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgewotICAgICAgICAgICAgICAg
IGlmIChpc09iamVjdEtleXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5KSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0p
OwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZU93bktleXMoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FjaGVkQnV0dGVyZmx5ID0gc3RydWN0
dXJlLT5jYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3du
S2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+Y2Fu
Q2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGNhY2hlZEJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5n
U2VudGluZWwoa2V5LnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRp
bmVsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IG5ld0J1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGUodm0sIENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cywgbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
QEAgLTkyMywxMyArOTIxLDEzIEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3du
ZWRTdHJpbmcodm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENh
Y2hlZE93bktleXModm0sIG5ld0J1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0dXJlLT5zZXRDYWNoZWRQcm9wZXJ0eU5hbWVzKHZtLCBrZXkudmFsdWUoKSwgbmV3
QnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRy
LCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZEJ1
dHRlcmZseSA9PSBudWxscHRyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwgU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNT
ZW50aW5lbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENh
Y2hlZFByb3BlcnR5TmFtZXModm0sIGtleS52YWx1ZSgpLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2Fj
aGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCkBAIC0xMDExLDQgKzEwMDksMjYgQEAgSlNBcnJheSogb3duUHJvcGVy
dHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFBy
b3BlcnQKICAgICByZXR1cm4ga2V5czsKIH0KIAorSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdEZy
b21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisKKyAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKQorICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGRlc2Ny
aXB0b3IudmFsdWUoKSk7CisgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkpCisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT53cml0YWJsZSwg
anNCb29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSkpOworICAgIGlmIChkZXNjcmlwdG9yLmdl
dHRlclByZXNlbnQoKSkKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmdldCwgZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisgICAgaWYgKGRlc2NyaXB0b3Iuc2V0
dGVyUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+c2V0LCBkZXNjcmlwdG9yLnNldHRlcigpKTsKKyAgICBpZiAoZGVzY3JpcHRvci5lbnVt
ZXJhYmxlUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSk7
CisgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpKQorICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uZmlndXJhYmxlLCBqc0Jvb2xl
YW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA2MWNmYzk5MzY2MWRjMmJkMmFhZTYyM2VhZDM2
YzczZTljODFhMTBiLi4zOTAwN2EyZjgwMGNkNTk5ODkwODM4N2M5ZjBkMTI4ZGU5YzY5YjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKQEAgLTg5LDI2ICs4OSw3MiBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZykKICAgICByZXR1cm4gYXJn
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9yU2xvdyhKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYpOworCitzdGF0aWMgY29uc3RleHByIFByb3Bl
cnR5T2Zmc2V0IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZVByb3BlcnR5T2Zmc2V0ID0gMDsK
K3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVByb3BlcnR5RGVzY3JpcHRvcldy
aXRhYmxlUHJvcGVydHlPZmZzZXQgPSAxOworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNl
dCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMjsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVByb3BlcnR5RGVzY3JpcHRvckNvbmZp
Z3VyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMzsKKworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9m
ZnNldCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckdldFByb3BlcnR5T2Zmc2V0ID0gMDsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JT
ZXRQcm9wZXJ0eU9mZnNldCA9IDE7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGFj
Y2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMjsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JD
b25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCA9IDM7CisKK2lubGluZSBTdHJ1Y3R1cmUqIGNyZWF0
ZURhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uc3Ry
dWN0dXJlQ2FjaGUuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoJmdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0
SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlLCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9m
ZnNldCA9PSBkYXRhUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVQcm9wZXJ0eU9mZnNldCk7CisgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSwgdm0ucHJvcGVydHlOYW1lcy0+d3JpdGFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9B
U1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JXcml0YWJsZVByb3BlcnR5T2Zm
c2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnVtZXJhYmxlLCAwLCBvZmZzZXQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVy
YWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25maWd1cmFi
bGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0
eURlc2NyaXB0b3JDb25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCk7CisgICAgcmV0dXJuIHN0cnVj
dHVyZTsKK30KKworaW5saW5lIFN0cnVjdHVyZSogY3JlYXRlQWNjZXNzb3JQcm9wZXJ0eURlc2Ny
aXB0b3JPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uc3RydWN0dXJlQ2FjaGUuZW1wdHlP
YmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmdl
dCwgMCwgb2Zmc2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQgPT0gYWNjZXNzb3JQcm9w
ZXJ0eURlc2NyaXB0b3JHZXRQcm9wZXJ0eU9mZnNldCk7CisgICAgc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1l
cy0+c2V0LCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBhY2Nlc3Nv
clByb3BlcnR5RGVzY3JpcHRvclNldFByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5lbnVtZXJhYmxlLCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNl
dCA9PSBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckVudW1lcmFibGVQcm9wZXJ0eU9mZnNldCk7
CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uZmlndXJhYmxlLCAwLCBvZmZzZXQpOworICAg
IFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckNvbmZp
Z3VyYWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICByZXR1cm4gc3RydWN0dXJlOworfQorCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZyb21wcm9wZXJ0eWRlc2NyaXB0b3IKIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLQotICAgIGlmIChk
ZXNjcmlwdG9yLnZhbHVlKCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpKTsKLSAgICBpZiAoZGVzY3JpcHRv
ci53cml0YWJsZVByZXNlbnQoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSk7
Ci0gICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0LCBkZXNjcmlwdG9yLmdldHRlcigpKTsK
LSAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCkpOwot
ICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnVtZXJhYmxlLCBqc0Jvb2xlYW4oZGVz
Y3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKLSAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQ
cmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25maWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSk7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKGRlc2NyaXB0b3IudmFsdWUoKSAmJiBkZXNj
cmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSkgeworICAgICAgICBKU09iamVj
dCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+ZGF0YVBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSgpKTsKKyAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZVByb3BlcnR5T2Zmc2V0LCBkZXNj
cmlwdG9yLnZhbHVlKCkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3Bl
cnR5RGVzY3JpcHRvcldyaXRhYmxlUHJvcGVydHlPZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9y
LndyaXRhYmxlKCkpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGRhdGFQcm9wZXJ0
eURlc2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9y
LmVudW1lcmFibGUoKSkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3Bl
cnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJsZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlclBy
ZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5j
b25maWd1cmFibGVQcmVzZW50KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPmFjY2Vzc29yUHJvcGVydHlEZXNjcmlw
dG9yT2JqZWN0U3RydWN0dXJlKCkpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgYWNj
ZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JHZXRQcm9wZXJ0eU9mZnNldCwgZGVzY3JpcHRvci5nZXR0
ZXIoKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBhY2Nlc3NvclByb3BlcnR5RGVz
Y3JpcHRvclNldFByb3BlcnR5T2Zmc2V0LCBkZXNjcmlwdG9yLnNldHRlcigpKTsKKyAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJs
ZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yQ29u
ZmlndXJhYmxlUHJvcGVydHlPZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSgpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnN0
cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KGdsb2JhbE9iamVjdCwgZGVzY3Jp
cHRvcik7CiB9CiAKIApAQCAtMTE2LDcgKzE2Miw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7
CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIGNvbnN0IElkZW50
aWZpZXImKTsKIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKLUpTQXJyYXkqIG93blByb3BlcnR5S2V5
cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZSk7CitKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUsIE9w
dGlvbmFsPENhY2hlZFByb3BlcnR5TmFtZXM+KTsKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxl
Y3RPYmplY3QuY3BwCmluZGV4IGM3OGE3YTQ2ZmYzYTA5Y2ViY2VhYjY4YjA0NWRkOGViMjBkMjIw
MTguLmJiZTZkM2Q5NGE4N2Q4NmM3MTNiZGNiOTU0MTNjNTgwYzlkMDVjYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC0yMjIsNyAr
MjIyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCks
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KHRh
cmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3Bl
cnRpZXNNb2RlOjpJbmNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25LZXlzKSkpOwogfQog
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnByZXZlbnRl
eHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApp
bmRleCAyMmNkNDJiYjVmMDNhYWNhNTVmNjgwNWMwYjVkM2NkMTYxOWQ2NWIwLi4xZmFiZjhjZTA4
YWVhMzhkNzM4NTA5NmM2Zjc4ZDNkZGVhZWMzMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE0MDksNyArMTQwOSw3IEBAIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogU3RydWN0dXJlOjpjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkg
Y29uc3QKIAogYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcihW
TSYgdm0pIGNvbnN0CiB7Ci0gICAgaWYgKCF0aGlzLT5jYW5DYWNoZU93bktleXMoKSkKKyAgICBp
ZiAoIXRoaXMtPmNhbkNhY2hlT3duUHJvcGVydHlOYW1lcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hhaW4gPSBtX2NhY2hlZFByb3Rv
dHlwZUNoYWluLmdldCgpOwpAQCAtMTQyMCw3ICsxNDIwLDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmNh
bkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYgdm0pIGNvbnN0CiAgICAgICAgIGlmICgh
c3RydWN0dXJlSUQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUoc3RydWN0dXJlSUQpOwotICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+Y2FuQ2FjaGVPd25LZXlzKCkpCisgICAgICAgIGlmICghc3RydWN0dXJlLT5j
YW5DYWNoZU93blByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgY3VycmVudFN0cnVjdHVyZUlEKys7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBhMDA0MDEwYWI0ZWEzNTdjODI0YjU3ZThlNTY1MTA3
Y2Y2MWZmNDE0Li4zY2I2YWNkZTI0OWQyMWUxNzJjNjY4MWFiYWE1ZjlkMTg3MWI4OTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNTIyLDEwICs1MjIs
MTAgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBj
YW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mKSBjb25zdDsKICAgICBib29sIGNhbkFj
Y2Vzc1Byb3BlcnRpZXNRdWlja2x5Rm9yRW51bWVyYXRpb24oKSBjb25zdDsKIAotICAgIHZvaWQg
c2V0Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7Ci0gICAgSlNJbW11
dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKLSAgICBKU0ltbXV0YWJsZUJ1
dHRlcmZseSogY2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdDsKLSAgICBib29s
IGNhbkNhY2hlT3duS2V5cygpIGNvbnN0OworICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNo
ZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXMpIGNvbnN0OworICAgIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChDYWNoZWRQ
cm9wZXJ0eU5hbWVzKSBjb25zdDsKKyAgICB2b2lkIHNldENhY2hlZFByb3BlcnR5TmFtZXMoVk0m
LCBDYWNoZWRQcm9wZXJ0eU5hbWVzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSopOworICAgIGJvb2wg
Y2FuQ2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkgY29uc3Q7CiAKICAgICB2b2lkIGdldFByb3BlcnR5
TmFtZXNGcm9tU3RydWN0dXJlKFZNJiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKaW5kZXggYWY3ZDFhZGVhYmM4OWNlYWRiM2ZjNmFmNDdhMWFiOGI3MmUyMTdiYS4uNTI5
NDYyZWFkZmNlY2ZiYzMwYzdjZjA5ZjZjYWUzMmZmNmE3NmYzNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjQyLDI2ICsyNDIs
MjYgQEAgaW5saW5lIGJvb2wgU3RydWN0dXJlOjp0cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRGcm9t
KFN0cnVjdHVyZSogc3RydWN0dXJlVG9GaW5kKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5s
aW5lIHZvaWQgU3RydWN0dXJlOjpzZXRDYWNoZWRPd25LZXlzKFZNJiB2bSwgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIG93bktleXMpCitpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3Bl
cnR5TmFtZXMoVk0mIHZtLCBDYWNoZWRQcm9wZXJ0eU5hbWVzIGtleSwgSlNJbW11dGFibGVCdXR0
ZXJmbHkqIGNhY2hlZCkKIHsKLSAgICBlbnN1cmVSYXJlRGF0YSh2bSktPnNldENhY2hlZE93bktl
eXModm0sIG93bktleXMpOworICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+c2V0Q2FjaGVkUHJvcGVy
dHlOYW1lcyh2bSwga2V5LCBjYWNoZWQpOwogfQogCi1pbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5cygpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9wZXJ0eU5h
bWVzIGtleSkgY29uc3QKIHsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRPd25LZXlzKCk7CisgICAg
cmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZFByb3BlcnR5TmFtZXMoa2V5KTsKIH0KIAotaW5saW5l
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1Nl
bnRpbmVsKCkgY29uc3QKK2lubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlOjpj
YWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChDYWNoZWRQcm9wZXJ0eU5hbWVzIGtl
eSkgY29uc3QKIHsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5l
bCgpOworICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdT
ZW50aW5lbChrZXkpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duS2V5
cygpIGNvbnN0CitpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlT3duUHJvcGVydHlOYW1l
cygpIGNvbnN0CiB7CiAgICAgaWYgKGlzRGljdGlvbmFyeSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAKaW5kZXggMzE1ZjBkOWFhMzViOWQ4OTYxMWExMTY4NGM4MTc2Y2Q2YjNhZjZmNy4u
MTM2YjFmYTNmNTM0NjA4MDQ4NGNkOTZlMTgzZDE3ODYyM2U4MDY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtNzYs
OSArNzYsMTMgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fcHJldmlvdXMpOwogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodGhpc09iamVj
dC0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOwotICAgIGF1dG8qIGNhY2hlZE93bktl
eXMgPSB0aGlzT2JqZWN0LT5tX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKLSAgICBp
ZiAoY2FjaGVkT3duS2V5cyAhPSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkKLSAgICAgICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZChjYWNoZWRPd25LZXlzKTsKKyAgICBhdXRvIHZhbGlkYXRl
QW5kQXBwZW5kID0gWyZdKFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4mIHNsb3Qp
IHsKKyAgICAgICAgYXV0byogY2VsbCA9IHNsb3QudW52YWxpZGF0ZWRHZXQoKTsKKyAgICAgICAg
aWYgKGNlbGwgIT0gY2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpCisgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNlbGwpOworICAgIH07CisgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZDYWNoZWRQcm9wZXJ0eU5hbWVzOyArK2luZGV4
KQorICAgICAgICB2YWxpZGF0ZUFuZEFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhY2hlZFByb3BlcnR5
TmFtZXNbaW5kZXhdKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0gT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZygpIGhlbHBlciB3YXRjaHBvaW50IGNsYXNzZXMgLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCmluZGV4IDAxZDg1
MTU4MzhkNGZlYmZjNWY3MGUwZGUzZGEwM2NlYzdkYTk3YzQuLjU4OTA2NjkzNTljNzc2MjM5NzMy
MTcyZDE5YzZiM2RlMzhjYTRkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaApAQCAtMzcsNiArMzcsMTEgQEAgY2xhc3MgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yOwogY2xhc3MgU3RydWN0dXJlOwogY2xhc3MgT2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ7CiBjbGFzcyBPYmplY3RU
b1N0cmluZ0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDsKK2VudW0gY2xhc3MgQ2FjaGVkUHJv
cGVydHlOYW1lcyA6IHVpbnQ4X3QgeworICAgIE93bktleXMgPSAwLAorICAgIE93bk5hbWVzLAor
fTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZDYWNoZWRQcm9wZXJ0eU5hbWVz
ID0gMjsKIAogY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKQEAgLTc0LDIxICs3OSwyMSBAQCBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5h
bCA6IHB1YmxpYyBKU0NlbGwgewogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2FjaGVk
UHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVy
dHlOYW1lRW51bWVyYXRvcihWTSYsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOwogCi0gICAg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXMoKSBjb25zdDsKLSAgICBKU0ltbXV0
YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGluZWwoKSBjb25zdDsKLSAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpIGNvbnN0
OwotICAgIHZvaWQgc2V0Q2FjaGVkT3duS2V5cyhWTSYsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7
CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJv
cGVydHlOYW1lcykgY29uc3Q7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3Bl
cnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsKENhY2hlZFByb3BlcnR5TmFtZXMpIGNvbnN0OworICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzQ29uY3VycmVudGx5KENh
Y2hlZFByb3BlcnR5TmFtZXMpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlOYW1l
cyhWTSYsIENhY2hlZFByb3BlcnR5TmFtZXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7CiAKICAg
ICBCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4gY29weVNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICBjb25zdCBCb3g8
SW5saW5lV2F0Y2hwb2ludFNldD4mIHNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBjb25zdCB7
IHJldHVybiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7IH0KICAgICB2b2lkIHNldFNoYXJlZFBvbHlQ
cm90b1dhdGNocG9pbnQoQm94PElubGluZVdhdGNocG9pbnRTZXQ+JiYgc2hhcmVkUG9seVByb3Rv
V2F0Y2hwb2ludCkgeyBtX3BvbHlQcm90b1dhdGNocG9pbnQgPSBXVEZNb3ZlKHNoYXJlZFBvbHlQ
cm90b1dhdGNocG9pbnQpOyB9CiAgICAgYm9vbCBoYXNTaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wb2x5UHJvdG9XYXRjaHBvaW50
KTsgfQogCi0gICAgc3RhdGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzU2Vu
dGluZWwoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQorICAgIHN0YXRpYyBKU0ltbXV0YWJsZUJ1dHRlcmZs
eSogY2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PEpT
SW1tdXRhYmxlQnV0dGVyZmx5Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KIAotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhDYWNoZWRQcm9wZXJ0eU5hbWVzIGtl
eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlUmFyZURh
dGEsIG1fY2FjaGVkT3duS2V5cyk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Ry
dWN0dXJlUmFyZURhdGEsIG1fY2FjaGVkUHJvcGVydHlOYW1lcykgKyBzaXplb2YoV3JpdGVCYXJy
aWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PikgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KTsK
ICAgICB9CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpAQCAtMTA5LDcgKzExNCw3IEBAIGNs
YXNzIFN0cnVjdHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBoYXZlIHNvbWUgc3RvcnkgZm9yIGNsZWFyaW5nIHRoZXNlIHByb3BlcnR5
IG5hbWVzIGNhY2hlcyBpbiBHQy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkyNjU5CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcj4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwotICAgIFdyaXRlQmFycmllcjxK
U0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRPd25LZXlzOworICAgIFdyaXRlQmFycmllcjxK
U0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRQcm9wZXJ0eU5hbWVzW251bWJlck9mQ2FjaGVk
UHJvcGVydHlOYW1lc10geyB9OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFByb3BlcnR5T2Zmc2V0
LCBSZWZQdHI8V2F0Y2hwb2ludFNldD4sIFdURjo6SW50SGFzaDxQcm9wZXJ0eU9mZnNldD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8UHJvcGVydHlPZmZzZXQ+PiBQcm9wZXJ0
eVdhdGNocG9pbnRNYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb3BlcnR5V2F0Y2hwb2ludE1h
cD4gbV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAppbmRleCBlMmZk
NTA0YWM2YmExOGY0ZGIyZDdhOTMxMDA3MzBjNTA5YTFmZGU2Li5mMGRiMTc4MzZiNDk5OTY1YTMw
OWEwNGY5MzYzNDdjNDhhMjIyZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaApAQCAtNjIsMzggKzYyLDM4
IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRDYWNoZWRQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yKFZNJiB2bSwgSlNQcm9wZXJ0CiAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yLnNldCh2bSwgdGhpcywgZW51bWVyYXRvcik7CiB9CiAKLWlubGluZSBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXMoKSBjb25zdAoraW5s
aW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVy
dHlOYW1lcyhDYWNoZWRQcm9wZXJ0eU5hbWVzIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlz
Q29tcGlsYXRpb25UaHJlYWQoKSk7Ci0gICAgYXV0byogYnV0dGVyZmx5ID0gbV9jYWNoZWRPd25L
ZXlzLnVudmFsaWRhdGVkR2V0KCk7Ci0gICAgaWYgKGJ1dHRlcmZseSA9PSBjYWNoZWRPd25LZXlz
U2VudGluZWwoKSkKKyAgICBhdXRvKiBidXR0ZXJmbHkgPSBtX2NhY2hlZFByb3BlcnR5TmFtZXNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSldLnVudmFsaWRhdGVkR2V0KCk7CisgICAgaWYgKGJ1
dHRlcmZseSA9PSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIAotaW5saW5lIEpTSW1tdXRhYmxl
QnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5c0lnbm9yaW5nU2VudGlu
ZWwoKSBjb25zdAoraW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0
YTo6Y2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5nU2VudGluZWwoQ2FjaGVkUHJvcGVydHlOYW1l
cyBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwotICAg
IHJldHVybiBtX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKKyAgICByZXR1cm4gbV9j
YWNoZWRQcm9wZXJ0eU5hbWVzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihrZXkpXS51bnZhbGlkYXRl
ZEdldCgpOwogfQogCi1pbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVE
YXRhOjpjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5KCkgY29uc3QKK2lubGluZSBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJy
ZW50bHkoQ2FjaGVkUHJvcGVydHlOYW1lcyBrZXkpIGNvbnN0CiB7Ci0gICAgYXV0byogYnV0dGVy
Zmx5ID0gbV9jYWNoZWRPd25LZXlzLnVudmFsaWRhdGVkR2V0KCk7Ci0gICAgaWYgKGJ1dHRlcmZs
eSA9PSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkKKyAgICBhdXRvKiBidXR0ZXJmbHkgPSBtX2Nh
Y2hlZFByb3BlcnR5TmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSldLnVudmFsaWRhdGVk
R2V0KCk7CisgICAgaWYgKGJ1dHRlcmZseSA9PSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGJ1dHRlcmZseTsKIH0KIAot
aW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBK
U0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5KQoraW5saW5lIHZvaWQgU3RydWN0dXJlUmFy
ZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFtZXMoVk0mIHZtLCBDYWNoZWRQcm9wZXJ0eU5hbWVz
IGtleSwgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKIHsKLSAgICBpZiAoYnV0dGVy
Zmx5ID09IGNhY2hlZE93bktleXNTZW50aW5lbCgpKSB7Ci0gICAgICAgIG1fY2FjaGVkT3duS2V5
cy5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGJ1dHRlcmZseSk7CisgICAgaWYgKGJ1dHRlcmZseSA9
PSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkgeworICAgICAgICBtX2NhY2hlZFByb3Bl
cnR5TmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSldLnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIoYnV0dGVyZmx5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7Ci0gICAgbV9jYWNoZWRPd25LZXlzLnNldCh2bSwgdGhpcywgYnV0dGVyZmx5
KTsKKyAgICBtX2NhY2hlZFByb3BlcnR5TmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSld
LnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0YjFk
MzY1NTI1MzhmOGEyNWZiN2UwNjU5NjZkOTgwMzM1NTQzYmYuLjI4MTRhZGUyYzQwZDM1MTk3MDMz
N2Q5MTY4ZDkzMjc0YmU4MmVkYTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMgY2FjaGluZyBhcyBpdCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywg
YW5kIGFjY2VsZXJhdGUgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
Z2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKG9iamVjdC5n
ZXQgdGVzdCk6CisgICAgICAgIChvYmplY3Quc2V0IHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9n
ZXQtb3duLXByb3BlcnR5LW5hbWVzLWJhZC10aW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9nZXQtb3duLXByb3BlcnR5
LW5hbWVzLWRmZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0
KToKKyAgICAgICAgKiBzdHJlc3Mva2V5cy1iYWQtdGltZS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mva2V5cy1kZmcuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNhY2hlZC16ZXJvLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0dHJpYnV0ZS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJl
c3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC1pbmRleC5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdl
dC1vd24tcHJvcGVydHktbmFtZXMtaW5kZXhlZC1ub24tY2FjaGUuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChub0lu
bGluZSk6CisKIDIwMjAtMDgtMTcgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSGF2ZSBhbiBPT0IrU2FuZUNoYWluIEFycmF5OjpTcGVjdWxhdGlvbgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9y
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQyNDc2MzEzNDA3ZDBiYmE1MzZkM2FmZGYyMjI2MWIxODVjZDMxMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3Bl
cnR5LWRlc2NyaXB0b3IuanMKQEAgLTAsMCArMSwxMSBAQAordmFyIG9iamVjdCA9IHsKKyAgICBn
ZXQgdGVzdCgpIHsgcmV0dXJuIDQyOyB9LAorICAgIHNldCB0ZXN0KHZhbHVlKSB7IH0sCisgICAg
dmFsdWU6IDU1Cit9OworCisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInRlc3QiKTsKKyAgICBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInZhbHVlIik7Cit9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJhZC10aW1lLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1iYWQtdGltZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNjVmY2Q1NWVmMGQ0Y2M2MWNmMDdkMzcwZWZlMjMyNjkwYTY2ODExCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1iYWQtdGltZS5q
cwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKwordmFyIG9i
amVjdCA9IHsKKyAgICBhOiA0MiwKKyAgICBiOiAzMywKK307CitPYmplY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCAiYyIsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICB3cml0YWJsZTog
dHJ1ZSwKKyAgICB2YWx1ZTogNDQKK30pOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJu
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiXWApOworT2JqZWN0LmRlZmluZVByb3BlcnR5KEFy
cmF5LnByb3RvdHlwZSwgMTAsIHsKKyAgICB2YWx1ZTogNDIKK30pOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkodGVzdCgpKSwgYFsiYSIsImIiLCJjIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWRmZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1vd24t
cHJvcGVydHktbmFtZXMtZGZnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjOGFmZTNlYTZmOTgxYjJmMjE1Mjc2
MDFkZWQ0MDkyNGMxZGYyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQt
b3duLXByb3BlcnR5LW5hbWVzLWRmZy5qcwpAQCAtMCwwICsxLDI3IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5s
aW5lKHNob3VsZEJlKTsKKwordmFyIG9iamVjdCA9IHsKKyAgICBhOiA0MiwKKyAgICBiOiAzMywK
K307CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAiYyIsIHsKKyAgICBlbnVtZXJhYmxl
OiBmYWxzZSwKKyAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICB2YWx1ZTogNDQKK30pOworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiXWApOwor
b2JqZWN0LmQgPSA0MjsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJi
IiwiYyIsImQiXWApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiLCJkIl1gKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2tleXMtYmFkLXRpbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9rZXlz
LWJhZC10aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZTQ2NTFmZjIxMWQyMDA2NzljOTcxMzhkOTU5YTIy
ZGE1N2IyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9rZXlzLWJhZC10aW1l
LmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCit2YXIg
b2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgIHdyaXRhYmxl
OiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSks
IGBbImEiLCJiIl1gKTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsIDEw
LCB7CisgICAgdmFsdWU6IDQyCit9KTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSks
IGBbImEiLCJiIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJi
Il1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2tleXMtZGZnLmpzIGIvSlNUZXN0cy9z
dHJlc3Mva2V5cy1kZmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEwOGM1MjcxMjE3ODNjNTc4YzJhOGYwM2Qy
Mzk5YjhmODIyYWUyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2tleXMtZGZn
LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCit2YXIg
b2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgIHdyaXRhYmxl
OiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSks
IGBbImEiLCJiIl1gKTsKK29iamVjdC5kID0gNDI7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0
ZXN0KCkpLCBgWyJhIiwiYiIsImQiXWApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImQiXWApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMt
Y2FjaGVkLXplcm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1u
YW1lcy1jYWNoZWQtemVyby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTZiY2NkODUwZjVkNDQwZmQ2MDgwOWEz
NjM5ODkxOTQ0M2IzMjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2FjaGVkLXplcm8uanMKQEAgLTAsMCArMSwyMSBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2Jq
ZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3Vs
dCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBz
aG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBz
aG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFt
ZXMtY2hhbmdlZC1hdHRyaWJ1dGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzNkNDRkZmNi
Njk0MGE4OTE2NGEzNjdlNGEwNDkxNDU4YzJhNzBjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC1hdHRyaWJ1dGUu
anMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkK
K3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5s
aW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0geyBDb2NvYTogNDIgfTsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNo
b3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29h
Jyk7Cit9CisKK1JlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnQ29jb2EnLCB7CisgICAg
ZW51bWVyYWJsZTogZmFsc2UKK30pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7
CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVu
Z3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICdDb2NvYScpOworfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC1p
bmRleC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNo
YW5nZWQtaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhMDg4YTQyOGU4M2MyYmQyZGQxZjliYWY5ZDUw
ZmVkNjI1NDBmOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtaW5kZXguanMKQEAgLTAsMCArMSwyOCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0
ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9
IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91
bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91
bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQor
CitvYmplY3RbMF0gPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2
YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEp
OworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjIzMjcxNzIwYjhkYjg4NDZjNjQ5MTAzZjBmZGM2OGMzOWExOWFjMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFu
Z2VkLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3Qp
Cit7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cit9Citu
b0lubGluZSh0ZXN0KTsKKwordmFyIG9iamVjdCA9IHt9OworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUo
cmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1bmRlZmluZWQpOwor
ICAgIHJlc3VsdFswXSA9IGk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAg
c2hvdWxkQmUocmVzdWx0WzBdLCBpKTsKK30KKworb2JqZWN0LkNvY29hID0gNDI7Citmb3IgKHZh
ciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsK
KyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0s
ICdDb2NvYScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktbmFtZXMtaW5kZXhlZC1ub24tY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNWFlZDI3NTM4ZTczMTgxN2YxODE3NmZmN2ZkYTIxYjU4NTk2MzkxCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtaW5kZXhl
ZC1ub24tY2FjaGUuanMKQEAgLTAsMCArMSwyNSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0gezA6IDQyfTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOwor
ICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
JzAnKTsKK30KK29iamVjdFsxXSA9IDQ0OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxl
bmd0aCwgMik7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgIHNob3VsZEJlKHJl
c3VsdFsxXSwgJzEnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQt
b3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1vdmVycmlkZXMtZ2V0LXBy
b3BlcnR5LW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ODJlYWRhNDg5NTMwNzA0MDhkN2Q3NWYyOGFj
YzI1MWUxZmJlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0
LW93bi1wcm9wZXJ0eS1uYW1lcy1vdmVycmlkZXMtZ2V0LXByb3BlcnR5LW5hbWVzLmpzCkBAIC0w
LDAgKzEsNjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgcmV0
dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0
KTsKKworeworICAgIGxldCBvYmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIpOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRlc3Qob2Jq
ZWN0KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNik7CisgICAgICAgIHNob3Vs
ZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzFdLCAnMScpOwor
ICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3Vs
dFszXSwgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzRdLCAnNCcpOworICAgICAgICBz
aG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAgICB9CisKKyAgICBvYmplY3QuQ29jb2Eg
PSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3Vs
dC5sZW5ndGgsIDcpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICBzaG91bGRC
ZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicpOworICAgIHNo
b3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnbGVuZ3RoJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzZd
LCAnQ29jb2EnKTsKK30KKworeworICAgIGxldCBvYmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IHRlc3Qob2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNik7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0
WzFdLCAnMScpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7CisgICAgICAgIHNo
b3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzRdLCAnNCcp
OworICAgICAgICBzaG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAgICB9CisKKyAgICBv
YmplY3RbOF0gPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3Vs
ZEJlKHJlc3VsdC5sZW5ndGgsIDcpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAg
ICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAnMicp
OworICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNF0s
ICc0Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnOCcpOworICAgIHNob3VsZEJlKHJlc3Vs
dFs2XSwgJ2xlbmd0aCcpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406882</attachid>
            <date>2020-08-19 16:03:53 -0700</date>
            <delta_ts>2020-08-19 18:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215666-20200819160352.patch</filename>
            <type>text/plain</type>
            <size>75667</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MzlmMjI5MDAyNmFmMzgwOTY1OGU2ZGEyYWNlMmQ3YzYxOWZiM2FkLi5mNzg3NGMyYzJiNGIwYTIx
NDQwYjA2NWE5NzQ4OWY5YzdlOWFlNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgY2FjaGlu
ZyBhcyBpdCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywgYW5kIGFjY2VsZXJhdGUgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgaXMgaW1tdXRhYmxlIGZv
ciBTdHJ1Y3R1cmUgaWYgc3RydWN0dXJlIG1lZXRzIHNvbWUgY29uZGl0aW9ucy4gQW5kIHdlIGhh
dmUgb3B0aW1pemF0aW9uIGZvciBPYmplY3Qua2V5cy4KKyAgICAgICAgVGhpcyBwYXRjaCB3aXJl
cyBleGlzdGluZyBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgT2JqZWN0LmtleXMgdG8gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMgc28gdGhhdCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBoYXMK
KyAgICAgICAgZnVsbCBzdXBwb3J0IG9mIGNhY2hpbmcgJiBpbmxpbmVkIGNvZGUgaW4gREZHIC8g
RlRMLgorCisgICAgICAgIFdlIGFsc28gcHJlLWJha2Ugc3RydWN0dXJlIGZvciB0aGUgcmVzdWx0
IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBwZXJmb3JtIGhhc2ggdGFibGUgbG9va3VwIGV2ZXJ5CisgICAgICAgIHRpbWUgd2UgY3Jl
YXRlIGFuIG9iamVjdCBmb3IgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvci4gVGhpcyBt
YWtlcyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDJ4IGZhc3RlciBmcm9tIHRoZSBt
aWNyb2JlbmNobWFyay4KKworICAgICAgICBUaGUgYWJvdmUgdHdvIG9wdGltaXphdGlvbiBtYWtl
cyBTcGVlZG9tZXRlcjIvSW5mZXJuby1Ub2RvTVZDIDclIGZhc3RlciwgYW5kIGl0IGFsc28gb3B0
aW1pemVzIFNwZWVkb21ldGVyMi9FbWJlckpTLURlYnVnIGJ5IDUlLgorICAgICAgICBJbiB0b3Rh
bCwgd2UgY2FuIGdldCAwLjcgLSAxLjAlIHByb2dyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RL
ZXlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChK
U0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAg
ICAgICogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5
cyk6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5cyk6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZURhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVBY2Nlc3NvclBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RPd25LZXlzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93blByb3BlcnR5TmFtZXMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRQcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJyZW50bHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5cyk6
IERlbGV0ZWQuCisKIDIwMjAtMDgtMTkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2NTc3NSk6IERGRyBBU1NFUlRJT04gRkFJTEVEOiBB
SS1jbG9iYmVyaXplIGRpc2FncmVlbWVudDsgQUkgc2F5cyBGb2xkZWRDbG9iYmVyIHdoaWxlIGNs
b2JiZXJpemUgc2F5cyAoRGlyZWN0OltdLCBTdXBlcjpbXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCA3MDcwNDJiNzlkNmE3YmFiYjNjYTgyNTVkZTBlN2E0MGY5MTg0ZTAxLi45MGE5MWJmNzUxNDVk
OTcwZTBmYjdmMmIxOTRmNDhhMzA5Y2JiZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0zMDcy
LDEzICszMDcyLDE1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIE9i
amVjdEtleXM6IHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmpl
Y3RVc2UpIHsKICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fc3RydWN0dXJlOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZVNldC5pc0Zp
bml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUo
KTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogcmFyZURhdGEgPSBzdHJ1Y3R1cmUtPnJhcmVE
YXRhQ29uY3VycmVudGx5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmFyZURhdGEt
PmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSkgeworICAgICAgICAgICAgICAgICAgICBDYWNo
ZWRQcm9wZXJ0eU5hbWVzIGtleSA9IG5vZGUtPm9wKCkgPT0gT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyA/IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzIDogQ2FjaGVkUHJvcGVydHlOYW1l
czo6T3duS2V5czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmFyZURhdGEtPmNhY2hlZFBy
b3BlcnR5TmFtZXNDb25jdXJyZW50bHkoa2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRG
b2xkaW5nKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVy
V29ybGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggNjdiYTEyZGYzMWQ5NmJjYmRkOGM5ZjI3ZDc3MWVkOWZkOWNlOTIyNS4uNzUz
Mjk5YzAwZWI2NTkwMzRkMTk3NDA1OTA3MzkyMDVmNDAxMjEzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI5NDgsNiArMjk0OCwx
NSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxl
ZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KIAorICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5z
aWM6IHsKKyAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3Mo
KTsKKyAgICAgICAgICAgIHNldFJlc3VsdChhZGRUb0dyYXBoKE9iamVjdEdldE93blByb3BlcnR5
TmFtZXMsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMSwgcmVn
aXN0ZXJPZmZzZXQpKSkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIFJlZmxlY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzogewogICAgICAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDI3NWRkNjhhOGYyNTBiYjlhMDJmNTI4ODQ0NDliMzczZDYwYTI3YzEuLjUyM2Y0MWQ3MTRh
YmI2ZTNmODg2YjhmOTI3Y2MyYmJkNjFiZThhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC03MTMsNiArNzEzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICBjYXNlIEluc3RhbmNlT2Y6CiAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAg
IGNhc2UgT2JqZWN0S2V5czoKKyAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6CiAg
ICAgICAgIGNsb2JiZXJUb3AoKTsKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI5
N2EyNDNmYzFjNzMzNWE0MDVkNjhlNDVkNDlhMzJjMjgxOGYxYzAuLmQzNDQwNzdkOGYxODVmOGY5
OWRkYTg2ZDUyM2NhYzk3YjkzYjkzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC05MzQsMTMgKzkzNCwxNSBA
QCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lczoKICAgICAgICAgICAgIGNhc2UgT2JqZWN0S2V5czogewogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0cnVjdHVyZVNldCA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1
Y3R1cmVTZXQuaXNGaW5pdGUoKSAmJiBzdHJ1Y3R1cmVTZXQuc2l6ZSgpID09IDEpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0
dXJlU2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRv
KiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSByYXJl
RGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2FjaGVkUHJvcGVydHlOYW1lcyBrZXkgPSBub2RlLT5vcCgpID09IE9iamVjdEdl
dE93blByb3BlcnR5TmFtZXMgPyBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25OYW1lcyA6IENhY2hl
ZFByb3BlcnR5TmFtZXM6Ok93bktleXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5jYWNoZWRQcm9wZXJ0eU5hbWVz
Q29uY3VycmVudGx5KGtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3QXJyYXlC
dWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5KSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAwNDhhN2JhNDI1Mjg1NzJlNThjYjE0ODc0YWY3NThk
ZjAzY2VlOTg1Li5mNDBlZGY4MDU2NzZmN2EyYzM4OTFhNDU4YjU2MTkwNmE1NThmNGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zNTIsNiArMzUyLDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3JlYXRlQXN5
bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlz
OgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAg
ICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKaW5kZXggNTYxOTliNTYzMzUzMmMxYjA1MTJhNjY4YTgxMjgwYmRjOGJmNDZiNi4uYmI1
OTI1YWU1ODA4NzhmN2NjMWY2NWM5YmFkZDkzMjZiNWJmZTNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTMxLDYgKzE5MzEsNyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAgICAgICBj
YXNlIE9iamVjdEtleXM6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICB3YXRjaEhhdmluZ0FCYWRUaW1l
KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDE5ZDQ2
NjNjYWFjMjBkMzc5YTI0Yzc5NGM0OTI4MWM1MTdkMmRhZGUuLjUyNzBmZWE1ZTM0ZmE4ZmE5ZjUz
MTEwYzhkMzk1Y2YwMGY1YjlhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKQEAgLTI4Niw2ICsyODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBBdG9taWNzIG9iamVjdCBm
dW5jdGlvbnMuICovXAogICAgIG1hY3JvKEF0b21pY3NBZGQsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTFkNDg2MzdjZDMwYmQ4OTg0NmE1YzIxMWFjMDVi
YjZiMWVlNmU5Ny4uMmZmZjhjMWE5NTA1YTcxY2QyY2Y5YjRhNTUxYTI5YWRhYzVhYWIyYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWQKICAgICBKU09iamVjdCogb2JqZWN0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgc2NvcGUucmVsZWFz
ZSgpOwotICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUp
OworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENh
Y2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMpOwogfQogCiBKU0FycmF5KiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIG9iamVjdCkKQEAgLTI1NSw3ICsyNTUsMjggQEAgSlNBcnJheSogSklUX09QRVJB
VElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEoKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gb3du
UHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKTsKKyAgICByZXR1cm4gb3duUHJv
cGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
LCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpP
d25LZXlzKTsKK30KKworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT2JqZWN0KS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gb3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVj
dCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlLCBDYWNoZWRQcm9wZXJ0eU5hbWVzOjpPd25OYW1lcyk7Cit9CisKK0pTQXJy
YXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtl
eXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVz
KTsKIH0KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvdG90eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA5NjY3M2Ji
OWRkOTUwYjRlMzdjN2VjYWM3NjA3YjA2MDZmODRiN2Q1Li5lMmM4MGU2ZmU0ZmMwMzk2NzUzMTE4
ZDBjNjdlYTgzMjkxN2ZiOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaApAQCAtNDksNiArNDksOCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
Q2FsbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVgogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFRhcmdldCwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtleXMoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNBcnJheSogSklUX09QRVJBVElP
TiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBX
VEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEdldE93
blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0
eU5hbWVzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCB1aW50MzJfdCBpbmxpbmVDYXBh
Y2l0eSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA4NmY4N2YyNTc2
ZGU3ODE0ZWZlYWNjOTA1YjY5MzI4N2ZiZWRjNmUyLi42ZjhhMjRlM2YwODM3MWE4YzZlYTFkMGFj
ZjY5OTFkNjE4NTQ3ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTExMCw3ICsxMTEw
LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDoK
ICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKLSAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7
CisgICAgICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAppbmRleCBlZTJhY2I3M2FjMWNkNWY5MTZlNDBkYzk5ZmY1NGVhODlj
NWIyODJiLi44ODIyYzcyMzIzZmM4YmVkNGM2ZjI3MGQ0Y2ZjOWRhY2RmNDVlMDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNDk0LDYgKzQ5
NCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVy
YXRvcjoKICAgICBjYXNlIE9iamVjdENyZWF0ZToKICAgICBjYXNlIE9iamVjdEtleXM6CisgICAg
Y2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAg
Y2FzZSBTZXRDYWxsZWU6CiAgICAgY2FzZSBQdXRTdGFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNGQ2OTU4MDQ4OTQxNzY1NDg4
ZGZjOTAwZmUxYjhkOGRkYTM3ZjdkNi4uYjNjODZjMTViNTIwMzViNWRlMGMyMmQ2MGVjNTU5OWMx
OTYyOTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTEzMTc5LDcgKzEzMTc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvVGhpcyhOb2RlKiBub2RlKQogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUp
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2Rl
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgIGNhc2UgT2JqZWN0VXNlOiB7CkBAIC0xMzIwNywxMCArMTMyMDcsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIHNjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4odm0oKS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUtPnN0cnVjdHVyZUlEKCkp
KSkpOwogCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRPd25LZXlzKCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5
TmFtZXMobm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gQ2FjaGVkUHJvcGVydHlOYW1lczo6T3du
S2V5cyA6IENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bk5hbWVzKSksIHNjcmF0Y2hHUFIpOwogCi0g
ICAgICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSA9PSAxKTsKLSAgICAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBzY3Jh
dGNoR1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
c1NlbnRpbmVsKCkpID09IDEpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpCZWxvd09yRXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVy
dHlOYW1lc1NlbnRpbmVsKCkpKSkpOwogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CiAKQEAgLTEzMjI0LDcgKzEzMjI0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKIAogICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dCdXRBcnJheUJ1
ZmZlckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0R1BSLCAmdm0o
KSwgYXJyYXlTdHJ1Y3R1cmUsIHNjcmF0Y2gzR1BSKSk7CiAKLSAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk9iamVj
dEtleXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVj
dEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0
S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEzMjM5LDcgKzEzMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dEtleXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtl
eXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3Bl
cmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFt
ZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTMyNTQsNyArMTMyNTQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uT2JqZWN0S2V5cywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBP
YmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVj
dFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCBiZDU2MWNlZWI4YzQ4ODUyYTg2MThjMjVlMDc0ZmRhM2Y1
YWU4MjE4Li41OGE4Yzk4YTYwMTM1NjA4MTViMmIyMmJlYzg4NzMwM2MzYWQxYTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDY2LDcg
KzE0NjYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3QXJy
YXlXaXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RL
ZXlzKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0
ZVByb21pc2UoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTc5MzEyZDY5NGNiOGQ5MGExMmFjNjM0Mjlh
M2I1YTUwM2Y0NGUxOC4uZWNkYmZkNzYwMTM3MTg3ZGRkZmVmYjVmZDdkZWUwYThhNGNiMTdmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC0zMjMyLDggKzMyMzIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgT2JqZWN0
S2V5czogewotICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsKKyAgICBjYXNlIE9iamVj
dEtleXM6CisgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOiB7CisgICAgICAgIGNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM3YTBiZWZmN2U2NWJlMjg1ODk1MzRhMzE2OTZjYjYy
MmU2OWE1YmIuLjc0ODJhNzM1NDk5MzJkZTQ5ZmJjNGVmNTI4NDdmMzA0Mjk2MDAxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtMzgxOCw4ICszODE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE9iamVjdEtleXM6IHsKLSAg
ICAgICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgY2FzZSBPYmplY3RLZXlzOgorICAg
IGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczogeworICAgICAgICBjb21waWxlT2JqZWN0
S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCmluZGV4IDBkMzA0NTMxOTJkODYwZTc3NGJlZGVkNzNkMmFlM2ZiZjI4
Y2M0OWIuLjJiYTk5NGU3ZWZiMGU1MWY3OTI0NjE2YzQ2OGEwYjEwN2FkMDMzZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCkBAIC0xNDYsNyArMTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
ICAgIG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEsIFN0cnVjdHVyZTo6cHJldmlv
dXNPclJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVj
dHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1
Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZD
YWNoZWRPd25LZXlzKCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25L
ZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hl
ZFByb3BlcnR5TmFtZXM6Ok93bktleXMpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlUmFyZURhdGFf
Y2FjaGVkT3duTmFtZXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFByb3BlcnR5
TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lczo6T3duTmFtZXMpKSBcCiAgICAgbWFjcm8oSGFzaE1h
cEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERh
dGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVm
ZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+Ojpv
ZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJ
bXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCA5OWE0NzZmMmI4ODdiNWRhYWE3ZmQ2NGMxNzQ5ZjNmOTdjODA1YWIxLi5kZTkxZjk0OTI3NzE2
MTI1NmUxZTc4MGUyZjIxY2Y1N2JjNTY1NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjIsNiArMjIyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDYWxsTnVtYmVyQ29u
c3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmplY3RLZXlzOgor
ICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIE1ha2VSb3BlOgog
ICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIFRyeUdldEJ5SWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMjlhNzM0NmY4
MjQxOTlmMDE1YjhhNDJlMDJiNWE1NWUyMzhlYTBkZC4uNGMzNWE4YWU5MzI5YzljZDBmM2VlY2Rj
MWZmZGYxNTNhMWE4NjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcApAQCAtMTA3OCw3ICsxMDc4LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE9iamVjdEtleXM6Ci0gICAgICAgICAgICBjb21waWxlT2JqZWN0S2V5cygp
OworICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6CisgICAgICAgICAgICBj
b21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcygpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZU5l
d09iamVjdCgpOwpAQCAtNjU2OSw5ICs2NTcwLDEwIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVy
b0xlbmd0aFJlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXMoKQor
ICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoKQog
ICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgTm9kZVR5cGUg
b3AgPSBtX25vZGUtPm9wKCk7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpIHsKICAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsKICAgICAgICAgICAgIGlmIChtX2dy
YXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobV9ub2RlKSkgewpAQCAtNjU5
MywxOCArNjU5NSwxOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAg
ICB1bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dDYXNlKSk7CiAKICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHVzZUNhY2hlQ2FzZSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRh
OjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVl
IGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZpb3VzT3JSYXJlRGF0YSwgbV9oZWFw
cy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsKLSAgICAgICAgICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGNhY2hlZE93bktleXMsIG1fb3V0LmNvbnN0SW50
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNT
ZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUodXNlQ2FjaGVDYXNlKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KFN0cnVjdHVyZVJh
cmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkgPT0gMSk7CisgICAgICAgICAg
ICAgICAgTFZhbHVlIGNhY2hlZCA9IG1fb3V0LmxvYWRQdHIocHJldmlvdXNPclJhcmVEYXRhLCBv
cCA9PSBPYmplY3RLZXlzID8gbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlz
IDogbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25OYW1lcyk7CisgICAgICAgICAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmJlbG93T3JFcXVhbChjYWNoZWQsIG1fb3V0LmNvbnN0
SW50UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3Bl
cnR5TmFtZXNTZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUodXNlQ2FjaGVD
YXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh1c2VDYWNoZUNhc2UsIHNs
b3dCdXRBcnJheUJ1ZmZlckNhc2UpOwogICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgYXJyYXlTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cykpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJy
YXkgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVjdHVyZSwgbV9vdXQuYWRkUHRy
KGNhY2hlZE93bktleXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEoKSksIHNs
b3dCdXRBcnJheUJ1ZmZlckNhc2UpOworICAgICAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJyYXkg
PSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PihhcnJheVN0cnVjdHVyZSwgbV9vdXQuYWRkUHRyKGNh
Y2hlZCwgSlNJbW11dGFibGVCdXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2xvd0J1dEFycmF5
QnVmZmVyQ2FzZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihmYXN0QXJyYXkpOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dCdXRBcnJh
eUJ1ZmZlckNhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5
ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgbV92bVZhbHVlLCB3ZWFr
U3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7CisgICAgICAgICAgICAg
ICAgTFZhbHVlIHNsb3dBcnJheSA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTmV3QXJyYXlCdWZm
ZXIsIG1fdm1WYWx1ZSwgd2Vha1N0cnVjdHVyZShhcnJheVN0cnVjdHVyZSksIGNhY2hlZCk7CiAg
ICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHNsb3dBcnJheSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogCkBAIC02NjEzLDcgKzY2MTUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93UmVzdWx0VmFsdWUgPSBsYXp5U2xvd1BhdGgoCiAg
ICAgICAgICAgICAgICAgICAgIFs9LCAmdm1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKHZtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIGxvY2F0aW9uc1sw
XS5kaXJlY3RHUFIoKSwgZ2xvYmFsT2JqZWN0LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25P
YmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVj
dCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3QsIGxvY2F0aW9uc1sxXS5k
aXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAg
IG9iamVjdCk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwpAQCAtNjYyMywxMSArNjYyNSwxMSBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBv
aW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dCdXRBcnJheUJ1ZmZlclJlc3VsdCwgc2xvd1Jl
c3VsdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOwor
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wID09IE9iamVjdEtleXMgPyBv
cGVyYXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lc09iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93T2JqZWN0KG1fbm9kZS0+
Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFVudHlwZWRVc2U6Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uT2JqZWN0S2V5cywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9w
ID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lcywgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggZTRlNTc3ZmZhNTJkNzY1Mjk5
YTMzNjZmOTRkMWE2YmI0YWI0YjhjNC4uODk2YzFjY2RhN2RjODQwMDU4MGY1MjY2MzExMjU4YzQ0
YTM2N2I3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmlu
c2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CkBAIC0xNTksNiArMTU5LDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMg
aW50cmluc2ljKQogICAgICAgICByZXR1cm4gIlJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYyI7CiAg
ICAgY2FzZSBPYmplY3RDcmVhdGVJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiT2JqZWN0Q3Jl
YXRlSW50cmluc2ljIjsKKyAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXNJbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiAiT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYyI7
CiAgICAgY2FzZSBPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYzoKICAgICAgICAgcmV0dXJu
ICJPYmplY3RHZXRQcm90b3R5cGVPZkludHJpbnNpYyI7CiAgICAgY2FzZSBPYmplY3RJc0ludHJp
bnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggMmFh
YTZkMGM4ZjFlMGU4Y2UxNzE2OTViNjJkNWExMzQ2Y2U2ZjU3Zi4uYjM5YzU2NTEwNDUxYzEyZTlh
ZmJkOWYyODlhODViYTNiNzBkN2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmgKQEAgLTk1LDYgKzk1LDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsK
ICAgICBSZWdFeHBUZXN0RmFzdEludHJpbnNpYywKICAgICBSZWdFeHBNYXRjaEZhc3RJbnRyaW5z
aWMsCiAgICAgT2JqZWN0Q3JlYXRlSW50cmluc2ljLAorICAgIE9iamVjdEdldE93blByb3BlcnR5
TmFtZXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0R2V0UHJvdG90eXBlT2ZJbnRyaW5zaWMsCiAgICAg
T2JqZWN0SXNJbnRyaW5zaWMsCiAgICAgT2JqZWN0S2V5c0ludHJpbnNpYywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCmluZGV4
IDkxYjZkYWVkNTMxZmIyYWU4MmJiMzhhZDViMDBlNzA4NzI4ZjRkODAuLjY0MDU0YjgwODc2YTlm
MWI0YjcyZjg0ZTZmYWU4MjY3ZWJlMzNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcApAQCAtMTI3LDggKzEyNyw4IEBA
IHZvaWQgaXRlcmF0b3JDbG9zZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJdGVyYXRp
b25SZWNvcmQgaXRlcmF0aW9uUmVjb3JkCiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgUHJvcGVy
dHlPZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7Ci1zdGF0aWMgY29uc3QgUHJvcGVydHlP
ZmZzZXQgZG9uZVByb3BlcnR5T2Zmc2V0ID0gMTsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlP
ZmZzZXQgdmFsdWVQcm9wZXJ0eU9mZnNldCA9IDA7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5
T2Zmc2V0IGRvbmVQcm9wZXJ0eU9mZnNldCA9IDE7CiAKIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0
b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDM5MjM1ZTIzY2QzNGM3MmJmMTY4NmQ2MDUzYmVhZGM1NWY3MGMzNjUuLjYz
NmVkOTQxMGY4ZmJjYmRhODJkNGNmZjlkZmQwZjQ3ODMyYThkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk3MCw2ICs5NzAs
MTQgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rv
ciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKGluaXQudm0sICppbml0Lm93bmVyKSk7CiAgICAgICAg
IH0pOworICAgIG1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS5pbml0TGF0
ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChjcmVhdGVEYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlKGluaXQudm0sICppbml0Lm93bmVyKSk7CisgICAgICAgIH0pOworICAgIG1fYWNjZXNz
b3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgaW5p
dC5zZXQoY3JlYXRlQWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoaW5p
dC52bSwgKmluaXQub3duZXIpKTsKKyAgICAgICAgfSk7CiAgICAgCiAgICAgbV9ldmFsRnVuY3Rp
b24uaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4m
IGluaXQpIHsKQEAgLTE5MzUsNiArMTk0Myw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldEl0ZXJhdG9yU3RydWN0dXJlKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAg
IHRoaXNPYmplY3QtPm1fZGF0YVByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9y
T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDNlZGRhZTMy
N2MyZWJkZjY5YjEzMjNmODg2MDQ0YTBiNjYwNDNhODQuLjRlZjc2ODNmNDgzNmQyYTMxMWQ5NDQx
ZmUwOTc3ZmQ0NThlYmRmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMzk0LDYgKzM5NCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRhUHJvcGVydHlEZXNj
cmlwdG9yT2JqZWN0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJl
Y29yZFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CkBAIC03ODQsNiArNzg2LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Cisg
ICAgU3RydWN0dXJlKiBkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQorICAgIFN0cnVjdHVyZSogYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2Jq
ZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVj
dHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAKaW5kZXggNDI0ZTE1MWFhZWJkMjk0MzUyMTk0ZTU0YTU3OWEzZjEyYzc4YWFmMi4uOWQyNWU2
MjI3ZTQ4MTZjNTQxYjY4YTVhYjc5MmE2MWY5MWRhM2JmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApA
QCAtODMwLDcgKzgzMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVu
Y093bktleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwg
b2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDNhNmYxZjMzNzdhNjEyNGNkZTA4ZDU1
YTY0OTFjNTU3NDFhMWUzZWUuLjZlNGVjNjIwODJkMWVmN2MyNjRkNThkNGJkNzVmMDU5ZDZmZDFl
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAg
c2V0UHJvdG90eXBlT2YgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9m
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvciAgIERvbnRFbnVt
fEZ1bmN0aW9uIDIKICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSAgZ2V0T3du
UHJvcGVydHlOYW1lcyAgICAgICBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0T3duUHJvcGVydHlOYW1lcyAgICAgICBv
YmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYwogICBnZXRPd25Qcm9wZXJ0
eVN5bWJvbHMgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICBrZXlzICAgICAgICAgICAgICAgICAgICAgIG9iamVjdENv
bnN0cnVjdG9yS2V5cyAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBP
YmplY3RLZXlzSW50cmluc2ljCiAgIGRlZmluZVByb3BlcnR5ICAgICAgICAgICAgb2JqZWN0Q29u
c3RydWN0b3JEZWZpbmVQcm9wZXJ0eSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCkBA
IC0yMzUsMTQgKzIzNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhKU0dsb2JhbAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9ycyhnbG9iYWxPYmplY3QsIG9iamVjdCkpKTsKIH0KIAotLy8gRklY
TUU6IFVzZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
b3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpT
dHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxP
YmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0
aWVzTW9kZTo6SW5jbHVkZSwgQ2FjaGVkUHJvcGVydHlOYW1lczo6T3duTmFtZXMpKSk7CiB9CiAK
IC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNhY2hlLgpAQCAtMjUyLDcgKzI1MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMoSlNHbG9iYWxPYmplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5h
bWVNb2RlOjpTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0KSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKQEAgLTI2MSw3ICsyNjAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yS2V5cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSkpKTsKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtl
eXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMp
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JB
c3NpZ24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CkBAIC04ODYsMTYgKzg4NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLUpTQXJy
YXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJv
cGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKK0pTQXJyYXkqIG93blByb3BlcnR5
S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lcz4ga2V5KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBib29sIGlzT2JqZWN0S2V5cyA9IHByb3BlcnR5
TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAmJiBkb250RW51bVByb3BlcnRp
ZXNNb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1ZGU7CiAgICAgLy8gV2UgYXR0
ZW1wdCB0byBsb29rIHVwIG93biBwcm9wZXJ0eSBrZXlzIGNhY2hlIGluIE9iamVjdC5rZXlzIGNh
c2UuCi0gICAgaWYgKGlzT2JqZWN0S2V5cykgeworICAgIGlmIChrZXkpIHsKICAgICAgICAgaWYg
KExJS0VMWSghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5j
YWNoZWRPd25LZXlzKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJm
bHkgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSktPmNhY2hlZFByb3BlcnR5TmFtZXMoa2V5LnZhbHVl
KCkpKSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShpbW11dGFibGVC
dXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNBcnJh
eTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJyYXlTdHJ1Y3R1cmUsIGltbXV0
YWJsZUJ1dHRlcmZseS0+dG9CdXR0ZXJmbHkoKSk7CiAgICAgICAgICAgICB9CkBAIC05MTAsMTEg
KzkwOCwxMSBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydAogICAgICAgICBBU1NFUlQocHJvcGVy
dHlOYW1lTW9kZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzIHx8IHByb3BlcnR5TmFtZU1v
ZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scyk7CiAgICAgICAgIGlmIChwcm9wZXJ0aWVz
LnNpemUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIGlmIChMSUtF
TFkoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgewotICAgICAgICAgICAgICAg
IGlmIChpc09iamVjdEtleXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5KSB7CiAgICAgICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0p
OwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZU93bktleXMoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FjaGVkQnV0dGVyZmx5ID0gc3RydWN0
dXJlLT5jYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3du
S2V5c1NlbnRpbmVsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+Y2Fu
Q2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGNhY2hlZEJ1dHRlcmZseSA9IHN0cnVjdHVyZS0+Y2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5n
U2VudGluZWwoa2V5LnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZEJ1dHRlcmZseSA9PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRp
bmVsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IG5ld0J1dHRlcmZseSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGUodm0sIENvcHlPbldy
aXRlQXJyYXlXaXRoQ29udGlndW91cywgbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsK
QEAgLTkyMywxMyArOTIxLDEzIEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3du
ZWRTdHJpbmcodm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENh
Y2hlZE93bktleXModm0sIG5ld0J1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0dXJlLT5zZXRDYWNoZWRQcm9wZXJ0eU5hbWVzKHZtLCBrZXkudmFsdWUoKSwgbmV3
QnV0dGVyZmx5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKG5ld0J1dHRlcmZseS0+aW5kZXhpbmdNb2RlKCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU0FycmF5OjpjcmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBudWxscHRy
LCBhcnJheVN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5LT50b0J1dHRlcmZseSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZEJ1
dHRlcmZseSA9PSBudWxscHRyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZS0+c2V0Q2FjaGVkT3duS2V5cyh2bSwgU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNT
ZW50aW5lbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENh
Y2hlZFByb3BlcnR5TmFtZXModm0sIGtleS52YWx1ZSgpLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2Fj
aGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCkBAIC0xMDExLDQgKzEwMDksMjYgQEAgSlNBcnJheSogb3duUHJvcGVy
dHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QsIFBy
b3BlcnQKICAgICByZXR1cm4ga2V5czsKIH0KIAorSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdEZy
b21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOworCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisKKyAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpKQorICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGRlc2Ny
aXB0b3IudmFsdWUoKSk7CisgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkpCisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT53cml0YWJsZSwg
anNCb29sZWFuKGRlc2NyaXB0b3Iud3JpdGFibGUoKSkpOworICAgIGlmIChkZXNjcmlwdG9yLmdl
dHRlclByZXNlbnQoKSkKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmdldCwgZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisgICAgaWYgKGRlc2NyaXB0b3Iuc2V0
dGVyUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+c2V0LCBkZXNjcmlwdG9yLnNldHRlcigpKTsKKyAgICBpZiAoZGVzY3JpcHRvci5lbnVt
ZXJhYmxlUHJlc2VudCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+ZW51bWVyYWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSk7
CisgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpKQorICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uZmlndXJhYmxlLCBqc0Jvb2xl
YW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA2MWNmYzk5MzY2MWRjMmJkMmFhZTYyM2VhZDM2
YzczZTljODFhMTBiLi5lOGFjNDg2N2M4YTdiZWE4MDVkZjAxMzU0MTcwOGYzNzMwNGNjNjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgKQEAgLTg5LDI2ICs4OSw3MyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZykKICAgICByZXR1cm4gYXJn
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9yU2xvdyhKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYpOworCitzdGF0aWMgY29uc3RleHByIFByb3Bl
cnR5T2Zmc2V0IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZVByb3BlcnR5T2Zmc2V0ID0gMDsK
K3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVByb3BlcnR5RGVzY3JpcHRvcldy
aXRhYmxlUHJvcGVydHlPZmZzZXQgPSAxOworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNl
dCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMjsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZGF0YVByb3BlcnR5RGVzY3JpcHRvckNvbmZp
Z3VyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMzsKKworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9m
ZnNldCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckdldFByb3BlcnR5T2Zmc2V0ID0gMDsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JT
ZXRQcm9wZXJ0eU9mZnNldCA9IDE7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGFj
Y2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0ID0gMjsKK3N0
YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JD
b25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCA9IDM7CisKK2lubGluZSBTdHJ1Y3R1cmUqIGNyZWF0
ZURhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uc3Ry
dWN0dXJlQ2FjaGUuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoJmdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0
SW5saW5lQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlLCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9m
ZnNldCA9PSBkYXRhUHJvcGVydHlEZXNjcmlwdG9yVmFsdWVQcm9wZXJ0eU9mZnNldCk7CisgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSwgdm0ucHJvcGVydHlOYW1lcy0+d3JpdGFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9B
U1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JXcml0YWJsZVByb3BlcnR5T2Zm
c2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnVtZXJhYmxlLCAwLCBvZmZzZXQpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVy
YWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25maWd1cmFi
bGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0
eURlc2NyaXB0b3JDb25maWd1cmFibGVQcm9wZXJ0eU9mZnNldCk7CisgICAgcmV0dXJuIHN0cnVj
dHVyZTsKK30KKworaW5saW5lIFN0cnVjdHVyZSogY3JlYXRlQWNjZXNzb3JQcm9wZXJ0eURlc2Ny
aXB0b3JPYmplY3RTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uc3RydWN0dXJlQ2FjaGUuZW1wdHlP
YmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUoJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9i
amVjdFByb3RvdHlwZSgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5lQ2FwYWNpdHkoKSk7
CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmdl
dCwgMCwgb2Zmc2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQgPT0gYWNjZXNzb3JQcm9w
ZXJ0eURlc2NyaXB0b3JHZXRQcm9wZXJ0eU9mZnNldCk7CisgICAgc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1l
cy0+c2V0LCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBhY2Nlc3Nv
clByb3BlcnR5RGVzY3JpcHRvclNldFByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5lbnVtZXJhYmxlLCAwLCBvZmZzZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNl
dCA9PSBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckVudW1lcmFibGVQcm9wZXJ0eU9mZnNldCk7
CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uZmlndXJhYmxlLCAwLCBvZmZzZXQpOworICAg
IFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckNvbmZp
Z3VyYWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICByZXR1cm4gc3RydWN0dXJlOworfQorCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZyb21wcm9wZXJ0eWRlc2NyaXB0b3IKIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLQotICAgIGlmIChk
ZXNjcmlwdG9yLnZhbHVlKCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZSwgZGVzY3JpcHRvci52YWx1ZSgpKTsKLSAgICBpZiAoZGVzY3JpcHRv
ci53cml0YWJsZVByZXNlbnQoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPndyaXRhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSk7
Ci0gICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKQotICAgICAgICByZXN1bHQtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0LCBkZXNjcmlwdG9yLmdldHRlcigpKTsK
LSAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCkpOwot
ICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnVtZXJhYmxlLCBqc0Jvb2xlYW4oZGVz
Y3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKLSAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQ
cmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25maWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSk7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OworCisgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNl
bnQoKSAmJiBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSkgeworICAgICAgICBpZiAo
ZGVzY3JpcHRvci52YWx1ZSgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkpIHsKKyAg
ICAgICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xv
YmFsT2JqZWN0LT5kYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1
ZVByb3BlcnR5T2Zmc2V0LCBkZXNjcmlwdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JXcml0YWJsZVByb3BlcnR5T2Zm
c2V0LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci53cml0YWJsZSgpKSk7CisgICAgICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvckVudW1lcmFibGVQcm9wZXJ0
eU9mZnNldCwganNCb29sZWFuKGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpKSk7CisgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJs
ZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkpOwor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXNj
cmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkgewor
ICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBn
bG9iYWxPYmplY3QtPmFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlKCkp
OworICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNj
cmlwdG9yR2V0UHJvcGVydHlPZmZzZXQsIGRlc2NyaXB0b3IuZ2V0dGVyKCkpOworICAgICAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yU2V0UHJv
cGVydHlPZmZzZXQsIGRlc2NyaXB0b3Iuc2V0dGVyKCkpOworICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5
T2Zmc2V0LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3Vy
YWJsZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvclNsb3coZ2xvYmFsT2JqZWN0
LCBkZXNjcmlwdG9yKTsKIH0KIAogCkBAIC0xMTYsNyArMTYzLDcgQEAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvclNl
YWwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwogSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiwgY29u
c3QgSWRlbnRpZmllciYpOwogSlNWYWx1ZSBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5
RGVzY3JpcHRvcnMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwotSlNBcnJheSogb3duUHJv
cGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWVNb2RlLCBE
b250RW51bVByb3BlcnRpZXNNb2RlKTsKK0pTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lcz4pOwogYm9vbCB0b1Byb3BlcnR5RGVz
Y3JpcHRvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggYzc4YTdhNDZmZjNhMDljZWJjZWFiNjhiMDQ1ZGQ4
ZWIyMGQyMjAxOC4uYmJlNmQzZDk0YTg3ZDg2YzcxM2JkY2I5NTQxM2M1ODBjOWQwNWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKQEAg
LTIyMiw3ICsyMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0Il9zKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4o
dGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2Jq
ZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXM6Ok93bktleXMp
KSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qu
cHJldmVudGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDIyY2Q0MmJiNWYwM2FhY2E1NWY2ODA1YzBiNWQzY2QxNjE5ZDY1YjAuLjFm
YWJmOGNlMDhhZWEzOGQ3Mzg1MDk2YzZmNzhkM2RkZWFlYzMyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTQwOSw3ICsxNDA5LDcgQEAgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3IoKSBjb25zdAogCiBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yKFZNJiB2bSkgY29uc3QKIHsKLSAgICBpZiAoIXRoaXMtPmNhbkNhY2hlT3duS2V5cygp
KQorICAgIGlmICghdGhpcy0+Y2FuQ2FjaGVPd25Qcm9wZXJ0eU5hbWVzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFN0cnVjdHVyZUNoYWluKiBzdHJ1Y3R1cmVDaGFpbiA9IG1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCk7CkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29sIFN0cnVj
dHVyZTo6Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiB2bSkgY29uc3QKICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7Ci0gICAg
ICAgIGlmICghc3RydWN0dXJlLT5jYW5DYWNoZU93bktleXMoKSkKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmNhbkNhY2hlT3duUHJvcGVydHlOYW1lcygpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBjdXJyZW50U3RydWN0dXJlSUQrKzsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGEwMDQwMTBhYjRlYTM1N2M4MjRiNTdl
OGU1NjUxMDdjZjYxZmY0MTQuLjNjYjZhY2RlMjQ5ZDIxZTE3MmM2NjgxYWJhYTVmOWQxODcxYjg5
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC01MjIs
MTAgKzUyMiwxMCBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBib29sIGNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYpIGNvbnN0OwogICAgIGJv
b2wgY2FuQWNjZXNzUHJvcGVydGllc1F1aWNrbHlGb3JFbnVtZXJhdGlvbigpIGNvbnN0OwogCi0g
ICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsKLSAg
ICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OwotICAgIEpTSW1t
dXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNvbnN0Owot
ICAgIGJvb2wgY2FuQ2FjaGVPd25LZXlzKCkgY29uc3Q7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lcykgY29uc3Q7CisgICAg
SlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVs
KENhY2hlZFByb3BlcnR5TmFtZXMpIGNvbnN0OworICAgIHZvaWQgc2V0Q2FjaGVkUHJvcGVydHlO
YW1lcyhWTSYsIENhY2hlZFByb3BlcnR5TmFtZXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Kik7Cisg
ICAgYm9vbCBjYW5DYWNoZU93blByb3BlcnR5TmFtZXMoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0
UHJvcGVydHlOYW1lc0Zyb21TdHJ1Y3R1cmUoVk0mLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAppbmRleCBhZjdkMWFkZWFiYzg5Y2VhZGIzZmM2YWY0N2ExYWI4YjcyZTIx
N2JhLi41Mjk0NjJlYWRmY2VjZmJjMzBjN2NmMDlmNmNhZTMyZmY2YTc2ZjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNDIs
MjYgKzI0MiwyNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRyYW5zaXRp
b25lZEZyb20oU3RydWN0dXJlKiBzdHJ1Y3R1cmVUb0ZpbmQpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMoVk0mIHZtLCBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogb3duS2V5cykKK2lubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0Q2Fj
aGVkUHJvcGVydHlOYW1lcyhWTSYgdm0sIENhY2hlZFByb3BlcnR5TmFtZXMga2V5LCBKU0ltbXV0
YWJsZUJ1dHRlcmZseSogY2FjaGVkKQogewotICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+c2V0Q2Fj
aGVkT3duS2V5cyh2bSwgb3duS2V5cyk7CisgICAgZW5zdXJlUmFyZURhdGEodm0pLT5zZXRDYWNo
ZWRQcm9wZXJ0eU5hbWVzKHZtLCBrZXksIGNhY2hlZCk7CiB9CiAKLWlubGluZSBKU0ltbXV0YWJs
ZUJ1dHRlcmZseSogU3RydWN0dXJlOjpjYWNoZWRPd25LZXlzKCkgY29uc3QKK2lubGluZSBKU0lt
bXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlOjpjYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFBy
b3BlcnR5TmFtZXMga2V5KSBjb25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXMo
KTsKKyAgICByZXR1cm4gcmFyZURhdGEoKS0+Y2FjaGVkUHJvcGVydHlOYW1lcyhrZXkpOwogfQog
Ci1pbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZTo6Y2FjaGVkT3duS2V5c0ln
bm9yaW5nU2VudGluZWwoKSBjb25zdAoraW5saW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1
Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsKENhY2hlZFByb3BlcnR5
TmFtZXMga2V5KSBjb25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZE93bktleXNJZ25vcmlu
Z1NlbnRpbmVsKCk7CisgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZFByb3BlcnR5TmFtZXNJ
Z25vcmluZ1NlbnRpbmVsKGtleSk7CiB9CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2Fj
aGVPd25LZXlzKCkgY29uc3QKK2lubGluZSBib29sIFN0cnVjdHVyZTo6Y2FuQ2FjaGVPd25Qcm9w
ZXJ0eU5hbWVzKCkgY29uc3QKIHsKICAgICBpZiAoaXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcAppbmRleCAzMTVmMGQ5YWEzNWI5ZDg5NjExYTExNjg0YzgxNzZjZDZi
M2FmNmY3Li4xMzZiMWZhM2Y1MzQ2MDgwNDg0Y2Q5NmUxODNkMTc4NjIzZTgwNjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CkBAIC03Niw5ICs3NiwxMyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9wcmV2aW91cyk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh0
aGlzT2JqZWN0LT5vYmplY3RUb1N0cmluZ1ZhbHVlKCkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik7Ci0gICAgYXV0byogY2Fj
aGVkT3duS2V5cyA9IHRoaXNPYmplY3QtPm1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgp
OwotICAgIGlmIChjYWNoZWRPd25LZXlzICE9IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNhY2hlZE93bktleXMpOworICAgIGF1dG8g
dmFsaWRhdGVBbmRBcHBlbmQgPSBbJl0oV3JpdGVCYXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5
PiYgc2xvdCkgeworICAgICAgICBhdXRvKiBjZWxsID0gc2xvdC51bnZhbGlkYXRlZEdldCgpOwor
ICAgICAgICBpZiAoY2VsbCAhPSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkKKyAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2VsbCk7CisgICAgfTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkNhY2hlZFByb3BlcnR5TmFtZXM7
ICsraW5kZXgpCisgICAgICAgIHZhbGlkYXRlQW5kQXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVk
UHJvcGVydHlOYW1lc1tpbmRleF0pOwogfQogCiAvLyAtLS0tLS0tLS0tLSBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nKCkgaGVscGVyIHdhdGNocG9pbnQgY2xhc3NlcyAtLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKaW5k
ZXggMDFkODUxNTgzOGQ0ZmViZmM1ZjcwZTBkZTNkYTAzY2VjN2RhOTdjNC4uNTg5MDY2OTM1OWM3
NzYyMzk3MzIxNzJkMTljNmIzZGUzOGNhNGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCkBAIC0zNyw2ICszNywxMSBAQCBjbGFz
cyBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I7CiBjbGFzcyBTdHJ1Y3R1cmU7CiBjbGFzcyBPYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludDsKIGNsYXNz
IE9iamVjdFRvU3RyaW5nQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OworZW51bSBjbGFzcyBD
YWNoZWRQcm9wZXJ0eU5hbWVzIDogdWludDhfdCB7CisgICAgT3duS2V5cyA9IDAsCisgICAgT3du
TmFtZXMsCit9Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkNhY2hlZFByb3Bl
cnR5TmFtZXMgPSAyOwogCiBjbGFzcyBTdHJ1Y3R1cmVSYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogcHVibGljOgpAQCAtNzQsMjEgKzc5LDIxIEBAIGNsYXNzIFN0cnVjdHVyZVJhcmVE
YXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBjYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKik7
CiAKLSAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkT3duS2V5cygpIGNvbnN0OwotICAg
IEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzSWdub3JpbmdTZW50aW5lbCgpIGNv
bnN0OwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBjYWNoZWRPd25LZXlzQ29uY3VycmVudGx5
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDYWNoZWRPd25LZXlzKFZNJiwgSlNJbW11dGFibGVCdXR0
ZXJmbHkqKTsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkUHJvcGVydHlOYW1lcyhD
YWNoZWRQcm9wZXJ0eU5hbWVzKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2Fj
aGVkUHJvcGVydHlOYW1lc0lnbm9yaW5nU2VudGluZWwoQ2FjaGVkUHJvcGVydHlOYW1lcykgY29u
c3Q7CisgICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJy
ZW50bHkoQ2FjaGVkUHJvcGVydHlOYW1lcykgY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRQcm9w
ZXJ0eU5hbWVzKFZNJiwgQ2FjaGVkUHJvcGVydHlOYW1lcywgSlNJbW11dGFibGVCdXR0ZXJmbHkq
KTsKIAogICAgIEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiBjb3B5U2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIGNv
bnN0IEJveDxJbmxpbmVXYXRjaHBvaW50U2V0PiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIHZvaWQgc2V0U2hh
cmVkUG9seVByb3RvV2F0Y2hwb2ludChCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mJiBzaGFyZWRQ
b2x5UHJvdG9XYXRjaHBvaW50KSB7IG1fcG9seVByb3RvV2F0Y2hwb2ludCA9IFdURk1vdmUoc2hh
cmVkUG9seVByb3RvV2F0Y2hwb2ludCk7IH0KICAgICBib29sIGhhc1NoYXJlZFBvbHlQcm90b1dh
dGNocG9pbnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BvbHlQcm90b1dh
dGNocG9pbnQpOyB9CiAKLSAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93
bktleXNTZW50aW5lbCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZs
eSo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgc3RhdGljIEpTSW1tdXRhYmxl
QnV0dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8SlNJbW11dGFibGVCdXR0ZXJmbHkqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsg
fQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQorICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5
TmFtZXMga2V5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmVSYXJlRGF0YSwgbV9jYWNoZWRPd25LZXlzKTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdHJ1Y3R1cmVSYXJlRGF0YSwgbV9jYWNoZWRQcm9wZXJ0eU5hbWVzKSArIHNpemVvZihX
cml0ZUJhcnJpZXI8SlNJbW11dGFibGVCdXR0ZXJmbHk+KSAqIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihrZXkpOwogICAgIH0KIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkBAIC0xMDksNyArMTE0
LDcgQEAgY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgc29tZSBzdG9yeSBmb3IgY2xlYXJpbmcgdGhlc2Ug
cHJvcGVydHkgbmFtZXMgY2FjaGVzIGluIEdDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2NTkKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yPiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci0gICAgV3JpdGVC
YXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZE93bktleXM7CisgICAgV3JpdGVC
YXJyaWVyPEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbbnVtYmVy
T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzXSB7IH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UHJvcGVy
dHlPZmZzZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5T2Zm
c2V0PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNldD4+
IFByb3BlcnR5V2F0Y2hwb2ludE1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvcGVydHlXYXRj
aHBvaW50TWFwPiBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCmlu
ZGV4IGUyZmQ1MDRhYzZiYTE4ZjRkYjJkN2E5MzEwMDczMGM1MDlhMWZkZTYuLmYwZGIxNzgzNmI0
OTk5NjVhMzA5YTA0ZjkzNjM0N2M0OGEyMjJlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCkBAIC02Miwz
OCArNjIsMzggQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3Bl
cnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnQKICAgICBtX2NhY2hlZFByb3BlcnR5
TmFtZUVudW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKIH0KIAotaW5saW5lIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cygpIGNv
bnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNo
ZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXMga2V5KSBjb25zdAogewogICAgIEFT
U0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKLSAgICBhdXRvKiBidXR0ZXJmbHkgPSBtX2Nh
Y2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKLSAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hl
ZE93bktleXNTZW50aW5lbCgpKQorICAgIGF1dG8qIGJ1dHRlcmZseSA9IG1fY2FjaGVkUHJvcGVy
dHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KV0udW52YWxpZGF0ZWRHZXQoKTsKKyAg
ICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYnV0dGVyZmx5OwogfQogCi1pbmxpbmUgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzSWdub3Jp
bmdTZW50aW5lbCgpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVy
ZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChDYWNoZWRQcm9w
ZXJ0eU5hbWVzIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQo
KSk7Ci0gICAgcmV0dXJuIG1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgpOworICAgIHJl
dHVybiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSldLnVu
dmFsaWRhdGVkR2V0KCk7CiB9CiAKLWlubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0
dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdAoraW5saW5lIEpT
SW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1l
c0NvbmN1cnJlbnRseShDYWNoZWRQcm9wZXJ0eU5hbWVzIGtleSkgY29uc3QKIHsKLSAgICBhdXRv
KiBidXR0ZXJmbHkgPSBtX2NhY2hlZE93bktleXMudW52YWxpZGF0ZWRHZXQoKTsKLSAgICBpZiAo
YnV0dGVyZmx5ID09IGNhY2hlZE93bktleXNTZW50aW5lbCgpKQorICAgIGF1dG8qIGJ1dHRlcmZs
eSA9IG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KV0udW52
YWxpZGF0ZWRHZXQoKTsKKyAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNT
ZW50aW5lbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYnV0dGVyZmx5
OwogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5cyhW
TSYgdm0sIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkpCitpbmxpbmUgdm9pZCBTdHJ1
Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lcyhWTSYgdm0sIENhY2hlZFByb3Bl
cnR5TmFtZXMga2V5LCBKU0ltbXV0YWJsZUJ1dHRlcmZseSogYnV0dGVyZmx5KQogewotICAgIGlm
IChidXR0ZXJmbHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpIHsKLSAgICAgICAgbV9jYWNo
ZWRPd25LZXlzLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoYnV0dGVyZmx5KTsKKyAgICBpZiAoYnV0
dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKSB7CisgICAgICAgIG1fY2Fj
aGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KV0uc2V0V2l0aG91dFdy
aXRlQmFycmllcihidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX2NhY2hlZE93bktleXMuc2V0KHZtLCB0aGlzLCBi
dXR0ZXJmbHkpOworICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oa2V5KV0uc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggODRiMWQzNjU1MjUzOGY4YTI1ZmI3ZTA2NTk2NmQ5ODAzMzU1NDNiZi4uMjgxNGFkZTJjNDBk
MzUxOTcwMzM3ZDkxNjhkOTMyNzRiZTgyZWRhNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wOC0xOSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBjYWNoaW5nIGFzIGl0IGlzIGRvbmUgZm9yIE9iamVj
dC5rZXlzLCBhbmQgYWNjZWxlcmF0ZSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU2NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanM6IEFkZGVkLgorICAgICAgICAo
b2JqZWN0LmdldCB0ZXN0KToKKyAgICAgICAgKG9iamVjdC5zZXQgdGVzdCk6CisgICAgICAgICog
c3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtYmFkLXRpbWUuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL2dldC1vd24t
cHJvcGVydHktbmFtZXMtZGZnLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9rZXlzLWJhZC10aW1lLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9rZXlz
LWRmZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2FjaGVkLXplcm8u
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtYXR0cmlidXRl
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWluZGV4Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9v
YmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
b2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1l
cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKG5vSW5saW5lKToKKwogMjAyMC0wOC0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBIYXZlIGFuIE9PQitTYW5lQ2hhaW4gQXJyYXk6OlNwZWN1bGF0aW9u
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3BlcnR5LWRl
c2NyaXB0b3IuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9nZXQtb3duLXByb3BlcnR5LWRl
c2NyaXB0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI0NzYzMTM0MDdkMGJiYTUzNmQzYWZkZjIyMjYxYjE4
NWNkMzEwMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2dldC1v
d24tcHJvcGVydHktZGVzY3JpcHRvci5qcwpAQCAtMCwwICsxLDExIEBACit2YXIgb2JqZWN0ID0g
eworICAgIGdldCB0ZXN0KCkgeyByZXR1cm4gNDI7IH0sCisgICAgc2V0IHRlc3QodmFsdWUpIHsg
fSwKKyAgICB2YWx1ZTogNTUKK307CisKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkg
eworICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCAidGVzdCIpOwor
ICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCAidmFsdWUiKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtYmFkLXRp
bWUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJhZC10aW1lLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2NWZjZDU1ZWYwZDRjYzYxY2YwN2QzNzBlZmUyMzI2OTBhNjY4MTEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJh
ZC10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOwor
Cit2YXIgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVjdC5kZWZp
bmVQcm9wZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAorICAgIHdy
aXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5l
KHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyJdYCk7CitPYmplY3QuZGVmaW5lUHJv
cGVydHkoQXJyYXkucHJvdG90eXBlLCAxMCwgeworICAgIHZhbHVlOiA0MgorfSk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiXWApOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkodGVzdCgpKSwgYFsiYSIsImIiLCJjIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Z2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1kZmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM4YWZlM2VhNmY5ODFi
MmYyMTUyNzYwMWRlZDQwOTI0YzFkZjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorbm9JbmxpbmUoc2hvdWxkQmUpOworCit2YXIgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAg
IGI6IDMzLAorfTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVu
dW1lcmFibGU6IGZhbHNlLAorICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
NTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwi
YyJdYCk7CitvYmplY3QuZCA9IDQyOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGVzdCgpKSwg
YFsiYSIsImIiLCJjIiwiZCJdYCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAg
IHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyIsImQiXWApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mva2V5cy1iYWQtdGltZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2tleXMtYmFkLXRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTJlNDY1MWZmMjExZDIwMDY3OWM5NzEz
OGQ5NTlhMjJkYTU3YjJjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2tleXMt
YmFkLXRpbWUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7
CisKK3ZhciBvYmplY3QgPSB7CisgICAgYTogNDIsCisgICAgYjogMzMsCit9OworT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgImMiLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAg
d3JpdGFibGU6IHRydWUsCisgICAgdmFsdWU6IDQ0Cit9KTsKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
dGVzdCgpKSwgYFsiYSIsImIiXWApOworT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3Rv
dHlwZSwgMTAsIHsKKyAgICB2YWx1ZTogNDIKK30pOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
dGVzdCgpKSwgYFsiYSIsImIiXWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGVzdCgpKSwg
YFsiYSIsImIiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mva2V5cy1kZmcuanMgYi9K
U1Rlc3RzL3N0cmVzcy9rZXlzLWRmZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTA4YzUyNzEyMTc4M2M1Nzhj
MmE4ZjAzZDIzOTliOGY4MjJhZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
a2V5cy1kZmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7
CisKK3ZhciBvYmplY3QgPSB7CisgICAgYTogNDIsCisgICAgYjogMzMsCit9OworT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9iamVjdCwgImMiLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2UsCisgICAg
d3JpdGFibGU6IHRydWUsCisgICAgdmFsdWU6IDQ0Cit9KTsKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
dGVzdCgpKSwgYFsiYSIsImIiXWApOworb2JqZWN0LmQgPSA0MjsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiZCJdYCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFl
NTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwi
ZCJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1uYW1lcy1jYWNoZWQtemVyby5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXBy
b3BlcnR5LW5hbWVzLWNhY2hlZC16ZXJvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNmJjY2Q4NTBmNWQ0NDBm
ZDYwODA5YTM2Mzk4OTE5NDQzYjMyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jYWNoZWQtemVyby5qcwpAQCAtMCwwICsx
LDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2
YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDAp
OworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBp
OworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFsw
XSwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9w
ZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1n
ZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVj
M2Q0NGRmY2I2OTQwYTg5MTY0YTM2N2U0YTA0OTE0NThjMmE3MGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0
dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2Jq
ZWN0KQoreworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOwor
fQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7IENvY29hOiA0MiB9OworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7
CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBd
LCAnQ29jb2EnKTsKK30KKworUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICdDb2NvYScs
IHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2
OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJl
c3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJ0NvY29hJyk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1j
aGFuZ2VkLWluZGV4LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
bmFtZXMtY2hhbmdlZC1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGEwODhhNDI4ZTgzYzJiZDJkZDFm
OWJhZjlkNTBmZWQ2MjU0MGY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC1pbmRleC5qcwpAQCAtMCwwICsxLDI4
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Zh
ciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIg
cmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDApOwor
ICAgIHNob3VsZEJlKHJlc3VsdFswXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHRbMF0gPSBpOwor
ICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwg
aSk7Cit9CisKK29iamVjdFswXSA9IDQyOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkg
eworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxl
bmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdlZC5qcyBi
L0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjMyNzE3MjBiOGRiODg0NmM2NDkxMDNmMGZkYzY4YzM5YTE5YWMwZAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5h
bWVzLWNoYW5nZWQuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBz
aG91bGRCZShyZXN1bHQubGVuZ3RoLCAwKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVm
aW5lZCk7CisgICAgcmVzdWx0WzBdID0gaTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAx
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIGkpOworfQorCitvYmplY3QuQ29jb2EgPSA0MjsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChv
YmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJl
c3VsdFswXSwgJ0NvY29hJyk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWluZGV4ZWQtbm9uLWNhY2hlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI1YWVkMjc1MzhlNzMxODE3ZjE4MTc2ZmY3ZmRhMjFiNTg1OTYzOTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1l
cy1pbmRleGVkLW5vbi1jYWNoZS5qcwpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3Qob2JqZWN0KQoreworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvYmplY3QgPSB7MDogNDJ9Owor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9i
amVjdCk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMSk7CisgICAgc2hvdWxkQmUocmVz
dWx0WzBdLCAnMCcpOworfQorb2JqZWN0WzFdID0gNDQ7Citmb3IgKHZhciBpID0gMDsgaSA8IDFl
MzsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShy
ZXN1bHQubGVuZ3RoLCAyKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICcwJyk7CisgICAgc2hv
dWxkQmUocmVzdWx0WzFdLCAnMScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtb3ZlcnJpZGVzLWdldC1wcm9wZXJ0eS1uYW1lcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRl
cy1nZXQtcHJvcGVydHktbmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc4MmVhZGE0ODk1MzA3MDQwOGQ3
ZDc1ZjI4YWNjMjUxZTFmYmVkYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFtZXMu
anMKQEAgLTAsMCArMSw2MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkK
K3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sK
KyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5s
aW5lKHRlc3QpOworCit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBTdHJpbmcoIkNvY29hIik7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBsZXQgcmVzdWx0ID0g
dGVzdChvYmplY3QpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCA2KTsKKyAgICAg
ICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMV0s
ICcxJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzInKTsKKyAgICAgICAgc2hvdWxk
QmUocmVzdWx0WzNdLCAnMycpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbNF0sICc0Jyk7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ2xlbmd0aCcpOworICAgIH0KKworICAgIG9iamVj
dC5Db2NvYSA9IDQyOworICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxk
QmUocmVzdWx0Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAg
IHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7
CisgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgIHNob3VsZEJlKHJlc3VsdFs0XSwg
JzQnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAgICBzaG91bGRCZShy
ZXN1bHRbNl0sICdDb2NvYScpOworfQorCit7CisgICAgbGV0IG9iamVjdCA9IG5ldyBTdHJpbmco
IkNvY29hIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAgICBs
ZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgICAgICBzaG91bGRCZShyZXN1bHQubGVuZ3Ro
LCA2KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAgICAgICBzaG91bGRC
ZShyZXN1bHRbMV0sICcxJyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFsyXSwgJzInKTsKKyAg
ICAgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgICAgICBzaG91bGRCZShyZXN1bHRb
NF0sICc0Jyk7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFs1XSwgJ2xlbmd0aCcpOworICAgIH0K
KworICAgIG9iamVjdFs4XSA9IDQyOworICAgIGxldCByZXN1bHQgPSB0ZXN0KG9iamVjdCk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAn
MCcpOworICAgIHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKKyAgICBzaG91bGRCZShyZXN1bHRb
Ml0sICcyJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzNdLCAnMycpOworICAgIHNob3VsZEJlKHJl
c3VsdFs0XSwgJzQnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbNV0sICc4Jyk7CisgICAgc2hvdWxk
QmUocmVzdWx0WzZdLCAnbGVuZ3RoJyk7Cit9Cg==
</data>
<flag name="review"
          id="422258"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406899</attachid>
            <date>2020-08-19 18:56:23 -0700</date>
            <delta_ts>2020-08-19 18:56:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-215666-20200819185623.patch</filename>
            <type>text/plain</type>
            <size>77176</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ODNlZjY1MTJhNTZjMTVhNjE3MzU5MDJkYzY1MjA3ZGM5NzEyMDI0Li5hZGJhZDI4ZDk0MDU2YmM0
MDY4ZWEzZWQzMWJjMTkzNjQwMWI5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgY2FjaGlu
ZyBhcyBpdCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywgYW5kIGFjY2VsZXJhdGUgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgaXMgaW1tdXRhYmxlIGZv
ciBTdHJ1Y3R1cmUgaWYgc3RydWN0dXJlIG1lZXRzIHNvbWUgY29uZGl0aW9ucy4gQW5kIHdlIGhh
dmUgb3B0aW1pemF0aW9uIGZvciBPYmplY3Qua2V5cy4KKyAgICAgICAgVGhpcyBwYXRjaCB3aXJl
cyBleGlzdGluZyBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgT2JqZWN0LmtleXMgdG8gT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMgc28gdGhhdCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBoYXMK
KyAgICAgICAgZnVsbCBzdXBwb3J0IG9mIGNhY2hpbmcgJiBpbmxpbmVkIGNvZGUgaW4gREZHIC8g
RlRMLgorCisgICAgICAgIFdlIGFsc28gcHJlLWJha2Ugc3RydWN0dXJlIGZvciB0aGUgcmVzdWx0
IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igc28gdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBwZXJmb3JtIGhhc2ggdGFibGUgbG9va3VwIGV2ZXJ5CisgICAgICAgIHRpbWUgd2UgY3Jl
YXRlIGFuIG9iamVjdCBmb3IgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvci4gVGhpcyBt
YWtlcyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDJ4IGZhc3RlciBmcm9tIHRoZSBt
aWNyb2JlbmNobWFyay4KKworICAgICAgICBUaGUgYWJvdmUgdHdvIG9wdGltaXphdGlvbiBtYWtl
cyBTcGVlZG9tZXRlcjIvSW5mZXJuby1Ub2RvTVZDIDclIGZhc3RlciwgYW5kIGl0IGFsc28gb3B0
aW1pemVzIFNwZWVkb21ldGVyMi9FbWJlckpTLURlYnVnIGJ5IDUlLgorICAgICAgICBJbiB0b3Rh
bCwgd2UgY2FuIGdldCAwLjcgLSAxLjAlIHByb2dyZXNzaW9uIGluIFNwZWVkb21ldGVyMi4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RL
ZXlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChK
U0M6OmludHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAg
ICAgICogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpkYXRhUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yT2JqZWN0U3Ry
dWN0dXJlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY093bktleXMpOgorICAgICAgICAqIHJ1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rvckdl
dE93blByb3BlcnR5U3ltYm9scyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yS2V5
cyk6CisgICAgICAgIChKU0M6Om93blByb3BlcnR5S2V5cyk6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KToKKyAgICAgICAgKiBydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OmNyZWF0ZURhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVBY2Nlc3NvclBy
b3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RPd25LZXlzKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93blByb3BlcnR5TmFtZXMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldENhY2hlZE93bktleXMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjYW5DYWNoZU93bktleXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpj
YWNoZWRQcm9wZXJ0eU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURh
dGE6OmNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZXNDb25jdXJyZW50bHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OmNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkT3duS2V5cyk6
IERlbGV0ZWQuCisKIDIwMjAtMDgtMTkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBPcElzQ2FsbGFibGUgYnl0ZWNvZGUgYW5kIGlu
dHJpbnNpYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGFmNThmN2FiMmZhMDM5YjUwZmRmNmJhZDAy
MmIwNjYxNGM5NzM0OGUuLjU5ZWZiNmQ5Y2U1YjJiMjgxZTdlMTM1ODQxNzZhMTAyZmM3MjFmMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTMwNjUsMTMgKzMwNjUsMTQgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBPYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzOgogICAgIGNhc2UgT2JqZWN0S2V5czogewogICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgewogICAgICAgICAgICAgYXV0byYg
c3RydWN0dXJlU2V0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmU7CiAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlU2V0LmlzRmluaXRlKCkgJiYgc3RydWN0dXJlU2V0LnNpemUo
KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmVTZXQub25seVN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiByYXJlRGF0YSA9IHN0cnVjdHVyZS0+cmFyZURhdGFDb25jdXJyZW50bHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoISFyYXJlRGF0YS0+Y2FjaGVkT3duS2V5c0NvbmN1cnJlbnRseSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghIXJhcmVEYXRhLT5jYWNoZWRQcm9wZXJ0eU5h
bWVzQ29uY3VycmVudGx5KG5vZGUtPm9wKCkgPT0gT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyA/
IENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5hbWVzIDogQ2FjaGVkUHJv
cGVydHlOYW1lc0tpbmQ6OktleXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmco
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCBkZDA4NDUyZWYxYWVlZGNjZjAwNmVmOTU1YjE2MTY3ZTkxZGYxZDAwLi4yY2Q0OWZkYWMx
YTUwMzQyZTE5ZGJhOWM2ZGZiNmI0ZjM2MGNjNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMjk0OCw2ICsyOTQ4LDE1IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVy
YW5kIHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYzogewor
ICAgICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgMikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworICAg
ICAgICAgICAgc2V0UmVzdWx0KGFkZFRvR3JhcGgoT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygxLCByZWdpc3Rlck9m
ZnNldCkpKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgUmVmbGVjdEdldFByb3RvdHlwZU9mSW50cmluc2ljOiB7CiAgICAgICAgICAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCAyKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYWFl
Njg4MGVkM2EyODhiMzJmODkzYTM1NmNkNjZjMjRmYzMzZmNiOC4uOGZlZjZhNzVhMzQ5ZGQyZjJl
NmUyOTE1MmQwOTMzYzUyNmY3YjY2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTcxOCw2ICs3MTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgIGNhc2UgSW5zdGFuY2VPZjoKICAgICBjYXNlIFN0cmluZ1ZhbHVlT2Y6CiAgICAgY2FzZSBP
YmplY3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICAgICAg
Y2xvYmJlclRvcCgpOwogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXggYjk3YTI0M2Zj
MWM3MzM1YTQwNWQ2OGU0NWQ0OWEzMmMyODE4ZjFjMC4uNWUyYmQ5Yzk1ZTA4MmIyODAzY2ZiOWQ5
MDNiOTU2MjczZDhmZTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTkzNCwxMyArOTM0LDE0IEBAIGNsYXNz
IENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9w
ZXJ0eU5hbWVzOgogICAgICAgICAgICAgY2FzZSBPYmplY3RLZXlzOiB7CiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgc3RydWN0dXJlU2V0ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX3N0cnVjdHVyZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZVNl
dC5pc0Zpbml0ZSgpICYmIHN0cnVjdHVyZVNldC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVTZXQu
b25seVN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHJhcmVE
YXRhID0gc3RydWN0dXJlLT5yYXJlRGF0YUNvbmN1cnJlbnRseSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGltbXV0YWJsZUJ1dHRlcmZseSA9IHJhcmVEYXRhLT5j
YWNoZWRPd25LZXlzQ29uY3VycmVudGx5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogaW1tdXRhYmxlQnV0dGVyZmx5ID0gcmFyZURhdGEtPmNhY2hlZFByb3BlcnR5
TmFtZXNDb25jdXJyZW50bHkobm9kZS0+b3AoKSA9PSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVz
ID8gQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OkdldE93blByb3BlcnR5TmFtZXMgOiBDYWNoZWRQ
cm9wZXJ0eU5hbWVzS2luZDo6S2V5cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTmV3
QXJyYXlCdWZmZXIobV9ncmFwaC5mcmVlemUoaW1tdXRhYmxlQnV0dGVyZmx5KSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA4MjM3YzM2ODgyOThjNjQ4NTJjNmY5MjMz
YTU2MjBmMDg4NjZlZjIxLi5hOGFkMjVjZDhiN2QwMGI2ODEyZTE5NWVmZWQ0YmM4ODU3MjhhMjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0zNTMsNiArMzUz
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ3Jl
YXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAgICAgY2FzZSBPYmpl
Y3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoKICAgICBjYXNlIEFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKICAgICBjYXNlIEFycmF5aWZ5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggNDQxYmRjODc2NDgwNGRhZmQzZGRlOGJkNTZhNmIyODlmZWY1Mzg0
YS4uMzUwNjMyZDE4NThkMzM2ZWMxYjQ0NmIzZWQyYWQzZmM5MjJmNDI3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTMxLDYgKzE5MzEsNyBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOgogICAg
ICAgICBjYXNlIE9iamVjdEtleXM6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsKICAgICAgICAgICAgICAgICB3YXRjaEhhdmluZ0FC
YWRUaW1lKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4
IDQyNTI2OTU5YzFhMjlkYzJhN2VkYjY4ZGU3NmFkNDFlYzdhNjdmMGYuLmIwY2UyYzUyZWM2Y2Vi
MzU4ZGNkNzI2ZTU1MDAzNWVmNzVhYmI3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKQEAgLTI4Niw2ICsyODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oR2V0UHJvdG90eXBlT2YsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RDcmVhdGUsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhPYmplY3RLZXlzLCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBBdG9taWNzIG9i
amVjdCBmdW5jdGlvbnMuICovXAogICAgIG1hY3JvKEF0b21pY3NBZGQsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMDhlMWUwNzRlMmZiZTlhOTE5NzljYzRh
M2FhNDI1NDcyMTdmODc3Mi4uNjhkYWI2MWFjMDNhMTg1ZTk3MzI5NjE4NDlkNzkyZmE3NzZlODY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0y
NDcsNyArMjQ3LDcgQEAgSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWQKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwotICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmpl
Y3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4
Y2x1ZGUpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkV4Y2x1
ZGUsIENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpLZXlzKTsKIH0KIAogSlNBcnJheSogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCkBAIC0yNTUsNyArMjU1LDI4IEBAIEpTQXJyYXkqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9k
ZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSk7CisgICAgcmV0dXJu
IG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6
U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZSwgQ2FjaGVkUHJvcGVydHlO
YW1lc0tpbmQ6OktleXMpOworfQorCitKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9i
amVjdEdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU09iamVjdCogb2JqZWN0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPYmplY3QpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBvd25Qcm9wZXJ0eUtleXMoZ2xv
YmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUsIENhY2hlZFByb3BlcnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9w
ZXJ0eU5hbWVzKTsKK30KKworSlNBcnJheSogSklUX09QRVJBVElPTiBvcGVyYXRpb25PYmplY3RH
ZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBvYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgcmV0dXJuIG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgQ2FjaGVk
UHJvcGVydHlOYW1lc0tpbmQ6OkdldE93blByb3BlcnR5TmFtZXMpOwogfQogCiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90b3R5cGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDVkOWM2YTc5NTAwNzRlOGI5MGJkOWYxZjY4
MTQ1OGVlZWZlZmJhYWQuLmUyOWE0Y2RiYmY5Y2Q5ZWM1N2MzNjQ5M2MxOTk3MWUzMmJmYmFiMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC00OSw2ICs0
OSw4IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG9PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGFy
Z2V0LCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEpTQXJyYXkqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uT2JqZWN0S2V5cyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiBKU0FycmF5KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEtl
eXNPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKK0pTQXJy
YXkqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0FycmF5KiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25PYmplY3RDcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdENyZWF0
ZU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgV1RGX0lOVEVSTkFMOwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogY29uc3RydWN0b3IsIHVpbnQzMl90IGlubGluZUNhcGFjaXR5KSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGNiNTc5NmJhMjM5MWQxODE2OTAzYzExNTVmYzcw
NzhhNzcwNzU4OTYuLjhjNmIyODM0MDA2ZDg1NmI5ZTZkNzk0NDQ4ZTNlOWJlN2ViMzYxY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTExLDcgKzExMTEsOCBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3QXJy
YXlXaXRoU2l6ZToKICAgICAgICAgY2FzZSBDcmVhdGVSZXN0OgogICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgotICAgICAgICBjYXNlIE9iamVjdEtleXM6IHsKKyAgICAgICAgY2FzZSBPYmpl
Y3RLZXlzOgorICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0FycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IGM1NjlkY2U3MjQ4NDYwNTBkMzNlMGM1NWJiNTJlZWIxZGNjZjFlY2UuLmIzMzY3MjhhNjhi
MjhlYWFmMDVjZTc1ZDdlYjI1YWZiZGIyNGNkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC00OTUsNiArNDk1LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBib29sIGlnbm8KICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgT2Jq
ZWN0Q3JlYXRlOgogICAgIGNhc2UgT2JqZWN0S2V5czoKKyAgICBjYXNlIE9iamVjdEdldE93blBy
b3BlcnR5TmFtZXM6CiAgICAgY2FzZSBTZXRMb2NhbDoKICAgICBjYXNlIFNldENhbGxlZToKICAg
ICBjYXNlIFB1dFN0YWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBkODVjNWQxNWI0YjhhNmE5MTcyZjg0ODZhNzMxMThkZDgxZTMy
Y2FlLi4wNTQwN2RmMjYzYTU3OWQxYWI5OTNhMWYxMDY4OWU0NjRjYzU4ZjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTMxNzks
NyArMTMxNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5v
ZGUpCiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzKE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBu
b2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2Fz
ZSBPYmplY3RVc2U6IHsKQEAgLTEzMjA3LDEwICsxMzIwNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaEdQ
UikpOwogICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihDQ2FsbEhl
bHBlcnM6OkVxdWFsLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2
bSgpLnN0cnVjdHVyZVN0cnVjdHVyZS0+c3RydWN0dXJlSUQoKSkpKSk7CiAKLSAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVy
ZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZE93bktleXMoKSksIHNjcmF0Y2hHUFIpOworICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3Ry
dWN0dXJlUmFyZURhdGE6Om9mZnNldE9mQ2FjaGVkUHJvcGVydHlOYW1lcyhub2RlLT5vcCgpID09
IE9iamVjdEtleXMgPyBDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZDo6S2V5cyA6IENhY2hlZFByb3Bl
cnR5TmFtZXNLaW5kOjpHZXRPd25Qcm9wZXJ0eU5hbWVzKSksIHNjcmF0Y2hHUFIpOwogCi0gICAg
ICAgICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oU3RydWN0dXJlUmFyZURhdGE6
OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSA9PSAxKTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QmVsb3dPckVxdWFsLCBzY3JhdGNo
R1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFyZURhdGE6
OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpKTsKKyAgICAgICAgICAgIEFTU0VSVChiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1Nl
bnRpbmVsKCkpID09IDEpOworICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hQdHIoQ0NhbGxIZWxwZXJzOjpCZWxvd09yRXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1Q
dHIoYml0d2lzZV9jYXN0PHZvaWQqPihTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlO
YW1lc1NlbnRpbmVsKCkpKSkpOwogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3Qgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXM7CiAKQEAgLTEzMjI0LDcgKzEzMjI0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXMoTm9kZSogbm9kZSkKIAogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dCdXRBcnJheUJ1ZmZl
ckNhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0R1BSLCAmdm0oKSwg
YXJyYXlTdHJ1Y3R1cmUsIHNjcmF0Y2gzR1BSKSk7CiAKLSAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk9iamVjdEtl
eXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
UikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5
c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEzMjM5LDcgKzEzMjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtl
eXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEtleXNP
YmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0
aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNP
YmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTMyNTQsNyArMTMyNTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0S2V5cyhOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uT2JqZWN0S2V5cywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmpl
Y3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3Bl
cnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdFJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCBkZjVmMzcwZDhmM2FkODBmMGY5MmQ0ODdkMmM4MGUyY2M5ZTM1
OTg5Li4xYjYzMjE3ZTM2YzcxZWIxZWYwYTM2ZDg5MmMwZTYxZDIwZmUzZTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDY2LDcgKzE0
NjYsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlX
aXRoU2l6ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVG9UaGlzKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlz
KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0
eU5hbWVzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZVBy
b21pc2UoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYWNmNjYxNGMwYmQyZDQyZDE4YjY4MjZmNDkzMzQx
MDYwM2MzNWUzYi4uZjZhNjYwNTlkNDYxM2M3Y2JmM2Y0MTczMzcxODJlY2QxM2RiZGY4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC0zMjMyLDggKzMyMzIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgT2JqZWN0S2V5
czogewotICAgICAgICBjb21waWxlT2JqZWN0S2V5cyhub2RlKTsKKyAgICBjYXNlIE9iamVjdEtl
eXM6CisgICAgY2FzZSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOiB7CisgICAgICAgIGNvbXBp
bGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCmluZGV4IDFiNTk2NjMyNzJhZTU3YTc0NmIzNDU3M2I4YmMxNTY1MDcz
YzNkODguLjYxMzNjNDRmN2IzMTQ5ZmNmOTY0NDZhODRkODAyZGM5MjdjOTYzZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
MzgxOCw4ICszODE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE9iamVjdEtleXM6IHsKLSAgICAg
ICAgY29tcGlsZU9iamVjdEtleXMobm9kZSk7CisgICAgY2FzZSBPYmplY3RLZXlzOgorICAgIGNh
c2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczogeworICAgICAgICBjb21waWxlT2JqZWN0S2V5
c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCmluZGV4IDBkMzA0NTMxOTJkODYwZTc3NGJlZGVkNzNkMmFlM2ZiZjI4Y2M0
OWIuLmIwNjg4NGI1MjhkMjVmZGVkZDQ2ZjgzOTE4NDk5NDI5MjIxMzY0NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CkBAIC0xNDYsNyArMTQ2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAg
IG1hY3JvKFN0cnVjdHVyZV9wcmV2aW91c09yUmFyZURhdGEsIFN0cnVjdHVyZTo6cHJldmlvdXNP
clJhcmVEYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVy
ZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1
cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzLCBTdHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRPd25LZXlzKCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRLZXlzLCBT
dHJ1Y3R1cmVSYXJlRGF0YTo6b2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3Bl
cnR5TmFtZXNLaW5kOjpLZXlzKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZVJhcmVEYXRhX2NhY2hl
ZEdldE93blByb3BlcnR5TmFtZXMsIFN0cnVjdHVyZVJhcmVEYXRhOjpvZmZzZXRPZkNhY2hlZFBy
b3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OkdldE93blByb3BlcnR5TmFtZXMp
KSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAg
bWFjcm8oSGFzaE1hcEltcGxfYnVmZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1h
cEltcGxfaGVhZCwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBhNzE4NjEzODM2MzRmMTIwMWRmMmMzOGU2NDVkMDEwNGMx
ZWZhZmI5Li45OTJjZjU4NjBlZDUwZDcyOWVkYmFiZjdkM2M0NTFmOGM4YjQyZGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMjIsNiAr
MjIyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDYWxsTnVtYmVyQ29uc3RydWN0b3I6CiAgICAgY2FzZSBPYmplY3RDcmVhdGU6CiAg
ICAgY2FzZSBPYmplY3RLZXlzOgorICAgIGNhc2UgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNl
IFRyeUdldEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggYjI2ODQyYWE1ZDkzODBjM2M3ZGVhMjQzOWM1YmUxNTAxNzU1NjQ4NS4uMDQ2
MmI0NmY3OTA5NGM1OTliM2Q5NDBkMGRlZjI0Yzk4Y2ZhNzFhYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTA3OCw3ICsxMDc4LDggQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RDcmVhdGUoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9iamVjdEtleXM6Ci0gICAgICAgICAg
ICBjb21waWxlT2JqZWN0S2V5cygpOworICAgICAgICBjYXNlIE9iamVjdEdldE93blByb3BlcnR5
TmFtZXM6CisgICAgICAgICAgICBjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVy
dHlOYW1lcygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0Ogog
ICAgICAgICAgICAgY29tcGlsZU5ld09iamVjdCgpOwpAQCAtNjU3Miw5ICs2NTczLDEwIEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShJbnQzMiwgemVy
b0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KIAotICAgIHZvaWQg
Y29tcGlsZU9iamVjdEtleXMoKQorICAgIHZvaWQgY29tcGlsZU9iamVjdEtleXNPck9iamVjdEdl
dE93blByb3BlcnR5TmFtZXMoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgTm9kZVR5cGUgb3AgPSBtX25vZGUtPm9wKCk7CiAgICAgICAgIHN3aXRjaCAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBPYmplY3RVc2U6IHsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobV9ub2RlKSkgewpAQCAtNjU5NiwxOCArNjU5OCwxOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAgICAgICAgICAgICB1bnN1cmUocmFyZURhdGFDYXNlKSwgdW5zdXJlKHNsb3dD
YXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhyYXJlRGF0YUNhc2UsIHVz
ZUNhY2hlQ2FzZSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSkgPT0gMSk7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIGNhY2hlZE93bktleXMgPSBtX291dC5sb2FkUHRyKHByZXZp
b3VzT3JSYXJlRGF0YSwgbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRPd25LZXlzKTsK
LSAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYmVsb3dPckVxdWFsKGNhY2hlZE93
bktleXMsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oU3RydWN0dXJlUmFy
ZURhdGE6OmNhY2hlZE93bktleXNTZW50aW5lbCgpKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1
cmUodXNlQ2FjaGVDYXNlKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwo
KSkgPT0gMSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIGNhY2hlZCA9IG1fb3V0LmxvYWRQdHIo
cHJldmlvdXNPclJhcmVEYXRhLCBvcCA9PSBPYmplY3RLZXlzID8gbV9oZWFwcy5TdHJ1Y3R1cmVS
YXJlRGF0YV9jYWNoZWRLZXlzIDogbV9oZWFwcy5TdHJ1Y3R1cmVSYXJlRGF0YV9jYWNoZWRHZXRP
d25Qcm9wZXJ0eU5hbWVzKTsKKyAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuYmVs
b3dPckVxdWFsKGNhY2hlZCwgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihT
dHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpKSksIHVuc3Vy
ZShzbG93Q2FzZSksIHVuc3VyZSh1c2VDYWNoZUNhc2UpKTsKIAogICAgICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHVzZUNhY2hlQ2FzZSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CiAgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0cnVjdHVyZSA9IG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIGZhc3RBcnJheSA9IGFsbG9jYXRlT2JqZWN0PEpTQXJyYXk+
KGFycmF5U3RydWN0dXJlLCBtX291dC5hZGRQdHIoY2FjaGVkT3duS2V5cywgSlNJbW11dGFibGVC
dXR0ZXJmbHk6Om9mZnNldE9mRGF0YSgpKSwgc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSk7CisgICAg
ICAgICAgICAgICAgTFZhbHVlIGZhc3RBcnJheSA9IGFsbG9jYXRlT2JqZWN0PEpTQXJyYXk+KGFy
cmF5U3RydWN0dXJlLCBtX291dC5hZGRQdHIoY2FjaGVkLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6
b2Zmc2V0T2ZEYXRhKCkpLCBzbG93QnV0QXJyYXlCdWZmZXJDYXNlKTsKICAgICAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RBcnJheSk7CiAg
ICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0J1dEFycmF5QnVmZmVyQ2FzZSwgc2xvd0Nhc2UpOwotICAg
ICAgICAgICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyLCBtX3ZtVmFsdWUsIHdlYWtTdHJ1Y3R1cmUoYXJyYXlTdHJ1Y3R1cmUpLCBj
YWNoZWRPd25LZXlzKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxs
KEludDY0LCBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgbV92bVZhbHVlLCB3ZWFrU3RydWN0dXJl
KGFycmF5U3RydWN0dXJlKSwgY2FjaGVkKTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayBzbG93QnV0QXJyYXlCdWZmZXJSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd0FycmF5KTsKICAg
ICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKQEAgLTY2MTYsNyArNjYx
OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dS
ZXN1bHRWYWx1ZSA9IGxhenlTbG93UGF0aCgKICAgICAgICAgICAgICAgICAgICAgWz0sICZ2bV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3Iodm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
T2JqZWN0S2V5c09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBnbG9iYWxPYmplY3Qs
IGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3AgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25P
YmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCks
IGdsb2JhbE9iamVjdCwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKICAgICAgICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0KTsKICAgICAgICAgICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7
CkBAIC02NjI2LDExICs2NjI4LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xv
d0J1dEFycmF5QnVmZmVyUmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93
T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2Fs
bChJbnQ2NCwgb3AgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBv
cGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBsb3dPYmplY3QobV9ub2RlLT5jaGlsZDEoKSkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25PYmplY3RLZXlzLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3AgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9i
amVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcAppbmRleCBlNGU1NzdmZmE1MmQ3NjUyOTlhMzM2NmY5NGQxYTZiYjRhYjRiOGM0Li44OTZj
MWNjZGE3ZGM4NDAwNTgwZjUyNjYzMTEyNThjNDRhMzY3YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTE1OSw2ICsxNTksOCBAQCBjb25zdCBj
aGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAi
UmVnRXhwTWF0Y2hGYXN0SW50cmluc2ljIjsKICAgICBjYXNlIE9iamVjdENyZWF0ZUludHJpbnNp
YzoKICAgICAgICAgcmV0dXJuICJPYmplY3RDcmVhdGVJbnRyaW5zaWMiOworICAgIGNhc2UgT2Jq
ZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJPYmplY3RH
ZXRPd25Qcm9wZXJ0eU5hbWVzSW50cmluc2ljIjsKICAgICBjYXNlIE9iamVjdEdldFByb3RvdHlw
ZU9mSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIk9iamVjdEdldFByb3RvdHlwZU9mSW50cmlu
c2ljIjsKICAgICBjYXNlIE9iamVjdElzSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaAppbmRleCAyYWFhNmQwYzhmMWUwZThjZTE3MTY5NWI2MmQ1YTEz
NDZjZTZmNTdmLi5iMzljNTY1MTA0NTFjMTJlOWFmYmQ5ZjI4OWE4NWJhM2I3MGQ3YzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApAQCAtOTUsNiArOTUsNyBA
QCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIFJlZ0V4cFRlc3RGYXN0SW50cmluc2lj
LAogICAgIFJlZ0V4cE1hdGNoRmFzdEludHJpbnNpYywKICAgICBPYmplY3RDcmVhdGVJbnRyaW5z
aWMsCisgICAgT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc0ludHJpbnNpYywKICAgICBPYmplY3RH
ZXRQcm90b3R5cGVPZkludHJpbnNpYywKICAgICBPYmplY3RJc0ludHJpbnNpYywKICAgICBPYmpl
Y3RLZXlzSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggOTFiNmRhZWQ1MzFmYjJhZTgyYmIzOGFkNWIw
MGU3MDg3MjhmNGQ4MC4uNjQwNTRiODA4NzZhOWYxYjRiNzJmODRlNmZhZTgyNjdlYmUzM2M3OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJh
dGlvbnMuY3BwCkBAIC0xMjcsOCArMTI3LDggQEAgdm9pZCBpdGVyYXRvckNsb3NlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVyYXRpb25SZWNvcmQKICAg
ICB9CiB9CiAKLXN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCB2YWx1ZVByb3BlcnR5T2Zmc2V0
ID0gMDsKLXN0YXRpYyBjb25zdCBQcm9wZXJ0eU9mZnNldCBkb25lUHJvcGVydHlPZmZzZXQgPSAx
Oworc3RhdGljIGNvbnN0ZXhwciBQcm9wZXJ0eU9mZnNldCB2YWx1ZVByb3BlcnR5T2Zmc2V0ID0g
MDsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgZG9uZVByb3BlcnR5T2Zmc2V0ID0g
MTsKIAogU3RydWN0dXJlKiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzkyMzVlMjNjZDM0Yzcy
YmYxNjg2ZDYwNTNiZWFkYzU1ZjcwYzM2NS4uNjM2ZWQ5NDEwZjhmYmNiZGE4MmQ0Y2ZmOWRmZDBm
NDc4MzJhOGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtOTcwLDYgKzk3MCwxNCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAg
ICAgICAgICAgaW5pdC5zZXQoY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoaW5p
dC52bSwgKmluaXQub3duZXIpKTsKICAgICAgICAgfSk7CisgICAgbV9kYXRhUHJvcGVydHlEZXNj
cmlwdG9yT2JqZWN0U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRp
YWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KGNyZWF0ZURh
dGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoaW5pdC52bSwgKmluaXQub3duZXIp
KTsKKyAgICAgICAgfSk7CisgICAgbV9hY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0
cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChjcmVhdGVBY2Nlc3NvclByb3BlcnR5
RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZShpbml0LnZtLCAqaW5pdC5vd25lcikpOworICAgICAg
ICB9KTsKICAgICAKICAgICBtX2V2YWxGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewpAQCAtMTkzNSw2ICsxOTQzLDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRl
cmF0b3JTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0SXRl
cmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9kYXRhUHJvcGVydHlE
ZXNjcmlwdG9yT2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1fYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggM2VkZGFlMzI3YzJlYmRmNjliMTMyM2Y4ODYwNDRhMGI2NjA0
M2E4NC4uNGVmNzY4M2Y0ODM2ZDJhMzExZDk0NDFmZTA5NzdmZDQ1OGViZGYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0zOTQsNiAr
Mzk0LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tYXBJdGVyYXRvclN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NldEl0ZXJhdG9yU3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9y
UmVzdWx0T2JqZWN0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX2RhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fYWNjZXNzb3JQcm9wZXJ0
eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0
cnVjdHVyZTsKQEAgLTc4NCw2ICs3ODYsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHNldEl0ZXJhdG9y
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9y
UmVzdWx0T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclJlc3VsdE9i
amVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFQcm9wZXJ0eURl
c2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBhY2Nl
c3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
bW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA0MjRlMTUxYWFlYmQyOTQzNTIx
OTRlNTRhNTc5YTNmMTJjNzhhYWYyLi45ZDI1ZTYyMjdlNDgxNmM1NDFiNjhhNWFiNzkyYTYxZjkx
ZGEzYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC04MzAsNyArODMwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jT3duS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShv
d25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSkpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5
cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJv
bHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFdURjo6bnVsbG9wdCkpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggM2E2ZjFmMzM3N2E2MTI0Y2RlMDhkNTVhNjQ5MWM1NTc0MWExZTNlZS4uODJmODBkNjJm
MGJlNjM3OGI1YzkyNWUxN2I3YWVhNThlMjZiYzc0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBzZXRQcm90b3R5cGVPZiAgICAgICAgICAgIG9i
amVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMgogICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgIG9iamVjdENvbnN0cnVjdG9yR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yICAgRG9udEVudW18RnVuY3Rpb24gMgogICBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyAg
RG9udEVudW18RnVuY3Rpb24gMQotICBnZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgIG9iamVjdENv
bnN0cnVjdG9yR2V0T3duUHJvcGVydHlOYW1lcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQor
ICBnZXRPd25Qcm9wZXJ0eU5hbWVzICAgICAgIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVy
dHlOYW1lcyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBPYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzSW50cmluc2ljCiAgIGdldE93blByb3BlcnR5U3ltYm9scyAgICAgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgIGtleXMg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Q29uc3RydWN0b3JLZXlzICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxIE9iamVjdEtleXNJbnRyaW5zaWMKICAgZGVmaW5l
UHJvcGVydHkgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5ICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKQEAgLTIzNSwxNCArMjM1LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzKEpTR2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUob2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGdsb2JhbE9i
amVjdCwgb2JqZWN0KSkpOwogfQogCi0vLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNo
ZS4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0
LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlOjpTdHJpbmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBDYWNoZWRQcm9w
ZXJ0eU5hbWVzS2luZDo6R2V0T3duUHJvcGVydHlOYW1lcykpKTsKIH0KIAogLy8gRklYTUU6IFVz
ZSB0aGUgZW51bWVyYXRpb24gY2FjaGUuCkBAIC0yNTIsNyArMjUxLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5U3ltYm9scyhK
U0dsb2JhbE9iamUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Q
cm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJv
bHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVj
dCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtMjYxLDcgKzI2MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JLZXlzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3du
UHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpFeGNsdWRlKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmpl
Y3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgRG9udEVudW1Qcm9wZXJ0aWVz
TW9kZTo6RXhjbHVkZSwgQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ6OktleXMpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC04ODYsMTYg
Kzg4NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
SXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7CiB9CiAKLUpTQXJyYXkqIG93blByb3Bl
cnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQ
cm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUg
ZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKK0pTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2Rl
IHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0
aWVzTW9kZSwgT3B0aW9uYWw8Q2FjaGVkUHJvcGVydHlOYW1lc0tpbmQ+IGtpbmQpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGJvb2wgaXNPYmplY3RLZXlzID0gcHJvcGVydHlOYW1lTW9k
ZSA9PSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzICYmIGRvbnRFbnVtUHJvcGVydGllc01vZGUg
PT0gRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6RXhjbHVkZTsKLSAgICAvLyBXZSBhdHRlbXB0IHRv
IGxvb2sgdXAgb3duIHByb3BlcnR5IGtleXMgY2FjaGUgaW4gT2JqZWN0LmtleXMgY2FzZS4KLSAg
ICBpZiAoaXNPYmplY3RLZXlzKSB7CisgICAgLy8gV2UgYXR0ZW1wdCB0byBsb29rIHVwIG93biBw
cm9wZXJ0eSBrZXlzIGNhY2hlIGluIE9iamVjdC5rZXlzIC8gT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMgY2FzZXMuCisgICAgaWYgKGtpbmQpIHsKICAgICAgICAgaWYgKExJS0VMWSghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogaW1t
dXRhYmxlQnV0dGVyZmx5ID0gb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5jYWNoZWRPd25LZXlzKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBpbW11dGFibGVCdXR0ZXJmbHkgPSBvYmplY3QtPnN0
cnVjdHVyZSh2bSktPmNhY2hlZFByb3BlcnR5TmFtZXMoa2luZC52YWx1ZSgpKSkgewogICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9yaWdp
bmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoaW1tdXRhYmxlQnV0dGVyZmx5LT5pbmRl
eGluZ01vZGUoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhC
dXR0ZXJmbHkodm0sIG51bGxwdHIsIGFycmF5U3RydWN0dXJlLCBpbW11dGFibGVCdXR0ZXJmbHkt
PnRvQnV0dGVyZmx5KCkpOwogICAgICAgICAgICAgfQpAQCAtOTEwLDExICs5MDgsMTEgQEAgSlNB
cnJheSogb3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBvYmplY3QsIFByb3BlcnQKICAgICAgICAgQVNTRVJUKHByb3BlcnR5TmFtZU1vZGUgPT0g
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyB8fCBwcm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5
TmFtZU1vZGU6OlN5bWJvbHMpOwogICAgICAgICBpZiAocHJvcGVydGllcy5zaXplKCkgPCBNSU5f
U1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFnbG9iYWxPYmpl
Y3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3RL
ZXlzKSB7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQpIHsKICAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmNhbkNhY2hlT3duS2V5cygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBjYWNoZWRCdXR0ZXJmbHkgPSBzdHJ1Y3R1cmUtPmNhY2hlZE93
bktleXNJZ25vcmluZ1NlbnRpbmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Fj
aGVkQnV0dGVyZmx5ID09IFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGluZWwo
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5jYW5DYWNoZU93blByb3Bl
cnR5TmFtZXMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogY2FjaGVkQnV0dGVy
Zmx5ID0gc3RydWN0dXJlLT5jYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChraW5k
LnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZEJ1dHRlcmZseSA9
PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRp
ZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIG5ld0J1dHRlcmZs
eSA9IEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGUodm0sIENvcHlPbldyaXRlQXJyYXlXaXRo
Q29udGlndW91cywgbnVtUHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKQEAgLTkyMywxMyAr
OTIxLDEzIEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld0J1dHRlcmZseS0+c2V0SW5kZXgodm0sIGksIGpzT3duZWRTdHJpbmcodm0s
IGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENhY2hlZE93bktleXMo
dm0sIG5ld0J1dHRlcmZseSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
LT5zZXRDYWNoZWRQcm9wZXJ0eU5hbWVzKHZtLCBraW5kLnZhbHVlKCksIG5ld0J1dHRlcmZseSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShuZXdC
dXR0ZXJmbHktPmluZGV4aW5nTW9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgYXJyYXlTdHJ1
Y3R1cmUsIG5ld0J1dHRlcmZseS0+dG9CdXR0ZXJmbHkoKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZWRCdXR0ZXJmbHkgPT0g
bnVsbHB0cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENhY2hl
ZE93bktleXModm0sIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzU2VudGluZWwoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDYWNoZWRQcm9wZXJ0
eU5hbWVzKHZtLCBraW5kLnZhbHVlKCksIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0
eU5hbWVzU2VudGluZWwoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTEwMTEsNCArMTAwOSwyNiBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydAogICAg
IHJldHVybiBrZXlzOwogfQogCitKU09iamVjdCogY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5
RGVzY3JpcHRvclNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVy
dHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9i
amVjdCk7CisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKworICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkpCisgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgZGVzY3JpcHRvci52YWx1
ZSgpKTsKKyAgICBpZiAoZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSkKKyAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPndyaXRhYmxlLCBqc0Jvb2xlYW4o
ZGVzY3JpcHRvci53cml0YWJsZSgpKSk7CisgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2Vu
dCgpKQorICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0
LCBkZXNjcmlwdG9yLmdldHRlcigpKTsKKyAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50
KCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQs
IGRlc2NyaXB0b3Iuc2V0dGVyKCkpOworICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVz
ZW50KCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
bnVtZXJhYmxlLCBqc0Jvb2xlYW4oZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKKyAgICBpZiAo
ZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkpCisgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25maWd1cmFibGUsIGpzQm9vbGVhbihkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSgpKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5oCmluZGV4IDYxY2ZjOTkzNjYxZGMyYmQyYWFlNjIzZWFkMzZjNzNlOWM4MWEx
MGIuLmI4OGMzNTk5MWUwMzkyNTAwN2Q0NTc4NDczM2Y2YTE4MTc5YWUyOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtODks
MjYgKzg5LDczIEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJnKQogICAgIHJldHVybiBhcmcudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKIH0KIAorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVj
dE9iamVjdEZyb21Qcm9wZXJ0eURlc2NyaXB0b3JTbG93KEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJik7CisKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQg
ZGF0YVByb3BlcnR5RGVzY3JpcHRvclZhbHVlUHJvcGVydHlPZmZzZXQgPSAwOworc3RhdGljIGNv
bnN0ZXhwciBQcm9wZXJ0eU9mZnNldCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yV3JpdGFibGVQcm9w
ZXJ0eU9mZnNldCA9IDE7CitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGRhdGFQcm9w
ZXJ0eURlc2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQgPSAyOworc3RhdGljIGNvbnN0
ZXhwciBQcm9wZXJ0eU9mZnNldCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJv
cGVydHlPZmZzZXQgPSAzOworCitzdGF0aWMgY29uc3RleHByIFByb3BlcnR5T2Zmc2V0IGFjY2Vz
c29yUHJvcGVydHlEZXNjcmlwdG9yR2V0UHJvcGVydHlPZmZzZXQgPSAwOworc3RhdGljIGNvbnN0
ZXhwciBQcm9wZXJ0eU9mZnNldCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvclNldFByb3BlcnR5
T2Zmc2V0ID0gMTsKK3N0YXRpYyBjb25zdGV4cHIgUHJvcGVydHlPZmZzZXQgYWNjZXNzb3JQcm9w
ZXJ0eURlc2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQgPSAyOworc3RhdGljIGNvbnN0
ZXhwciBQcm9wZXJ0eU9mZnNldCBhY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvckNvbmZpZ3VyYWJs
ZVByb3BlcnR5T2Zmc2V0ID0gMzsKKworaW5saW5lIFN0cnVjdHVyZSogY3JlYXRlRGF0YVByb3Bl
cnR5RGVzY3JpcHRvck9iamVjdFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5zdHJ1Y3R1cmVDYWNo
ZS5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSgmZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3Qub2JqZWN0UHJvdG90eXBlKCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBh
Y2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGRh
dGFQcm9wZXJ0eURlc2NyaXB0b3JWYWx1ZVByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9w
ZXJ0eU5hbWVzLT53cml0YWJsZSwgMCwgb2Zmc2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZz
ZXQgPT0gZGF0YVByb3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlUHJvcGVydHlPZmZzZXQpOworICAg
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUsIHZtLnByb3BlcnR5TmFtZXMtPmVudW1lcmFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFT
RV9BU1NFUlQob2Zmc2V0ID09IGRhdGFQcm9wZXJ0eURlc2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVy
dHlPZmZzZXQpOworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmNvbmZpZ3VyYWJsZSwgMCwgb2Zm
c2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXQgPT0gZGF0YVByb3BlcnR5RGVzY3JpcHRv
ckNvbmZpZ3VyYWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICByZXR1cm4gc3RydWN0dXJlOworfQor
CitpbmxpbmUgU3RydWN0dXJlKiBjcmVhdGVBY2Nlc3NvclByb3BlcnR5RGVzY3JpcHRvck9iamVj
dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5zdHJ1Y3R1cmVDYWNoZS5lbXB0eU9iamVjdFN0cnVj
dHVyZUZvclByb3RvdHlwZSgmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90
eXBlKCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0LCAwLCBvZmZz
ZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldCA9PSBhY2Nlc3NvclByb3BlcnR5RGVzY3Jp
cHRvckdldFByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIDAs
IG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGFjY2Vzc29yUHJvcGVydHlE
ZXNjcmlwdG9yU2V0UHJvcGVydHlPZmZzZXQpOworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmVu
dW1lcmFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9BU1NFUlQob2Zmc2V0ID09IGFjY2Vz
c29yUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0KTsKKyAgICBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25maWd1cmFibGUsIDAsIG9mZnNldCk7CisgICAgUkVMRUFTRV9B
U1NFUlQob2Zmc2V0ID09IGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJv
cGVydHlPZmZzZXQpOworICAgIHJldHVybiBzdHJ1Y3R1cmU7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9lY21hMjYyLyNzZWMtZnJvbXByb3BlcnR5ZGVzY3JpcHRvcgogaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAg
ICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotCi0gICAgaWYgKGRlc2NyaXB0b3Iu
dmFsdWUoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnZhbHVlLCBkZXNjcmlwdG9yLnZhbHVlKCkpOwotICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxl
UHJlc2VudCgpKQotICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+d3JpdGFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLndyaXRhYmxlKCkpKTsKLSAgICBpZiAo
ZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkpCi0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIGRlc2NyaXB0b3IuZ2V0dGVyKCkpOwotICAgIGlmIChk
ZXNjcmlwdG9yLnNldHRlclByZXNlbnQoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnNldCwgZGVzY3JpcHRvci5zZXR0ZXIoKSk7Ci0gICAgaWYgKGRl
c2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSkKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmVudW1lcmFibGUsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmVu
dW1lcmFibGUoKSkpOwotICAgIGlmIChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVByZXNlbnQoKSkK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbmZpZ3Vy
YWJsZSwganNCb29sZWFuKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpKTsKLQotICAgIHJldHVy
biByZXN1bHQ7CisKKyAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRl
c2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpKSB7CisgICAgICAgIGlmIChkZXNjcmlwdG9y
LnZhbHVlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZVByZXNlbnQoKSkgeworICAgICAgICAgICAg
SlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KHZtLCBnbG9iYWxPYmplY3Qt
PmRhdGFQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvclZhbHVlUHJvcGVydHlP
ZmZzZXQsIGRlc2NyaXB0b3IudmFsdWUoKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgZGF0YVByb3BlcnR5RGVzY3JpcHRvcldyaXRhYmxlUHJvcGVydHlPZmZzZXQsIGpzQm9v
bGVhbihkZXNjcmlwdG9yLndyaXRhYmxlKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0KHZtLCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yRW51bWVyYWJsZVByb3BlcnR5T2Zmc2V0LCBq
c0Jvb2xlYW4oZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBkYXRhUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJvcGVydHlP
ZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0
dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKSB7CisgICAgICAgICAg
ICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVj
dC0+YWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JHZXRQ
cm9wZXJ0eU9mZnNldCwgZGVzY3JpcHRvci5nZXR0ZXIoKSk7CisgICAgICAgICAgICByZXN1bHQt
PnB1dERpcmVjdCh2bSwgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JTZXRQcm9wZXJ0eU9mZnNl
dCwgZGVzY3JpcHRvci5zZXR0ZXIoKSk7CisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgYWNjZXNzb3JQcm9wZXJ0eURlc2NyaXB0b3JFbnVtZXJhYmxlUHJvcGVydHlPZmZzZXQsIGpz
Qm9vbGVhbihkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkpOworICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIGFjY2Vzc29yUHJvcGVydHlEZXNjcmlwdG9yQ29uZmlndXJhYmxlUHJvcGVy
dHlPZmZzZXQsIGpzQm9vbGVhbihkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb25zdHJ1
Y3RPYmplY3RGcm9tUHJvcGVydHlEZXNjcmlwdG9yU2xvdyhnbG9iYWxPYmplY3QsIGRlc2NyaXB0
b3IpOwogfQogCiAKQEAgLTExNiw3ICsxNjMsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOwog
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yU2VhbChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0Kik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlm
aWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7Ci1KU0FycmF5KiBvd25Qcm9wZXJ0eUtleXMo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJv
cGVydGllc01vZGUpOworSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqLCBQcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3BlcnRpZXNNb2RlLCBPcHRp
b25hbDxDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZD4pOwogYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRv
cihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHAKaW5kZXggYzc4YTdhNDZmZjNhMDljZWJjZWFiNjhiMDQ1ZGQ4ZWIyMGQy
MjAxOC4uMzIyNTVmOGU2YTA3NjhhZWVlYjZlODQ4Y2Y5OGRlM2E5NjZhOWM3YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTIyMiw3
ICsyMjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25L
ZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0Il9zKSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0
KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGll
c01vZGU6OkluY2x1ZGUpKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4o
dGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJv
cGVydGllc01vZGU6OkluY2x1ZGUsIFdURjo6bnVsbG9wdCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2ZW50ZXh0ZW5zaW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjJjZDQyYmI1
ZjAzYWFjYTU1ZjY4MDVjMGI1ZDNjZDE2MTlkNjViMC4uMWZhYmY4Y2UwOGFlYTM4ZDczODUwOTZj
NmY3OGQzZGRlYWVjMzI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCkBAIC0xNDA5LDcgKzE0MDksNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iq
IFN0cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0CiAKIGJvb2wg
U3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mIHZtKSBjb25zdAog
ewotICAgIGlmICghdGhpcy0+Y2FuQ2FjaGVPd25LZXlzKCkpCisgICAgaWYgKCF0aGlzLT5jYW5D
YWNoZU93blByb3BlcnR5TmFtZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3Ry
dWN0dXJlQ2hhaW4qIHN0cnVjdHVyZUNoYWluID0gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQo
KTsKQEAgLTE0MjAsNyArMTQyMCw3IEBAIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3BlcnR5
TmFtZUVudW1lcmF0b3IoVk0mIHZtKSBjb25zdAogICAgICAgICBpZiAoIXN0cnVjdHVyZUlEKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dm0uZ2V0U3RydWN0dXJlKHN0cnVjdHVyZUlEKTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmNh
bkNhY2hlT3duS2V5cygpKQorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+Y2FuQ2FjaGVPd25Qcm9w
ZXJ0eU5hbWVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGN1cnJlbnRT
dHJ1Y3R1cmVJRCsrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKaW5kZXggYTAwNDAxMGFiNGVhMzU3YzgyNGI1N2U4ZTU2NTEwN2NmNjFmZjQxNC4uMzg5
OWQxNmZiYjcxZjEzZmYwNGEzYWFjY2Y3YmI0MzVhMjczNmUyNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTUyMiwxMCArNTIyLDEwIEBAIGNsYXNzIFN0
cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgY2FuQ2FjaGVQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBjYW5BY2Nlc3NQcm9wZXJ0aWVz
UXVpY2tseUZvckVudW1lcmF0aW9uKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldENhY2hlZE93bktl
eXMoVk0mLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSopOwotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBjYWNoZWRPd25LZXlzKCkgY29uc3Q7Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCkgY29uc3Q7Ci0gICAgYm9vbCBjYW5DYWNoZU93bktl
eXMoKSBjb25zdDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkUHJvcGVydHlOYW1l
cyhDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZCkgY29uc3Q7CisgICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGNhY2hlZFByb3BlcnR5TmFtZXNJZ25vcmluZ1NlbnRpbmVsKENhY2hlZFByb3BlcnR5TmFt
ZXNLaW5kKSBjb25zdDsKKyAgICB2b2lkIHNldENhY2hlZFByb3BlcnR5TmFtZXMoVk0mLCBDYWNo
ZWRQcm9wZXJ0eU5hbWVzS2luZCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsKKyAgICBib29sIGNh
bkNhY2hlT3duUHJvcGVydHlOYW1lcygpIGNvbnN0OwogCiAgICAgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzRnJvbVN0cnVjdHVyZShWTSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oCmluZGV4IGFmN2QxYWRlYWJjODljZWFkYjNmYzZhZjQ3YTFhYjhiNzJlMjE3YmEuLjFjZjZm
ODdmYjkwODdkYjlhOWQ0YzRjNTBhOGViYTNjN2MwMTAxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTI0MiwyNiArMjQyLDI2
IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6dHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZVRvRmluZCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGlu
ZSB2b2lkIFN0cnVjdHVyZTo6c2V0Q2FjaGVkT3duS2V5cyhWTSYgdm0sIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBvd25LZXlzKQoraW5saW5lIHZvaWQgU3RydWN0dXJlOjpzZXRDYWNoZWRQcm9wZXJ0
eU5hbWVzKFZNJiB2bSwgQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQga2luZCwgSlNJbW11dGFibGVC
dXR0ZXJmbHkqIGNhY2hlZCkKIHsKLSAgICBlbnN1cmVSYXJlRGF0YSh2bSktPnNldENhY2hlZE93
bktleXModm0sIG93bktleXMpOworICAgIGVuc3VyZVJhcmVEYXRhKHZtKS0+c2V0Q2FjaGVkUHJv
cGVydHlOYW1lcyh2bSwga2luZCwgY2FjaGVkKTsKIH0KIAotaW5saW5lIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZE93bktleXMoKSBjb25zdAoraW5saW5lIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5TmFtZXMoQ2FjaGVkUHJvcGVy
dHlOYW1lc0tpbmQga2luZCkgY29uc3QKIHsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRPd25LZXlz
KCk7CisgICAgcmV0dXJuIHJhcmVEYXRhKCktPmNhY2hlZFByb3BlcnR5TmFtZXMoa2luZCk7CiB9
CiAKLWlubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSogU3RydWN0dXJlOjpjYWNoZWRPd25LZXlz
SWdub3JpbmdTZW50aW5lbCgpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0
cnVjdHVyZTo6Y2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5nU2VudGluZWwoQ2FjaGVkUHJvcGVy
dHlOYW1lc0tpbmQga2luZCkgY29uc3QKIHsKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRPd25LZXlz
SWdub3JpbmdTZW50aW5lbCgpOworICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRQcm9wZXJ0
eU5hbWVzSWdub3JpbmdTZW50aW5lbChraW5kKTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJl
OjpjYW5DYWNoZU93bktleXMoKSBjb25zdAoraW5saW5lIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNo
ZU93blByb3BlcnR5TmFtZXMoKSBjb25zdAogewogICAgIGlmIChpc0RpY3Rpb25hcnkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDMxNWYwZDlhYTM1YjlkODk2MTFhMTE2ODRj
ODE3NmNkNmIzYWY2ZjcuLjVkOWViMzgwMjJmMDgxZmRmYWNmYzI5OGE5OTY2ZDVhNjFlNGM2YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJl
RGF0YS5jcHAKQEAgLTc2LDkgKzc2LDExIEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKHRoaXNPYmplY3QtPm9iamVjdFRvU3RyaW5nVmFsdWUoKSk7CiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKLSAgICBh
dXRvKiBjYWNoZWRPd25LZXlzID0gdGhpc09iamVjdC0+bV9jYWNoZWRPd25LZXlzLnVudmFsaWRh
dGVkR2V0KCk7Ci0gICAgaWYgKGNhY2hlZE93bktleXMgIT0gY2FjaGVkT3duS2V5c1NlbnRpbmVs
KCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2FjaGVkT3duS2V5cyk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZDYWNoZWRQcm9wZXJ0
eU5hbWVzOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8qIGNhY2hlZCA9IHRoaXNPYmplY3QtPm1f
Y2FjaGVkUHJvcGVydHlOYW1lc1tpbmRleF0udW52YWxpZGF0ZWRHZXQoKTsKKyAgICAgICAgaWYg
KGNhY2hlZCAhPSBjYWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSkKKyAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2FjaGVkKTsKKyAgICB9CiB9CiAKIC8vIC0tLS0tLS0t
LS0tIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKSBoZWxwZXIgd2F0Y2hwb2ludCBjbGFzc2Vz
IC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuaAppbmRleCAwMWQ4NTE1ODM4ZDRmZWJmYzVmNzBlMGRlM2RhMDNjZWM3ZGE5
N2M0Li44MjkzY2RjNTllZDE1N2RlY2Y2NzFmYWRmMWYxOTUyNTk2MGM0NDc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTM3
LDYgKzM3LDExIEBAIGNsYXNzIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIGNsYXNzIFN0cnVj
dHVyZTsKIGNsYXNzIE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50OwogY2xhc3MgT2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ7CitlbnVtIGNsYXNzIENhY2hlZFByb3BlcnR5TmFtZXNLaW5kIDogdWludDhfdCB7CisgICAg
S2V5cyA9IDAsCisgICAgR2V0T3duUHJvcGVydHlOYW1lcywKK307CitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mQ2FjaGVkUHJvcGVydHlOYW1lcyA9IDI7CiAKIGNsYXNzIFN0cnVj
dHVyZVJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CkBAIC03NCwyMSAr
NzksMjEgQEAgY2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0
b3IoKSBjb25zdDsKICAgICB2b2lkIHNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0m
LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKTsKIAotICAgIEpTSW1tdXRhYmxlQnV0dGVyZmx5
KiBjYWNoZWRPd25LZXlzKCkgY29uc3Q7Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hl
ZE93bktleXNJZ25vcmluZ1NlbnRpbmVsKCkgY29uc3Q7Ci0gICAgSlNJbW11dGFibGVCdXR0ZXJm
bHkqIGNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdDsKLSAgICB2b2lkIHNldENhY2hl
ZE93bktleXMoVk0mLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSopOworICAgIEpTSW1tdXRhYmxlQnV0
dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kKSBjb25z
dDsKKyAgICBKU0ltbXV0YWJsZUJ1dHRlcmZseSogY2FjaGVkUHJvcGVydHlOYW1lc0lnbm9yaW5n
U2VudGluZWwoQ2FjaGVkUHJvcGVydHlOYW1lc0tpbmQpIGNvbnN0OworICAgIEpTSW1tdXRhYmxl
QnV0dGVyZmx5KiBjYWNoZWRQcm9wZXJ0eU5hbWVzQ29uY3VycmVudGx5KENhY2hlZFByb3BlcnR5
TmFtZXNLaW5kKSBjb25zdDsKKyAgICB2b2lkIHNldENhY2hlZFByb3BlcnR5TmFtZXMoVk0mLCBD
YWNoZWRQcm9wZXJ0eU5hbWVzS2luZCwgSlNJbW11dGFibGVCdXR0ZXJmbHkqKTsKIAogICAgIEJv
eDxJbmxpbmVXYXRjaHBvaW50U2V0PiBjb3B5U2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIGNvbnN0IEJveDxJbmxp
bmVXYXRjaHBvaW50U2V0PiYgc2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9seVByb3RvV2F0Y2hwb2ludDsgfQogICAgIHZvaWQgc2V0U2hhcmVkUG9seVByb3Rv
V2F0Y2hwb2ludChCb3g8SW5saW5lV2F0Y2hwb2ludFNldD4mJiBzaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KSB7IG1fcG9seVByb3RvV2F0Y2hwb2ludCA9IFdURk1vdmUoc2hhcmVkUG9seVByb3Rv
V2F0Y2hwb2ludCk7IH0KICAgICBib29sIGhhc1NoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BvbHlQcm90b1dhdGNocG9pbnQpOyB9
CiAKLSAgICBzdGF0aWMgSlNJbW11dGFibGVCdXR0ZXJmbHkqIGNhY2hlZE93bktleXNTZW50aW5l
bCgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0ltbXV0YWJsZUJ1dHRlcmZseSo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMSkpOyB9CisgICAgc3RhdGljIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBj
YWNoZWRQcm9wZXJ0eU5hbWVzU2VudGluZWwoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNJbW11
dGFibGVCdXR0ZXJmbHkqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQogCi0gICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhY2hlZE93bktleXMoKQorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZDYWNoZWRQcm9wZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kIGtp
bmQpCiAgICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZVJhcmVE
YXRhLCBtX2NhY2hlZE93bktleXMpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZVJhcmVEYXRhLCBtX2NhY2hlZFByb3BlcnR5TmFtZXMpICsgc2l6ZW9mKFdyaXRlQmFy
cmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4pICogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQp
OwogICAgIH0KIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkBAIC0xMDksNyArMTE0LDcgQEAg
Y2xhc3MgU3RydWN0dXJlUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGhhdmUgc29tZSBzdG9yeSBmb3IgY2xlYXJpbmcgdGhlc2UgcHJvcGVy
dHkgbmFtZXMgY2FjaGVzIGluIEdDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTI2NTkKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yPiBtX2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3I7Ci0gICAgV3JpdGVCYXJyaWVy
PEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZE93bktleXM7CisgICAgV3JpdGVCYXJyaWVy
PEpTSW1tdXRhYmxlQnV0dGVyZmx5PiBtX2NhY2hlZFByb3BlcnR5TmFtZXNbbnVtYmVyT2ZDYWNo
ZWRQcm9wZXJ0eU5hbWVzXSB7IH07CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UHJvcGVydHlPZmZz
ZXQsIFJlZlB0cjxXYXRjaHBvaW50U2V0PiwgV1RGOjpJbnRIYXNoPFByb3BlcnR5T2Zmc2V0Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxQcm9wZXJ0eU9mZnNldD4+IFByb3Bl
cnR5V2F0Y2hwb2ludE1hcDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvcGVydHlXYXRjaHBvaW50
TWFwPiBtX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCmluZGV4IGUy
ZmQ1MDRhYzZiYTE4ZjRkYjJkN2E5MzEwMDczMGM1MDlhMWZkZTYuLjllZmEwOTAxZWNiNzVhZWE1
MDBmN2Y1OWI5NTRhZGU2MWUzYWE1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oCkBAIC02MiwzOCArNjIs
MzggQEAgaW5saW5lIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldENhY2hlZFByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoVk0mIHZtLCBKU1Byb3BlcnQKICAgICBtX2NhY2hlZFByb3BlcnR5TmFtZUVu
dW1lcmF0b3Iuc2V0KHZtLCB0aGlzLCBlbnVtZXJhdG9yKTsKIH0KIAotaW5saW5lIEpTSW1tdXRh
YmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkT3duS2V5cygpIGNvbnN0Citp
bmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRQcm9w
ZXJ0eU5hbWVzKENhY2hlZFByb3BlcnR5TmFtZXNLaW5kIGtpbmQpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwotICAgIGF1dG8qIGJ1dHRlcmZseSA9IG1fY2Fj
aGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgpOwotICAgIGlmIChidXR0ZXJmbHkgPT0gY2FjaGVk
T3duS2V5c1NlbnRpbmVsKCkpCisgICAgYXV0byogYnV0dGVyZmx5ID0gbV9jYWNoZWRQcm9wZXJ0
eU5hbWVzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV0udW52YWxpZGF0ZWRHZXQoKTsKKyAg
ICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFByb3BlcnR5TmFtZXNTZW50aW5lbCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYnV0dGVyZmx5OwogfQogCi1pbmxpbmUgSlNJ
bW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVyZVJhcmVEYXRhOjpjYWNoZWRPd25LZXlzSWdub3Jp
bmdTZW50aW5lbCgpIGNvbnN0CitpbmxpbmUgSlNJbW11dGFibGVCdXR0ZXJmbHkqIFN0cnVjdHVy
ZVJhcmVEYXRhOjpjYWNoZWRQcm9wZXJ0eU5hbWVzSWdub3JpbmdTZW50aW5lbChDYWNoZWRQcm9w
ZXJ0eU5hbWVzS2luZCBraW5kKSBjb25zdAogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRo
cmVhZCgpKTsKLSAgICByZXR1cm4gbV9jYWNoZWRPd25LZXlzLnVudmFsaWRhdGVkR2V0KCk7Cisg
ICAgcmV0dXJuIG1fY2FjaGVkUHJvcGVydHlOYW1lc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2lu
ZCldLnVudmFsaWRhdGVkR2V0KCk7CiB9CiAKLWlubGluZSBKU0ltbXV0YWJsZUJ1dHRlcmZseSog
U3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZE93bktleXNDb25jdXJyZW50bHkoKSBjb25zdAoraW5s
aW5lIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVy
dHlOYW1lc0NvbmN1cnJlbnRseShDYWNoZWRQcm9wZXJ0eU5hbWVzS2luZCBraW5kKSBjb25zdAog
ewotICAgIGF1dG8qIGJ1dHRlcmZseSA9IG1fY2FjaGVkT3duS2V5cy51bnZhbGlkYXRlZEdldCgp
OwotICAgIGlmIChidXR0ZXJmbHkgPT0gY2FjaGVkT3duS2V5c1NlbnRpbmVsKCkpCisgICAgYXV0
byogYnV0dGVyZmx5ID0gbV9jYWNoZWRQcm9wZXJ0eU5hbWVzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihraW5kKV0udW52YWxpZGF0ZWRHZXQoKTsKKyAgICBpZiAoYnV0dGVyZmx5ID09IGNhY2hlZFBy
b3BlcnR5TmFtZXNTZW50aW5lbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gYnV0dGVyZmx5OwogfQogCi1pbmxpbmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2Fj
aGVkT3duS2V5cyhWTSYgdm0sIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0ZXJmbHkpCitpbmxp
bmUgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0Q2FjaGVkUHJvcGVydHlOYW1lcyhWTSYgdm0s
IENhY2hlZFByb3BlcnR5TmFtZXNLaW5kIGtpbmQsIEpTSW1tdXRhYmxlQnV0dGVyZmx5KiBidXR0
ZXJmbHkpCiB7Ci0gICAgaWYgKGJ1dHRlcmZseSA9PSBjYWNoZWRPd25LZXlzU2VudGluZWwoKSkg
ewotICAgICAgICBtX2NhY2hlZE93bktleXMuc2V0V2l0aG91dFdyaXRlQmFycmllcihidXR0ZXJm
bHkpOworICAgIGlmIChidXR0ZXJmbHkgPT0gY2FjaGVkUHJvcGVydHlOYW1lc1NlbnRpbmVsKCkp
IHsKKyAgICAgICAgbV9jYWNoZWRQcm9wZXJ0eU5hbWVzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihr
aW5kKV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX2NhY2hlZE93bktl
eXMuc2V0KHZtLCB0aGlzLCBidXR0ZXJmbHkpOworICAgIG1fY2FjaGVkUHJvcGVydHlOYW1lc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldLnNldCh2bSwgdGhpcywgYnV0dGVyZmx5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU5YTgxMDg3ODAwOWViN2E0Y2Y5OGQxZDg5NTVlNTA5ZWYx
YjI1ZmMuLjExZjg0YmMzOGM3YmU0NDA2MDg2OWMxZThiNzYwZjQ0M2Y4MzZmZTggMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDggQEAKKzIwMjAtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBBZGQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgY2FjaGluZyBhcyBp
dCBpcyBkb25lIGZvciBPYmplY3Qua2V5cywgYW5kIGFjY2VsZXJhdGUgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpz
OiBBZGRlZC4KKyAgICAgICAgKG9iamVjdC5nZXQgdGVzdCk6CisgICAgICAgIChvYmplY3Quc2V0
IHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJhZC10aW1l
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWRmZy5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mva2V5cy1iYWQt
dGltZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiBzdHJlc3Mva2V5cy1kZmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5
LW5hbWVzLWNhY2hlZC16ZXJvLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1l
cy1jaGFuZ2VkLWF0dHJpYnV0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFt
ZXMtY2hhbmdlZC1pbmRleC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMt
Y2hhbmdlZC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKiBzdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtaW5kZXhlZC1u
b24tY2FjaGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6
CisgICAgICAgICogc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRl
cy1nZXQtcHJvcGVydHktbmFtZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAodGVzdCk6CisgICAgICAgIChub0lubGluZSk6CisgICAgICAgICogc3RyZXNzL29iamVj
dC1rZXlzLWNhY2hlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHN5
bWJvbCk6CisKIDIwMjAtMDgtMTkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIEludHJvZHVjZSBPcElzQ2FsbGFibGUgYnl0ZWNvZGUgYW5kIGludHJp
bnNpYwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LW93bi1wcm9wZXJ0
eS1kZXNjcmlwdG9yLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZ2V0LW93bi1wcm9wZXJ0
eS1kZXNjcmlwdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNDc2MzEzNDA3ZDBiYmE1MzZkM2FmZGYyMjI2
MWIxODVjZDMxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9n
ZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMKQEAgLTAsMCArMSwxMSBAQAordmFyIG9iamVj
dCA9IHsKKyAgICBnZXQgdGVzdCgpIHsgcmV0dXJuIDQyOyB9LAorICAgIHNldCB0ZXN0KHZhbHVl
KSB7IH0sCisgICAgdmFsdWU6IDU1Cit9OworCisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpIHsKKyAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInRlc3Qi
KTsKKyAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInZhbHVlIik7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWJh
ZC10aW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1iYWQtdGlt
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNjVmY2Q1NWVmMGQ0Y2M2MWNmMDdkMzcwZWZlMjMyNjkwYTY2ODEx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LW93bi1wcm9wZXJ0eS1uYW1l
cy1iYWQtdGltZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJl
KTsKKwordmFyIG9iamVjdCA9IHsKKyAgICBhOiA0MiwKKyAgICBiOiAzMywKK307CitPYmplY3Qu
ZGVmaW5lUHJvcGVydHkob2JqZWN0LCAiYyIsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAg
ICB3cml0YWJsZTogdHJ1ZSwKKyAgICB2YWx1ZTogNDQKK30pOworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cit9Citub0lu
bGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiXWApOworT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgMTAsIHsKKyAgICB2YWx1ZTogNDIKK30pOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkodGVzdCgpKSwgYFsiYSIsImIiLCJjIl1gKTsKK3Nob3VsZEJl
KEpTT04uc3RyaW5naWZ5KHRlc3QoKSksIGBbImEiLCJiIiwiYyJdYCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWRmZy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dldC1vd24tcHJvcGVydHktbmFtZXMtZGZnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjOGFmZTNlYTZm
OTgxYjJmMjE1Mjc2MDFkZWQ0MDkyNGMxZGYyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZXQtb3duLXByb3BlcnR5LW5hbWVzLWRmZy5qcwpAQCAtMCwwICsxLDI3IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKwordmFyIG9iamVjdCA9IHsKKyAgICBhOiA0MiwK
KyAgICBiOiAzMywKK307CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAiYyIsIHsKKyAg
ICBlbnVtZXJhYmxlOiBmYWxzZSwKKyAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICB2YWx1ZTogNDQK
K30pOworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTU7ICsraSkKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwi
YiIsImMiXWApOworb2JqZWN0LmQgPSA0MjsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3Qo
KSksIGBbImEiLCJiIiwiYyIsImQiXWApOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImMiLCJkIl1g
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2tleXMtYmFkLXRpbWUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9rZXlzLWJhZC10aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZTQ2NTFmZjIxMWQyMDA2Nzlj
OTcxMzhkOTU5YTIyZGE1N2IyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9r
ZXlzLWJhZC10aW1lLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxk
QmUpOworCit2YXIgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAor
ICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHRlc3QoKSksIGBbImEiLCJiIl1gKTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5w
cm90b3R5cGUsIDEwLCB7CisgICAgdmFsdWU6IDQyCit9KTsKK3Nob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHRlc3QoKSksIGBbImEiLCJiIl1gKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRlc3Qo
KSksIGBbImEiLCJiIl1gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2tleXMtZGZnLmpz
IGIvSlNUZXN0cy9zdHJlc3Mva2V5cy1kZmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEwOGM1MjcxMjE3ODNj
NTc4YzJhOGYwM2QyMzk5YjhmODIyYWUyOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2tleXMtZGZnLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxk
QmUpOworCit2YXIgb2JqZWN0ID0geworICAgIGE6IDQyLAorICAgIGI6IDMzLAorfTsKK09iamVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJjIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlLAor
ICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIHZhbHVlOiA0NAorfSk7CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHRlc3QoKSksIGBbImEiLCJiIl1gKTsKK29iamVjdC5kID0gNDI7CitzaG91bGRCZShKU09O
LnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwiYiIsImQiXWApOworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTU7ICsraSkKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KCkpLCBgWyJhIiwi
YiIsImQiXWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJv
cGVydHktbmFtZXMtY2FjaGVkLXplcm8uanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93
bi1wcm9wZXJ0eS1uYW1lcy1jYWNoZWQtemVyby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTZiY2NkODUwZjVk
NDQwZmQ2MDgwOWEzNjM5ODkxOTQ0M2IzMjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2FjaGVkLXplcm8uanMKQEAgLTAs
MCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1
cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3Qp
OworCit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3Ro
LCAwKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBd
ID0gaTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1
bHRbMF0sIGkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24t
cHJvcGVydHktbmFtZXMtY2hhbmdlZC1hdHRyaWJ1dGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2VkLWF0dHJpYnV0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lYzNkNDRkZmNiNjk0MGE4OTE2NGEzNjdlNGEwNDkxNDU4YzJhNzBjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtY2hhbmdl
ZC1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0
KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0
KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0geyBDb2NvYTogNDIgfTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmpl
Y3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3Vs
dFswXSwgJ0NvY29hJyk7Cit9CisKK1JlZmxlY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAnQ29j
b2EnLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2UKK30pOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRC
ZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sICdDb2NvYScpOwor
fQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFt
ZXMtY2hhbmdlZC1pbmRleC5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3Bl
cnR5LW5hbWVzLWNoYW5nZWQtaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhMDg4YTQyOGU4M2MyYmQy
ZGQxZjliYWY5ZDUwZmVkNjI1NDBmOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQtaW5kZXguanMKQEAgLTAsMCAr
MSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4g
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOwor
Cit2YXIgb2JqZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAg
dmFyIHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAw
KTsKKyAgICBzaG91bGRCZShyZXN1bHRbMF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0WzBdID0g
aTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRCZShyZXN1bHRb
MF0sIGkpOworfQorCitvYmplY3RbMF0gPSA0MjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3Vs
dC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWNoYW5nZWQu
anMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1jaGFuZ2Vk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIzMjcxNzIwYjhkYjg4NDZjNjQ5MTAzZjBmZGM2OGMzOWExOWFjMGQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0
eS1uYW1lcy1jaGFuZ2VkLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24g
dGVzdChvYmplY3QpCit7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG9iamVjdCA9IHt9OworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7Cisg
ICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgMCk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCB1
bmRlZmluZWQpOworICAgIHJlc3VsdFswXSA9IGk7CisgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0
aCwgMSk7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCBpKTsKK30KKworb2JqZWN0LkNvY29hID0g
NDI7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IHRl
c3Qob2JqZWN0KTsKKyAgICBzaG91bGRCZShyZXN1bHQubGVuZ3RoLCAxKTsKKyAgICBzaG91bGRC
ZShyZXN1bHRbMF0sICdDb2NvYScpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMtaW5kZXhlZC1ub24tY2FjaGUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1pbmRleGVkLW5vbi1jYWNoZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNWFlZDI3NTM4ZTczMTgxN2YxODE3NmZmN2ZkYTIxYjU4NTk2MzkxCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWdldC1vd24tcHJvcGVydHkt
bmFtZXMtaW5kZXhlZC1ub24tY2FjaGUuanMKQEAgLTAsMCArMSwyNSBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgb2JqZWN0ID0gezA6IDQy
fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gdGVz
dChvYmplY3QpOworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDEpOworICAgIHNob3VsZEJl
KHJlc3VsdFswXSwgJzAnKTsKK30KK29iamVjdFsxXSA9IDQ0OworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTM7ICsraSkgeworICAgIHZhciByZXN1bHQgPSB0ZXN0KG9iamVjdCk7CisgICAgc2hvdWxk
QmUocmVzdWx0Lmxlbmd0aCwgMik7CisgICAgc2hvdWxkQmUocmVzdWx0WzBdLCAnMCcpOworICAg
IHNob3VsZEJlKHJlc3VsdFsxXSwgJzEnKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLW92ZXJyaWRlcy1nZXQtcHJvcGVydHktbmFt
ZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1vdmVy
cmlkZXMtZ2V0LXByb3BlcnR5LW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ODJlYWRhNDg5NTMwNzA0
MDhkN2Q3NWYyOGFjYzI1MWUxZmJlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1vdmVycmlkZXMtZ2V0LXByb3BlcnR5LW5h
bWVzLmpzCkBAIC0wLDAgKzEsNjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3Qp
Cit7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Cit9Citu
b0lubGluZSh0ZXN0KTsKKworeworICAgIGxldCBvYmplY3QgPSBuZXcgU3RyaW5nKCJDb2NvYSIp
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IHRlc3Qob2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxlbmd0aCwgNik7Cisg
ICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0
WzFdLCAnMScpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7CisgICAgICAgIHNo
b3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0WzRdLCAnNCcp
OworICAgICAgICBzaG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAgICB9CisKKyAgICBv
YmplY3QuQ29jb2EgPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3QpOworICAgIHNo
b3VsZEJlKHJlc3VsdC5sZW5ndGgsIDcpOworICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsK
KyAgICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzJdLCAn
MicpOworICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRCZShyZXN1bHRb
NF0sICc0Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnbGVuZ3RoJyk7CisgICAgc2hvdWxk
QmUocmVzdWx0WzZdLCAnQ29jb2EnKTsKK30KKworeworICAgIGxldCBvYmplY3QgPSBuZXcgU3Ry
aW5nKCJDb2NvYSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IHRlc3Qob2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUocmVzdWx0Lmxl
bmd0aCwgNik7CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFswXSwgJzAnKTsKKyAgICAgICAgc2hv
dWxkQmUocmVzdWx0WzFdLCAnMScpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbMl0sICcyJyk7
CisgICAgICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICAgICAgc2hvdWxkQmUocmVz
dWx0WzRdLCAnNCcpOworICAgICAgICBzaG91bGRCZShyZXN1bHRbNV0sICdsZW5ndGgnKTsKKyAg
ICB9CisKKyAgICBvYmplY3RbOF0gPSA0MjsKKyAgICBsZXQgcmVzdWx0ID0gdGVzdChvYmplY3Qp
OworICAgIHNob3VsZEJlKHJlc3VsdC5sZW5ndGgsIDcpOworICAgIHNob3VsZEJlKHJlc3VsdFsw
XSwgJzAnKTsKKyAgICBzaG91bGRCZShyZXN1bHRbMV0sICcxJyk7CisgICAgc2hvdWxkQmUocmVz
dWx0WzJdLCAnMicpOworICAgIHNob3VsZEJlKHJlc3VsdFszXSwgJzMnKTsKKyAgICBzaG91bGRC
ZShyZXN1bHRbNF0sICc0Jyk7CisgICAgc2hvdWxkQmUocmVzdWx0WzVdLCAnOCcpOworICAgIHNo
b3VsZEJlKHJlc3VsdFs2XSwgJ2xlbmd0aCcpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvb2JqZWN0LWtleXMtY2FjaGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3Qta2V5cy1jYWNo
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43OTU1NTgxODExYTVmNGMwMTM0OGJjZDllYzYwM2E2NDM5NTVjNDYw
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWtleXMtY2FjaGUuanMK
QEAgLTAsMCArMSwzOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBvYmplY3QgPSB7CisgICAgYTogNDIsCisg
ICAgYjogNDQsCit9OworT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgImMiLCB7CisgICAg
dmFsdWU6IDQ1LAorICAgIHdyaXRhYmxlOiB0cnVlLAorICAgIGVudW1lcmFibGU6IGZhbHNlLAor
ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKK30pOwordmFyIHN5bWJvbCA9IFN5bWJvbCgiZCIpOwor
b2JqZWN0W3N5bWJvbF0gPSA0NjsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAg
ICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhvYmplY3QpKSwgYFsiYSIsImIi
XWApCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCkpLCBgWyJhIiwiYiIsImMi
XWApCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIHNob3VsZEJlKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KVswXSwgc3ltYm9sKQorZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgIHZhciBrZXlzID0gUmVmbGVjdC5vd25LZXlzKG9iamVjdCk7
CisgICAgc2hvdWxkQmUoa2V5cy5sZW5ndGgsIDQpOworICAgIHNob3VsZEJlKGtleXNbMF0sICJh
Iik7CisgICAgc2hvdWxkQmUoa2V5c1sxXSwgImIiKTsKKyAgICBzaG91bGRCZShrZXlzWzJdLCAi
YyIpOworICAgIHNob3VsZEJlKGtleXNbM10sIHN5bWJvbCk7Cit9CitSZWZsZWN0Lm93bktleXMo
b2JqZWN0KTsKK1JlZmxlY3Qub3duS2V5cyhvYmplY3QpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KSksIGBbImEiLCJiIiwiYyJdYCkK
K1JlZmxlY3Qub3duS2V5cyhvYmplY3QpOworUmVmbGVjdC5vd25LZXlzKG9iamVjdCk7CitzaG91
bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhvYmplY3QpKSwgYFsiYSIsImIiXWApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>