<?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>180084</bug_id>
          
          <creation_ts>2017-11-28 08:58:25 -0800</creation_ts>
          <short_desc>[JSC] Use JSFixedArray for op_new_array_buffer</short_desc>
          <delta_ts>2017-12-01 00:20:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>179762</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375358</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-28 08:58:25 -0800</bug_when>
    <thetext>[JSC] Use JSFixedArray for op_new_array_buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375360</commentid>
    <comment_count>1</comment_count>
      <attachid>327754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-28 09:06:14 -0800</bug_when>
    <thetext>Created attachment 327754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375365</commentid>
    <comment_count>2</comment_count>
      <attachid>327757</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-28 09:24:09 -0800</bug_when>
    <thetext>Created attachment 327757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376733</commentid>
    <comment_count>3</comment_count>
      <attachid>327757</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-30 22:32:38 -0800</bug_when>
    <thetext>Comment on attachment 327757
Patch

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

r=me. This is a nice cleanup!

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3958
&gt; +                m_jit.store32(Imm32(u.halves[0]), MacroAssembler::Address(storageGPR, sizeof(JSValue) * index));
&gt; +                m_jit.store32(Imm32(u.halves[1]), MacroAssembler::Address(storageGPR, sizeof(JSValue) * index + sizeof(int32_t)));

I know this is old code you&apos;re modifying, but it feels outdated. Why not just use EncodedJSValue, and do this in terms of JSValue::tag()/JSValue::payload() and their offsets?

&gt; Source/JavaScriptCore/runtime/JSFixedArray.h:65
&gt; +    static JSFixedArray* create(VM&amp; vm, unsigned length)
&gt; +    {
&gt; +        auto* array = tryCreate(vm, vm.fixedArrayStructure.get(), length);
&gt; +        RELEASE_ASSERT(array);
&gt; +        return array;
&gt; +    }

It&apos;s unfortunate that this might make the bytecode generator crash. Maybe you can use tryCreate, and if it fails, you can just emit throwing an OOM exception in bytecode? Or if the bytecode generator itself has a way of throwing an exception?

Maybe it&apos;s not worth it though. I&apos;ll let you decide if you think we should do it. Or we can make it a FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376737</commentid>
    <comment_count>4</comment_count>
      <attachid>327757</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-01 00:00:30 -0800</bug_when>
    <thetext>Comment on attachment 327757
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSFixedArray.h:65
&gt;&gt; +    }
&gt; 
&gt; It&apos;s unfortunate that this might make the bytecode generator crash. Maybe you can use tryCreate, and if it fails, you can just emit throwing an OOM exception in bytecode? Or if the bytecode generator itself has a way of throwing an exception?
&gt; 
&gt; Maybe it&apos;s not worth it though. I&apos;ll let you decide if you think we should do it. Or we can make it a FIXME

Currently we do not have consistent mechanism to throw an OOM error for bytecode generation.
I think we should have this. But I think this should be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376740</commentid>
    <comment_count>5</comment_count>
      <attachid>327757</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-01 00:12:48 -0800</bug_when>
    <thetext>Comment on attachment 327757
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3958
&gt;&gt; +                m_jit.store32(Imm32(u.halves[1]), MacroAssembler::Address(storageGPR, sizeof(JSValue) * index + sizeof(int32_t)));
&gt; 
&gt; I know this is old code you&apos;re modifying, but it feels outdated. Why not just use EncodedJSValue, and do this in terms of JSValue::tag()/JSValue::payload() and their offsets?

In the case of ArrayWithDouble, we would like to store double value (as int64_t) instead of EncodedJSValue. That&apos;s why we use this style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376741</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-01 00:18:45 -0800</bug_when>
    <thetext>Committed r225385: &lt;https://trac.webkit.org/changeset/225385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376742</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-01 00:20:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/35792563&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327754</attachid>
            <date>2017-11-28 09:06:14 -0800</date>
            <delta_ts>2017-11-28 09:24:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180084-20171129020612.patch</filename>
            <type>text/plain</type>
            <size>57817</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjcwZTA3YWU3ZDNmNmYxMTIyZjI2ZjkwM2ZiY2E3Y2NhYjRhMzQ2Li5mNGI1ZGY4NDc5YmMyNTAz
MTRjMmNlZGIzOTg5ZmEzNzRlM2VhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTctMTEtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIEpTRml4ZWRBcnJheSBmb3Igb3BfbmV3X2FycmF5
X2J1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIG9wX25ld19hcnJheV9idWZmZXIsIHdlIGhhdmUgYSBzcGVjaWFsIGNvbnN0YW50IGJ1ZmZl
ciBpbiBDb2RlQmxvY2suCisgICAgICAgIEJ1dCB1c2luZyBKU0ZpeGVkQXJyYXkgaXMgYmV0dGVy
IGJlY2F1c2UsCisKKyAgICAgICAgMS4gSW4gREZHLCB3ZSBoYXZlIHNwZWNpYWwgaGFzaGluZyBt
ZWNoYW5pc20gdG8gYXZvaWQgZHVwbGljYXRpbmcgY29uc3RhbnQgYnVmZmVyIGZyb20gdGhlIHNh
bWUgQ29kZUJsb2NrLgorICAgICAgICAgICBJZiB3ZSB1c2UgSlNGaXhlZEFycmF5LCB0aGlzIGlz
IHVubmVjZXNzYXJ5IHNpbmNlIEpTRml4ZWRBcnJheSBpcyBoYW5kbGVkIGp1c3QgYXMgSlMgY29u
c3RhbnQuCisKKyAgICAgICAgMi4gSW4gYSBzdWJzZXF1ZW50IHBhdGNoWzFdLCB3ZSB3b3VsZCBs
aWtlIHRvIHN1cHBvcnQgU3ByZWFkKFBoYW50b21OZXdBcnJheUJ1ZmZlcikuIElmIE5ld0FycmF5
QnVmZmVyCisgICAgICAgICAgIGhhcyBKU0ZpeGVkQXJyYXksIHdlIGNhbiBqdXN0IGVtaXQgYSBo
ZWxkIEpTRml4ZWRBcnJheS4KKworICAgICAgICAzLiBXZSBjYW4gcmVkdWNlIGxlbmd0aCBvZiBv
cF9uZXdfYXJyYXlfYnVmZmVyIHNpbmNlIEpTRml4ZWRBcnJheSBob2xkcyB0aGlzLgorCisgICAg
ICAgIDQuIFdlIGNhbiBmb2xkIE5ld0FycmF5QnVmZmVyRGF0YSBpbnRvIHVpbnQ2NF90LiBObyBu
ZWVkIHRvIG1haW50YWluIGEgYmFnIG9mIE5ld0FycmF5QnVmZmVyRGF0YSBpbiBERkcuCisKKyAg
ICAgICAgNS4gV2UgZG8gbm90IG5lZWQgdG8gbG9vayB1cCBjb25zdGFudCBidWZmZXIgZnJvbSBD
b2RlQmxvY2sgaWYgYnVmZmVyIGRhdGEgaXMgbmVjZXNzYXJ5LiBPdXIgTmV3QXJyYXlCdWZmZXIK
KyAgICAgICAgICAgREZHIG5vZGUgaGFzIEpTRml4ZWRBcnJheSBhcyBpdHMgY2VsbE9wZXJhbmQu
IFRoaXMgbWFrZXMgbWF0ZXJpYWxpemluZyBQaGFudG9tTmV3QXJyYXlCdWZmZXIgZWFzeSwgd2hp
Y2gKKyAgICAgICAgICAgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIFsxXS4KKworICAgICAgICBbMV06
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk3NjIKKworICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bWJlck9mQ29uc3RhbnRCdWZmZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRDb25zdGFudEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXJBc1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXJDb3VudCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRDb25zdGFudEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFu
dEJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojpjb25zdGFudEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdBcnJheSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjpDb25zdGFudEJ1ZmZlcktleSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJLZXk6Om9wZXJhdG9yPT0gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjpoYXNo
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEJ1ZmZlcktleTo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50QnVmZmVyS2V5Ojpjb2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJLZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEJ1ZmZlcktleUhhc2g6OmVxdWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTmV3QXJyYXlCdWZmZXJE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpuZXdBcnJheUJ1ZmZlckRhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ZlY3Rvckxlbmd0aEhpbnQpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnZlY3Rvckxlbmd0aEhpbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNOZXdBcnJheUJ1ZmZlckRh
dGEgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NvbnN0YW50QnVmZmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdGFydENvbnN0YW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpudW1Db25zdGFudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19hcnJheV9idWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9K
U0ZpeGVkQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OmR1bXBUb1N0cmVh
bSk6CisgICAgICAgICogcnVudGltZS9KU0ZpeGVkQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNG
aXhlZEFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OmdldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTRml4ZWRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6SlNG
aXhlZEFycmF5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OnZh
bHVlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTRml4ZWRBcnJheTo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNGaXhlZEFycmF5OjpnZXQpOiBEZWxldGVkLgorCiAyMDE3LTExLTI4
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9y
dCByZWN1cnNpdmUgdGFpbCBjYWxsIG9wdGltaXphdGlvbiBmb3IgcG9seW1vcnBoaWMgY2FsbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CmluZGV4IDM1NzAxYTA4YjM2MTdkZmJiMmY1NjI5ZjMyYzkwMzZiZjZhYzNkMmIuLmVjZTg2Njhh
Y2RkNGFmYjFjYWJhZjQxNDhiOGYzMTFmMDYwM2I1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNzYzLDEwICs3NjMsOSBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IHR5cGVuYW1lIEJsb2NrOgogICAgIH0KICAgICBjYXNlIG9wX25ld19hcnJheV9i
dWZmZXI6IHsKICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICBp
bnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgYXJyYXkgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FycmF5X2J1ZmZl
ciIpOwotICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQsICVkIiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCBhcmd2LCBhcmdjKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYXJyYXkpLmRhdGEoKSk7CiAgICAgICAg
ICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KaW5kZXggYjViOGY5OWI3NWQwYjViMGVkN2M2NzdlNGY4MmI2YjIxNDY3ZDU4MC4uZDA4
N2JiZWZjZTU5ODY0ZTJkYmY1NzY4NjJmNTQzNjQ3ODdhODdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMjIsNyArMjIsNyBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5n
dGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc3By
ZWFkIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zcHJlYWQi
LCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV9i
dWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19h
cnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm90Iiwg
Imxlbmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDc1OWExZWIzZWQwZTI0OTFmNGFhZmFlMjRmZmZlOTE2NWI0ZGYy
YTIuLjEzMzQwNmU0MDI4OWY4MzE3NDgxN2ZiNTdlZWNhMDk0ZTNjZTE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zOCw3ICsz
OCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2Nr
LCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewog
ICAgIC8vIE5vIHVzZXMuCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgotICAgIGNhc2Ugb3BfbmV3
X2FycmF5X2J1ZmZlcjoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3Bfam5lcV9wdHI6
CiAgICAgY2FzZSBvcF9sb29wX2hpbnQ6CkBAIC0yMTMsNyArMjEyLDggQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgotICAgIGNh
c2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVu
dHM6CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7CiAgICAgICAgIEFTU0VSVChvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXSA+IDIpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmlu
ZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgxYjg3YzFiOTY2NzguLjFmYjNlMTQzZTk1
MTc3M2RjNjE1MzU0YzllNmZjMmFhNWZhODNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNDksNyArMzQ5LDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIAog
ICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1
ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMg
PSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgfQpAQCAt
NDYxLDEzICs0NjAsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT5oYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5jb25zdGFudEJ1ZmZlckNvdW50KCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29u
c3RhbnRCdWZmZXJzLmdyb3coY291bnQpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2s6OkNvbnN0YW50QnVmZmVyJiBidWZmZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRC
dWZmZXIoaSk7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnNb
aV0gPSBidWZmZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgaWYgKHNpemVf
dCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkp
IHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMucmVzaXplVG9G
aXQoY291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTQ1
OWExZjUwZmVjNTc2MzU3NGE2OTQ5Zjc4ZDZjNWQwODIwM2MwNC4uNzBhNzZhYzIyMDU4ZWQwZTUx
YjI4OWExMTliMTU0YjIzN2Y3ZjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtNTY4LDMwICs1NjgsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBjb25zdCBWZWN0b3I8Qml0VmVjdG9yPiYgYml0VmVjdG9ycygpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5iaXRWZWN0b3JzKCk7IH0KICAgICBjb25zdCBC
aXRWZWN0b3ImIGJpdFZlY3RvcihzaXplX3QgaSkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmJp
dFZlY3RvcihpKTsgfQogCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycy5zaXplKCk7
Ci0gICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50QnVmZmVyKGNvbnN0IFZlY3RvcjxKU1Zh
bHVlPiYgYnVmZmVyKQotICAgIHsKLSAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OwotICAgICAgICB1bnNpZ25lZCBzaXplID0gbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMu
c2l6ZSgpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycy5hcHBlbmQoYnVm
ZmVyKTsKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi0gICAgVmVjdG9yPEpTVmFsdWU+
JiBjb25zdGFudEJ1ZmZlckFzVmVjdG9yKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFu
dEJ1ZmZlcnNbaW5kZXhdOwotICAgIH0KLSAgICBKU1ZhbHVlKiBjb25zdGFudEJ1ZmZlcih1bnNp
Z25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdGFudEJ1ZmZlckFzVmVjdG9y
KGluZGV4KS5kYXRhKCk7Ci0gICAgfQotCiAgICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJu
ICZtX3ZtLT5oZWFwOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0
dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAKQEAgLTg3MSw5ICs4NDcsNiBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxI
YW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKIAotICAgICAgICAvLyBCdWZmZXJzIHVz
ZWQgZm9yIGxhcmdlIGFycmF5IGxpdGVyYWxzCi0gICAgICAgIFZlY3RvcjxWZWN0b3I8SlNWYWx1
ZT4+IG1fY29uc3RhbnRCdWZmZXJzOwotCiAgICAgICAgIC8vIEp1bXAgVGFibGVzCiAgICAgICAg
IFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVj
dG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5k
ZXggM2I0OTY1YzJkOThmNWFhZmYzZTQ5ZWRlNDA2NTY5ODIwOWQ0NWVmZS4uOTAwMTBiNWM5N2Fh
ZWRkMjUyNWI1MmI0NDVkZjgwNTg4OTBjYTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MDcsNyArNDA3LDYg
QEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6c2hyaW5rVG9GaXQoKQogICAgIGlmIChtX3JhcmVE
YXRhKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9yZWdleHBzLnNocmlua1RvRml0KCk7Ci0gICAg
ICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCA1MThmMzEzNTFkOGI5ZjdmYmNjODk0N2MxZDdhMjI1MmU1ZTY5ZjUzLi43ZTFh
ZTZiOWFkZTZkYWEyNzUxMDI5ZmRhYTE3MTI2MGMzN2I4MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzIzLDI5ICsz
MjMsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHNp
emVfdCBudW1iZXJPZlByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBWZWN0b3I8
dW5zaWduZWQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7IH0KIAotICAgIHR5cGVkZWYgVmVjdG9yPEpTVmFs
dWU+IENvbnN0YW50QnVmZmVyOwotCi0gICAgc2l6ZV90IGNvbnN0YW50QnVmZmVyQ291bnQoKSB7
IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJz
LnNpemUoKTsgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0
aCkKLSAgICB7Ci0gICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNpemUoKTsKLSAg
ICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMuYXBwZW5kKFZlY3RvcjxKU1ZhbHVl
PihsZW5ndGgpKTsKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi0gICAgY29uc3QgQ29u
c3RhbnRCdWZmZXImIGNvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9jb25zdGFudEJ1ZmZlcnNbaW5kZXhdOwotICAgIH0KLQotICAgIENvbnN0YW50QnVmZmVyJiBj
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jh
cmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzW2lu
ZGV4XTsKLSAgICB9Ci0KICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlRGF0YS5nZXQoKTsgfQogCiAgICAgaW50IGxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC00OTUsOSArNDcyLDYgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgLy8gUmFyZSBDb25zdGFudHMK
ICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxSZWdFeHA+PiBtX3JlZ2V4cHM7CiAKLSAgICAg
ICAgLy8gQnVmZmVycyB1c2VkIGZvciBsYXJnZSBhcnJheSBsaXRlcmFscwotICAgICAgICBWZWN0
b3I8Q29uc3RhbnRCdWZmZXI+IG1fY29uc3RhbnRCdWZmZXJzOwotCiAgICAgICAgIC8vIEp1bXAg
VGFibGVzCiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgx
Mjc0NGNlYmZiNWNiZjg5NzY0OTkwZTU1MC4uMjViNjRiZDNmM2YwZGUxZGM1ZTFjMDRlM2FmYjkw
NTVhNDdiMWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0zMTIwLDExICszMTIxLDYgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0
KQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRD
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5hZGRDb25zdGFudEJ1ZmZlcihsZW5ndGgpOwotfQotCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7
CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVy
LmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpAQCAtMzE2NSwxNyArMzE2MSwxNSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQq
IGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgICAgICB9CiAgICAgICAgIGlmICghaGFkVmFy
aWFibGVFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICBBU1NFUlQobGVuZ3RoID09IGNoZWNrTGVu
Z3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50QnVmZmVySW5kZXggPSBhZGRDb25z
dGFudEJ1ZmZlcihsZW5ndGgpOwotICAgICAgICAgICAgSlNWYWx1ZSogY29uc3RhbnRCdWZmZXIg
PSBtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIoY29uc3RhbnRCdWZmZXJJbmRleCkuZGF0YSgp
OworICAgICAgICAgICAgYXV0byogYXJyYXkgPSBKU0ZpeGVkQXJyYXk6OmNyZWF0ZSgqbV92bSwg
bGVuZ3RoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgICAgIGZv
ciAoRWxlbWVudE5vZGUqIG4gPSBlbGVtZW50czsgaW5kZXggPCBsZW5ndGg7IG4gPSBuLT5uZXh0
KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobi0+dmFsdWUoKS0+aXNDb25zdGFudCgpKTsK
LSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlcltpbmRleCsrXSA9IHN0YXRpY19jYXN0PENv
bnN0YW50Tm9kZSo+KG4tPnZhbHVlKCkpLT5qc1ZhbHVlKCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBhcnJheS0+c2V0KCptX3ZtLCBpbmRleCsrLCBzdGF0aWNfY2FzdDxDb25zdGFudE5vZGUqPihu
LT52YWx1ZSgpKS0+anNWYWx1ZSgqdGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZW1pdE9wY29kZShvcF9uZXdfYXJyYXlfYnVmZmVyKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNvbnN0YW50QnVmZmVySW5kZXgpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGxlbmd0aCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnRWYWx1ZShhcnJheSktPmluZGV4KCkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG5ld0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gZHN0
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNiZDQwNTJhZTVhMmI2YTA5
NzVkYTA0MGQ1YWY3Yi4uZTk1MzRiYjNhMzE1MGQ4ZmI5Y2U0MjRmNTYyYjUxMmNkNDMzYjFmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMTA0Niw4ICsxMDQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGFkZENvbnN0YW50RW1wdHlWYWx1ZSgpOwogICAgICAgICB1bnNpZ25l
ZCBhZGRSZWdFeHAoUmVnRXhwKik7CiAKLSAgICAgICAgdW5zaWduZWQgYWRkQ29uc3RhbnRCdWZm
ZXIodW5zaWduZWQgbGVuZ3RoKTsKLSAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQog
ICAgICAgICB7CiAgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRl
eHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA1MTY1NDg5MGQ3NTIxZmIyOWYw
NmRkZGIyYWJkYjljZjlhNTk4NmU2Li5lMzM1ZWFlMjVlZmIyY2RiNWNiNjdiNTM3OGM1NjA5ZWUx
OWIxZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRml4
ZWRBcnJheS5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9yLmgi
CkBAIC04MSw3NiArODIsNiBAQCBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSAmJiBPcHRpb25zOjp2ZXJib3NlREZHQnl0ZWNvZGVQYXJzaW5nKCkpCiBkYXRhTG9nKF9fVkFf
QVJHU19fKTsgXAogfSB3aGlsZSAoZmFsc2UpCiAKLWNsYXNzIENvbnN0YW50QnVmZmVyS2V5IHsK
LXB1YmxpYzoKLSAgICBDb25zdGFudEJ1ZmZlcktleSgpCi0gICAgICAgIDogbV9jb2RlQmxvY2so
MCkKLSAgICAgICAgLCBtX2luZGV4KDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBDb25zdGFu
dEJ1ZmZlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9j
b2RlQmxvY2soMCkKLSAgICAgICAgLCBtX2luZGV4KDEpCi0gICAgewotICAgIH0KLSAgICAKLSAg
ICBDb25zdGFudEJ1ZmZlcktleShDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgaW5kZXgp
Ci0gICAgICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQotICAgICAgICAsIG1faW5kZXgoaW5k
ZXgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3Rh
bnRCdWZmZXJLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY29kZUJs
b2NrID09IG90aGVyLm1fY29kZUJsb2NrCi0gICAgICAgICAgICAmJiBtX2luZGV4ID09IG90aGVy
Lm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxDb2RlQmxvY2sqPjo6aGFzaChtX2NvZGVCbG9j
aykgXiBtX2luZGV4OwotICAgIH0KLSAgICAKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9jb2RlQmxvY2sgJiYgbV9pbmRl
eDsKLSAgICB9Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jazsgfQotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9p
bmRleDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAg
IHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCi1zdHJ1Y3QgQ29uc3RhbnRCdWZmZXJLZXlIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb25zdGFudEJ1ZmZlcktleSYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29uc3Rh
bnRCdWZmZXJLZXkmIGEsIGNvbnN0IENvbnN0YW50QnVmZmVyS2V5JiBiKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGEgPT0gYjsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpERkc6
OkNvbnN0YW50QnVmZmVyS2V5PiB7Ci0gICAgdHlwZWRlZiBKU0M6OkRGRzo6Q29uc3RhbnRCdWZm
ZXJLZXlIYXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpERkc6OkNvbnN0YW50QnVm
ZmVyS2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJL
ZXk+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQogLy8gPT09IEJ5dGVDb2RlUGFyc2VyID09PQogLy8KIC8vIFRoaXMgY2xhc3Mg
aXMgdXNlZCB0byBjb21waWxlIHRoZSBkYXRhZmxvdyBncmFwaCBmcm9tIGEgQ29kZUJsb2NrLgpA
QCAtMTEwMyw4ICsxMDM0LDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIC8vIFRoZSBu
dW1iZXIgb2YgdmFyIGFyZ3MgcGFzc2VkIHRvIHRoZSBuZXh0IHZhciBhcmcgbm9kZS4KICAgICB1
bnNpZ25lZCBtX251bVBhc3NlZFZhckFyZ3M7CiAKLSAgICBIYXNoTWFwPENvbnN0YW50QnVmZmVy
S2V5LCB1bnNpZ25lZD4gbV9jb25zdGFudEJ1ZmZlckNhY2hlOwotICAgIAogICAgIHN0cnVjdCBJ
bmxpbmVTdGFja0VudHJ5IHsKICAgICAgICAgQnl0ZUNvZGVQYXJzZXIqIG1fYnl0ZUNvZGVQYXJz
ZXI7CiAgICAgICAgIApAQCAtMTEyMSw3ICsxMDUwLDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIg
ewogICAgICAgICAvLyAodGhlIG1hY2hpbmUgY29kZSBibG9jaywgd2hpY2ggaXMgdGhlIHRyYW5z
aXRpdmUsIHRob3VnaCBub3QgbmVjZXNzYXJpbHkKICAgICAgICAgLy8gZGlyZWN0LCBjYWxsZXIp
LgogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1faWRlbnRpZmllclJlbWFwOwotICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1fY29uc3RhbnRCdWZmZXJSZW1hcDsKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX3N3aXRjaFJlbWFwOwogICAgICAgICAKICAgICAgICAgLy8gVGhlc2UgYXJlIGJs
b2NrcyB3aG9zZSB0ZXJtaW5hbCBpcyBhIEp1bXAsIEJyYW5jaCBvciBTd2l0Y2gsIGFuZCB3aG9z
ZSB0YXJnZXQgaGFzIG5vdCB5ZXQgYmVlbiBsaW5rZWQuCkBAIC00NDc4LDI1ICs0NDA2LDE4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHsKLSAg
ICAgICAgICAgIGludCBzdGFydENvbnN0YW50ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBudW1Db25zdGFudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwotICAgICAgICAgICAgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmls
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAg
ICAgICAgICBOZXdBcnJheUJ1ZmZlckRhdGEgZGF0YTsKLSAgICAgICAgICAgIGRhdGEuc3RhcnRD
b25zdGFudCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29uc3RhbnRCdWZmZXJSZW1hcFtzdGFydENv
bnN0YW50XTsKLSAgICAgICAgICAgIGRhdGEubnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwor
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpLT5jb25zdGFudCgpOworICAgICAgICAgICAg
SlNGaXhlZEFycmF5KiBmaXhlZEFycmF5ID0gZnJvemVuLT5jYXN0PEpTRml4ZWRBcnJheSo+KCk7
CisgICAgICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAgIE5ld0Fy
cmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsKICAgICAgICAgICAgIGRhdGEuaW5kZXhpbmdUeXBlID0g
cHJvZmlsZS0+c2VsZWN0SW5kZXhpbmdUeXBlKCk7Ci0gICAgICAgICAgICBkYXRhLnZlY3Rvckxl
bmd0aEhpbnQgPSBzdGQ6Om1heDx1bnNpZ25lZD4ocHJvZmlsZS0+dmVjdG9yTGVuZ3RoSGludCgp
LCBudW1Db25zdGFudHMpOworICAgICAgICAgICAgZGF0YS52ZWN0b3JMZW5ndGhIaW50ID0gc3Rk
OjptYXg8dW5zaWduZWQ+KHByb2ZpbGUtPnZlY3Rvckxlbmd0aEhpbnQoKSwgZml4ZWRBcnJheS0+
bGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAvLyBJZiB0aGlzIHN0YXRlbWVudCBoYXMgbmV2ZXIg
ZXhlY3V0ZWQsIHdlJ2xsIGhhdmUgdGhlIHdyb25nIGluZGV4aW5nIHR5cGUgaW4gdGhlIHByb2Zp
bGUuCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbnN0YW50czsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YS5pbmRleGluZ1R5cGUgPQotICAgICAgICAgICAgICAgICAg
ICBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZUFuZFZhbHVlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5pbmRleGluZ1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2Nv
ZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIoZGF0YS5zdGFydENvbnN0YW50KVtpXSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBmaXhl
ZEFycmF5LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBkYXRhLmluZGV4aW5n
VHlwZSA9IGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdUeXBlQW5kVmFsdWUoZGF0YS5pbmRleGlu
Z1R5cGUsIGZpeGVkQXJyYXktPmdldChpbmRleCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX2dyYXBoLm1fbmV3QXJyYXlCdWZmZXJEYXRhLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKLSAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksIGFkZFRvR3JhcGgoTmV3QXJyYXlCdWZmZXIsIE9wSW5mbygmbV9ncmFwaC5tX25ld0Fy
cmF5QnVmZmVyRGF0YS5sYXN0KCkpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0FycmF5QnVm
ZmVyLCBPcEluZm8oZnJvemVuKSwgT3BJbmZvKGRhdGEuYXNRdWFkV29yZCkpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX25ld19hcnJheV9idWZmZXIpOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTY0MzYsNyArNjM1Nyw2IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0Vu
dHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+a2luZCA9
IGtpbmQ7CiAgICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUoY29kZUJs
b2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwotICAgICAgICBtX2NvbnN0YW50QnVmZmVyUmVt
YXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKSk7CiAgICAgICAg
IG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVz
KCkpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJP
ZklkZW50aWZpZXJzKCk7ICsraSkgewpAQCAtNjQ0NCwyMCArNjM2NCw2IEBAIEJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3Vy
ZShyZXApOwogICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSBpbmRleDsKICAgICAg
ICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJP
ZkNvbnN0YW50QnVmZmVycygpOyArK2kpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGlubGluZSB0
aGUgc2FtZSBjb2RlIGJsb2NrIG11bHRpcGxlIHRpbWVzLCB3ZSBkb24ndCB3YW50IHRvIG5lZWRs
ZXNzbHkKLSAgICAgICAgICAgIC8vIGR1cGxpY2F0ZSBpdHMgY29uc3RhbnQgYnVmZmVycy4KLSAg
ICAgICAgICAgIEhhc2hNYXA8Q29uc3RhbnRCdWZmZXJLZXksIHVuc2lnbmVkPjo6aXRlcmF0b3Ig
aXRlciA9Ci0gICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRCdWZmZXJD
YWNoZS5maW5kKENvbnN0YW50QnVmZmVyS2V5KGNvZGVCbG9jaywgaSkpOwotICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRCdWZmZXJDYWNoZS5lbmQoKSkg
ewotICAgICAgICAgICAgICAgIG1fY29uc3RhbnRCdWZmZXJSZW1hcFtpXSA9IGl0ZXItPnZhbHVl
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
VmVjdG9yPEpTVmFsdWU+JiBidWZmZXIgPSBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyQXNWZWN0
b3IoaSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdJbmRleCA9IGJ5dGVDb2RlUGFyc2VyLT5t
X2NvZGVCbG9jay0+YWRkQ29uc3RhbnRCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgIG1fY29u
c3RhbnRCdWZmZXJSZW1hcFtpXSA9IG5ld0luZGV4OwotICAgICAgICAgICAgYnl0ZUNvZGVQYXJz
ZXItPm1fY29uc3RhbnRCdWZmZXJDYWNoZS5hZGQoQ29uc3RhbnRCdWZmZXJLZXkoY29kZUJsb2Nr
LCBpKSwgbmV3SW5kZXgpOwotICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpIHsKICAgICAg
ICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51
bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwogICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1f
Y29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGkpOwpAQCAtNjQ3MiwxMiArNjM3OCw5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7
CiAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJ
ZGVudGlmaWVycygpKTsKLSAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwLnJlc2l6ZShjb2Rl
QmxvY2stPm51bWJlck9mQ29uc3RhbnRCdWZmZXJzKCkpOwogICAgICAgICBtX3N3aXRjaFJlbWFw
LnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsg
KytpKQogICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSBpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKTsg
KytpKQotICAgICAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwW2ldID0gaTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpOyArK2kpCiAgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gaTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDdjYzhmNjRiYjRjM2U3
NzkxYWY0MWM2ZTYyMmU5NTg1NmJhY2E4OGEuLjEyNTg1NTcxMWYyZjhiNzllZTZiMWZkNDBiNDJh
YjIyNzRhMGRjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAi
RE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCIKICNpbmNsdWRlICJET01KSVRTaWduYXR1cmUu
aCIKKyNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCkBAIC0xMzk0LDcgKzEzOTUsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RD
b3VudCk7CiAKLSAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBub2RlLT5udW1Db25zdGFu
dHMoKTsKKyAgICAgICAgSlNGaXhlZEFycmF5KiBhcnJheSA9IG5vZGUtPmNhc3RPcGVyYW5kPEpT
Rml4ZWRBcnJheSo+KCk7CisgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gYXJyYXktPmxl
bmd0aCgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoTG9jLCBCdXR0ZXJm
bHlfcHVibGljTGVuZ3RoLCBub2RlKSwKICAgICAgICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6
ZShqc051bWJlcihudW1FbGVtZW50cykpKSk7CiAKQEAgLTE0MjIsMTEgKzE0MjQsMTAgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIEpTVmFsdWUqIGRhdGEgPSBncmFwaC5tX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIo
bm9kZS0+c3RhcnRDb25zdGFudCgpKTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzIDwgZ3JhcGgu
bV91aW50MzJWYWx1ZXNJblVzZS5zaXplKCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG51bUVsZW1lbnRzOyArK2luZGV4KSB7CiAgICAgICAgICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUsIExhenlO
b2RlKGdyYXBoLmZyZWV6ZShqc051bWJlcihpbmRleCkpKSksCi0gICAgICAgICAgICAgICAgICAg
IExhenlOb2RlKGdyYXBoLmZyZWV6ZShkYXRhW2luZGV4XSksIG9wKSk7CisgICAgICAgICAgICAg
ICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6ZShhcnJheS0+Z2V0KGluZGV4KSksIG9wKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDMy
X3Q+IHBvc3NpYmxlSW5kaWNlczsKQEAgLTE0MzcsNyArMTQzOCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGluZGV4
IDogcG9zc2libGVJbmRpY2VzKSB7CiAgICAgICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihp
bmRleGVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUsIExhenlOb2RlKGdyYXBoLmZyZWV6ZShqc051
bWJlcihpbmRleCkpKSksCi0gICAgICAgICAgICAgICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6
ZShkYXRhW2luZGV4XSksIG9wKSk7CisgICAgICAgICAgICAgICAgICAgIExhenlOb2RlKGdyYXBo
LmZyZWV6ZShhcnJheS0+Z2V0KGluZGV4KSksIG9wKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApp
bmRleCBmYzA4ZTE2YTczNjVhZTQzYWE0YzUxNTBmYWY5NmE2YjdlOWFkNTMwLi40YzgyNzEyMzRk
MjlmNDkyMWViNWMzZDZkMWMzNTNkNWNjNDYwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcApAQCAtMzExLDE1ICszMTEsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZSogbm9kZSwgRHVtcENvbnRleHQq
CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNVbmxpbmtlZExvY2FsKCkpIAogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Nv
bnN0YW50QnVmZmVyKCkpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKLSAgICAgICAgb3V0
LnByaW50KG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgIjpbIik7Ci0gICAgICAgIENvbW1hUHJpbnRl
ciBhbm90aGVyQ29tbWE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5u
dW1Db25zdGFudHMoKTsgKytpKQotICAgICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwg
cG9pbnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihu
b2RlLT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwotICAgICAgICBvdXQucHJpbnQo
Il0iKTsKKyAgICBpZiAobm9kZS0+aGFzVmVjdG9yTGVuZ3RoSGludCgpKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJ2ZWN0b3JMZW5ndGhIaW50ID0gIiwgbm9kZS0+dmVjdG9yTGVuZ3RoSGlu
dCgpKTsKLSAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVlKCkpCiAgICAgICAgIG91
dC5wcmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0lu
ZGV4aW5nVHlwZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDk0MDJj
ZDBhZmFhNGNiNGNhMTEzZTEyODY3NTk5ZTZlZjA1ZWMwMDQuLjg3NGUxODU2MTQ1ZTVhMDk3ZTJj
Nzk2NzZlOWM2M2E3YTMyN2M5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTEwMzAsNyArMTAzMCw2IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5h
YmxlIHsKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJp
YWJsZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+
IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAgICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7
Ci0gICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1
ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERhdGE+IG1fYnJhbmNoRGF0YTsKICAgICBCYWc8U3dp
dGNoRGF0YT4gbV9zd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9t
dWx0aUdldEJ5T2Zmc2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXgg
YTY1YTg0MDZhOGZjZmFmNGQzNzY4ZDU2NjUwYTA1MTU0NzM4NTRhZC4uMGQ4MDYzNzRkNTI0OGU5
NmU1MDRhN2ZiNDRlZmNkNTFiYTY1YzNmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKQEAgLTk3LDExICs5NywxNiBAQCBzdHJ1Y3QgTXVsdGlQdXRCeU9mZnNldERhdGEgewogfTsK
IAogc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7Ci0gICAgdW5zaWduZWQgc3RhcnRDb25zdGFu
dDsKLSAgICB1bnNpZ25lZCBudW1Db25zdGFudHM7Ci0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
SGludDsKLSAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlOworICAgIHVuaW9uIHsKKyAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aEhpbnQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleGluZ1R5cGU7CisgICAgICAgIH07CisgICAgICAgIHVpbnQ2
NF90IGFzUXVhZFdvcmQ7CisgICAgfTsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbmRleGlu
Z1R5cGUpIDw9IHNpemVvZih1bnNpZ25lZCksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE5l
d0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCiBzdHJ1Y3QgQnJh
bmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJnZXQoKQpAQCAtMTA4NSwzMCArMTA5MCwyNiBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX2ZsYWdzICYgTm9kZU1heUhhdmVOb25OdW1i
ZXJSZXN1bHQ7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDb25zdGFudEJ1ZmZlcigpCisgICAgYm9v
bCBoYXNOZXdBcnJheUJ1ZmZlckRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
TmV3QXJyYXlCdWZmZXI7CiAgICAgfQogICAgIAotICAgIE5ld0FycmF5QnVmZmVyRGF0YSogbmV3
QXJyYXlCdWZmZXJEYXRhKCkKKyAgICBOZXdBcnJheUJ1ZmZlckRhdGEgbmV3QXJyYXlCdWZmZXJE
YXRhKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNDb25zdGFudEJ1ZmZlcigpKTsKLSAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPE5ld0FycmF5QnVmZmVyRGF0YSo+KCk7CisgICAgICAgIEFT
U0VSVChoYXNOZXdBcnJheUJ1ZmZlckRhdGEoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIu
YXNOZXdBcnJheUJ1ZmZlckRhdGEoKTsKICAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgc3RhcnRD
b25zdGFudCgpCisKKyAgICB1bnNpZ25lZCBoYXNWZWN0b3JMZW5ndGhIaW50KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS0+c3RhcnRDb25zdGFudDsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gTmV3QXJyYXlCdWZmZXI7CiAgICAgfQogICAgIAotICAgIHVuc2ln
bmVkIG51bUNvbnN0YW50cygpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3QXJyYXlCdWZmZXJE
YXRhKCktPm51bUNvbnN0YW50czsKLSAgICB9Ci0KICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGhI
aW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS0+dmVjdG9y
TGVuZ3RoSGludDsKKyAgICAgICAgQVNTRVJUKGhhc1ZlY3Rvckxlbmd0aEhpbnQoKSk7CisgICAg
ICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS52ZWN0b3JMZW5ndGhIaW50OwogICAgIH0K
ICAgICAKICAgICBib29sIGhhc0luZGV4aW5nVHlwZSgpCkBAIC0xMTQxLDcgKzExNDIsNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzSW5kZXhpbmdUeXBlKCkpOwog
ICAgICAgICBpZiAob3AoKSA9PSBOZXdBcnJheUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiBu
ZXdBcnJheUJ1ZmZlckRhdGEoKS0+aW5kZXhpbmdUeXBlOworICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluZGV4aW5nVHlwZT4obmV3QXJyYXlCdWZmZXJEYXRhKCkuaW5kZXhpbmdUeXBl
KTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluZGV4aW5nVHlwZT4obV9vcEluZm8uYXM8
dWludDMyX3Q+KCkpOwogICAgIH0KICAgICAKQEAgLTE2MzksNiArMTY0MCw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVy
aWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAg
IGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAg
ICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgpA
QCAtMjc1Niw2ICsyNzU4LDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHUucG9pbnRl
ciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0oTmV3QXJy
YXlCdWZmZXJEYXRhIG5ld0FycmF5QnVmZmVyRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAg
dS5pbnQ2NCA9IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obmV3QXJyYXlCdWZmZXJEYXRhKTsKKyAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlCiAgICAgICAgIHsKQEAgLTI3ODAsNiArMjc4NywxMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVy
ZT4odS5wb2ludGVyKTsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIE5ld0FycmF5
QnVmZmVyRGF0YSBhc05ld0FycmF5QnVmZmVyRGF0YSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TmV3QXJyYXlCdWZmZXJEYXRhPih1LmludDY0KTsK
KyAgICAgICAgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHVpbnQzMl90IGludDMy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTEx
NDc2OTQ4ZjM4N2MwZjI4YzM1NTEyZTA0NmI4MDEyOTNlNzA4Ni4uMDRhNTAyN2FmYzFkZDEzMzli
YjZhMjk5NTE5OGRiYzg0NzUwYWJjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC0xNDAzLDExICsxNDAzLDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqCiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAotY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIHNpemVfdCBzdGFydCwgc2l6ZV90IHNpemUpCitj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9pZCogZml4ZWRBcnJheSwgc2l6ZV90IHNp
emUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oY29u
c3RydWN0QXJyYXkoZXhlYywgYXJyYXlTdHJ1Y3R1cmUsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25z
dGFudEJ1ZmZlcihzdGFydCksIHNpemUpKTsKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RBcnJheShleGVjLCBhcnJheVN0cnVjdHVyZSwganNDYXN0PEpTRml4ZWRBcnJh
eSo+KGZpeGVkQXJyYXkpLT52YWx1ZXMoKSwgc2l6ZSkpOwogfQogCiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplKApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBhYmYwNmI2MjdiM2MwYTg1N2U5MDlkZjkxOTk3OWY0
NjdjNjczNDA1Li40MWVhMTFmMGJjYmIwM2ZiNWJhOWU0NzQ4MzFjZWZlNzZiMDYxNTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtODEsNyArODEsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm90b3R5
cGVPZk9iamVjdChFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdm9p
ZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwotY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3QsIHNpemVfdCkgV1RG
X0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJh
eVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopIFdU
Rl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZUFuZEhpbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCwgaW50MzJfdCwgQnV0dGVy
Zmx5KikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDU1N2MwZWE1ZTAxZjY4ZmU3MDliOTZmODRlNTMzYTlkNWRiMDFh
ZGEuLjk0OTQ2NmVhM2VjMzJmNmExNDJmNjdkY2Q0NDU1ODQyMGJhNjE0NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEwNjcsNiArMTA2
NywxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIo
cG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0UFMgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgVHJ1c3RlZEltbVB0ciBwb2lu
dGVyLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHBvaW50ZXIsIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIoaW5kZXgpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKQEAgLTE1
NzQsMTEgKzE1NzksNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVk
SW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIGludCBzdGFydENv
bnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZElt
bTMyKG51bUNvbnN0YW50cykpOwotICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVBQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CkBAIC0yMjI2LDEx
ICsyMjI2LDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0
cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBK
U1ZhbHVlUmVncyByZXN1bHQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQot
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMihzdGFydENvbnN0YW50KSwgVHJ1c3RlZEltbTMyKG51bUNvbnN0YW50cykpOwotICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSk7Ci0gICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpQIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBKU1ZhbHVlUmVncyBhcmcxLCB2b2lkKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzEucGF5
bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpLCBUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDQ1YjJlMzViMDkxY2QyMjdkZTZkOTE5ZTM3ZGE5MjIwM2ViNjNmZGMuLjBiZWNkY2Zj
ZjRkOTE5NzQ2OTI5YTEwYzg4NTkwNTQyMmM1ODY0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzkzMCw5ICsz
OTMwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgSlNGaXhlZEFycmF5KiBhcnJheSA9IG5vZGUtPmNhc3RPcGVy
YW5kPEpTRml4ZWRBcnJheSo+KCk7CisgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gYXJy
YXktPmxlbmd0aCgpOwogICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbm9kZS0+
aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRU
aW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUtPm51bUNvbnN0YW50cygpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CkBAIC0zOTQxLDI2ICszOTQyLDIxIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBz
dG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKIAogICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3
T2JqZWN0KHJlc3VsdEdQUiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRl
eGluZ1R5cGUpKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKG5vZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0
aERvdWJsZSkgewotICAgICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxv
Y2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBub2RlLT5udW1Db25zdGFudHMo
KTsgKytpbmRleCkgewotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpbnQzMl90IGhhbHZlc1syXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSB1OwotICAgICAgICAgICAgICAgICAg
ICB1LnZhbHVlID0gZGF0YVtpbmRleF0uYXNOdW1iZXIoKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9qaXQuc3RvcmUzMihJbW0zMih1LmhhbHZlc1swXSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogaW5kZXgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihJbW0zMih1LmhhbHZlc1sxXSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogaW5kZXggKyBzaXplb2YoaW50MzJfdCkp
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGludDMyX3QqIGRhdGEgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdCo+KG1faml0LmNvZGVCbG9j
aygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBub2RlLT5udW1Db25zdGFudHMo
KSAqIDI7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICAgICAgICAgIEltbTMyKGRhdGFbaW5kZXhdKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGludDMyX3QpICogaW5kZXgpKTsKLSAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IG51bUVsZW1lbnRzOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgdW5pb24geworICAgICAg
ICAgICAgICAgICAgICBpbnQzMl90IGhhbHZlc1syXTsKKyAgICAgICAgICAgICAgICAgICAgZG91
YmxlIGRvdWJsZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGVuY29kZWRWYWx1
ZTsKKyAgICAgICAgICAgICAgICB9IHU7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmluZGV4
aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgICAgICAgICAgICAgdS5kb3Vi
bGVWYWx1ZSA9IGFycmF5LT5nZXQoaW5kZXgpLmFzTnVtYmVyKCk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB1LmVuY29kZWRWYWx1ZSA9IEpTVmFsdWU6OmVuY29k
ZShhcnJheS0+Z2V0KGluZGV4KSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoZG91YmxlKSA9PSBzaXplb2YoSlNWYWx1ZSksICIiKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKEltbTMyKHUuaGFsdmVzWzBdKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgc2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKEltbTMyKHUuaGFsdmVzWzFdKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgc2l6ZW9mKEpTVmFsdWUpICogaW5kZXggKyBzaXplb2YoaW50MzJfdCkpKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5NjgsNyArMzk2
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1
ZmZlciwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5v
ZGUtPmluZGV4aW5nVHlwZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29u
c3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVy
LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgbnVt
RWxlbWVudHMpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZmE4NGVkNjYxZDRh
YzE3OTI5YWJmOTQ1ZjE3ZTZhNzIxYTJjMjA1MC4uY2NlYzlhMTA0ZTIzMjRlMWQ0YTZmYzVkMWFl
Njg2MGU5NWY3NWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00MTQwLDkgKzQxNDAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBKU0Zp
eGVkQXJyYXkqIGFycmF5ID0gbm9kZS0+Y2FzdE9wZXJhbmQ8SlNGaXhlZEFycmF5Kj4oKTsKKyAg
ICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBub2RlLT5pbmRleGluZ1R5cGUoKTsKICAgICAgICAg
aWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9y
YWdlKGluZGV4aW5nVHlwZSkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0g
bm9kZS0+bnVtQ29uc3RhbnRzKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGhI
aW50ID0gbm9kZS0+dmVjdG9yTGVuZ3RoSGludCgpOwogICAgICAgICAgICAgQVNTRVJUKHZlY3Rv
ckxlbmd0aEhpbnQgPj0gbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCkBAIC00MTU1LDIyICs0
MTU2LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRz
LCB2ZWN0b3JMZW5ndGhIaW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX0FTU0VS
VChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKLSAgICAgICAg
ICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9k
ZS0+c3RhcnRDb25zdGFudCgpKTsKLSAgICAgICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoRG91YmxlKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgbm9kZS0+bnVtQ29uc3RhbnRzKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZG91YmxlIHZhbHVlID0gZGF0YVtpbmRleF0uYXNOdW1iZXIoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3RvcmU2NCgKLSAgICAgICAgICAgICAgICAgICAgICAgIEltbTY0KGJp
dHdpc2VfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgc2l6ZW9mKGRvdWJsZSkgKiBpbmRleCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbm9kZS0+bnVtQ29uc3RhbnRzKCk7
ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmU2NCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEltbTY0KEpTVmFsdWU6OmVuY29kZShkYXRhW2luZGV4XSkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
c2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpKTsKLSAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bUVsZW1lbnRzOyArK2luZGV4
KSB7CisgICAgICAgICAgICAgICAgaW50NjRfdCB2YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAo
aW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWUgPSBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYXJyYXktPmdldChpbmRleCkuYXNOdW1iZXIoKSk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IEpTVmFs
dWU6OmVuY29kZShhcnJheS0+Z2V0KGluZGV4KSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZG91YmxlKSA9PSBzaXplb2YoSlNWYWx1ZSksICIiKTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTY0KEltbTY0KHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgc2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQxNzgsNyArNDE3Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0Lmdw
cigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCks
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgbnVtRWxlbWVudHMpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IGZkNTFjYmNhZDIwNDM5NDg0MzZmNDljYjE0YzU4NjM3Mzll
ZjQyZDAuLjIzMDUyZWI0ODA3M2UyNTkxYzRiMWYzOWI5YjI5NjE5ZGY2OWNmN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTU0MTksMjIg
KzU0MTksMjIgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKAogICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICBKU0ZpeGVkQXJyYXkqIGFycmF5ID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxK
U0ZpeGVkQXJyYXkqPigpOworICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IGFycmF5LT5s
ZW5ndGgoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FC
YWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkg
ewotICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBtX25vZGUtPm51bUNvbnN0YW50
cygpOwogICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoSGludCA9IG1fbm9kZS0+dmVj
dG9yTGVuZ3RoSGludCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3JM
ZW5ndGhIaW50ID49IG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5
VmFsdWVzID0KICAgICAgICAgICAgICAgICBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3Vz
SlNBcnJheShudW1FbGVtZW50cywgdmVjdG9yTGVuZ3RoSGludCwgc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IGNvZGVCbG9jaygpLT5jb25zdGFu
dEJ1ZmZlcihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX25vZGUtPm51bUNvbnN0YW50cygpOyArK2luZGV4KSB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1FbGVtZW50
czsgKytpbmRleCkgewogICAgICAgICAgICAgICAgIGludDY0X3QgdmFsdWU7CiAgICAgICAgICAg
ICAgICAgaWYgKGhhc0RvdWJsZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oZGF0YVtpbmRleF0uYXNOdW1i
ZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYml0d2lzZV9jYXN0PGludDY0X3Q+
KGFycmF5LT5nZXQoaW5kZXgpLmFzTnVtYmVyKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoZGF0YVtpbmRleF0pOwor
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShhcnJheS0+Z2V0KGlu
ZGV4KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCgK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NCh2YWx1ZSksCkBAIC01NDQ5LDgg
KzU0NDksOCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICB3ZWFrU3RydWN0dXJl
KHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+c3RhcnRDb25zdGFudCgpKSwK
LSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+bnVtQ29uc3RhbnRzKCkpKSk7
CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LndlYWtQb2ludGVy
KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSksCisgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihu
dW1FbGVtZW50cykpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheVdpdGhTaXpl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmODlmMjdmNjY2YTIyYWQxNDYwOGE1
NDllYjc0OTA2MzMzZWQ3NjlhLi44NzAyMjJkODEyMmFiY2I5YTg0MjQ4NGFhYTI1NWIxNDNjYWEx
ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yODQsNiArMjg0LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUCh1
bnJlYWNoYWJsZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AodGhyb3dfc3RhdGljX2Vycm9yKQog
ICAgICAgICBERUZJTkVfU0xPV19PUChuZXdfYXJyYXlfd2l0aF9zcHJlYWQpCisgICAgICAgIERF
RklORV9TTE9XX09QKG5ld19hcnJheV9idWZmZXIpCiAgICAgICAgIERFRklORV9TTE9XX09QKHNw
cmVhZCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2VudW1lcmFibGVfbGVuZ3RoKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChoYXNfZ2VuZXJpY19wcm9wZXJ0eSkKQEAgLTM3Miw3ICszNzMs
NiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9uZXFfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheSkKICAgICAgICAg
REVGSU5FX09QKG9wX25ld19hcnJheV93aXRoX3NpemUpCi0gICAgICAgIERFRklORV9PUChvcF9u
ZXdfYXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmMpCiAgICAgICAg
IERFRklORV9PUChvcF9uZXdfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiM2RkZWNkNWRlNDA3MmM5
MmViMDZmNjkzMjYxNDQ4YjBjNDdhNTVlLi5jODhjYjgyYjVmMmM0NDEzNGVlMzg2MzIwMTQyODQz
ODZhNDQxYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU0MCw3ICs1NDAsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hcnJheV93aXRoX3NpemUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hcnJheV9idWZmZXIoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19n
ZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKaW5kZXggZmI1ZDEwZjZlYjgzZDRmY2M2NmY4MzIxNWMzZDI1ODZlNjNiZTQ1
ZS4uNmFjYjdiN2ZiNTYxZmY4MTlhNmM0Zjg3NDc5ZDRjYzAwZTcyZDRiMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMDM0LDE1ICsxMDM0LDYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5X3dpdGhfc2l6ZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hcnJheV9idWZm
ZXIoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBpbnQgdmFsdWVzSW5kZXggPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGludCBzaXplID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMgPSBjb2RlQmxv
Y2soKS0+Y29uc3RhbnRCdWZmZXIodmFsdWVzSW5kZXgpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmlsZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlLCB2YWx1ZXMsIHNpemUpOwotfQotCiAjaWYgVVNF
KEpTVkFMVUU2NCkKIHZvaWQgSklUOjplbWl0X29wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGFjZDIzZThmZjhlYTYwMTg0ODE2YjBiYjI4NzA2
Y2RlNDFhNGZjZjYuLjEyYmUxOGIxNWQzYmM5NGU2M2QzZDE1NjJjZTM2NGRhNmI3ZjJlYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTE3OCwx
MyArMTE3OCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlXaXRoUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChleGVjLCBwcm9maWxlLCB2YWx1
ZXMsIHNpemUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZSogcHJvZmlsZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKLXsKLSAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIHByb2ZpbGUsIHZhbHVlcywgc2l6ZSkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhl
YywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggNmE1OTQxY2JhNzBjYWY5NDUwNGZjNjMxNzA3MjRiNjgyZjA3
NjhiYy4uMzUwNjhjOWY4MWY3MmU4MWM2Y2ZjNzQ4NDE0ZmU4ZmY3NTBhMzRhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM5Miw3ICszOTIsNiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcShFeGVj
U3RhdGUqLCBKU0NlbGwqIGxlZnQsCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyaW5nRXEoRXhlY1N0YXRlKiwgSlNDZWxsKiBsZWZ0LCBKU0NlbGwqIHJpZ2h0KSBXVEZf
SU5URVJOQUw7CiAjZW5kaWYKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXJyYXlXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwg
Y29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQzMl90IHNpemUpIFdURl9JTlRFUk5BTDsKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRoUHJvZmls
ZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgY29uc3QgSlNWYWx1ZSogdmFs
dWVzLCBpbnQzMl90IHNpemUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZFByb2ZpbGUoRXhlY1N0YXRlKiwgQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlIHNpemUpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBkOGQwNjljNDQ1OTJmMjliOTMzMzZkY2U1MWRmMzRiOTFmMjYyMmZlLi4xM2Q5ZTU4OTVjMmJk
Y2NjYTUxYzJmNDAwOTBhMTU3ZTVlZWQwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTU0NCwxMiArNTQ0LDYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NpemUpCiAgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhleGVjLCBwY1szXS51LmFycmF5QWxsb2Nh
dGlvblByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJh
eV9idWZmZXIpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0QXJyYXkoZXhlYywgcGNbNF0udS5hcnJheUFsbG9jYXRpb25Qcm9maWxlLCBleGVjLT5jb2Rl
QmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5k
KSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKQogewog
ICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCmluZGV4IGVkZDAwZTBkYWFjOTFjMzQ4ZGI4MjIxZTgyNzViMzY0ZTlkN2EzNmIu
LmY5NjdlYWU3ZTY0YzhjNzM2NmExNzI5N2E0YzNhMDZhN2I1ZTBjYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC02Niw3ICs2Niw2IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzdGFja19jaGVjayk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9zaXplKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaW5zdGFuY2VvZl9jdXN0b20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNmZmIxYzVhYzFlY2FkYzM1OTM5
YzhkMzU2M2E1M2RiNjAyMzYzZGQuLmY0ZDM2MDAxNmZkNTYyOWE0MjFkMGY4YzRmMTRjMjNiMDhj
YjIyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTEzNjQsNyArMTM2NCw3IEBAIF9sbGludF9vcF9uZXdfYXJyYXlf
d2l0aF9zaXplOgogCiBfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5
X2J1ZmZlcikKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfYXJyYXlfYnVm
ZmVyKQogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9uZXdfYXJyYXlfYnVmZmVyX2xlbmd0aCkK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCBjZThiY2NiZGEwZjRlYmE3YzcyZTk1M2M5YWZiNjhmNDAxMTc2ODdlLi5hYTQy
YjdiYmM3NmZhYzU4NzQ5NjU0MDFiYzQyOTg3MGViMWVkZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEwNzQsNiArMTA3
NCwxMyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKQog
ICAgIFJFVFVSTihyZXN1bHQpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fy
cmF5X2J1ZmZlcikKK3sKKyAgICBCRUdJTigpOworICAgIGF1dG8qIGZpeGVkQXJyYXkgPSBqc0Nh
c3Q8SlNGaXhlZEFycmF5Kj4oT1BfQygyKS5qc1ZhbHVlKCkpOworICAgIFJFVFVSTihjb25zdHJ1
Y3RBcnJheShleGVjLCBwY1szXS51LmFycmF5QWxsb2NhdGlvblByb2ZpbGUsIGZpeGVkQXJyYXkt
PnZhbHVlcygpLCBmaXhlZEFycmF5LT5sZW5ndGgoKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc3ByZWFkKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDhmODBhMWYyZmQwMmM3NjM3MWJk
ZmQ4YWM2NzMxYTVlNzY3NmJkYmIuLjQ2MDcyNjczNWJkZDY3MmM1MmM3ZjVjZjRmMDQ2YWUyYzMz
YWRkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yODQsNiArMjg0LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2RlZmluZV9hY2Nlc3Nvcl9wcm9wZXJ0eSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Rocm93X3N0YXRpY19lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19hcnJheV93aXRoX3NwcmVhZCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19hcnJheV9idWZmZXIpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zcHJl
YWQpOwogCiB1c2luZyBTbG93UGF0aEZ1bmN0aW9uID0gU2xvd1BhdGhSZXR1cm5UeXBlKFNMT1df
UEFUSCAqKShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRml4ZWRBcnJheS5jcHAKaW5kZXggY2I0MzhmYWJmZjYyZjFmNmZhNmIw
NWFlNzI5Mzk1MmIwMjJkNDdjMy4uYjM1MzdjYWVlZTA2YzEyNDUyZjJhMjhkMGFhOGRjMDAyOTJj
ODIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXku
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNTEsNCArNTIsMTUgQEAgdm9pZCBKU0ZpeGVkQXJyYXk6OmNvcHlUb0Fy
Z3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnQKICAg
ICB9CiB9CiAKK3ZvaWQgSlNGaXhlZEFycmF5OjpkdW1wVG9TdHJlYW0oY29uc3QgSlNDZWxsKiBj
ZWxsLCBQcmludFN0cmVhbSYgb3V0KQoreworICAgIFZNJiB2bSA9ICpjZWxsLT52bSgpOworICAg
IGNvbnN0IGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNGaXhlZEFycmF5Kj4oY2Vs
bCk7CisgICAgb3V0LnByaW50ZigiPCVwLCAlcywgWyV1XSwgWyIsIHRoaXNPYmplY3QsIHRoaXNP
YmplY3QtPmNsYXNzTmFtZSh2bSksIHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKKyAgICBDb21tYVBy
aW50ZXIgY29tbWE7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdGhpc09i
amVjdC0+bGVuZ3RoKCk7ICsraW5kZXgpCisgICAgICAgIG91dC5wcmludChjb21tYSwgdGhpc09i
amVjdC0+Z2V0KGluZGV4KSk7CisgICAgb3V0LnByaW50KCJdPiIpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRml4
ZWRBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmgK
aW5kZXggZDZlZTU1OGZjYzEwMGU1MmQzZmM1NDNkMjEyODcwMTM3NWQxMmJjZi4uMDczNDIyNjlj
MjA0YmNhZjk5OWE4NDU1MTE1ZGQ3NTRiYWU0NWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmgKQEAgLTU3LDYgKzU3LDEzIEBAIGNsYXNzIEpTRml4
ZWRBcnJheSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAorICAgIHN0YXRpYyBKU0ZpeGVkQXJyYXkqIGNyZWF0ZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICB7CisgICAgICAgIGF1dG8qIGFycmF5ID0gdHJ5Q3JlYXRlKHZtLCB2bS5maXhlZEFy
cmF5U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJh
eSk7CisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHN0
YXRpYyBKU0ZpeGVkQXJyYXkqIGNyZWF0ZUZyb21BcnJheShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgSlNBcnJheSogYXJyYXkpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTExMCwxNyArMTE3LDI2IEBAIGNsYXNzIEpTRml4ZWRB
cnJheSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXQodW5zaWduZWQgaW5kZXgpCisgICAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGdldCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAg
IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7CiAgICAgICAgIHJldHVybiBidWZmZXIoKVtpbmRleF0u
Z2V0KCk7CiAgICAgfQogCisgICAgdm9pZCBzZXQoVk0mIHZtLCB1bnNpZ25lZCBpbmRleCwgSlNW
YWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7CisgICAg
ICAgIHJldHVybiBidWZmZXIoKVtpbmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgfQor
CiAgICAgQUxXQVlTX0lOTElORSBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGJ1ZmZlcigpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRoaXMpICsgb2Zmc2V0T2ZEYXRhKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSBXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNGaXhl
ZEFycmF5Kj4odGhpcyktPmJ1ZmZlcigpOyB9CisgICAgQUxXQVlTX0lOTElORSBjb25zdCBKU1Zh
bHVlKiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgSlNWYWx1ZSo+
KGJ1ZmZlcigpKTsgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOwogCiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCiAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNGaXhlZEFycmF5LCBtX3NpemUpOyB9CiAKQEAgLTEzMSw2ICsxNDcsOCBAQCBjbGFzcyBKU0Zp
eGVkQXJyYXkgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHZvaWQgY29weVRvQXJndW1lbnRzKEV4
ZWNTdGF0ZSosIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICBzdGF0aWMgdm9pZCBkdW1wVG9TdHJlYW0oY29u
c3QgSlNDZWxsKiwgUHJpbnRTdHJlYW0mKTsKKwogcHJpdmF0ZToKICAgICBKU0ZpeGVkQXJyYXko
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327757</attachid>
            <date>2017-11-28 09:24:09 -0800</date>
            <delta_ts>2017-11-30 22:32:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180084-20171129022408.patch</filename>
            <type>text/plain</type>
            <size>59250</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MjcwZTA3YWU3ZDNmNmYxMTIyZjI2ZjkwM2ZiY2E3Y2NhYjRhMzQ2Li5mNGI1ZGY4NDc5YmMyNTAz
MTRjMmNlZGIzOTg5ZmEzNzRlM2VhMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTQgQEAKKzIwMTctMTEtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gVXNlIEpTRml4ZWRBcnJheSBmb3Igb3BfbmV3X2FycmF5
X2J1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgwMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9yIG9wX25ld19hcnJheV9idWZmZXIsIHdlIGhhdmUgYSBzcGVjaWFsIGNvbnN0YW50IGJ1ZmZl
ciBpbiBDb2RlQmxvY2suCisgICAgICAgIEJ1dCB1c2luZyBKU0ZpeGVkQXJyYXkgaXMgYmV0dGVy
IGJlY2F1c2UsCisKKyAgICAgICAgMS4gSW4gREZHLCB3ZSBoYXZlIHNwZWNpYWwgaGFzaGluZyBt
ZWNoYW5pc20gdG8gYXZvaWQgZHVwbGljYXRpbmcgY29uc3RhbnQgYnVmZmVyIGZyb20gdGhlIHNh
bWUgQ29kZUJsb2NrLgorICAgICAgICAgICBJZiB3ZSB1c2UgSlNGaXhlZEFycmF5LCB0aGlzIGlz
IHVubmVjZXNzYXJ5IHNpbmNlIEpTRml4ZWRBcnJheSBpcyBoYW5kbGVkIGp1c3QgYXMgSlMgY29u
c3RhbnQuCisKKyAgICAgICAgMi4gSW4gYSBzdWJzZXF1ZW50IHBhdGNoWzFdLCB3ZSB3b3VsZCBs
aWtlIHRvIHN1cHBvcnQgU3ByZWFkKFBoYW50b21OZXdBcnJheUJ1ZmZlcikuIElmIE5ld0FycmF5
QnVmZmVyCisgICAgICAgICAgIGhhcyBKU0ZpeGVkQXJyYXksIHdlIGNhbiBqdXN0IGVtaXQgYSBo
ZWxkIEpTRml4ZWRBcnJheS4KKworICAgICAgICAzLiBXZSBjYW4gcmVkdWNlIGxlbmd0aCBvZiBv
cF9uZXdfYXJyYXlfYnVmZmVyIHNpbmNlIEpTRml4ZWRBcnJheSBob2xkcyB0aGlzLgorCisgICAg
ICAgIDQuIFdlIGNhbiBmb2xkIE5ld0FycmF5QnVmZmVyRGF0YSBpbnRvIHVpbnQ2NF90LiBObyBu
ZWVkIHRvIG1haW50YWluIGEgYmFnIG9mIE5ld0FycmF5QnVmZmVyRGF0YSBpbiBERkcuCisKKyAg
ICAgICAgNS4gV2UgZG8gbm90IG5lZWQgdG8gbG9vayB1cCBjb25zdGFudCBidWZmZXIgZnJvbSBD
b2RlQmxvY2sgaWYgYnVmZmVyIGRhdGEgaXMgbmVjZXNzYXJ5LiBPdXIgTmV3QXJyYXlCdWZmZXIK
KyAgICAgICAgICAgREZHIG5vZGUgaGFzIEpTRml4ZWRBcnJheSBhcyBpdHMgY2VsbE9wZXJhbmQu
IFRoaXMgbWFrZXMgbWF0ZXJpYWxpemluZyBQaGFudG9tTmV3QXJyYXlCdWZmZXIgZWFzeSwgd2hp
Y2gKKyAgICAgICAgICAgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIFsxXS4KKworICAgICAgICBbMV06
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk3NjIKKworICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om51bWJlck9mQ29uc3RhbnRCdWZmZXJzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRDb25zdGFudEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXJBc1ZlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y29uc3RhbnRCdWZmZXJDb3VudCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphZGRDb25zdGFudEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpjb25zdGFu
dEJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojpjb25zdGFudEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdBcnJheSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGFudEJ1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjpDb25zdGFudEJ1ZmZlcktleSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJLZXk6Om9wZXJhdG9yPT0gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjpoYXNo
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEJ1ZmZlcktleTo6
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50QnVmZmVyS2V5Ojpjb2RlQmxvY2sgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50QnVmZmVyS2V5OjppbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJLZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEJ1ZmZlcktleUhhc2g6OmVxdWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTmV3QXJyYXlCdWZmZXJE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpuZXdBcnJheUJ1ZmZlckRhdGEpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1ZlY3Rvckxlbmd0aEhpbnQpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnZlY3Rvckxlbmd0aEhpbnQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2VsbE9wZXJhbmQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNOZXdBcnJheUJ1ZmZlckRh
dGEgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NvbnN0YW50QnVmZmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdGFydENvbnN0YW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpudW1Db25zdGFudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOZXdBcnJheUJ1ZmZlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25ld19hcnJheV9idWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9K
U0ZpeGVkQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OmR1bXBUb1N0cmVh
bSk6CisgICAgICAgICogcnVudGltZS9KU0ZpeGVkQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNG
aXhlZEFycmF5OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OmdldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkpTRml4ZWRBcnJheTo6c2V0KToKKyAgICAgICAgKEpTQzo6SlNG
aXhlZEFycmF5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0ZpeGVkQXJyYXk6OnZh
bHVlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTRml4ZWRBcnJheTo6bGVuZ3RoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNGaXhlZEFycmF5OjpnZXQpOiBEZWxldGVkLgorCiAyMDE3LTExLTI4
ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9y
dCByZWN1cnNpdmUgdGFpbCBjYWxsIG9wdGltaXphdGlvbiBmb3IgcG9seW1vcnBoaWMgY2FsbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CmluZGV4IDM1NzAxYTA4YjM2MTdkZmJiMmY1NjI5ZjMyYzkwMzZiZjZhYzNkMmIuLmVjZTg2Njhh
Y2RkNGFmYjFjYWJhZjQxNDhiOGYzMTFmMDYwM2I1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtNzYzLDEwICs3NjMsOSBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IHR5cGVuYW1lIEJsb2NrOgogICAgIH0KICAgICBjYXNlIG9wX25ld19hcnJheV9i
dWZmZXI6IHsKICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICBp
bnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgYXJyYXkgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FycmF5X2J1ZmZl
ciIpOwotICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQsICVkIiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCBhcmd2LCBhcmdjKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYXJyYXkpLmRhdGEoKSk7CiAgICAgICAg
ICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KaW5kZXggYjViOGY5OWI3NWQwYjViMGVkN2M2NzdlNGY4MmI2YjIxNDY3ZDU4MC4uZDA4
N2JiZWZjZTU5ODY0ZTJkYmY1NzY4NjJmNTQzNjQ3ODdhODdlNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMjIsNyArMjIsNyBA
QAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5n
dGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc3By
ZWFkIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zcHJlYWQi
LCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV9i
dWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19h
cnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm90Iiwg
Imxlbmd0aCIgOiAzIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDc1OWExZWIzZWQwZTI0OTFmNGFhZmFlMjRmZmZlOTE2NWI0ZGYy
YTIuLjEzMzQwNmU0MDI4OWY4MzE3NDgxN2ZiNTdlZWNhMDk0ZTNjZTE0N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zOCw3ICsz
OCw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2Nr
LCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewog
ICAgIC8vIE5vIHVzZXMuCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgotICAgIGNhc2Ugb3BfbmV3
X2FycmF5X2J1ZmZlcjoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3Bfam5lcV9wdHI6
CiAgICAgY2FzZSBvcF9sb29wX2hpbnQ6CkBAIC0yMTMsNyArMjEyLDggQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgotICAgIGNh
c2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVu
dHM6CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7CiAgICAgICAgIEFTU0VSVChvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXSA+IDIpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmlu
ZGV4IDBhZmY0YjBjNmZkMzBjOTNhYjYwZTJjNWY4NTgxYjg3YzFiOTY2NzguLjFmYjNlMTQzZTk1
MTc3M2RjNjE1MzU0YzllNmZjMmFhNWZhODNmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zNDksNyArMzQ5LDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgIAog
ICAgICAgICBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1
ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMg
PSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgfQpAQCAt
NDYxLDEzICs0NjAsNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT5oYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5jb25zdGFudEJ1ZmZlckNvdW50KCkpIHsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fY29u
c3RhbnRCdWZmZXJzLmdyb3coY291bnQpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRDb2RlQmxv
Y2s6OkNvbnN0YW50QnVmZmVyJiBidWZmZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+Y29uc3RhbnRC
dWZmZXIoaSk7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnNb
aV0gPSBidWZmZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgaWYgKHNpemVf
dCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkp
IHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMucmVzaXplVG9G
aXQoY291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTQ1
OWExZjUwZmVjNTc2MzU3NGE2OTQ5Zjc4ZDZjNWQwODIwM2MwNC4uNzBhNzZhYzIyMDU4ZWQwZTUx
YjI4OWExMTliMTU0YjIzN2Y3ZjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtNTY4LDMwICs1NjgsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBjb25zdCBWZWN0b3I8Qml0VmVjdG9yPiYgYml0VmVjdG9ycygpIGNv
bnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5iaXRWZWN0b3JzKCk7IH0KICAgICBjb25zdCBC
aXRWZWN0b3ImIGJpdFZlY3RvcihzaXplX3QgaSkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmJp
dFZlY3RvcihpKTsgfQogCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycy5zaXplKCk7
Ci0gICAgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50QnVmZmVyKGNvbnN0IFZlY3RvcjxKU1Zh
bHVlPiYgYnVmZmVyKQotICAgIHsKLSAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OwotICAgICAgICB1bnNpZ25lZCBzaXplID0gbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMu
c2l6ZSgpOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycy5hcHBlbmQoYnVm
ZmVyKTsKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi0gICAgVmVjdG9yPEpTVmFsdWU+
JiBjb25zdGFudEJ1ZmZlckFzVmVjdG9yKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb25zdGFu
dEJ1ZmZlcnNbaW5kZXhdOwotICAgIH0KLSAgICBKU1ZhbHVlKiBjb25zdGFudEJ1ZmZlcih1bnNp
Z25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdGFudEJ1ZmZlckFzVmVjdG9y
KGluZGV4KS5kYXRhKCk7Ci0gICAgfQotCiAgICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJu
ICZtX3ZtLT5oZWFwOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0
dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAKQEAgLTg3MSw5ICs4NDcsNiBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxI
YW5kbGVySW5mbz4gbV9leGNlcHRpb25IYW5kbGVyczsKIAotICAgICAgICAvLyBCdWZmZXJzIHVz
ZWQgZm9yIGxhcmdlIGFycmF5IGxpdGVyYWxzCi0gICAgICAgIFZlY3RvcjxWZWN0b3I8SlNWYWx1
ZT4+IG1fY29uc3RhbnRCdWZmZXJzOwotCiAgICAgICAgIC8vIEp1bXAgVGFibGVzCiAgICAgICAg
IFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVj
dG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5k
ZXggM2I0OTY1YzJkOThmNWFhZmYzZTQ5ZWRlNDA2NTY5ODIwOWQ0NWVmZS4uOTAwMTBiNWM5N2Fh
ZWRkMjUyNWI1MmI0NDVkZjgwNTg4OTBjYTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MDcsNyArNDA3LDYg
QEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6c2hyaW5rVG9GaXQoKQogICAgIGlmIChtX3JhcmVE
YXRhKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9yZWdleHBzLnNocmlua1RvRml0KCk7Ci0gICAg
ICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNocmlua1RvRml0KCk7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9ucy5zaHJpbmtUb0ZpdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAppbmRleCA1MThmMzEzNTFkOGI5ZjdmYmNjODk0N2MxZDdhMjI1MmU1ZTY5ZjUzLi43ZTFh
ZTZiOWFkZTZkYWEyNzUxMDI5ZmRhYTE3MTI2MGMzN2I4MGUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzIzLDI5ICsz
MjMsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHNp
emVfdCBudW1iZXJPZlByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBWZWN0b3I8
dW5zaWduZWQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7IH0KIAotICAgIHR5cGVkZWYgVmVjdG9yPEpTVmFs
dWU+IENvbnN0YW50QnVmZmVyOwotCi0gICAgc2l6ZV90IGNvbnN0YW50QnVmZmVyQ291bnQoKSB7
IEFTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJz
LnNpemUoKTsgfQotICAgIHVuc2lnbmVkIGFkZENvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGxlbmd0
aCkKLSAgICB7Ci0gICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzLnNpemUoKTsKLSAg
ICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMuYXBwZW5kKFZlY3RvcjxKU1ZhbHVl
PihsZW5ndGgpKTsKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi0gICAgY29uc3QgQ29u
c3RhbnRCdWZmZXImIGNvbnN0YW50QnVmZmVyKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9jb25zdGFudEJ1ZmZlcnNbaW5kZXhdOwotICAgIH0KLQotICAgIENvbnN0YW50QnVmZmVyJiBj
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Jh
cmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzW2lu
ZGV4XTsKLSAgICB9Ci0KICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlRGF0YS5nZXQoKTsgfQogCiAgICAgaW50IGxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC00OTUsOSArNDcyLDYgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgLy8gUmFyZSBDb25zdGFudHMK
ICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxSZWdFeHA+PiBtX3JlZ2V4cHM7CiAKLSAgICAg
ICAgLy8gQnVmZmVycyB1c2VkIGZvciBsYXJnZSBhcnJheSBsaXRlcmFscwotICAgICAgICBWZWN0
b3I8Q29uc3RhbnRCdWZmZXI+IG1fY29uc3RhbnRCdWZmZXJzOwotCiAgICAgICAgIC8vIEp1bXAg
VGFibGVzCiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1wVGFibGU+IG1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNjNlMzk4ZDYxMWJiYTgx
Mjc0NGNlYmZiNWNiZjg5NzY0OTkwZTU1MC4uMjViNjRiZDNmM2YwZGUxZGM1ZTFjMDRlM2FmYjkw
NTVhNDdiMWMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0zMTIwLDExICszMTIxLDYgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdPYmplY3QoUmVnaXN0ZXJJRCogZHN0
KQogICAgIHJldHVybiBkc3Q7CiB9CiAKLXVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRD
b25zdGFudEJ1ZmZlcih1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5hZGRDb25zdGFudEJ1ZmZlcihsZW5ndGgpOwotfQotCiBKU1N0cmluZyogQnl0ZWNvZGVHZW5l
cmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7
CiAgICAgSlNTdHJpbmcqJiBzdHJpbmdJbk1hcCA9IG1fc3RyaW5nTWFwLmFkZChpZGVudGlmaWVy
LmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpAQCAtMzE2NSwxNyArMzE2MSwxNSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0FycmF5KFJlZ2lzdGVySUQq
IGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbgogICAgICAgICB9CiAgICAgICAgIGlmICghaGFkVmFy
aWFibGVFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICBBU1NFUlQobGVuZ3RoID09IGNoZWNrTGVu
Z3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50QnVmZmVySW5kZXggPSBhZGRDb25z
dGFudEJ1ZmZlcihsZW5ndGgpOwotICAgICAgICAgICAgSlNWYWx1ZSogY29uc3RhbnRCdWZmZXIg
PSBtX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIoY29uc3RhbnRCdWZmZXJJbmRleCkuZGF0YSgp
OworICAgICAgICAgICAgYXV0byogYXJyYXkgPSBKU0ZpeGVkQXJyYXk6OmNyZWF0ZSgqbV92bSwg
bGVuZ3RoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgICAgIGZv
ciAoRWxlbWVudE5vZGUqIG4gPSBlbGVtZW50czsgaW5kZXggPCBsZW5ndGg7IG4gPSBuLT5uZXh0
KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobi0+dmFsdWUoKS0+aXNDb25zdGFudCgpKTsK
LSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlcltpbmRleCsrXSA9IHN0YXRpY19jYXN0PENv
bnN0YW50Tm9kZSo+KG4tPnZhbHVlKCkpLT5qc1ZhbHVlKCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBhcnJheS0+c2V0KCptX3ZtLCBpbmRleCsrLCBzdGF0aWNfY2FzdDxDb25zdGFudE5vZGUqPihu
LT52YWx1ZSgpKS0+anNWYWx1ZSgqdGhpcykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZW1pdE9wY29kZShvcF9uZXdfYXJyYXlfYnVmZmVyKTsKICAgICAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNvbnN0YW50QnVmZmVySW5kZXgpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGxlbmd0aCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnRWYWx1ZShhcnJheSktPmluZGV4KCkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG5ld0FycmF5QWxsb2NhdGlvblByb2ZpbGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gZHN0
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMmIyNDI2NDE4MDNiZDQwNTJhZTVhMmI2YTA5
NzVkYTA0MGQ1YWY3Yi4uZTk1MzRiYjNhMzE1MGQ4ZmI5Y2U0MjRmNTYyYjUxMmNkNDMzYjFmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMTA0Niw4ICsxMDQ2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGFkZENvbnN0YW50RW1wdHlWYWx1ZSgpOwogICAgICAgICB1bnNpZ25l
ZCBhZGRSZWdFeHAoUmVnRXhwKik7CiAKLSAgICAgICAgdW5zaWduZWQgYWRkQ29uc3RhbnRCdWZm
ZXIodW5zaWduZWQgbGVuZ3RoKTsKLSAgICAgICAgCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBtYWtlRnVuY3Rpb24oRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhKQog
ICAgICAgICB7CiAgICAgICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbmV3RGVyaXZlZENvbnRl
eHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA1MTY1NDg5MGQ3NTIxZmIyOWYw
NmRkZGIyYWJkYjljZjlhNTk4NmU2Li5lMzM1ZWFlMjVlZmIyY2RiNWNiNjdiNTM3OGM1NjA5ZWUx
OWIxZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRml4
ZWRBcnJheS5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIk51bWJlckNvbnN0cnVjdG9yLmgi
CkBAIC04MSw3NiArODIsNiBAQCBpZiAoREZHQnl0ZUNvZGVQYXJzZXJJbnRlcm5hbDo6dmVyYm9z
ZSAmJiBPcHRpb25zOjp2ZXJib3NlREZHQnl0ZWNvZGVQYXJzaW5nKCkpCiBkYXRhTG9nKF9fVkFf
QVJHU19fKTsgXAogfSB3aGlsZSAoZmFsc2UpCiAKLWNsYXNzIENvbnN0YW50QnVmZmVyS2V5IHsK
LXB1YmxpYzoKLSAgICBDb25zdGFudEJ1ZmZlcktleSgpCi0gICAgICAgIDogbV9jb2RlQmxvY2so
MCkKLSAgICAgICAgLCBtX2luZGV4KDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBDb25zdGFu
dEJ1ZmZlcktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9j
b2RlQmxvY2soMCkKLSAgICAgICAgLCBtX2luZGV4KDEpCi0gICAgewotICAgIH0KLSAgICAKLSAg
ICBDb25zdGFudEJ1ZmZlcktleShDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgaW5kZXgp
Ci0gICAgICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQotICAgICAgICAsIG1faW5kZXgoaW5k
ZXgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3Rh
bnRCdWZmZXJLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY29kZUJs
b2NrID09IG90aGVyLm1fY29kZUJsb2NrCi0gICAgICAgICAgICAmJiBtX2luZGV4ID09IG90aGVy
Lm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxDb2RlQmxvY2sqPjo6aGFzaChtX2NvZGVCbG9j
aykgXiBtX2luZGV4OwotICAgIH0KLSAgICAKLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9jb2RlQmxvY2sgJiYgbV9pbmRl
eDsKLSAgICB9Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jazsgfQotICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9p
bmRleDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAg
IHVuc2lnbmVkIG1faW5kZXg7Ci19OwotCi1zdHJ1Y3QgQ29uc3RhbnRCdWZmZXJLZXlIYXNoIHsK
LSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDb25zdGFudEJ1ZmZlcktleSYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29uc3Rh
bnRCdWZmZXJLZXkmIGEsIGNvbnN0IENvbnN0YW50QnVmZmVyS2V5JiBiKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGEgPT0gYjsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IERlZmF1bHRIYXNoOwotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpERkc6
OkNvbnN0YW50QnVmZmVyS2V5PiB7Ci0gICAgdHlwZWRlZiBKU0M6OkRGRzo6Q29uc3RhbnRCdWZm
ZXJLZXlIYXNoIEhhc2g7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpERkc6OkNvbnN0YW50QnVm
ZmVyS2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxKU0M6OkRGRzo6Q29uc3RhbnRCdWZmZXJL
ZXk+IHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQogLy8gPT09IEJ5dGVDb2RlUGFyc2VyID09PQogLy8KIC8vIFRoaXMgY2xhc3Mg
aXMgdXNlZCB0byBjb21waWxlIHRoZSBkYXRhZmxvdyBncmFwaCBmcm9tIGEgQ29kZUJsb2NrLgpA
QCAtMTEwMyw4ICsxMDM0LDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIC8vIFRoZSBu
dW1iZXIgb2YgdmFyIGFyZ3MgcGFzc2VkIHRvIHRoZSBuZXh0IHZhciBhcmcgbm9kZS4KICAgICB1
bnNpZ25lZCBtX251bVBhc3NlZFZhckFyZ3M7CiAKLSAgICBIYXNoTWFwPENvbnN0YW50QnVmZmVy
S2V5LCB1bnNpZ25lZD4gbV9jb25zdGFudEJ1ZmZlckNhY2hlOwotICAgIAogICAgIHN0cnVjdCBJ
bmxpbmVTdGFja0VudHJ5IHsKICAgICAgICAgQnl0ZUNvZGVQYXJzZXIqIG1fYnl0ZUNvZGVQYXJz
ZXI7CiAgICAgICAgIApAQCAtMTEyMSw3ICsxMDUwLDYgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIg
ewogICAgICAgICAvLyAodGhlIG1hY2hpbmUgY29kZSBibG9jaywgd2hpY2ggaXMgdGhlIHRyYW5z
aXRpdmUsIHRob3VnaCBub3QgbmVjZXNzYXJpbHkKICAgICAgICAgLy8gZGlyZWN0LCBjYWxsZXIp
LgogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1faWRlbnRpZmllclJlbWFwOwotICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1fY29uc3RhbnRCdWZmZXJSZW1hcDsKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX3N3aXRjaFJlbWFwOwogICAgICAgICAKICAgICAgICAgLy8gVGhlc2UgYXJlIGJs
b2NrcyB3aG9zZSB0ZXJtaW5hbCBpcyBhIEp1bXAsIEJyYW5jaCBvciBTd2l0Y2gsIGFuZCB3aG9z
ZSB0YXJnZXQgaGFzIG5vdCB5ZXQgYmVlbiBsaW5rZWQuCkBAIC00NDc4LDI1ICs0NDA2LDE4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHsKLSAg
ICAgICAgICAgIGludCBzdGFydENvbnN0YW50ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBudW1Db25zdGFudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwotICAgICAgICAgICAgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmls
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5QWxsb2NhdGlvblByb2ZpbGU7Ci0gICAg
ICAgICAgICBOZXdBcnJheUJ1ZmZlckRhdGEgZGF0YTsKLSAgICAgICAgICAgIGRhdGEuc3RhcnRD
b25zdGFudCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29uc3RhbnRCdWZmZXJSZW1hcFtzdGFydENv
bnN0YW50XTsKLSAgICAgICAgICAgIGRhdGEubnVtQ29uc3RhbnRzID0gbnVtQ29uc3RhbnRzOwor
ICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpLT5jb25zdGFudCgpOworICAgICAgICAgICAg
SlNGaXhlZEFycmF5KiBmaXhlZEFycmF5ID0gZnJvemVuLT5jYXN0PEpTRml4ZWRBcnJheSo+KCk7
CisgICAgICAgICAgICBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICAgICAgICAgIE5ld0Fy
cmF5QnVmZmVyRGF0YSBkYXRhIHsgfTsKICAgICAgICAgICAgIGRhdGEuaW5kZXhpbmdUeXBlID0g
cHJvZmlsZS0+c2VsZWN0SW5kZXhpbmdUeXBlKCk7Ci0gICAgICAgICAgICBkYXRhLnZlY3Rvckxl
bmd0aEhpbnQgPSBzdGQ6Om1heDx1bnNpZ25lZD4ocHJvZmlsZS0+dmVjdG9yTGVuZ3RoSGludCgp
LCBudW1Db25zdGFudHMpOworICAgICAgICAgICAgZGF0YS52ZWN0b3JMZW5ndGhIaW50ID0gc3Rk
OjptYXg8dW5zaWduZWQ+KHByb2ZpbGUtPnZlY3Rvckxlbmd0aEhpbnQoKSwgZml4ZWRBcnJheS0+
bGVuZ3RoKCkpOwogCiAgICAgICAgICAgICAvLyBJZiB0aGlzIHN0YXRlbWVudCBoYXMgbmV2ZXIg
ZXhlY3V0ZWQsIHdlJ2xsIGhhdmUgdGhlIHdyb25nIGluZGV4aW5nIHR5cGUgaW4gdGhlIHByb2Zp
bGUuCi0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbnN0YW50czsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YS5pbmRleGluZ1R5cGUgPQotICAgICAgICAgICAgICAgICAg
ICBsZWFzdFVwcGVyQm91bmRPZkluZGV4aW5nVHlwZUFuZFZhbHVlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YS5pbmRleGluZ1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2Nv
ZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIoZGF0YS5zdGFydENvbnN0YW50KVtpXSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBmaXhl
ZEFycmF5LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBkYXRhLmluZGV4aW5n
VHlwZSA9IGxlYXN0VXBwZXJCb3VuZE9mSW5kZXhpbmdUeXBlQW5kVmFsdWUoZGF0YS5pbmRleGlu
Z1R5cGUsIGZpeGVkQXJyYXktPmdldChpbmRleCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX2dyYXBoLm1fbmV3QXJyYXlCdWZmZXJEYXRhLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKLSAg
ICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCksIGFkZFRvR3JhcGgoTmV3QXJyYXlCdWZmZXIsIE9wSW5mbygmbV9ncmFwaC5tX25ld0Fy
cmF5QnVmZmVyRGF0YS5sYXN0KCkpKSk7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0FycmF5QnVm
ZmVyLCBPcEluZm8oZnJvemVuKSwgT3BJbmZvKGRhdGEuYXNRdWFkV29yZCkpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX25ld19hcnJheV9idWZmZXIpOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTY0MzYsNyArNjM1Nyw2IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0Vu
dHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+a2luZCA9
IGtpbmQ7CiAgICAgICAgIAogICAgICAgICBtX2lkZW50aWZpZXJSZW1hcC5yZXNpemUoY29kZUJs
b2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwotICAgICAgICBtX2NvbnN0YW50QnVmZmVyUmVt
YXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKSk7CiAgICAgICAg
IG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVz
KCkpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJP
ZklkZW50aWZpZXJzKCk7ICsraSkgewpAQCAtNjQ0NCwyMCArNjM2NCw2IEBAIEJ5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3Vy
ZShyZXApOwogICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSBpbmRleDsKICAgICAg
ICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJP
ZkNvbnN0YW50QnVmZmVycygpOyArK2kpIHsKLSAgICAgICAgICAgIC8vIElmIHdlIGlubGluZSB0
aGUgc2FtZSBjb2RlIGJsb2NrIG11bHRpcGxlIHRpbWVzLCB3ZSBkb24ndCB3YW50IHRvIG5lZWRs
ZXNzbHkKLSAgICAgICAgICAgIC8vIGR1cGxpY2F0ZSBpdHMgY29uc3RhbnQgYnVmZmVycy4KLSAg
ICAgICAgICAgIEhhc2hNYXA8Q29uc3RhbnRCdWZmZXJLZXksIHVuc2lnbmVkPjo6aXRlcmF0b3Ig
aXRlciA9Ci0gICAgICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRCdWZmZXJD
YWNoZS5maW5kKENvbnN0YW50QnVmZmVyS2V5KGNvZGVCbG9jaywgaSkpOwotICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gYnl0ZUNvZGVQYXJzZXItPm1fY29uc3RhbnRCdWZmZXJDYWNoZS5lbmQoKSkg
ewotICAgICAgICAgICAgICAgIG1fY29uc3RhbnRCdWZmZXJSZW1hcFtpXSA9IGl0ZXItPnZhbHVl
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
VmVjdG9yPEpTVmFsdWU+JiBidWZmZXIgPSBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyQXNWZWN0
b3IoaSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuZXdJbmRleCA9IGJ5dGVDb2RlUGFyc2VyLT5t
X2NvZGVCbG9jay0+YWRkQ29uc3RhbnRCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgIG1fY29u
c3RhbnRCdWZmZXJSZW1hcFtpXSA9IG5ld0luZGV4OwotICAgICAgICAgICAgYnl0ZUNvZGVQYXJz
ZXItPm1fY29uc3RhbnRCdWZmZXJDYWNoZS5hZGQoQ29uc3RhbnRCdWZmZXJLZXkoY29kZUJsb2Nr
LCBpKSwgbmV3SW5kZXgpOwotICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOyArK2kpIHsKICAgICAg
ICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPm51
bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwogICAgICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1f
Y29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGkpOwpAQCAtNjQ3MiwxMiArNjM3OCw5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IDA7
CiAKICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJ
ZGVudGlmaWVycygpKTsKLSAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwLnJlc2l6ZShjb2Rl
QmxvY2stPm51bWJlck9mQ29uc3RhbnRCdWZmZXJzKCkpOwogICAgICAgICBtX3N3aXRjaFJlbWFw
LnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsg
KytpKQogICAgICAgICAgICAgbV9pZGVudGlmaWVyUmVtYXBbaV0gPSBpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKTsg
KytpKQotICAgICAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwW2ldID0gaTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxl
cygpOyArK2kpCiAgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gaTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDdjYzhmNjRiYjRjM2U3
NzkxYWY0MWM2ZTYyMmU5NTg1NmJhY2E4OGEuLjEyNTg1NTcxMWYyZjhiNzllZTZiMWZkNDBiNDJh
YjIyNzRhMGRjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiREZHUHVyZVZhbHVlLmgiCiAjaW5jbHVkZSAi
RE9NSklUQ2FsbERPTUdldHRlclNuaXBwZXQuaCIKICNpbmNsdWRlICJET01KSVRTaWduYXR1cmUu
aCIKKyNpbmNsdWRlICJKU0ZpeGVkQXJyYXkuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCkBAIC0xMzk0LDcgKzEzOTUsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RD
b3VudCk7CiAKLSAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBub2RlLT5udW1Db25zdGFu
dHMoKTsKKyAgICAgICAgSlNGaXhlZEFycmF5KiBhcnJheSA9IG5vZGUtPmNhc3RPcGVyYW5kPEpT
Rml4ZWRBcnJheSo+KCk7CisgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gYXJyYXktPmxl
bmd0aCgpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKEFycmF5TGVuZ3RoTG9jLCBCdXR0ZXJm
bHlfcHVibGljTGVuZ3RoLCBub2RlKSwKICAgICAgICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6
ZShqc051bWJlcihudW1FbGVtZW50cykpKSk7CiAKQEAgLTE0MjIsMTEgKzE0MjQsMTAgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3Im
IHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIEpTVmFsdWUqIGRhdGEgPSBncmFwaC5tX2NvZGVCbG9jay0+Y29uc3RhbnRCdWZmZXIo
bm9kZS0+c3RhcnRDb25zdGFudCgpKTsKICAgICAgICAgaWYgKG51bUVsZW1lbnRzIDwgZ3JhcGgu
bV91aW50MzJWYWx1ZXNJblVzZS5zaXplKCkpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG51bUVsZW1lbnRzOyArK2luZGV4KSB7CiAgICAgICAgICAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihpbmRleGVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUsIExhenlO
b2RlKGdyYXBoLmZyZWV6ZShqc051bWJlcihpbmRleCkpKSksCi0gICAgICAgICAgICAgICAgICAg
IExhenlOb2RlKGdyYXBoLmZyZWV6ZShkYXRhW2luZGV4XSksIG9wKSk7CisgICAgICAgICAgICAg
ICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6ZShhcnJheS0+Z2V0KGluZGV4KSksIG9wKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBWZWN0b3I8dWludDMy
X3Q+IHBvc3NpYmxlSW5kaWNlczsKQEAgLTE0MzcsNyArMTQzOCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGluZGV4
IDogcG9zc2libGVJbmRpY2VzKSB7CiAgICAgICAgICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihp
bmRleGVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUsIExhenlOb2RlKGdyYXBoLmZyZWV6ZShqc051
bWJlcihpbmRleCkpKSksCi0gICAgICAgICAgICAgICAgICAgIExhenlOb2RlKGdyYXBoLmZyZWV6
ZShkYXRhW2luZGV4XSksIG9wKSk7CisgICAgICAgICAgICAgICAgICAgIExhenlOb2RlKGdyYXBo
LmZyZWV6ZShhcnJheS0+Z2V0KGluZGV4KSksIG9wKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApp
bmRleCBmYzA4ZTE2YTczNjVhZTQzYWE0YzUxNTBmYWY5NmE2YjdlOWFkNTMwLi40YzgyNzEyMzRk
MjlmNDkyMWViNWMzZDZkMWMzNTNkNWNjNDYwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcApAQCAtMzExLDE1ICszMTEsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTm9kZSogbm9kZSwgRHVtcENvbnRleHQq
CiAgICAgfQogICAgIGlmIChub2RlLT5oYXNVbmxpbmtlZExvY2FsKCkpIAogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5vZGUtPnVubGlua2VkTG9jYWwoKSk7Ci0gICAgaWYgKG5vZGUtPmhhc0Nv
bnN0YW50QnVmZmVyKCkpIHsKLSAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKLSAgICAgICAgb3V0
LnByaW50KG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgIjpbIik7Ci0gICAgICAgIENvbW1hUHJpbnRl
ciBhbm90aGVyQ29tbWE7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5u
dW1Db25zdGFudHMoKTsgKytpKQotICAgICAgICAgICAgb3V0LnByaW50KGFub3RoZXJDb21tYSwg
cG9pbnRlckR1bXBJbkNvbnRleHQoZnJlZXplKG1fY29kZUJsb2NrLT5jb25zdGFudEJ1ZmZlcihu
b2RlLT5zdGFydENvbnN0YW50KCkpW2ldKSwgY29udGV4dCkpOwotICAgICAgICBvdXQucHJpbnQo
Il0iKTsKKyAgICBpZiAobm9kZS0+aGFzVmVjdG9yTGVuZ3RoSGludCgpKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJ2ZWN0b3JMZW5ndGhIaW50ID0gIiwgbm9kZS0+dmVjdG9yTGVuZ3RoSGlu
dCgpKTsKLSAgICB9CiAgICAgaWYgKG5vZGUtPmhhc0xhenlKU1ZhbHVlKCkpCiAgICAgICAgIG91
dC5wcmludChjb21tYSwgbm9kZS0+bGF6eUpTVmFsdWUoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0lu
ZGV4aW5nVHlwZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDk0MDJj
ZDBhZmFhNGNiNGNhMTEzZTEyODY3NTk5ZTZlZjA1ZWMwMDQuLjg3NGUxODU2MTQ1ZTVhMDk3ZTJj
Nzk2NzZlOWM2M2E3YTMyN2M5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTEwMzAsNyArMTAzMCw2IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5h
YmxlIHsKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJp
YWJsZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+
IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAgICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7
Ci0gICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1
ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERhdGE+IG1fYnJhbmNoRGF0YTsKICAgICBCYWc8U3dp
dGNoRGF0YT4gbV9zd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9t
dWx0aUdldEJ5T2Zmc2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXgg
YTY1YTg0MDZhOGZjZmFmNGQzNzY4ZDU2NjUwYTA1MTU0NzM4NTRhZC4uMGQ4MDYzNzRkNTI0OGU5
NmU1MDRhN2ZiNDRlZmNkNTFiYTY1YzNmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKQEAgLTk3LDExICs5NywxNiBAQCBzdHJ1Y3QgTXVsdGlQdXRCeU9mZnNldERhdGEgewogfTsK
IAogc3RydWN0IE5ld0FycmF5QnVmZmVyRGF0YSB7Ci0gICAgdW5zaWduZWQgc3RhcnRDb25zdGFu
dDsKLSAgICB1bnNpZ25lZCBudW1Db25zdGFudHM7Ci0gICAgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
SGludDsKLSAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlOworICAgIHVuaW9uIHsKKyAgICAg
ICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aEhpbnQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleGluZ1R5cGU7CisgICAgICAgIH07CisgICAgICAgIHVpbnQ2
NF90IGFzUXVhZFdvcmQ7CisgICAgfTsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihJbmRleGlu
Z1R5cGUpIDw9IHNpemVvZih1bnNpZ25lZCksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE5l
d0FycmF5QnVmZmVyRGF0YSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgIiIpOwogCiBzdHJ1Y3QgQnJh
bmNoVGFyZ2V0IHsKICAgICBCcmFuY2hUYXJnZXQoKQpAQCAtMTA4NSwzMCArMTA5MCwyNiBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX2ZsYWdzICYgTm9kZU1heUhhdmVOb25OdW1i
ZXJSZXN1bHQ7CiAgICAgfQogCi0gICAgYm9vbCBoYXNDb25zdGFudEJ1ZmZlcigpCisgICAgYm9v
bCBoYXNOZXdBcnJheUJ1ZmZlckRhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
TmV3QXJyYXlCdWZmZXI7CiAgICAgfQogICAgIAotICAgIE5ld0FycmF5QnVmZmVyRGF0YSogbmV3
QXJyYXlCdWZmZXJEYXRhKCkKKyAgICBOZXdBcnJheUJ1ZmZlckRhdGEgbmV3QXJyYXlCdWZmZXJE
YXRhKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNDb25zdGFudEJ1ZmZlcigpKTsKLSAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPE5ld0FycmF5QnVmZmVyRGF0YSo+KCk7CisgICAgICAgIEFT
U0VSVChoYXNOZXdBcnJheUJ1ZmZlckRhdGEoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIu
YXNOZXdBcnJheUJ1ZmZlckRhdGEoKTsKICAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgc3RhcnRD
b25zdGFudCgpCisKKyAgICB1bnNpZ25lZCBoYXNWZWN0b3JMZW5ndGhIaW50KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS0+c3RhcnRDb25zdGFudDsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gTmV3QXJyYXlCdWZmZXI7CiAgICAgfQogICAgIAotICAgIHVuc2ln
bmVkIG51bUNvbnN0YW50cygpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3QXJyYXlCdWZmZXJE
YXRhKCktPm51bUNvbnN0YW50czsKLSAgICB9Ci0KICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGhI
aW50KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS0+dmVjdG9y
TGVuZ3RoSGludDsKKyAgICAgICAgQVNTRVJUKGhhc1ZlY3Rvckxlbmd0aEhpbnQoKSk7CisgICAg
ICAgIHJldHVybiBuZXdBcnJheUJ1ZmZlckRhdGEoKS52ZWN0b3JMZW5ndGhIaW50OwogICAgIH0K
ICAgICAKICAgICBib29sIGhhc0luZGV4aW5nVHlwZSgpCkBAIC0xMTQxLDcgKzExNDIsNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzSW5kZXhpbmdUeXBlKCkpOwog
ICAgICAgICBpZiAob3AoKSA9PSBOZXdBcnJheUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiBu
ZXdBcnJheUJ1ZmZlckRhdGEoKS0+aW5kZXhpbmdUeXBlOworICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluZGV4aW5nVHlwZT4obmV3QXJyYXlCdWZmZXJEYXRhKCkuaW5kZXhpbmdUeXBl
KTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluZGV4aW5nVHlwZT4obV9vcEluZm8uYXM8
dWludDMyX3Q+KCkpOwogICAgIH0KICAgICAKQEAgLTE2MzksNiArMTY0MCw3IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIE1hdGVy
aWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAg
IGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgogICAgICAg
ICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBEaXJlY3RDYWxsOgpA
QCAtMjc1Niw2ICsyNzU4LDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHUucG9pbnRl
ciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0oTmV3QXJy
YXlCdWZmZXJEYXRhIG5ld0FycmF5QnVmZmVyRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAg
dS5pbnQ2NCA9IGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obmV3QXJyYXlCdWZmZXJEYXRhKTsKKyAg
ICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KICAgICAgICAgQUxXQVlTX0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19j
b25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0
eXBlCiAgICAgICAgIHsKQEAgLTI3ODAsNiArMjc4NywxMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVy
ZT4odS5wb2ludGVyKTsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIE5ld0FycmF5
QnVmZmVyRGF0YSBhc05ld0FycmF5QnVmZmVyRGF0YSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8TmV3QXJyYXlCdWZmZXJEYXRhPih1LmludDY0KTsK
KyAgICAgICAgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHVpbnQzMl90IGludDMy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTEx
NDc2OTQ4ZjM4N2MwZjI4YzM1NTEyZTA0NmI4MDEyOTNlNzA4Ni4uYjlmYzNlYTg0NGYyNjAxZWM2
MDUyZWQ2OTlhM2ZlZmM5MTAzMmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC0xNDAzLDExICsxNDAzLDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqCiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4ocmVzdWx0KTsKIH0KIAotY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIHNpemVfdCBzdGFydCwgc2l6ZV90IHNpemUpCitK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBKU0NlbGwqIGZpeGVkQXJyYXksIHNpemVf
dCBzaXplKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEFycmF5KGV4ZWMsIGFycmF5U3RydWN0dXJlLCBleGVjLT5jb2RlQmxvY2soKS0+
Y29uc3RhbnRCdWZmZXIoc3RhcnQpLCBzaXplKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGFycmF5U3RydWN0dXJlLCBqc0Nhc3Q8SlNGaXhlZEFycmF5Kj4oZml4ZWRBcnJheSkt
PnZhbHVlcygpLCBzaXplKTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdJ
bnQ4QXJyYXlXaXRoU2l6ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKaW5kZXggYWJmMDZiNjI3YjNjMGE4NTdlOTA5ZGY5MTk5NzlmNDY3YzY3MzQwNS4uZjJhNDJj
Y2JiYWQ1OTVmOWIzODUwNmRlOWE3Y2M4ZDUyYmRhNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgxLDcgKzgxLDYgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90
eXBlT2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3QoRXhlY1N0
YXRlKiwgSlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHZvaWQqLCBzaXplX3QpIFdURl9J
TlRFUk5BTDsKLWNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RW1wdHlBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5KikgV1RG
X0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
QW5kSGludChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBpbnQzMl90LCBCdXR0ZXJm
bHkqKSBXVEZfSU5URVJOQUw7CkBAIC0xNjMsNiArMTYyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCBSZWcKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVu
dHNEdXJpbmdFeGl0KEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSosIEpTRnVuY3Rpb24qLCBp
bnQzMl90IGFyZ3VtZW50Q291bnQpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNy
ZWF0ZUNsb25lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJn
dW1lbnRTdGFydCwgaW50MzJfdCBsZW5ndGgsIEpTRnVuY3Rpb24qIGNhbGxlZSk7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlUmVzdChFeGVjU3RhdGUqLCBSZWdpc3Rlciog
YXJndW1lbnRTdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAsIHVuc2lnbmVk
IGFycmF5U2l6ZSk7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZm
ZXIoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgSlNDZWxsKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7
CiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9iamVjdElz
T2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKikgV1RGX0lOVEVSTkFM
Owogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT2JqZWN0SXNGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1NTdjMGVhNWUwMWY2
OGZlNzA5Yjk2Zjg0ZTUzM2E5ZDVkYjAxYWRhLi42ZjFhNDI1Y2FiNDkwNzYyZTU5YjFjMTNlMzM2
MDZlN2M0NzQ4ZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xMTEyLDYgKzExMTIsMTIgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VTdENTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIFRydXN0ZWRJbW1QdHIgcG9pbnRlciwgc2l6ZV90IHNpemUpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBwb2ludGVyLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKwog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSog
dGFibGUsIFRydXN0ZWRJbW02NCBpbml0aWFsVmFsdWUpCkBAIC0xNTc0LDExICsxNTgwLDYgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNv
bnN0YW50cykKLSAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFudCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMp
KTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VQUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCB2b2lkKiBwb2lu
dGVyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwpAQCAtMjIyNiwxMSArMjIyNyw2IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BS
KCksIHJlc3VsdC50YWdHUFIoKSk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNTIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0
LCBpbnQgc3RhcnRDb25zdGFudCwgaW50IG51bUNvbnN0YW50cykKLSAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoc3RhcnRDb25zdGFu
dCksIFRydXN0ZWRJbW0zMihudW1Db25zdGFudHMpKTsKLSAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BS
KCkpOwotICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VKUCBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJn
MSwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50
YWdHUFIoKSwgVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA0NWIyZTM1YjA5
MWNkMjI3ZGU2ZDkxOWUzN2RhOTIyMDNlYjYzZmRjLi4wYmVjZGNmY2Y0ZDkxOTc0NjkyOWExMGM4
ODU5MDU0MjJjNTg2NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM5MzAsOSArMzkzMCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
ICAgIEpTRml4ZWRBcnJheSogYXJyYXkgPSBub2RlLT5jYXN0T3BlcmFuZDxKU0ZpeGVkQXJyYXkq
PigpOworICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IGFycmF5LT5sZW5ndGgoKTsKICAg
ICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IG5vZGUtPmluZGV4aW5nVHlwZSgpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlB
cnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKSkgewotICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxl
bWVudHMgPSBub2RlLT5udW1Db25zdGFudHMoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9y
YWdlKHRoaXMpOwpAQCAtMzk0MSwyNiArMzk0MiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3Jh
Z2UuZ3ByKCk7CiAKICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIs
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3Jh
Z2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKLSAgICAg
ICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVm
ZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgbm9kZS0+bnVtQ29uc3RhbnRzKCk7ICsraW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJf
dCBoYWx2ZXNbMl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWU7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gdTsKLSAgICAgICAgICAgICAgICAgICAgdS52YWx1ZSA9IGRhdGFb
aW5kZXhdLmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoSW1t
MzIodS5oYWx2ZXNbMF0pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXpl
b2YoZG91YmxlKSAqIGluZGV4KSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIo
SW1tMzIodS5oYWx2ZXNbMV0pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBz
aXplb2YoZG91YmxlKSAqIGluZGV4ICsgc2l6ZW9mKGludDMyX3QpKSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQzMl90KiBkYXRh
ID0gYml0d2lzZV9jYXN0PGludDMyX3QqPihtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZm
ZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKSk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgbm9kZS0+bnVtQ29uc3RhbnRzKCkgKiAyOyArK2luZGV4KSB7
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBJbW0zMihkYXRhW2luZGV4XSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIHNpemVvZihpbnQzMl90KSAqIGluZGV4KSk7Ci0gICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1FbGVtZW50czsgKytp
bmRleCkgeworICAgICAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICAgICAgaW50
MzJfdCBoYWx2ZXNbMl07CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBlbmNvZGVkVmFsdWU7CisgICAgICAgICAgICAg
ICAgfSB1OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJh
eVdpdGhEb3VibGUpCisgICAgICAgICAgICAgICAgICAgIHUuZG91YmxlVmFsdWUgPSBhcnJheS0+
Z2V0KGluZGV4KS5hc051bWJlcigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgdS5lbmNvZGVkVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpbmRl
eCkpOworICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRvdWJsZSkgPT0gc2l6
ZW9mKEpTVmFsdWUpLCAiIik7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihJbW0zMih1
LmhhbHZlc1swXSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihK
U1ZhbHVlKSAqIGluZGV4KSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihJbW0zMih1
LmhhbHZlc1sxXSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihK
U1ZhbHVlKSAqIGluZGV4ICsgc2l6ZW9mKGludDMyX3QpKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zOTY4LDcgKzM5NjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIo
KSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUo
KSkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50cygpKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSks
IFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIG51bUVsZW1lbnRzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGZhODRlZDY2MWQ0YWMxNzkyOWFiZjk0NWYxN2U2
YTcyMWEyYzIwNTAuLmNjZWM5YTEwNGUyMzI0ZTFkNGE2ZmM1ZDFhZTY4NjBlOTVmNzVkMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtNDE0MCw5ICs0MTQwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjogewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNGaXhlZEFycmF5KiBhcnJheSA9
IG5vZGUtPmNhc3RPcGVyYW5kPEpTRml4ZWRBcnJheSo+KCk7CisgICAgICAgIHVuc2lnbmVkIG51
bUVsZW1lbnRzID0gYXJyYXktPmxlbmd0aCgpOwogICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlID0gbm9kZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0
LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShpbmRleGluZ1R5cGUp
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUtPm51bUNvbnN0YW50
cygpOwogICAgICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoSGludCA9IG5vZGUtPnZlY3Rv
ckxlbmd0aEhpbnQoKTsKICAgICAgICAgICAgIEFTU0VSVCh2ZWN0b3JMZW5ndGhIaW50ID49IG51
bUVsZW1lbnRzKTsKICAgICAgICAgICAgIApAQCAtNDE1NSwyMiArNDE1NiwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KGluZGV4aW5nVHlwZSkpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgdmVjdG9yTGVuZ3RoSGlu
dCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgaW5kZXhpbmdUeXBlICYgSXNBcnJheSk7Ci0gICAgICAgICAgICBKU1ZhbHVlKiBkYXRh
ID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3RhbnQo
KSk7Ci0gICAgICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgewot
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGUtPm51
bUNvbnN0YW50cygpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWx1
ZSA9IGRhdGFbaW5kZXhdLmFzTnVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgICAgICBJbW02NChiaXR3aXNlX2Nhc3Q8aW50NjRf
dD4odmFsdWUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihkb3VibGUpICogaW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG5vZGUtPm51bUNvbnN0YW50cygpOyArK2luZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoCi0gICAgICAgICAgICAgICAgICAgICAgICBJ
bW02NChKU1ZhbHVlOjplbmNvZGUoZGF0YVtpbmRleF0pKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihKU1ZhbHVlKSAq
IGluZGV4KSk7Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1FbGVtZW50czsgKytpbmRleCkgeworICAgICAgICAgICAg
ICAgIGludDY0X3QgdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBB
cnJheVdpdGhEb3VibGUpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYml0d2lzZV9jYXN0
PGludDY0X3Q+KGFycmF5LT5nZXQoaW5kZXgpLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXkt
PmdldChpbmRleCkpOworICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRvdWJs
ZSkgPT0gc2l6ZW9mKEpTVmFsdWUpLCAiIik7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmU2
NChJbW02NCh2YWx1ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVv
ZihKU1ZhbHVlKSAqIGluZGV4KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC00MTc4LDcgKzQxNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLCBub2RlLT5zdGFy
dENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50cygpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksIFRydXN0ZWRJbW1QdHIo
bm9kZS0+Y2VsbE9wZXJhbmQoKSksIG51bUVsZW1lbnRzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBmZDUxY2JjYWQyMDQzOTQ4NDM2ZjQ5Y2IxNGM1ODYzNzM5ZWY0MmQwLi4yMzA1MmViNDgw
NzNlMjU5MWM0YjFmMzliOWIyOTYxOWRmNjljZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC01NDE5LDIyICs1NDE5LDIyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbigKICAgICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgSlNG
aXhlZEFycmF5KiBhcnJheSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8SlNGaXhlZEFycmF5Kj4oKTsK
KyAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNB
bnlBcnJheVN0b3JhZ2UobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIG51bUVsZW1lbnRzID0gbV9ub2RlLT5udW1Db25zdGFudHMoKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aEhpbnQgPSBtX25vZGUtPnZlY3Rvckxlbmd0aEhpbnQoKTsK
ICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQodmVjdG9yTGVuZ3RoSGludCA+PSBudW1F
bGVtZW50cyk7CiAgICAgICAgICAgICBBcnJheVZhbHVlcyBhcnJheVZhbHVlcyA9CiAgICAgICAg
ICAgICAgICAgYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkobnVtRWxlbWVu
dHMsIHZlY3Rvckxlbmd0aEhpbnQsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIEpTVmFsdWUqIGRhdGEgPSBjb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobV9ub2RlLT5z
dGFydENvbnN0YW50KCkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgbV9ub2RlLT5udW1Db25zdGFudHMoKTsgKytpbmRleCkgeworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtRWxlbWVudHM7ICsraW5kZXgpIHsKICAg
ICAgICAgICAgICAgICBpbnQ2NF90IHZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChoYXNEb3Vi
bGUobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0g
Yml0d2lzZV9jYXN0PGludDY0X3Q+KGRhdGFbaW5kZXhdLmFzTnVtYmVyKCkpOworICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IGJpdHdpc2VfY2FzdDxpbnQ2NF90PihhcnJheS0+Z2V0KGluZGV4
KS5hc051bWJlcigpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGRhdGFbaW5kZXhdKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPmdldChpbmRleCkpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50NjQodmFsdWUpLApAQCAtNTQ0OSw4ICs1NDQ5LDggQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAogICAg
ICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciks
IG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291
dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCi0gICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0YW50cygpKSkpOworICAgICAgICAgICAgd2Vh
a1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC53ZWFrUG9pbnRlcihtX25vZGUtPmNlbGxPcGVy
YW5kKCkpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobnVtRWxlbWVudHMpKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggZjg5ZjI3ZjY2NmEyMmFkMTQ2MDhhNTQ5ZWI3NDkwNjMzM2VkNzY5
YS4uODcwMjIyZDgxMjJhYmNiOWE4NDI0ODRhYWEyNTViMTQzY2FhMWY4MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AodW5yZWFjaGFibGUpCiAgICAg
ICAgIERFRklORV9TTE9XX09QKHRocm93X3N0YXRpY19lcnJvcikKICAgICAgICAgREVGSU5FX1NM
T1dfT1AobmV3X2FycmF5X3dpdGhfc3ByZWFkKQorICAgICAgICBERUZJTkVfU0xPV19PUChuZXdf
YXJyYXlfYnVmZmVyKQogICAgICAgICBERUZJTkVfU0xPV19PUChzcHJlYWQpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGdldF9lbnVtZXJhYmxlX2xlbmd0aCkKICAgICAgICAgREVGSU5FX1NMT1df
T1AoaGFzX2dlbmVyaWNfcHJvcGVydHkpCkBAIC0zNzIsNyArMzczLDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmVxX251bGwpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXdfYXJyYXkpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXJyYXlfd2l0aF9zaXplKQotICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FycmF5X2J1ZmZlcikK
ICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjNkZGVjZDVkZTQwNzJjOTJlYjA2ZjY5MzI2MTQ0OGIw
YzQ3YTU1ZS4uYzg4Y2I4MmI1ZjJjNDQxMzRlZTM4NjMyMDE0Mjg0Mzg2YTQ0MWE1YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC01NDAsNyArNTQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXJyYXlfd2l0aF9zaXplKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
ZnVuYyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5z
dHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGZiNWQxMGY2ZWI4M2Q0ZmNjNjZmODMyMTVjM2QyNTg2ZTYzYmU0NWUuLjZhY2I3YjdmYjU2MWZm
ODE5YTZjNGY4NzQ3OWQ0Y2MwMGU3MmQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTAzNCwxNSArMTAzNCw2IEBAIHZvaWQgSklUOjplbWl0X29wX25l
d19hcnJheV93aXRoX3NpemUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRp
ZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXlfYnVmZmVyKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7Ci0gICAgaW50IHZhbHVlc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKLSAgICBpbnQgc2l6ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7Ci0gICAgY29uc3QgSlNWYWx1ZSogdmFsdWVzID0gY29kZUJsb2NrKCktPmNvbnN0YW50QnVm
ZmVyKHZhbHVlc0luZGV4KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyV2l0aFByb2ZpbGUsIGRzdCwgY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlBbGxvY2F0
aW9uUHJvZmlsZSwgdmFsdWVzLCBzaXplKTsKLX0KLQogI2lmIFVTRShKU1ZBTFVFNjQpCiB2b2lk
IEpJVDo6ZW1pdF9vcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCBhY2QyM2U4ZmY4ZWE2MDE4NDgxNmIwYmIyODcwNmNkZTQxYTRmY2Y2Li4xMmJl
MThiMTVkM2JjOTRlNjNkM2QxNTYyY2UzNjRkYTZiN2YyZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTExNzgsMTMgKzExNzgsNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoRXhl
Y1N0YXRlKiBleGVjLCBBcnJheQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgdmFsdWVzLCBzaXplKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXJXaXRo
UHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUs
IGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgaW50IHNpemUpCi17Ci0gICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheShleGVjLCBwcm9maWxlLCB2YWx1
ZXMsIHNpemUpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqIHByb2ZpbGUsIEVuY29kZWRKU1ZhbHVlIHNpemUpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmlu
ZGV4IDZhNTk0MWNiYTcwY2FmOTQ1MDRmYzYzMTcwNzI0YjY4MmYwNzY4YmMuLjJjMmY2NTJmNGFh
NTk0NzMwYWMxNzM3ZTQwMzFlOTBhZmM4NDI4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yMTMsNiArMjEzLDcgQEAgdHlwZWRlZiBKU0NlbGwqIChK
SVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9FU3RSWkpzZkwpKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSoKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRVN0
UlpKc2YpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiwgaW50MzJfdCwgSlNGdW5j
dGlvbiopOwogdHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpDX0pJVE9wZXJhdGlvbl9F
U3RaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KTsKIHR5cGVkZWYgSlNDZWxsKiAo
SklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRVN0WlopKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIGludDMyX3QsIGludDMyX3QpOwordHlwZWRlZiBKU0NlbGwqIChKSVRfT1BFUkFUSU9OICpD
X0pJVE9wZXJhdGlvbl9FU3RDUykoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgSlNDZWxsKiwgc2l6
ZV90KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUNa
WikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2Vs
bCogKEpJVF9PUEVSQVRJT04gKkNfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgSlNDZWxsKiAoSklUX09QRVJBVElPTiAqQ19KSVRPcGVyYXRpb25fRUpzY0kp
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpAQCAtMzkyLDcgKzM5
Myw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmlu
Z0VxKEV4ZWNTdGF0ZSosIEpTQ2VsbCogbGVmdCwKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVTdHJpbmdFcShFeGVjU3RhdGUqLCBKU0NlbGwqIGxlZnQsIEpTQ2VsbCogcmln
aHQpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUqLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludDMyX3Qgc2l6ZSkgV1RGX0lOVEVSTkFM
OwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcldp
dGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBjb25zdCBKU1Zh
bHVlKiB2YWx1ZXMsIGludDMyX3Qgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3Rh
dGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGQ4ZDA2OWM0NDU5MmYyOWI5MzMzNmRjZTUxZGYzNGI5MWYyNjIyZmUuLjEzZDll
NTg5NWMyYmRjY2NhNTFjMmY0MDA5MGExNTdlNWVlZDAxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNTQ0LDEyICs1NDQsNiBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc2l6ZSkKICAgICBM
TElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHBjWzNdLnUuYXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2FycmF5X2J1ZmZlcikKLXsKLSAgICBMTElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVS
Tihjb25zdHJ1Y3RBcnJheShleGVjLCBwY1s0XS51LmFycmF5QWxsb2NhdGlvblByb2ZpbGUsIGV4
ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51
Lm9wZXJhbmQpKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdl
eHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggZWRkMDBlMGRhYWM5MWMzNDhkYjgyMjFlODI3NWIzNjRl
OWQ3YTM2Yi4uZjk2N2VhZTdlNjRjOGM3MzY2YTE3Mjk3YTRjM2EwNmE3YjVlMGNhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTY2LDcgKzY2
LDYgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHN0YWNrX2NoZWNrKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X29iamVjdCk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NpemUpOwotTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2luc3RhbmNlb2YpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mX2N1c3RvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2ZmYjFjNWFjMWVj
YWRjMzU5MzljOGQzNTYzYTUzZGI2MDIzNjNkZC4uZjRkMzYwMDE2ZmQ1NjI5YTQyMWQwZjhjNGYx
NGMyM2IwOGNiMjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgX2xsaW50X29wX25l
d19hcnJheV93aXRoX3NpemU6CiAKIF9sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfYXJyYXlfYnVmZmVyKQorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX25ld19h
cnJheV9idWZmZXIpCiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX25ld19hcnJheV9idWZmZXJf
bGVuZ3RoKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IGNlOGJjY2JkYTBmNGViYTdjNzJlOTUzYzlhZmI2OGY0MDExNzY4
N2UuLmFhNDJiN2JiYzc2ZmFjNTg3NDk2NTQwMWJjNDI5ODcwZWIxZWRmZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTA3
NCw2ICsxMDc0LDEzIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfd2l0aF9z
cHJlYWQpCiAgICAgUkVUVVJOKHJlc3VsdCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIEJFR0lOKCk7CisgICAgYXV0byogZml4ZWRBcnJh
eSA9IGpzQ2FzdDxKU0ZpeGVkQXJyYXkqPihPUF9DKDIpLmpzVmFsdWUoKSk7CisgICAgUkVUVVJO
KGNvbnN0cnVjdEFycmF5KGV4ZWMsIHBjWzNdLnUuYXJyYXlBbGxvY2F0aW9uUHJvZmlsZSwgZml4
ZWRBcnJheS0+dmFsdWVzKCksIGZpeGVkQXJyYXktPmxlbmd0aCgpKSk7Cit9CisKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9zcHJlYWQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOGY4MGExZjJmZDAy
Yzc2MzcxYmRmZDhhYzY3MzFhNWU3Njc2YmRiYi4uNDYwNzI2NzM1YmRkNjcyYzUyYzdmNWNmNGYw
NDZhZTJjMzNhZGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKQEAgLTI4NCw2ICsyODQsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfdGhyb3dfc3RhdGljX2Vycm9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FycmF5X3dpdGhfc3ByZWFkKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3NwcmVhZCk7CiAKIHVzaW5nIFNsb3dQYXRoRnVuY3Rpb24gPSBTbG93UGF0aFJldHVyblR5
cGUoU0xPV19QQVRIICopKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmNwcAppbmRleCBjYjQzOGZhYmZmNjJm
MWY2ZmE2YjA1YWU3MjkzOTUyYjAyMmQ0N2MzLi5iMzUzN2NhZWVlMDZjMTI0NTJmMmEyOGQwYWE4
ZGMwMDI5MmM4MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0ZpeGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRml4
ZWRBcnJheS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC01MSw0ICs1MiwxNSBAQCB2b2lkIEpTRml4ZWRBcnJheTo6
Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxl
bWVudAogICAgIH0KIH0KIAordm9pZCBKU0ZpeGVkQXJyYXk6OmR1bXBUb1N0cmVhbShjb25zdCBK
U0NlbGwqIGNlbGwsIFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgVk0mIHZtID0gKmNlbGwtPnZt
KCk7CisgICAgY29uc3QgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25zdCBKU0ZpeGVkQXJy
YXkqPihjZWxsKTsKKyAgICBvdXQucHJpbnRmKCI8JXAsICVzLCBbJXVdLCBbIiwgdGhpc09iamVj
dCwgdGhpc09iamVjdC0+Y2xhc3NOYW1lKHZtKSwgdGhpc09iamVjdC0+bGVuZ3RoKCkpOworICAg
IENvbW1hUHJpbnRlciBjb21tYTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCB0aGlzT2JqZWN0LT5sZW5ndGgoKTsgKytpbmRleCkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCB0aGlzT2JqZWN0LT5nZXQoaW5kZXgpKTsKKyAgICBvdXQucHJpbnQoIl0+Iik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGaXhlZEFycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVk
QXJyYXkuaAppbmRleCBkNmVlNTU4ZmNjMTAwZTUyZDNmYzU0M2QyMTI4NzAxMzc1ZDEyYmNmLi4w
NzM0MjI2OWMyMDRiY2FmOTk5YTg0NTUxMTVkZDc1NGJhZTQ1Yzg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXkuaApAQCAtNTcsNiArNTcsMTMgQEAgY2xh
c3MgSlNGaXhlZEFycmF5IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCisgICAgc3RhdGljIEpTRml4ZWRBcnJheSogY3JlYXRlKFZNJiB2bSwgdW5zaWdu
ZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgYXV0byogYXJyYXkgPSB0cnlDcmVhdGUodm0sIHZt
LmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGFycmF5KTsKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0KKwogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTRml4ZWRBcnJheSogY3JlYXRlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhl
YywgVk0mIHZtLCBKU0FycmF5KiBhcnJheSkKICAgICB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTEwLDE3ICsxMTcsMjYgQEAgY2xhc3Mg
SlNGaXhlZEFycmF5IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldCh1bnNpZ25lZCBpbmRleCkKKyAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlcigp
W2luZGV4XS5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIHNldChWTSYgdm0sIHVuc2lnbmVkIGlu
ZGV4LCBKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9zaXpl
KTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcigpW2luZGV4XS5zZXQodm0sIHRoaXMsIHZhbHVlKTsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIFdyaXRlQmFycmllcjxVbmtub3duPiogYnVmZmVy
KCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KGJpdHdpc2Vf
Y2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkRhdGEoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IFdyaXRlQmFycmllcjxVbmtub3duPiogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxKU0ZpeGVkQXJyYXkqPih0aGlzKS0+YnVmZmVyKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGNv
bnN0IEpTVmFsdWUqIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBK
U1ZhbHVlKj4oYnVmZmVyKCkpOyB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAKICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mU2l6ZSgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0ZpeGVkQXJyYXksIG1fc2l6ZSk7IH0KIApAQCAtMTMxLDYgKzE0Nyw4IEBAIGNs
YXNzIEpTRml4ZWRBcnJheSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBjb3B5VG9Bcmd1
bWVudHMoRXhlY1N0YXRlKiwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAorICAgIHN0YXRpYyB2b2lkIGR1bXBUb1N0
cmVhbShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOworCiBwcml2YXRlOgogICAgIEpTRml4
ZWRBcnJheShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBzaXplKQogICAg
ICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
</data>
<flag name="review"
          id="346941"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>