<?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>165805</bug_id>
          
          <creation_ts>2016-12-13 10:01:59 -0800</creation_ts>
          <short_desc>WebAssembly API: implement WebAssembly.LinkError</short_desc>
          <delta_ts>2016-12-20 15:55:02 -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>JavaScriptCore</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>159775</blocked>
    
    <blocked>166199</blocked>
    
    <blocked>166295</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259422</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-13 10:01:59 -0800</bug_when>
    <thetext>Added in https://github.com/WebAssembly/design/pull/901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261318</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-12-19 20:56:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/29747874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261331</commentid>
    <comment_count>2</comment_count>
      <attachid>297510</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-19 22:47:31 -0800</bug_when>
    <thetext>Created attachment 297510
patch

Most of this patch is boilerplate for a new JS object, copied as-is from the CompileError code and modified with sed.

I noted the interesting changes in the ChangeLog, but they&apos;re not that interesting either:
 - Change error types thrown in instance construction and module linking.
 - Update tests accordingly.

Overall, a good late-day patch: we need to do this, and it&apos;s brainless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261402</commentid>
    <comment_count>3</comment_count>
      <attachid>297510</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-20 09:23:29 -0800</bug_when>
    <thetext>Comment on attachment 297510
patch

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

r=me with fixes.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyLinkError.cpp:55
&gt; +JSObject* createWebAssemblyLinkError(ExecState* exec, const String&amp; message)
&gt; +{
&gt; +    ASSERT(!message.isEmpty());
&gt; +    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
&gt; +    return ErrorInstance::create(exec, globalObject-&gt;vm(), globalObject-&gt;WebAssemblyLinkErrorStructure(), message, defaultSourceAppender, TypeNothing, true);

This is weird.  The function name suggests that we&apos;re creating an WebAssemblyLinkError, but we&apos;re invoking the ErrorInstance factory instead of the JSWebAssemblyLinkError factory above.  Am I missing something?  Do we really need the JSWebAssemblyLinkError class?

I think the error here is that you&apos;re constructing an instance of ErrorInstance instead of JSWebAssemblyLinkError.

nit: I also recommend passing a VM&amp; in as one of the arguments so that we don&apos;t have to recompute it.  We already know the VM&amp; at all call sites below (except fro one ... but I&apos;ll provide details on how to address that one below).

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorConstructor.cpp:53
&gt; +    RETURN_IF_EXCEPTION(scope, { });

This is wrong (and also wrong in the other places).  { } invokes the default constructor for int64_t which is not the same as the JSValue::encode(JSValue()).  What you want here is:
     RETURN_IF_EXCEPTION(scope, encodedJSValue());

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:201
&gt; +    return throwException(state, scope, createWebAssemblyLinkError(state, makeString(ASCIILiteral(&quot;Invalid data segment initialization: segment of &quot;), String::number(segmentSize), ASCIILiteral(&quot; bytes memory of &quot;), String::number(memorySize), ASCIILiteral(&quot; bytes, at offset &quot;), String::number(offset), args...)));

if you do change createWebAssemblyLinkError() to take a VM&amp;, you can get VM&amp; from scope.vm().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261608</commentid>
    <comment_count>4</comment_count>
      <attachid>297542</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-20 11:44:20 -0800</bug_when>
    <thetext>Created attachment 297542
patch

Address comments. I&apos;ll do follow-up patches to address similar issues (encoded value, error construction, VM) elsewhere in the wasm codebase. Thanks for pointing those out!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261666</commentid>
    <comment_count>5</comment_count>
      <attachid>297542</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 12:20:46 -0800</bug_when>
    <thetext>Comment on attachment 297542
patch

Clearing flags on attachment: 297542

Committed r210028: &lt;http://trac.webkit.org/changeset/210028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261668</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-20 12:20:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297510</attachid>
            <date>2016-12-19 22:47:31 -0800</date>
            <delta_ts>2016-12-20 11:44:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-link-error.patch</filename>
            <type>text/plain</type>
            <size>61999</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA5OTIxNGI4MDk5NTc2NjE2ZDAwOGE4MDhjZWRjZTA2YzJjMDcwYjNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE5IERlYyAyMDE2IDIyOjQ0OjA0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbSBs
aW5rIGVycm9yCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDI1ICsrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQtZGF0YS5q
cyAgICAgICAgICAgICAgICB8ICAgMiArLQogSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50Lmpz
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvZ2xvYmFs
LWVycm9yLmpzICAgICAgICAgICAgICAgIHwgICAyICstCiBKU1Rlc3RzL3dhc20vanMtYXBpL3Rh
YmxlLmpzICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLS0KIEpTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9EYXRhLmpzICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBKU1Rlc3RzL3dhc20v
anMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAgMiArCiBKU1Rlc3RzL3dh
c20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzICAgICAgICAgICAgICAgICB8ICAzNiArKystLS0tLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgfCAgIDUg
KwogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAg
NDUgKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSAg
ICAgICAgICB8ICAgMiArCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAyNCArKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oICAgICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCAgICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
SlNXZWJBc3NlbWJseS5oICAgICAgICAgfCAgIDMgKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJs
eUxpbmtFcnJvci5jcHAgICAgICAgICAgICAgfCAgNjAgKysrKysrKysrKysrCiAuLi4vd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmggICAgICAgICAgICAgICB8ICA1NCArKysrKysrKysr
KwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCAgICAgfCAg
MjcgKysrLS0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNw
cCAgICB8IDEwMiArKysrKysrKysrKysrKysrKysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3IuaCAgICAgIHwgIDU4ICsrKysrKysrKysrKwogLi4uL3dhc20v
anMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwICAgICAgfCAgNjkgKysrKysrKysr
KysrKysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmggICAgICAg
IHwgIDU0ICsrKysrKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAgICAgICAgICAgICB8ICAgNSArLQogMjMgZmlsZXMgY2hhbmdlZCwgNTQ1IGluc2VydGlvbnMo
KyksIDUyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2NWZh
OTcyLi43ZjAwZjlhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTEyLTE5ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBBUEk6IGltcGxlbWVudCBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk3NDc4NzQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGFs
bCBleGNlcHRpb24gc2l0ZXMgd2hpY2ggbm93IHRocm93IFdlYkFzc2VtYmx5LkxpbmtFcnJvci4K
KworICAgICAgICAqIHdhc20vanMtYXBpL2VsZW1lbnQtZGF0YS5qczoKKyAgICAgICAgKiB3YXNt
L2pzLWFwaS9lbGVtZW50LmpzOgorICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICog
d2FzbS9qcy1hcGkvZ2xvYmFsLWVycm9yLmpzOgorICAgICAgICAobmV3Lk51bWJlcik6CisgICAg
ICAgICogd2FzbS9qcy1hcGkvdGFibGUuanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAg
ICAgICAgKG5ldy5XZWJBc3NlbWJseS5UYWJsZSk6CisgICAgICAgICogd2FzbS9qcy1hcGkvdGVz
dF9EYXRhLmpzOgorICAgICAgICAqIHdhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzOgorICAg
ICAgICAoY29uc3QuYy5pbi5jb25zdHJ1Y3RvclByb3BlcnRpZXMuc3dpdGNoKToKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qczoKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
dGVzdC50ZXN0TWVtSW1wb3J0RXJyb3IpOiBEZWxldGVkLgorCiAyMDE2LTEyLTE5ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsaW5nIG91dCByMjA5OTc0IGFu
ZCByMjA5OTUyLiBUaGV5IGJyZWFrIHNvbWUgd2Vic2l0ZXMgaW4gbXlzdGVyaW91cyB3YXlzLiBT
dGVwIDI6IFJvbGxvdXQgcjIwOTk1Mi4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
ZWxlbWVudC1kYXRhLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50LWRhdGEuanMKaW5k
ZXggODViZWMzNC4uY2I0M2Y0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVt
ZW50LWRhdGEuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50LWRhdGEuanMKQEAg
LTM3LDcgKzM3LDcgQEAgY29uc3QgbWVtb3J5RGVzY3JpcHRpb24gPSB7IGluaXRpYWw6IG1lbVNp
emVJblBhZ2VzLCBtYXhpbXVtOiBtZW1TaXplSW5QYWdlcyB9OwogICAgICAgICAgICAgdGFibGU6
IHRhYmxlLAogICAgICAgICB9CiAgICAgfTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBX
ZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGltcG9ydHMpLCBSYW5nZUVycm9yLCBgRWxlbWVu
dCBpcyB0cnlpbmcgdG8gc2V0IGFuIG91dCBvZiBib3VuZHMgdGFibGUgaW5kZXhgKTsKKyAgICBh
c3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGltcG9y
dHMpLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4g
b3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwgaW1wb3J0cyknKWApOwogICAgIC8vIE9uIEVsZW1lbnQgZmFpbHVyZSwg
dGhlIERhdGEgc2VjdGlvbiBzaG91bGRuJ3QgaGF2ZSBleGVjdXRlZC4KICAgICBjb25zdCBidWZm
ZXIgPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTsKICAgICBmb3IgKGxldCBpZHggPSAw
OyBpZHggPCBtZW1TaXplSW5QYWdlcyAqIHBhZ2VTaXplSW5CeXRlczsgKytpZHgpIHsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZWxlbWVudC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvZWxlbWVudC5qcwppbmRleCAxNjBmZmQwLi5iMjY5MjkyIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20vanMtYXBpL2VsZW1lbnQuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50
LmpzCkBAIC0xNDEsNiArMTQxLDYgQEAgaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2Vy
dC5qcyc7CiAKICAgICBmb3IgKGxldCBpID0gMTk7IGkgPCAxOSArIDU7IGkrKykgewogICAgICAg
ICBjb25zdCB0YWJsZSA9IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7ZWxlbWVudDogImFueWZ1bmMi
LCBpbml0aWFsOiBpfSk7Ci0gICAgICAgIGJhZEluc3RhbnRpYXRpb24odGFibGUsIFJhbmdlRXJy
b3IsICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRl
eCIpOworICAgICAgICBiYWRJbnN0YW50aWF0aW9uKHRhYmxlLCBXZWJBc3NlbWJseS5MaW5rRXJy
b3IsICJFbGVtZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRl
eCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3Rh
YmxlOiBhY3R1YWxUYWJsZX19KScpIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL2pzLWFwaS9nbG9iYWwtZXJyb3IuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1l
cnJvci5qcwppbmRleCAyYTdkOGMwLi44N2E0NjkyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
anMtYXBpL2dsb2JhbC1lcnJvci5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2dsb2JhbC1l
cnJvci5qcwpAQCAtMTg1LDUgKzE4NSw1IEBAIGZvciAoIGxldCBpbXAgb2YgW3VuZGVmaW5lZCwg
bnVsbCwge30sICgpID0+IHt9LCAibnVtYmVyIiwgbmV3IE51bWJlcig0KV0pIHsKICAgICBiaW4u
dHJpbSgpOwogCiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4u
Z2V0KCkpOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAgfSB9KSwgVHlwZUVycm9yLCAiaW1wb3J0ZWQg
Z2xvYmFsIG11c3QgYmUgYSBudW1iZXIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIHsgaW1wOiB7IGdsb2JhbDogaW1wIH0gfSknKSIpOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZ2xv
YmFsOiBpbXAgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCAiaW1wb3J0ZWQgZ2xvYmFsIG11
c3QgYmUgYSBudW1iZXIgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUsIHsgaW1wOiB7IGdsb2JhbDogaW1wIH0gfSknKSIpOwogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2pzLWFwaS90YWJsZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMKaW5k
ZXggZGI3MzQyMS4uMWMzMjFlYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJs
ZS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCkBAIC0xODksMTQgKzE4OSwx
NCBAQCBmdW5jdGlvbiBhc3NlcnRCYWRUYWJsZUltcG9ydCh0YWJsZURlc2NyaXB0aW9uLCBtZXNz
YWdlKSB7CiAgICAgICAgICAgICAuQ29kZSgpCiAgICAgICAgICAgICAuRW5kKCk7CiAgICAgICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJs
eSgpLmdldCgpKTsKLSAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGV9fSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cisg
ICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSwge2ltcDoge3RhYmxlfX0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIG1lc3NhZ2UpOwogICAg
IH0KIAogICAgIGNvbnN0IGJhZFRhYmxlcyA9IFsKLSAgICAgICAgW3tpbml0aWFsOiAxMDAsIG1h
eGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5p
dGlhbDoxMDAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IGRvZXMgbm90IGhh
dmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIl0sCi0g
ICAgICAgIFt7aW5pdGlhbDogMTAwLCBtYXhpbXVtOjEwMCwgZWxlbWVudDoiYW55ZnVuYyJ9LCBu
ZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MTAwLCBtYXhpbXVtOjEwMSwgZWxlbWVudDog
ImFueWZ1bmMifSksICJJbXBvcnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0
aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIl0sCi0gICAgICAgIFt7aW5pdGlhbDogMTAw
LCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxMCwg
ZWxlbWVudDogImFueWZ1bmMifSksICJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwn
IHRoYXQgaXMgdG9vIHNtYWxsIl0sCi0gICAgICAgIFt7aW5pdGlhbDogMTAsIGVsZW1lbnQ6ImFu
eWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjksIGVsZW1lbnQ6ICJhbnlm
dW5jIn0pLCAiVGFibGUgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBz
bWFsbCJdLAorICAgICAgICBbe2luaXRpYWw6IDEwMCwgbWF4aW11bToxMDAsIGVsZW1lbnQ6ImFu
eWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwMCwgZWxlbWVudDogImFu
eWZ1bmMifSksICJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhl
IG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KScpIl0sCisgICAgICAgIFt7aW5pdGlh
bDogMTAwLCBtYXhpbXVtOjEwMCwgZWxlbWVudDoiYW55ZnVuYyJ9LCBuZXcgV2ViQXNzZW1ibHku
VGFibGUoe2luaXRpYWw6MTAwLCBtYXhpbXVtOjEwMSwgZWxlbWVudDogImFueWZ1bmMifSksICJJ
bXBvcnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhw
ZWN0ZWQgJ21heGltdW0nIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCB7aW1wOiB7dGFibGV9fSknKSJdLAorICAgICAgICBbe2luaXRpYWw6IDEwMCwgZWxlbWVu
dDoiYW55ZnVuYyJ9LCBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MTAsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pLCAiVGFibGUgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlz
IHRvbyBzbWFsbCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
e2ltcDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMCwgZWxlbWVudDoiYW55
ZnVuYyJ9LCBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6OSwgZWxlbWVudDogImFueWZ1
bmMifSksICJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNt
YWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7
dGFibGV9fSknKSJdLAogICAgIF07CiAgICAgZm9yIChjb25zdCBbZCwgdCwgbV0gb2YgYmFkVGFi
bGVzKSB7CiAgICAgICAgIGFzc2VydEJhZFRhYmxlSW5zdGFuY2UoZCwgdCwgbSk7CkBAIC0yNTEs
NyArMjUxLDcgQEAgZnVuY3Rpb24gYXNzZXJ0QmFkVGFibGVJbXBvcnQodGFibGVEZXNjcmlwdGlv
biwgbWVzc2FnZSkgewogICAgICAgICAgICAgLkNvZGUoKQogICAgICAgICAgICAgLkVuZCgpOwog
ICAgICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1aWxkZXIuV2Vi
QXNzZW1ibHkoKS5nZXQoKSk7Ci0gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pLCBUeXBlRXJyb3IsICJUYWJs
ZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIik7CisgICAg
ICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
e2ltcDoge3RhYmxlfX0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsICJUYWJsZSBpbXBvcnQgaXMg
bm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIChldmFsdWF0aW5nICduZXcgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGV9fSknKSIpOwogICAgIH0KICAg
ICBhc3NlcnRCYWRUYWJsZSgyNSk7CiAgICAgYXNzZXJ0QmFkVGFibGUobmV3IE9iamVjdCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfRGF0YS5qcyBiL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvdGVzdF9EYXRhLmpzCmluZGV4IDdjMWZhMTguLmQ3N2ZkZGYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9EYXRhLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9EYXRhLmpzCkBAIC03NSw3ICs3NSw3IEBAIGNvbnN0IGFzc2VydE1lbW9yeUFsbFpl
cm8gPSBtZW1vcnkgPT4gewogICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAg
ICAgY29uc3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlv
bik7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCB7IGltcDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgSW52YWxpZCBk
YXRhIHNlZ21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgNjU1MzcgYnl0ZXMgbWVtb3J5
IG9mIDY1NTM2IGJ5dGVzLCBhdCBvZmZzZXQgMCwgc2VnbWVudCBpcyB0b28gYmlnYCk7CisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBJbnZhbGlk
IGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiA2NTUzNyBieXRlcyBtZW1v
cnkgb2YgNjU1MzYgYnl0ZXMsIGF0IG9mZnNldCAwLCBzZWdtZW50IGlzIHRvbyBiaWcgKGV2YWx1
YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1lbW9yeTog
bWVtb3J5IH0gfSknKWApOwogICAgIGFzc2VydE1lbW9yeUFsbFplcm8obWVtb3J5KTsKIH0pKCk7
CiAKQEAgLTg5LDcgKzg5LDcgQEAgY29uc3QgYXNzZXJ0TWVtb3J5QWxsWmVybyA9IG1lbW9yeSA9
PiB7CiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwogICAgIGNv
bnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKICAgICBjb25zdCBtZW1v
cnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0aW9uKTsKLSAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7
IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBJbnZhbGlkIGRhdGEgc2VnbWVudCBp
bml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAxIGJ5dGVzIG1lbW9yeSBvZiA2NTUzNiBieXRlcywg
YXQgb2Zmc2V0IDY1NTM2LCBzZWdtZW50IHdyaXRlcyBvdXRzaWRlIG9mIG1lbW9yeWApOworICAg
IGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgbWVtb3J5OiBtZW1vcnkgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgSW52YWxp
ZCBkYXRhIHNlZ21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgMSBieXRlcyBtZW1vcnkg
b2YgNjU1MzYgYnl0ZXMsIGF0IG9mZnNldCA2NTUzNiwgc2VnbWVudCB3cml0ZXMgb3V0c2lkZSBv
ZiBtZW1vcnkgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsg
aW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSknKWApOwogICAgIGFzc2VydE1lbW9yeUFsbFplcm8o
bWVtb3J5KTsKIH0pKCk7CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBjb25zdCBhc3NlcnRNZW1vcnlB
bGxaZXJvID0gbWVtb3J5ID0+IHsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4p
OwogICAgIGNvbnN0IG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkobWVtb3J5RGVzY3Jp
cHRpb24pOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5OiBtZW1vcnkgfSB9KSwgUmFuZ2VFcnJvciwgYEludmFs
aWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0aW9uOiBzZWdtZW50IG9mIDIgYnl0ZXMgbWVtb3J5
IG9mIDY1NTM2IGJ5dGVzLCBhdCBvZmZzZXQgNjU1MzUsIHNlZ21lbnQgd3JpdGVzIG91dHNpZGUg
b2YgbWVtb3J5YCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobW9kdWxlLCB7IGltcDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBXZWJBc3NlbWJseS5M
aW5rRXJyb3IsIGBJbnZhbGlkIGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBv
ZiAyIGJ5dGVzIG1lbW9yeSBvZiA2NTUzNiBieXRlcywgYXQgb2Zmc2V0IDY1NTM1LCBzZWdtZW50
IHdyaXRlcyBvdXRzaWRlIG9mIG1lbW9yeSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5OiBtZW1vcnkgfSB9KScpYCk7CiAgICAgYXNz
ZXJ0TWVtb3J5QWxsWmVybyhtZW1vcnkpOwogfSkoKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9i
YXNpY19hcGkuanMKaW5kZXggNDNiN2Q3ZC4uMDc3ZjAyZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2FwaS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rl
c3RfYmFzaWNfYXBpLmpzCkBAIC0yNCw2ICsyNCw3IEBAIGNvbnN0IGNvbnN0cnVjdG9yUHJvcGVy
dGllcyA9IHsKICAgICAiTWVtb3J5IjogICAgICAgeyB0eXBlb2Z2YWx1ZTogImZ1bmN0aW9uIiwg
d3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGxl
bmd0aDogMSB9LAogICAgICJUYWJsZSI6ICAgICAgICB7IHR5cGVvZnZhbHVlOiAiZnVuY3Rpb24i
LCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwg
bGVuZ3RoOiAxIH0sCiAgICAgIkNvbXBpbGVFcnJvciI6IHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlv
biIsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNl
LCBsZW5ndGg6IDEgfSwKKyAgICAiTGlua0Vycm9yIjogICAgeyB0eXBlb2Z2YWx1ZTogImZ1bmN0
aW9uIiwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFs
c2UsIGxlbmd0aDogMSB9LAogICAgICJSdW50aW1lRXJyb3IiOiB7IHR5cGVvZnZhbHVlOiAiZnVu
Y3Rpb24iLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBm
YWxzZSwgbGVuZ3RoOiAxIH0sCiB9OwogCkBAIC04Myw2ICs4NCw3IEBAIGZvciAoY29uc3QgYyBp
biBjb25zdHJ1Y3RvclByb3BlcnRpZXMpIHsKICAgICAgICAgbmV3IFdlYkFzc2VtYmx5LlRhYmxl
KHtpbml0aWFsOiAyMCwgbWF4aW11bTogMjUsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlICJDb21waWxlRXJyb3IiOgorICAgIGNhc2UgIkxpbmtFcnJvciI6
CiAgICAgY2FzZSAiUnVudGltZUVycm9yIjogewogICAgICAgICBjb25zdCBlID0gbmV3IFdlYkFz
c2VtYmx5W2NdOwogICAgICAgICBhc3NlcnQuZXEoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5W2Nd
LCB0cnVlKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMg
Yi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmluZGV4IDBhODIwN2QuLmUwYjk4
ZjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanMKKysrIGIv
SlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAtMzE4LDI4ICszMTgsMTQgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCku
Z2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwog
Ci0gICAgZnVuY3Rpb24gdGVzdE1lbUltcG9ydEVycm9yKGluc3RhbmNlT2JqLCBleHBlY3RlZEVy
cm9yKSB7Ci0gICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwotICAgICAgICB0cnkgewotICAgICAg
ICAgICAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgaW5zdGFuY2VPYmopOwotICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIGFzc2VydC50cnV0aHkoZSBpbnN0YW5jZW9m
IFR5cGVFcnJvcik7Ci0gICAgICAgICAgICB0aHJldyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAo
ZXhwZWN0ZWRFcnJvcikgewotICAgICAgICAgICAgICAgIGFzc2VydC50cnV0aHkoZS5tZXNzYWdl
ID09PSBleHBlY3RlZEVycm9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBh
c3NlcnQudHJ1dGh5KHRocmV3KTsKLSAgICB9Ci0KLSAgICB0ZXN0TWVtSW1wb3J0RXJyb3IoMjAp
OwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7IH0pOwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7
aW1wOiB7IH0gfSk7Ci0gICAgdGVzdE1lbUltcG9ydEVycm9yKHtpbXA6IHsgbWVtb3J5OiAyMCB9
IH0pOwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9yeTogW10gfSB9KTsKLSAg
ICB0ZXN0TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1v
cnkoe2luaXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSwgIk1lbW9yeSBpbXBvcnQgcHJvdmlk
ZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIik7Ci0gICAgdGVzdE1lbUltcG9ydEVy
cm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAyMH0p
IH0gfSwgIk1lbW9yeSBpbXBvcnQgZGlkIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9k
dWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpOwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1w
OiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjAsIG1heGltdW06
IDI2fSkgfSB9LCAiTWVtb3J5IGltcG9ydHMgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBt
b2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSIpOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgMjApLCBUeXBlRXJyb3IsIGBzZWNvbmQgYXJn
dW1lbnQgdG8gV2ViQXNzZW1ibHkuSW5zdGFuY2UgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4gT2Jq
ZWN0IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCAyMCknKWAp
OworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSwge30pLCBUeXBlRXJyb3IsIGBpbXBvcnQgbXVzdCBiZSBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHt9KScpYCk7CisgICAgYXNzZXJ0LnRo
cm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IH0gfSks
IFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNl
IG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwge2ltcDogeyB9IH0pJylgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5l
dyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiAyMCB9IH0pLCBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBv
ZiBXZWJBc3NlbWJseS5NZW1vcnkgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiAyMCB9IH0pJylgKTsKKyAgICBhc3NlcnQudGhyb3dz
KCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBb
XSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGlzIG5vdCBhbiBp
bnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBbXSB9IH0pJylgKTsKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsg
bWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOSwgbWF4aW11bTogMjV9
KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFu
ICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSknKWApOworICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5l
dyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwfSkgfSB9KSwgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLCBgTWVtb3J5IGltcG9ydCBkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBt
b2R1bGUgcmVxdWlyZXMgdGhhdCBpdCBkb2VzIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
aW5pdGlhbDogMjB9KSB9IH0pJylgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHku
TWVtb3J5KHtpbml0aWFsOiAyMCwgbWF4aW11bTogMjZ9KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5r
RXJyb3IsIGBNZW1vcnkgaW1wb3J0cyAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVs
ZSdzIGV4cGVjdGVkICdtYXhpbXVtJyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRp
YWw6IDIwLCBtYXhpbXVtOiAyNn0pIH0gfSknKWApOwogfSk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7
CkBAIC0zNjYsMTEgKzM1MiwxMSBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNvbnN0IG1vZHVs
ZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKIAogICAgIGZ1bmN0aW9uIHRlc3RNZW1J
bXBvcnRFcnJvcihpbnN0YW5jZU9iaiwgZXhwZWN0ZWRFcnJvcikgewotICAgICAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIGluc3RhbmNlT2Jq
KSwgVHlwZUVycm9yLCBleHBlY3RlZEVycm9yKTsKKyAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBpbnN0YW5jZU9iaiksIFdlYkFzc2Vt
Ymx5LkxpbmtFcnJvciwgZXhwZWN0ZWRFcnJvcik7CiAgICAgfQogCi0gICAgdGVzdE1lbUltcG9y
dEVycm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAx
OSwgbWF4aW11bTogMjV9KSB9IH0sICJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFs
JyB0aGF0IGlzIHRvbyBzbWFsbCIpOwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1l
bW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTl9KSB9IH0sICJNZW1vcnkg
aW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpOworICAgIHRl
c3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7
aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkgfSB9LCAiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBh
biAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIGluc3RhbmNlT2JqKScpIik7CisgICAgdGVzdE1lbUltcG9ydEVy
cm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOX0p
IH0gfSwgIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNt
YWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBpbnN0YW5j
ZU9iaiknKSIpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgbm90IHRocm93LgogICAgIG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHttZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoe2luaXRpYWw6MjB9KX19KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAwYzdhYWM2Li44NzAwYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC05MTEsNiArOTExLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlDYWxsZWUuY3BwCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29t
cGlsZUVycm9yLmNwcAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorICAg
IHdhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKICAgICB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNZW1vcnkuY3BwCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAogICAg
IHdhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAKQEAgLTkyMCw2ICs5MjEsOCBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vanMvV2ViQXNzZW1ibHlGdW5j
dGlvbi5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAK
ICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCisgICAgd2FzbS9q
cy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAorICAgIHdhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUu
Y3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtOTg3
LDYgKzk5MCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICB3
YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAogICAgIHdhc20vanMv
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1i
bHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZS5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCiAgICAg
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKICAgICB3YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZmY4ZWUyLi45ZjVjMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBA
QAorMjAxNi0xMi0xOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViQXNzZW1ibHkgQVBJOiBpbXBsZW1lbnQgV2ViQXNzZW1ibHkuTGlua0Vycm9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4MDUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI5NzQ3ODc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFzIGRlc2NyaWJlZCBoZXJlOiBodHRwczovL2dpdGh1Yi5j
b20vV2ViQXNzZW1ibHkvZGVzaWduL3B1bGwvOTAxCisgICAgICAgIFNvbWUgVHlwZUVycm9yIGFu
ZCBSYW5nZUVycm9yIGFyZSBub3cgY29udmVydGVkIHRvIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBhZGQgZmlsZXMKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOiBhZGQgYXV0b2dldCAubHV0LmggZmlsZXMKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBhZGQgZmlsZXMKKyAgICAgICAgKiBi
dWlsdGlucy9CdWlsdGluTmFtZXMuaDogbmV3IG5hbWUgTGlua0Vycm9yCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOiBhdXRvLXJlZ2lzdGVyIExpbmtFcnJvciB1c2luZyBleGlz
dGluZyBtYWNybyBtYWdpYworICAgICAgICAqIHdhc20vSlNXZWJBc3NlbWJseS5oOiBtYWtlIHRo
ZSBuZXcgaW5jbHVkZXMgYXZhaWxhYmxlCisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TGlua0Vycm9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAuCisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlM
aW5rRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6
OkpTV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVXZWJBc3NlbWJs
eUxpbmtFcnJvcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IuaC4KKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHA6
IHVwZGF0ZSBhcyBwZXIgc3BlYyBjaGFuZ2UKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJB
c3NlbWJseUluc3RhbmNlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0RGF0YSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5oLgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwci5jcHAuCisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU6OldlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXByLmguCisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6IHVwZGF0ZSBhcyBwZXIgc3BlYyBjaGFuZ2UK
KyAgICAgICAgKEpTQzo6ZGF0YVNlZ21lbnRGYWlsKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToKKwogMjAxNi0xMi0xOSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbGluZyBvdXQgcjIwOTk3NCBhbmQgcjIwOTk1
Mi4gVGhleSBicmVhayBzb21lIHdlYnNpdGVzIGluIG15c3RlcmlvdXMgd2F5cy4gU3RlcCAyOiBS
b2xsb3V0IHIyMDk5NTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IGZiOTIzNDUuLjY0MGQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xNjksNiArMTY5LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAog
ICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3Nl
bWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmggXAogICAgIFdlYkFzc2VtYmx5SW5zdGFuY2VQ
cm90b3R5cGUubHV0LmggXAorICAgIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IubHV0
LmggXAorICAgIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg3ZGViNmIuLmViZjM4ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDI3LDYgKzIwMjcsMTIgQEAKIAkJQURCQzU0
RDUxREY4RUEyQjAwNUJGNzM4IC8qIFdlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURCQzU0RDMxREY4RUEwMDAwNUJG
NzM4IC8qIFdlYkFzc2VtYmx5VG9KU0NhbGxlZS5oICovOyB9OwogCQlBRERCMUY2MzE4RDc3REJF
MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RT
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
REUzOUZGRjE2REQxNDRCMDAwM0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDFDRjA2ODE2RENBQjJEMDBCOTcx
MjMgLyogUHJvcGVydHlUYWJsZS5jcHAgKi87IH07CisJCUFERTgwMjk4MUUwOEYxREUwMDU4REU3
OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTgwMjkzMUUwOEYxQzkwMDU4REU3OCAvKiBKU1dlYkFz
c2VtYmx5TGlua0Vycm9yLmNwcCAqLzsgfTsKKwkJQURFODAyOTkxRTA4RjFERTAwNThERTc4IC8q
IEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFERTgwMjk0MUUwOEYxQzkwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5
TGlua0Vycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFERTgwMjk1MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QURFODAyOUIxRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTgw
Mjk2MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAg
Ki87IH07CisJCUFERTgwMjlDMUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQURFODAyOTcxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QURFODAyOUUxRTA4RjIyODAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURF
ODAyOUQxRTA4RjIyNjAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3Iu
Y3BwICovOyB9OwogCQlCNTlGODkzOTE4OTFGMjlGMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVj
dGlvblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTlGODkzODE4OTFBREI1MDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bS5jcHAgKi87IH07CiAJCUJDMDJFOTBEMEUxODM5REIwMDBGOTI5NyAvKiBFcnJvckNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAy
RTkwNTBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlCQzAy
RTkwRjBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDJFOTA3MEUxODM5REIwMDBGOTI5NyAv
KiBFcnJvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00NTAyLDYgKzQ1MDgsMTIgQEAKIAkJQURCQzU0RDIxREY4RUEwMDAwNUJG
NzM4IC8qIFdlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOyBwYXRoID0ganMvV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURCQzU0
RDMxREY4RUEwMDAwNUJGNzM4IC8qIFdlYkFzc2VtYmx5VG9KU0NhbGxlZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBc3NlbWJseVRvSlNDYWxsZWUuaDsgcGF0aCA9IGpz
L1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
RERCMUY2MjE4RDc3REI3MDA5QjU4QTggLyogT3BhcXVlUm9vdFNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBPcGFxdWVSb290U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFERTgwMjkzMUUwOEYxQzkwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IuY3BwOyBwYXRoID0ganMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERTgwMjk0MUUwOEYxQzkwMDU4REU3OCAvKiBK
U1dlYkFzc2VtYmx5TGlua0Vycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1ibHlMaW5rRXJy
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURFODAyOTUxRTA4RjFDOTAwNThE
RTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oOyBwYXRo
ID0ganMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBREU4MDI5NjFFMDhGMUM5MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREU4
MDI5NzFFMDhGMUM5MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90
b3R5cGUuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFERTgwMjlEMUUwOEYyMjYwMDU4REU3OCAvKiBXZWJB
c3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwOyBwYXRoID0g
anMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI1OUY4OTM3MTg5MUFEMzMwMEQ1Q0NEQyAvKiBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjU5Rjg5Mzgx
ODkxQURCNTAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2
NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc1OTcsNiArNzYwOSw4IEBACiAJCQkJNzk2RkI0MzkxREZGOEMzRjAwMzlDOTVEIC8qIEpT
V2ViQXNzZW1ibHlIZWxwZXJzLmggKi8sCiAJCQkJQUQyRkNCQTgxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgKi8sCiAJCQkJQUQyRkNCQTkxREI1OERBNDAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oICovLAorCQkJCUFERTgwMjkzMUUwOEYxQzkw
MDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcCAqLywKKwkJCQlBREU4MDI5NDFF
MDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICovLAogCQkJCUFEMkZD
QkFBMURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TWVtb3J5LmNwcCAqLywKIAkJCQlB
RDJGQ0JBQjFEQjU4REE0MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseU1lbW9yeS5oICovLAogCQkJ
CUFEMkZDQjhDMURCNTg0NDAwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5TW9kdWxlLmNwcCAqLywK
QEAgLTc2MTUsNiArNzYyOSwxMCBAQAogCQkJCUFEMkZDQkI1MURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCAqLywKIAkJCQlBRDJGQ0JCNjFEQjU4REE0
MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQUQy
RkNCQjcxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuaCAq
LywKKwkJCQlBREU4MDI5RDFFMDhGMjI2MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JD
b25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQURFODAyOTUxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFz
c2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCAqLywKKwkJCQlBREU4MDI5NjFFMDhGMUM5MDA1
OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwICovLAorCQkJCUFERTgw
Mjk3MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oICov
LAogCQkJCUFEMkZDQkI4MURCNThEQTQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0
cnVjdG9yLmNwcCAqLywKIAkJCQlBRDJGQ0JCOTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvci5oICovLAogCQkJCUFEMkZDQkJBMURCNThEQTQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgKi8sCkBAIC03OTQ2LDYgKzc5NjQsNyBA
QAogCQkJCUZFODBDMTk3MUQ3NzVDREQwMDg1MTBDMCAvKiBDYXRjaFNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI0RTU0MjE3RUE5RjU5MDBBQkIyMTcgLyogQ0NhbGxIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjA3MEE0NzFENTQzQThCMDA2RTcyMzIgLyogQ2VsbENvbnRhaW5l
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFz
c2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDcwQTQ4
MUQ1NDNBOTAwMDZFNzIzMiAvKiBDZWxsQ29udGFpbmVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxQzNEREExQkJDRTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM2QUFBRTUwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NDIyLDYgKzg0NDEsNyBAQAogCQkJCUE1MzM5RUM2MUJCMzk5QTYwMDU0RjAw
NSAvKiBJbnNwZWN0b3JIZWFwQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNUUwMzYwMUI3
QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBREU4MDI5OTFFMDhGMURF
MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclBy
b3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2
RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODcxNCw2ICs4
NzM0LDcgQEAKIAkJCQlFMzI4QzZDNzFEQTQzMDQ1MDBEMjU1RkQgLyogTWF4RnJhbWVFeHRlbnRG
b3JTbG93UGF0aENhbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwMjEzRTNFMTIzQTQwQzIwMEQ0
MjJGMyAvKiBNZW1vcnlTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI1NDY3QjE0
RjVDN0UxMDAyQzI5ODkgLyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQURFODAyOUMxRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vy
cm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENFNzE4NzYzMUI2MDA5NTVD
MjQgLyogTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhFMjExQTIxM0VFMDAw
N0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ3MDNDRDcxOTI4
NDRDQzAwMTNGQkVBIC8qIG1vZGVscy5weSBpbiBIZWFkZXJzICovLApAQCAtOTgxMSw2ICs5ODMy
LDcgQEAKIAkJCQlBN0Q4OUNGQjE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTk5MTZCNzI5RjYwMDVERjk1QiAv
KiBERkdMb25nTGl2ZWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzY3QjVCNTE3QTBC
OTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQURFODAyOUUxRTA4RjIyODAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vy
cm9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzlGOEZDMUUxQjlGRUQwRjAw
Q0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNTg3NEVEMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlFeGl0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMTcyNUZGMUI0ODcxOUEwMEFDM0E1NSAvKiBERkdNaW5pZmllZEdyYXBo
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAwOTgsNiArMTAxMjAsNyBAQAogCQkJCUE1QzNBMUE1
MThDMDQ5MDIwMEM5NTkzQSAvKiBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTU5NDU1OTIxODI0NzQ0NzAwQ0MzODQzIC8qIEpTR2xvYmFsT2JqZWN0
RGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNFOTE4OTFCMDc3MDAzMUM3
RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUFERTgwMjlCMUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU5RDE3QjEwN0VDNDY5MDA0RERBMjEgLyogSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUxMDA3QzAxODdD
QzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNTBFNEI2MzE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDE2MSw2ICsxMDE4NCw3IEBA
CiAJCQkJNzlFNDIzRTIxREVFNjUzMjAwNzhEMzU1IC8qIEpTV2ViQXNzZW1ibHlDYWxsZWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNCRTIxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHlDb21waWxlRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNCRTQxREI1OERB
RDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBREU4MDI5ODFFMDhGMURFMDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBRDJGQ0JFNjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseU1lbW9yeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDJGQ0MwNDFEQjU4REFEMDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDJGQ0JF
ODFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAppbmRleCBmOTA0NWJmLi41ZmExNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNjYsNiArMTY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oTWVtb3J5KSBcCiAgICAgbWFjcm8oVGFibGUpIFwKICAgICBtYWNybyhDb21w
aWxlRXJyb3IpIFwKKyAgICBtYWNybyhMaW5rRXJyb3IpIFwKICAgICBtYWNybyhSdW50aW1lRXJy
b3IpIFwKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAppbmRleCA0YzgwODM0Li5iNDIzYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBzdHJ1Y3QgSGFz
aFRhYmxlOwogI2RlZmluZSBGT1JfRUFDSF9XRUJBU1NFTUJMWV9DT05TVFJVQ1RPUl9UWVBFKG1h
Y3JvKSBcCiAgICAgbWFjcm8oV2ViQXNzZW1ibHlDb21waWxlRXJyb3IsIHdlYkFzc2VtYmx5Q29t
cGlsZUVycm9yLCBXZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IsIENvbXBpbGVFcnJvciwgZXJyb3IpIFwKICAgICBtYWNybyhXZWJBc3NlbWJseUluc3RhbmNl
LCAgICAgd2ViQXNzZW1ibHlJbnN0YW5jZSwgICAgIFdlYkFzc2VtYmx5SW5zdGFuY2UsICAgICBX
ZWJBc3NlbWJseUluc3RhbmNlLCAgICAgSW5zdGFuY2UsICAgICBvYmplY3QpIFwKKyAgICBtYWNy
byhXZWJBc3NlbWJseUxpbmtFcnJvciwgICAgd2ViQXNzZW1ibHlMaW5rRXJyb3IsICAgIFdlYkFz
c2VtYmx5TGlua0Vycm9yLCAgICBXZWJBc3NlbWJseUxpbmtFcnJvciwgICAgTGlua0Vycm9yLCAg
ICBlcnJvcikgXAogICAgIG1hY3JvKFdlYkFzc2VtYmx5TWVtb3J5LCAgICAgICB3ZWJBc3NlbWJs
eU1lbW9yeSwgICAgICAgV2ViQXNzZW1ibHlNZW1vcnksICAgICAgIFdlYkFzc2VtYmx5TWVtb3J5
LCAgICAgICBNZW1vcnksICAgICAgIG9iamVjdCkgXAogICAgIG1hY3JvKFdlYkFzc2VtYmx5TW9k
dWxlLCAgICAgICB3ZWJBc3NlbWJseU1vZHVsZSwgICAgICAgV2ViQXNzZW1ibHlNb2R1bGUsICAg
ICAgIFdlYkFzc2VtYmx5TW9kdWxlLCAgICAgICBNb2R1bGUsICAgICAgIG9iamVjdCkgXAogICAg
IG1hY3JvKFdlYkFzc2VtYmx5UnVudGltZUVycm9yLCB3ZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwg
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBSdW50aW1l
RXJyb3IsIGVycm9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9K
U1dlYkFzc2VtYmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5
LmgKaW5kZXggOTk2YWZkYS4uMTMzZWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vSlNXZWJBc3NlbWJseS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV2ViQXNzZW1ibHkuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImpzL0pTV2ViQXNz
ZW1ibHlDYWxsZWUuaCIKICNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgi
CiAjaW5jbHVkZSAianMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAianMvSlNX
ZWJBc3NlbWJseUxpbmtFcnJvci5oIgogI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlNZW1vcnku
aCIKICNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAianMvSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgpAQCAtNDAsNiArNDEsOCBAQAogI2luY2x1ZGUgImpz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgImpzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAianMv
V2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAianMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUxpbmtFcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TGlua0Vycm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kZDdkNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgiCisKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitK
U1dlYkFzc2VtYmx5TGlua0Vycm9yKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgYm9vbCB1c2VDdXJyZW50RnJhbWUpCit7CisgICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3I+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5TGlua0Vycm9yKHZtLCBzdHJ1
Y3R1cmUpOworICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbihzdGF0ZSwgdm0sIG1lc3NhZ2Us
IHVzZUN1cnJlbnRGcmFtZSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK2NvbnN0IENsYXNz
SW5mbyBKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5MaW5r
RXJyb3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IpIH07CisKKyAgICAKK0pTT2JqZWN0KiBjcmVhdGVXZWJBc3NlbWJseUxpbmtF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NF
UlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBFcnJvckluc3RhbmNl
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPldlYkFzc2Vt
Ymx5TGlua0Vycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcsIHRydWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lODYzODM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IgOiBwdWJs
aWMgRXJyb3JJbnN0YW5jZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBFcnJvckluc3RhbmNlIEJh
c2U7CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUxpbmtFcnJvciogY3JlYXRlKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNWYWx1ZSBtZXNzYWdlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBtZXNzYWdlLmlzVW5kZWZpbmVkKCkg
PyBTdHJpbmcoKSA6IG1lc3NhZ2UudG9XVEZTdHJpbmcoZXhlYyksIHVzZUN1cnJlbnRGcmFtZSk7
CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihWTSYsIFN0cnVjdHVyZSopOworfTsKKworSlNPYmplY3QqIGNyZWF0ZVdl
YkFzc2VtYmx5TGlua0Vycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3Rh
bmNlQ29uc3RydWN0b3IuY3BwCmluZGV4IDlkOTU5MjYuLjVmNGE1MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxl
RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseU1vZHVsZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIK
QEAgLTEwOCw5ICsxMDksOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICBzd2l0
Y2ggKGltcG9ydC5raW5kKSB7CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpGdW5j
dGlvbjogewogICAgICAgICAgICAgLy8gNC4gSWYgaSBpcyBhIGZ1bmN0aW9uIGltcG9ydDoKLSAg
ICAgICAgICAgIC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVy
cm9yLgorICAgICAgICAgICAgLy8gaS4gSWYgSXNDYWxsYWJsZSh2KSBpcyBmYWxzZSwgdGhyb3cg
YSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzRnVuY3Rp
b24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0
aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
ImltcG9ydCBmdW5jdGlvbiBtdXN0IGJlIGNhbGxhYmxlIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRl
ciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2YWx1ZSkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVX
ZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImltcG9ydCBmdW5jdGlvbiBt
dXN0IGJlIGNhbGxhYmxlIikpKSk7CiAgICAgICAgICAgICBKU0NlbGwqIGNlbGwgPSB2YWx1ZS5h
c0NlbGwoKTsKICAgICAgICAgICAgIC8vIGlpLiBJZiB2IGlzIGFuIEV4cG9ydGVkIEZ1bmN0aW9u
IEV4b3RpYyBPYmplY3Q6CiAgICAgICAgICAgICBpZiAoV2ViQXNzZW1ibHlGdW5jdGlvbiogaW1w
b3J0ZWRFeHBvcnRzID0ganNEeW5hbWljQ2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4ob2JqZWN0
KSkgewpAQCAtMTM0LDI0ICsxMzUsMjQgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICAg
ICAgICAgIC8vIDcuIE90aGVyd2lzZSAoaSBpcyBhIHRhYmxlIGltcG9ydCk6CiAgICAgICAgICAg
ICBoYXNUYWJsZUltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGUq
IHRhYmxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5VGFibGUqPih2YWx1ZSk7Ci0gICAg
ICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5LlRhYmxlIG9iamVjdCwgdGhy
b3cgYSBUeXBlRXJyb3IuCisgICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2Vt
Ymx5LlRhYmxlIG9iamVjdCwgdGhyb3cgYSBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCiAgICAgICAg
ICAgICBpZiAoIXRhYmxlKQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVGFibGUgaW1wb3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJs
eS5UYWJsZSIpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlMaW5rRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdl
YkFzc2VtYmx5LlRhYmxlIikpKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5p
dGlhbCA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOwogICAg
ICAgICAgICAgdWludDMyX3QgYWN0dWFsSW5pdGlhbCA9IHRhYmxlLT5zaXplKCk7CiAgICAgICAg
ICAgICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBwcm92aWRl
ZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVdlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGFibGUgaW1wb3J0
IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCIpKSkpOwogCiAgICAgICAg
ICAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZXhwZWN0ZWRNYXhpbXVtID0gbW9kdWxl
SW5mb3JtYXRpb24udGFibGVJbmZvcm1hdGlvbi5tYXhpbXVtKCkpIHsKICAgICAgICAgICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBhY3R1YWxNYXhpbXVtID0gdGFibGUtPm1heGltdW0o
KTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlRhYmxlIGltcG9ydCBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUg
bW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdt
YXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCphY3R1YWxNYXhpbXVtID4gKmV4cGVj
dGVkTWF4aW11bSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0ZWQgVGFibGUncyAn
bWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGV4cGVjdGVkICdtYXhpbXVtJyIp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbXBv
cnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0
ZWQgJ21heGltdW0nIikpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC0xNjYsMjUgKzE2NywyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5KTsKICAgICAgICAgICAgIGhh
c01lbW9yeUltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBt
ZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNZW1vcnkqPih2YWx1ZSk7Ci0gICAg
ICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvYmplY3QsIHRo
cm93IGEgVHlwZUVycm9yLgorICAgICAgICAgICAgLy8gaS4gSWYgdiBpcyBub3QgYSBXZWJBc3Nl
bWJseS5NZW1vcnkgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAg
ICAgICAgIGlmICghbWVtb3J5KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNz
ZW1ibHkuTWVtb3J5IikpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVXZWJBc3NlbWJseUxpbmtF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNl
IG9mIFdlYkFzc2VtYmx5Lk1lbW9yeSIpKSkpOwogCiAgICAgICAgICAgICBXYXNtOjpQYWdlQ291
bnQgZXhwZWN0ZWRJbml0aWFsID0gbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5LmluaXRpYWwoKTsK
ICAgICAgICAgICAgIFdhc206OlBhZ2VDb3VudCBhY3R1YWxJbml0aWFsID0gbWVtb3J5LT5tZW1v
cnkoKS0+aW5pdGlhbCgpOwogICAgICAgICAgICAgaWYgKGFjdHVhbEluaXRpYWwgPCBleHBlY3Rl
ZEluaXRpYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFs
bCIpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlz
IHRvbyBzbWFsbCIpKSkpOwogCiAgICAgICAgICAgICBpZiAoV2FzbTo6UGFnZUNvdW50IGV4cGVj
dGVkTWF4aW11bSA9IG1vZHVsZUluZm9ybWF0aW9uLm1lbW9yeS5tYXhpbXVtKCkpIHsKICAgICAg
ICAgICAgICAgICBXYXNtOjpQYWdlQ291bnQgYWN0dWFsTWF4aW11bSA9IG1lbW9yeS0+bWVtb3J5
KCktPm1heGltdW0oKTsKICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE1heGltdW0pIHsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBvcnQgZGlkIG5vdCBoYXZlIGEgJ21heGlt
dW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIpKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlV2Vi
QXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IGRpZCBu
b3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMi
KSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWF4
aW11bSA+IGV4cGVjdGVkTWF4aW11bSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5
IGltcG9ydHMgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAn
bWF4aW11bSIpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJNZW1vcnkgaW1wb3J0cyAnbWF4aW11bScgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdz
IGV4cGVjdGVkICdtYXhpbXVtJyIpKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIGlpLiBBcHBlbmQgdiB0byBtZW1vcmllcy4KQEAgLTE5OCw3ICsx
OTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICAgICAgQVNTRVJUKG1vZHVs
ZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0ubXV0YWJpbGl0eSA9PSBXYXNt
OjpHbG9iYWw6OkltbXV0YWJsZSk7CiAgICAgICAgICAgICAvLyBpaS4gSWYgVHlwZSh2KSBpcyBu
b3QgTnVtYmVyLCB0aHJvdyBhIFR5cGVFcnJvci4KICAgICAgICAgICAgIGlmICghdmFsdWUuaXNO
dW1iZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImltcG9ydGVkIGdsb2JhbCBtdXN0IGJlIGEgbnVtYmVyIiksIGRlZmF1bHRTb3VyY2VBcHBl
bmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2YWx1ZSkpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImltcG9ydGVkIGdsb2Jh
bCBtdXN0IGJlIGEgbnVtYmVyIikpKSk7CiAgICAgICAgICAgICAvLyBpaWkuIEFwcGVuZCBUb1dl
YkFzc2VtYmx5VmFsdWUodikgdG8gaW1wb3J0cy4KICAgICAgICAgICAgIHN3aXRjaCAobW9kdWxl
SW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlKSB7CiAgICAgICAgICAg
ICBjYXNlIFdhc206OkkzMjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkZTJmMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3Ry
dWN0b3IuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKwor
I2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJs
eUxpbmtFcnJvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlMaW5rRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlMaW5rRXJyb3IsIENSRUFU
RV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3RvcikgfTsKKworLyog
U291cmNlIGZvciBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmx1dC5oCisgQGJlZ2lu
IGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseUxpbmtFcnJvcgorIEBlbmQKKyAqLworCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlu
a0Vycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgYXV0byYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gc3RhdGUtPmFyZ3VtZW50KDApOworICAgIGF1dG8qIHN0cnVjdHVyZSA9IEludGVy
bmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKHN0YXRlLCBzdGF0ZS0+bmV3VGFy
Z2V0KCksIGFzSW50ZXJuYWxGdW5jdGlvbihzdGF0ZS0+anNDYWxsZWUoKSktPmdsb2JhbE9iamVj
dCgpLT5XZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcjo6Y3JlYXRlKHN0YXRlLCBzdHJ1Y3R1cmUsIG1lc3NhZ2UsIGZhbHNlKSk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJXZWJBc3NlbWJseS5MaW5rRXJyb3IiKSk7Cit9CisK
K1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IqIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXZWJBc3NlbWJs
eUxpbmtFcnJvclByb3RvdHlwZSogdGhpc1Byb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKHZtLCBz
dHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgdGhpc1Byb3Rv
dHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9pZCBXZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFdlYkFzc2VtYmx5
TGlua0Vycm9yUHJvdG90eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIEFTQ0lJTGl0ZXJhbCgiTGlua0Vycm9yIikpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25s
eSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7Cit9CisKK1dlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3I6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworQ29uc3Ry
dWN0VHlwZSBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yOwor
ICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCitDYWxsVHlwZSBXZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2Fs
bERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEpTV2ViQXNzZW1i
bHlMaW5rRXJyb3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzAwYzYz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGU7CisKK2NsYXNzIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0
b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRl
cm5hbEZ1bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSopOworCitwcml2YXRlOgorICAg
IFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERh
dGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY4NjA2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAKQEAgLTAsMCAr
MSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZS5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKKyNpbmNsdWRlICJXZWJBc3NlbWJs
eUxpbmtFcnJvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNz
ZW1ibHkuTGlua0Vycm9yLnByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZwcm90b3R5cGVUYWJs
ZVdlYkFzc2VtYmx5TGlua0Vycm9yLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TGlua0Vycm9y
UHJvdG90eXBlLmx1dC5oCisgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlMaW5rRXJy
b3IKKyBAZW5kCisgKi8KKworV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlPih2bS5oZWFwKSkgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBX
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit2b2lkIFdlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCitXZWJBc3NlbWJseUxpbmtFcnJvclByb3Rv
dHlwZTo6V2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90
b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTU0NmMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBXZWJBc3NlbWJseUxpbmtF
cnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0
eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CisKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKKworcHJpdmF0ZToKKyAgICBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggNmI1OTlhYS4uYWQyOTRiNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiUHJvdG9D
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCkBAIC0xOTcsNyArMTk4LDcgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKIHRlbXBsYXRlIDx0eXBlbmFtZSBTY29wZSwgdHlwZW5h
bWUgTiwgdHlwZW5hbWUgLi4uQXJncz4KIE5FVkVSX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBkYXRh
U2VnbWVudEZhaWwoRXhlY1N0YXRlKiBzdGF0ZSwgU2NvcGUmIHNjb3BlLCBOIG1lbW9yeVNpemUs
IE4gc2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgbWFrZVN0
cmluZyhBU0NJSUxpdGVyYWwoIkludmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0aW9uOiBz
ZWdtZW50IG9mICIpLCBTdHJpbmc6Om51bWJlcihzZWdtZW50U2l6ZSksIEFTQ0lJTGl0ZXJhbCgi
IGJ5dGVzIG1lbW9yeSBvZiAiKSwgU3RyaW5nOjpudW1iZXIobWVtb3J5U2l6ZSksIEFTQ0lJTGl0
ZXJhbCgiIGJ5dGVzLCBhdCBvZmZzZXQgIiksIFN0cmluZzo6bnVtYmVyKG9mZnNldCksIGFyZ3Mu
Li4pKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlV2Vi
QXNzZW1ibHlMaW5rRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGRhdGEgc2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAiKSwgU3RyaW5nOjpudW1i
ZXIoc2VnbWVudFNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcyBtZW1vcnkgb2YgIiksIFN0cmlu
Zzo6bnVtYmVyKG1lbW9yeVNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcywgYXQgb2Zmc2V0ICIp
LCBTdHJpbmc6Om51bWJlcihvZmZzZXQpLCBhcmdzLi4uKSkpOwogfQogCiBKU1ZhbHVlIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjIxLDcg
KzIyMiw3IEBAIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSogc3RhdGUpCiAgICAgICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4ID0gZWxlbWVudC5v
ZmZzZXQ7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHRhYmxlSW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQu
ZnVuY3Rpb25JbmRpY2VzLnNpemUoKSkgLSAxOwogICAgICAgICAgICAgaWYgKGxhc3RXcml0dGVu
SW5kZXggPj0gdGFibGUtPnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93Vk1SYW5nZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJFbGVt
ZW50IGlzIHRyeWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCIpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRl
V2ViQXNzZW1ibHlMaW5rRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRWxlbWVudCBpcyB0cnlp
bmcgdG8gc2V0IGFuIG91dCBvZiBib3VuZHMgdGFibGUgaW5kZXgiKSkpOwogCiAgICAgICAgICAg
ICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZWxlbWVudC5mdW5jdGlvbkluZGljZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBlc3NlbnRpYWxseSBtZWFu
cyB3ZSdyZSBleHBvcnRpbmcgYW4gaW1wb3J0LgotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="319816"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="319817"
          type_id="3"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297542</attachid>
            <date>2016-12-20 11:44:20 -0800</date>
            <delta_ts>2016-12-20 12:20:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-link-error.patch</filename>
            <type>text/plain</type>
            <size>63668</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0NjkyMDdlYzMyNzlmZTkyMDNmMjU0NjA0YzQ3N2YxZWE5ZWZmZWZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE5IERlYyAyMDE2IDIyOjQ0OjA0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbSBs
aW5rIGVycm9yCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIDI1ICsrKysrCiBKU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQtZGF0YS5q
cyAgICAgICAgICAgICAgICB8ICAgMiArLQogSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50Lmpz
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvZ2xvYmFs
LWVycm9yLmpzICAgICAgICAgICAgICAgIHwgICAyICstCiBKU1Rlc3RzL3dhc20vanMtYXBpL3Rh
YmxlLmpzICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArLS0KIEpTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9EYXRhLmpzICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBKU1Rlc3RzL3dhc20v
anMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzICAgICAgICAgICAgICB8ICAgNCArLQogSlNUZXN0cy93
YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcyAgICAgICAgICAgICAgICAgfCAgMzYgKysrLS0tLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICA1
ICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgIHwg
IDQ1ICsrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
ICAgICAgICAgfCAgIDIgKwogLi4uL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogICAgICAgfCAgMjQgKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaCAgICAgIHwgICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggICAgIHwgICAxICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV2ViQXNzZW1ibHkuaCAgICAgICAgIHwgICAzICsKIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1i
bHlMaW5rRXJyb3IuY3BwICAgICAgICAgICAgIHwgIDYwICsrKysrKysrKysrKwogLi4uL3dhc20v
anMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICAgICAgICAgICAgICAgfCAgNTQgKysrKysrKysr
KysKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgICAgIHwg
IDI3ICsrKy0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5j
cHAgICAgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJs
eUxpbmtFcnJvckNvbnN0cnVjdG9yLmggICAgICB8ICA1OCArKysrKysrKysrKysKIC4uLi93YXNt
L2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcCAgICAgIHwgIDY5ICsrKysrKysr
KysrKysrCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oICAgICAg
ICB8ICA1NCArKysrKysrKysrKwogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwICAgICAgICAgICAgfCAgMTEgKystCiAyMyBmaWxlcyBjaGFuZ2VkLCA1NDkgaW5zZXJ0aW9u
cygrKSwgNTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9y
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3Iu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgKCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZh
MjZmMTUuLjFhYTgzZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTYtMTItMTkgIEpGIEJhc3RpZW4gIDxq
ZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEFQSTogaW1wbGVtZW50
IFdlYkFzc2VtYmx5LkxpbmtFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1ODA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTc0Nzg3ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIGxhbS4KKworICAgICAgICBVcGRhdGUgYWxsIGV4
Y2VwdGlvbiBzaXRlcyB3aGljaCBub3cgdGhyb3cgV2ViQXNzZW1ibHkuTGlua0Vycm9yLgorCisg
ICAgICAgICogd2FzbS9qcy1hcGkvZWxlbWVudC1kYXRhLmpzOgorICAgICAgICAqIHdhc20vanMt
YXBpL2VsZW1lbnQuanM6CisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3YXNt
L2pzLWFwaS9nbG9iYWwtZXJyb3IuanM6CisgICAgICAgIChuZXcuTnVtYmVyKToKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90YWJsZS5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAg
ICAobmV3LldlYkFzc2VtYmx5LlRhYmxlKToKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90ZXN0X0Rh
dGEuanM6CisgICAgICAgICogd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanM6CisgICAgICAg
IChjb25zdC5jLmluLmNvbnN0cnVjdG9yUHJvcGVydGllcy5zd2l0Y2gpOgorICAgICAgICAqIHdh
c20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0
LnRlc3RNZW1JbXBvcnRFcnJvcik6IERlbGV0ZWQuCisKIDIwMTYtMTItMjAgIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiB1bmlxdWUgZnVu
Y3Rpb24gc2lnbmF0dXJlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50
LWRhdGEuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQtZGF0YS5qcwppbmRleCA4NWJl
YzM0Li5jYjQzZjRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQtZGF0
YS5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQtZGF0YS5qcwpAQCAtMzcsNyAr
MzcsNyBAQCBjb25zdCBtZW1vcnlEZXNjcmlwdGlvbiA9IHsgaW5pdGlhbDogbWVtU2l6ZUluUGFn
ZXMsIG1heGltdW06IG1lbVNpemVJblBhZ2VzIH07CiAgICAgICAgICAgICB0YWJsZTogdGFibGUs
CiAgICAgICAgIH0KICAgICB9OwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwgaW1wb3J0cyksIFJhbmdlRXJyb3IsIGBFbGVtZW50IGlzIHRy
eWluZyB0byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleGApOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgaW1wb3J0cyksIFdl
YkFzc2VtYmx5LkxpbmtFcnJvciwgYEVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2Yg
Ym91bmRzIHRhYmxlIGluZGV4IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCBpbXBvcnRzKScpYCk7CiAgICAgLy8gT24gRWxlbWVudCBmYWlsdXJlLCB0aGUgRGF0
YSBzZWN0aW9uIHNob3VsZG4ndCBoYXZlIGV4ZWN1dGVkLgogICAgIGNvbnN0IGJ1ZmZlciA9IG5l
dyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpOwogICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8
IG1lbVNpemVJblBhZ2VzICogcGFnZVNpemVJbkJ5dGVzOyArK2lkeCkgewpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVt
ZW50LmpzCmluZGV4IDE2MGZmZDAuLmIyNjkyOTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9q
cy1hcGkvZWxlbWVudC5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQuanMKQEAg
LTE0MSw2ICsxNDEsNiBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsK
IAogICAgIGZvciAobGV0IGkgPSAxOTsgaSA8IDE5ICsgNTsgaSsrKSB7CiAgICAgICAgIGNvbnN0
IHRhYmxlID0gbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtlbGVtZW50OiAiYW55ZnVuYyIsIGluaXRp
YWw6IGl9KTsKLSAgICAgICAgYmFkSW5zdGFudGlhdGlvbih0YWJsZSwgUmFuZ2VFcnJvciwgIkVs
ZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4Iik7Cisg
ICAgICAgIGJhZEluc3RhbnRpYXRpb24odGFibGUsIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgIkVs
ZW1lbnQgaXMgdHJ5aW5nIHRvIHNldCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4IChldmFs
dWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGU6IGFj
dHVhbFRhYmxlfX0pJykiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMt
YXBpL2dsb2JhbC1lcnJvci5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZ2xvYmFsLWVycm9yLmpz
CmluZGV4IDJhN2Q4YzAuLjg3YTQ2OTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
Z2xvYmFsLWVycm9yLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZ2xvYmFsLWVycm9yLmpz
CkBAIC0xODUsNSArMTg1LDUgQEAgZm9yICggbGV0IGltcCBvZiBbdW5kZWZpbmVkLCBudWxsLCB7
fSwgKCkgPT4ge30sICJudW1iZXIiLCBuZXcgTnVtYmVyKDQpXSkgewogICAgIGJpbi50cmltKCk7
CiAKICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbi5nZXQoKSk7
Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7IGltcDogeyBnbG9iYWw6IGltcCB9IH0pLCBUeXBlRXJyb3IsICJpbXBvcnRlZCBnbG9iYWwg
bXVzdCBiZSBhIG51bWJlciAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1v
ZHVsZSwgeyBpbXA6IHsgZ2xvYmFsOiBpbXAgfSB9KScpIik7CisgICAgYXNzZXJ0LnRocm93cygo
KSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBnbG9iYWw6IGlt
cCB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsICJpbXBvcnRlZCBnbG9iYWwgbXVzdCBiZSBh
IG51bWJlciAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBp
bXA6IHsgZ2xvYmFsOiBpbXAgfSB9KScpIik7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
anMtYXBpL3RhYmxlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90YWJsZS5qcwppbmRleCBkYjcz
NDIxLi4xYzMyMWVhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL3RhYmxlLmpzCisr
KyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGFibGUuanMKQEAgLTE4OSwxNCArMTg5LDE0IEBAIGZ1
bmN0aW9uIGFzc2VydEJhZFRhYmxlSW1wb3J0KHRhYmxlRGVzY3JpcHRpb24sIG1lc3NhZ2UpIHsK
ICAgICAgICAgICAgIC5Db2RlKCkKICAgICAgICAgICAgIC5FbmQoKTsKICAgICAgICAgY29uc3Qg
bW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0
KCkpOwotICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5j
ZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1w
OiB7dGFibGV9fSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgbWVzc2FnZSk7CiAgICAgfQogCiAg
ICAgY29uc3QgYmFkVGFibGVzID0gWwotICAgICAgICBbe2luaXRpYWw6IDEwMCwgbWF4aW11bTox
MDAsIGVsZW1lbnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEw
MCwgZWxlbWVudDogImFueWZ1bmMifSksICJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdt
YXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiXSwKLSAgICAgICAg
W3tpbml0aWFsOiAxMDAsIG1heGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJB
c3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxMDAsIG1heGltdW06MTAxLCBlbGVtZW50OiAiYW55ZnVu
YyJ9KSwgIkltcG9ydGVkIFRhYmxlJ3MgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1
bGUncyBleHBlY3RlZCAnbWF4aW11bSciXSwKLSAgICAgICAgW3tpbml0aWFsOiAxMDAsIGVsZW1l
bnQ6ImFueWZ1bmMifSwgbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtpbml0aWFsOjEwLCBlbGVtZW50
OiAiYW55ZnVuYyJ9KSwgIlRhYmxlIGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBp
cyB0b28gc21hbGwiXSwKLSAgICAgICAgW3tpbml0aWFsOiAxMCwgZWxlbWVudDoiYW55ZnVuYyJ9
LCBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6OSwgZWxlbWVudDogImFueWZ1bmMifSks
ICJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIl0s
CisgICAgICAgIFt7aW5pdGlhbDogMTAwLCBtYXhpbXVtOjEwMCwgZWxlbWVudDoiYW55ZnVuYyJ9
LCBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6MTAwLCBlbGVtZW50OiAiYW55ZnVuYyJ9
KSwgIlRhYmxlIGltcG9ydCBkb2VzIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxl
IHJlcXVpcmVzIHRoYXQgaXQgZG9lcyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwge2ltcDoge3RhYmxlfX0pJykiXSwKKyAgICAgICAgW3tpbml0aWFsOiAxMDAs
IG1heGltdW06MTAwLCBlbGVtZW50OiJhbnlmdW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7
aW5pdGlhbDoxMDAsIG1heGltdW06MTAxLCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwgIkltcG9ydGVk
IFRhYmxlJ3MgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAn
bWF4aW11bScgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtp
bXA6IHt0YWJsZX19KScpIl0sCisgICAgICAgIFt7aW5pdGlhbDogMTAwLCBlbGVtZW50OiJhbnlm
dW5jIn0sIG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDoxMCwgZWxlbWVudDogImFueWZ1
bmMifSksICJUYWJsZSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNt
YWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7
dGFibGV9fSknKSJdLAorICAgICAgICBbe2luaXRpYWw6IDEwLCBlbGVtZW50OiJhbnlmdW5jIn0s
IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDo5LCBlbGVtZW50OiAiYW55ZnVuYyJ9KSwg
IlRhYmxlIGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwgKGV2
YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19
KScpIl0sCiAgICAgXTsKICAgICBmb3IgKGNvbnN0IFtkLCB0LCBtXSBvZiBiYWRUYWJsZXMpIHsK
ICAgICAgICAgYXNzZXJ0QmFkVGFibGVJbnN0YW5jZShkLCB0LCBtKTsKQEAgLTI1MSw3ICsyNTEs
NyBAQCBmdW5jdGlvbiBhc3NlcnRCYWRUYWJsZUltcG9ydCh0YWJsZURlc2NyaXB0aW9uLCBtZXNz
YWdlKSB7CiAgICAgICAgICAgICAuQ29kZSgpCiAgICAgICAgICAgICAuRW5kKCk7CiAgICAgICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVpbGRlci5XZWJBc3NlbWJs
eSgpLmdldCgpKTsKLSAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7dGFibGV9fSksIFR5cGVFcnJvciwgIlRhYmxlIGltcG9y
dCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUiKTsKKyAgICAgICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7
dGFibGV9fSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgIlRhYmxlIGltcG9ydCBpcyBub3QgYW4g
aW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuVGFibGUgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHt0YWJsZX19KScpIik7CiAgICAgfQogICAgIGFzc2Vy
dEJhZFRhYmxlKDI1KTsKICAgICBhc3NlcnRCYWRUYWJsZShuZXcgT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9EYXRhLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFw
aS90ZXN0X0RhdGEuanMKaW5kZXggN2MxZmExOC4uZDc3ZmRkZiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL2pzLWFwaS90ZXN0X0RhdGEuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0
X0RhdGEuanMKQEAgLTc1LDcgKzc1LDcgQEAgY29uc3QgYXNzZXJ0TWVtb3J5QWxsWmVybyA9IG1l
bW9yeSA9PiB7CiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwog
ICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKICAgICBjb25z
dCBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KG1lbW9yeURlc2NyaXB0aW9uKTsKLSAg
ICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsg
aW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFJhbmdlRXJyb3IsIGBJbnZhbGlkIGRhdGEgc2Vn
bWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiA2NTUzNyBieXRlcyBtZW1vcnkgb2YgNjU1
MzYgYnl0ZXMsIGF0IG9mZnNldCAwLCBzZWdtZW50IGlzIHRvbyBiaWdgKTsKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IG1l
bW9yeTogbWVtb3J5IH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYEludmFsaWQgZGF0YSBz
ZWdtZW50IGluaXRpYWxpemF0aW9uOiBzZWdtZW50IG9mIDY1NTM3IGJ5dGVzIG1lbW9yeSBvZiA2
NTUzNiBieXRlcywgYXQgb2Zmc2V0IDAsIHNlZ21lbnQgaXMgdG9vIGJpZyAoZXZhbHVhdGluZyAn
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5OiBtZW1vcnkg
fSB9KScpYCk7CiAgICAgYXNzZXJ0TWVtb3J5QWxsWmVybyhtZW1vcnkpOwogfSkoKTsKIApAQCAt
ODksNyArODksNyBAQCBjb25zdCBhc3NlcnRNZW1vcnlBbGxaZXJvID0gbWVtb3J5ID0+IHsKICAg
ICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9k
dWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOwogICAgIGNvbnN0IG1lbW9yeSA9IG5l
dyBXZWJBc3NlbWJseS5NZW1vcnkobWVtb3J5RGVzY3JpcHRpb24pOwotICAgIGFzc2VydC50aHJv
d3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgbWVtb3J5
OiBtZW1vcnkgfSB9KSwgUmFuZ2VFcnJvciwgYEludmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxp
emF0aW9uOiBzZWdtZW50IG9mIDEgYnl0ZXMgbWVtb3J5IG9mIDY1NTM2IGJ5dGVzLCBhdCBvZmZz
ZXQgNjU1MzYsIHNlZ21lbnQgd3JpdGVzIG91dHNpZGUgb2YgbWVtb3J5YCk7CisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBt
ZW1vcnk6IG1lbW9yeSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBJbnZhbGlkIGRhdGEg
c2VnbWVudCBpbml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAxIGJ5dGVzIG1lbW9yeSBvZiA2NTUz
NiBieXRlcywgYXQgb2Zmc2V0IDY1NTM2LCBzZWdtZW50IHdyaXRlcyBvdXRzaWRlIG9mIG1lbW9y
eSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsg
bWVtb3J5OiBtZW1vcnkgfSB9KScpYCk7CiAgICAgYXNzZXJ0TWVtb3J5QWxsWmVybyhtZW1vcnkp
OwogfSkoKTsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIGNvbnN0IGFzc2VydE1lbW9yeUFsbFplcm8g
PSBtZW1vcnkgPT4gewogICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQo
KTsKICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7CiAgICAg
Y29uc3QgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeShtZW1vcnlEZXNjcmlwdGlvbik7
Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7IGltcDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pLCBSYW5nZUVycm9yLCBgSW52YWxpZCBkYXRh
IHNlZ21lbnQgaW5pdGlhbGl6YXRpb246IHNlZ21lbnQgb2YgMiBieXRlcyBtZW1vcnkgb2YgNjU1
MzYgYnl0ZXMsIGF0IG9mZnNldCA2NTUzNSwgc2VnbWVudCB3cml0ZXMgb3V0c2lkZSBvZiBtZW1v
cnlgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHsgaW1wOiB7IG1lbW9yeTogbWVtb3J5IH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJv
ciwgYEludmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0aW9uOiBzZWdtZW50IG9mIDIgYnl0
ZXMgbWVtb3J5IG9mIDY1NTM2IGJ5dGVzLCBhdCBvZmZzZXQgNjU1MzUsIHNlZ21lbnQgd3JpdGVz
IG91dHNpZGUgb2YgbWVtb3J5IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7IGltcDogeyBtZW1vcnk6IG1lbW9yeSB9IH0pJylgKTsKICAgICBhc3NlcnRNZW1v
cnlBbGxaZXJvKG1lbW9yeSk7CiB9KSgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMt
YXBpL3Rlc3RfYmFzaWNfYXBpLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X2Jhc2ljX2Fw
aS5qcwppbmRleCA0M2I3ZDdkLi45Mzk1Y2E4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMt
YXBpL3Rlc3RfYmFzaWNfYXBpLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9iYXNp
Y19hcGkuanMKQEAgLTI0LDYgKzI0LDcgQEAgY29uc3QgY29uc3RydWN0b3JQcm9wZXJ0aWVzID0g
ewogICAgICJNZW1vcnkiOiAgICAgICB7IHR5cGVvZnZhbHVlOiAiZnVuY3Rpb24iLCB3cml0YWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgbGVuZ3RoOiAx
IH0sCiAgICAgIlRhYmxlIjogICAgICAgIHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIsIHdyaXRh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBsZW5ndGg6
IDEgfSwKICAgICAiQ29tcGlsZUVycm9yIjogeyB0eXBlb2Z2YWx1ZTogImZ1bmN0aW9uIiwgd3Jp
dGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGxlbmd0
aDogMSB9LAorICAgICJMaW5rRXJyb3IiOiAgICB7IHR5cGVvZnZhbHVlOiAiZnVuY3Rpb24iLCB3
cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgbGVu
Z3RoOiAxIH0sCiAgICAgIlJ1bnRpbWVFcnJvciI6IHsgdHlwZW9mdmFsdWU6ICJmdW5jdGlvbiIs
IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCBs
ZW5ndGg6IDEgfSwKIH07CiAKQEAgLTgzLDYgKzg0LDcgQEAgZm9yIChjb25zdCBjIGluIGNvbnN0
cnVjdG9yUHJvcGVydGllcykgewogICAgICAgICBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRp
YWw6IDIwLCBtYXhpbXVtOiAyNSwgZWxlbWVudDogImFueWZ1bmMifSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgIkNvbXBpbGVFcnJvciI6CisgICAgY2FzZSAiTGlua0Vycm9yIjoKICAgICBj
YXNlICJSdW50aW1lRXJyb3IiOiB7CiAgICAgICAgIGNvbnN0IGUgPSBuZXcgV2ViQXNzZW1ibHlb
Y107CiAgICAgICAgIGFzc2VydC5lcShlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHlbY10sIHRydWUp
OwpAQCAtOTIsNyArOTQsNyBAQCBmb3IgKGNvbnN0IGMgaW4gY29uc3RydWN0b3JQcm9wZXJ0aWVz
KSB7CiAgICAgICAgIGFzc2VydC5lcSh0eXBlb2YgZS5zdGFjaywgInN0cmluZyIpOwogICAgICAg
ICBjb25zdCBzaWxseVN0cmluZyA9ICJ1aC1vaCEiOwogICAgICAgICBjb25zdCBlMiA9IG5ldyBX
ZWJBc3NlbWJseVtjXShzaWxseVN0cmluZyk7Ci0gICAgICAgIGFzc2VydC5lcShlMi5tZXNzYWdl
LCBzaWxseVN0cmluZyk7CisgICAgICAgIC8vIEZJWE1FIGZpeCBDb21waWxlIC8gUnVudGltZSBl
cnJvcnMgZm9yIHRoaXM6IGFzc2VydC5lcShlMi5tZXNzYWdlLCBzaWxseVN0cmluZyArICIgKGV2
YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseVtjXShzaWxseVN0cmluZyknKSIpOwogICAgIH0gYnJl
YWs7CiAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbXBsZW1lbnRhdGlvbiBlcnJvcjog
dW5leHBlY3RlZCBjb25zdHJ1Y3RvciBwcm9wZXJ0eSAiJHtjfSJgKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS90ZXN0X21lbW9yeS5qcwppbmRleCAwYTgyMDdkLi5lMGI5OGYzIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9tZW1vcnkuanMKQEAgLTMxOCwyOCArMzE4LDE0IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpOwogICAgIGNvbnN0
IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKIAotICAgIGZ1bmN0aW9uIHRl
c3RNZW1JbXBvcnRFcnJvcihpbnN0YW5jZU9iaiwgZXhwZWN0ZWRFcnJvcikgewotICAgICAgICBs
ZXQgdGhyZXcgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUsIGluc3RhbmNlT2JqKTsKLSAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICBhc3NlcnQudHJ1dGh5KGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpOwotICAg
ICAgICAgICAgdGhyZXcgPSB0cnVlOwotICAgICAgICAgICAgaWYgKGV4cGVjdGVkRXJyb3IpIHsK
LSAgICAgICAgICAgICAgICBhc3NlcnQudHJ1dGh5KGUubWVzc2FnZSA9PT0gZXhwZWN0ZWRFcnJv
cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0LnRydXRoeSh0aHJl
dyk7Ci0gICAgfQotCi0gICAgdGVzdE1lbUltcG9ydEVycm9yKDIwKTsKLSAgICB0ZXN0TWVtSW1w
b3J0RXJyb3IoeyB9KTsKLSAgICB0ZXN0TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyB9IH0pOwotICAg
IHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9yeTogMjAgfSB9KTsKLSAgICB0ZXN0TWVt
SW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IFtdIH0gfSk7Ci0gICAgdGVzdE1lbUltcG9ydEVy
cm9yKHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOSwg
bWF4aW11bTogMjV9KSB9IH0sICJNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0
aGF0IGlzIHRvbyBzbWFsbCIpOwotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9y
eTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjB9KSB9IH0sICJNZW1vcnkgaW1w
b3J0IGRpZCBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0
IGl0IGRvZXMiKTsKLSAgICB0ZXN0TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBX
ZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwLCBtYXhpbXVtOiAyNn0pIH0gfSwgIk1lbW9y
eSBpbXBvcnRzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQg
J21heGltdW0iKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIDIwKSwgVHlwZUVycm9yLCBgc2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCAoZXZhbHVhdGluZyAn
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgMjApJylgKTsKKyAgICBhc3NlcnQudGhy
b3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHt9KSwgVHlwZUVycm9y
LCBgaW1wb3J0IG11c3QgYmUgYW4gb2JqZWN0IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlLCB7fSknKWApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyB9IH0pLCBXZWJBc3NlbWJseS5MaW5r
RXJyb3IsIGBNZW1vcnkgaW1wb3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5N
ZW1vcnkgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6
IHsgfSB9KScpYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogMjAgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vy
cm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVt
b3J5IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7
IG1lbW9yeTogMjAgfSB9KScpYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogW10gfSB9KSwgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNz
ZW1ibHkuTWVtb3J5IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7aW1wOiB7IG1lbW9yeTogW10gfSB9KScpYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFz
c2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkgfSB9KSwgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBp
cyB0b28gc21hbGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOSwgbWF4
aW11bTogMjV9KSB9IH0pJylgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVt
b3J5KHtpbml0aWFsOiAyMH0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBp
bXBvcnQgZGlkIG5vdCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRo
YXQgaXQgZG9lcyAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
e2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDIwfSkgfSB9
KScpYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDog
MjAsIG1heGltdW06IDI2fSkgfSB9KSwgV2ViQXNzZW1ibHkuTGlua0Vycm9yLCBgTWVtb3J5IGlt
cG9ydHMgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4
aW11bScgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6
IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAyMCwgbWF4aW11bTog
MjZ9KSB9IH0pJylgKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpAQCAtMzY2LDExICszNTIs
MTEgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKGJpbik7CiAKICAgICBmdW5jdGlvbiB0ZXN0TWVtSW1wb3J0RXJyb3IoaW5zdGFu
Y2VPYmosIGV4cGVjdGVkRXJyb3IpIHsKLSAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBpbnN0YW5jZU9iaiksIFR5cGVFcnJvciwgZXhw
ZWN0ZWRFcnJvcik7CisgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSwgaW5zdGFuY2VPYmopLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGV4
cGVjdGVkRXJyb3IpOwogICAgIH0KIAotICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1l
bW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkg
fSB9LCAiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21h
bGwiKTsKLSAgICB0ZXN0TWVtSW1wb3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3Nl
bWJseS5NZW1vcnkoe2luaXRpYWw6IDE5fSkgfSB9LCAiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBh
biAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKTsKKyAgICB0ZXN0TWVtSW1wb3J0RXJyb3Io
e2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDE5LCBtYXhp
bXVtOiAyNX0pIH0gfSwgIk1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQg
aXMgdG9vIHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCBpbnN0YW5jZU9iaiknKSIpOworICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9y
eTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMTl9KSB9IH0sICJNZW1vcnkgaW1w
b3J0IHByb3ZpZGVkIGFuICdpbml0aWFsJyB0aGF0IGlzIHRvbyBzbWFsbCAoZXZhbHVhdGluZyAn
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgaW5zdGFuY2VPYmopJykiKTsKIAogICAg
IC8vIFRoaXMgc2hvdWxkIG5vdCB0aHJvdy4KICAgICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7aW1wOiB7bWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjIw
fSl9fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzE2YTM0OS4uOTY5
YTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTEyLDYgKzkxMiw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q2FsbGVlLmNwcAogICAgIHdhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5jcHAKICAg
ICB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKyAgICB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuY3BwCiAgICAgd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAog
ICAgIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKICAgICB3YXNtL2pzL0pTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IuY3BwCkBAIC05MjEsNiArOTIyLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCiAgICAgd2Fz
bS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCiAgICAgd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAorICAgIHdhc20vanMvV2ViQXNzZW1ibHlMaW5r
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKyAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJv
dG90eXBlLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAK
ICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAogICAgIHdhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTk4OCw2ICs5OTEsOCBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJs
eUNvbXBpbGVFcnJvclByb3RvdHlwZS5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFu
Y2VDb25zdHJ1Y3Rvci5jcHAKICAgICB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5
cGUuY3BwCisgICAgd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAor
ICAgIHdhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCiAgICAgd2FzbS9q
cy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcAogICAgIHdhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuY3BwCiAgICAgd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMmJjMjM1ZC4uYjdiMzdmMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTYtMTItMTkgIEpG
IEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEFQ
STogaW1wbGVtZW50IFdlYkFzc2VtYmx5LkxpbmtFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yOTc0Nzg3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBB
cyBkZXNjcmliZWQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9w
dWxsLzkwMQorICAgICAgICBTb21lIFR5cGVFcnJvciBhbmQgUmFuZ2VFcnJvciBhcmUgbm93IGNv
bnZlcnRlZCB0byBXZWJBc3NlbWJseS5MaW5rRXJyb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDogYWRkIGZpbGVzCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogYWRkIGF1dG9n
ZXQgLmx1dC5oIGZpbGVzCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogYWRkIGZpbGVzCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6
IG5ldyBuYW1lIExpbmtFcnJvcgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDog
YXV0by1yZWdpc3RlciBMaW5rRXJyb3IgdXNpbmcgZXhpc3RpbmcgbWFjcm8gbWFnaWMKKyAgICAg
ICAgKiB3YXNtL0pTV2ViQXNzZW1ibHkuaDogbWFrZSB0aGUgbmV3IGluY2x1ZGVzIGF2YWlsYWJs
ZQorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3Iu
Y3BwLgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpKU1dlYkFzc2VtYmx5TGlua0Vycm9y
KToKKyAgICAgICAgKEpTQzo6Y3JlYXRlV2ViQXNzZW1ibHlMaW5rRXJyb3IpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmguCisgICAgICAgIChK
U0M6OkpTV2ViQXNzZW1ibHlMaW5rRXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOiB1cGRhdGUgYXMgcGVyIHNwZWMgY2hh
bmdlCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAuCisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
cjo6V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29u
c3RydWN0b3IuaC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cHIuY3BwLgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlMaW5r
RXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TGlua0Vycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOjpXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlw
ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XZWJBc3NlbWJseUNvbXBpbGVF
cnJvclByb3RvdHlwci5oLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwOiB1cGRhdGUgYXMgcGVyIHNwZWMgY2hhbmdlCisgICAgICAgIChKU0M6OmRhdGFTZWdt
ZW50RmFpbCk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpldmFsdWF0
ZSk6CisKIDIwMTYtMTItMjAgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkFzc2VtYmx5OiB1bmlxdWUgZnVuY3Rpb24gc2lnbmF0dXJlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBmYjkyMzQ1Li42NDBkNWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTY5LDYgKzE2
OSw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5sdXQuaCBcCiAgICAgV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1
dC5oIFwKICAgICBXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmx1dC5oIFwKKyAgICBXZWJB
c3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBXZWJBc3NlbWJseUxpbmtF
cnJvclByb3RvdHlwZS5sdXQuaCBcCiAgICAgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5s
dXQuaCBcCiAgICAgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmggXAogICAgIFdlYkFz
c2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyMDA0YmE5Li4xMzM0ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjAyOSw2ICsyMDI5LDEyIEBACiAJCUFEQkM1NEQ1MURGOEVBMkIwMDVCRjczOCAvKiBXZWJB
c3NlbWJseVRvSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFEQkM1NEQzMURGOEVBMDAwMDVCRjczOCAvKiBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUuaCAqLzsgfTsKIAkJQUREQjFGNjMxOEQ3N0RCRTAwOUI1OEE4IC8qIE9wYXF1ZVJvb3RTZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEREIxRjYy
MThENzdEQjcwMDlCNThBOCAvKiBPcGFxdWVSb290U2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQURFMzlGRkYxNkREMTQ0QjAwMDNDRDRBIC8q
IFByb3BlcnR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQxQ0YwNjgxNkRDQUIyRDAwQjk3MTIzIC8qIFByb3BlcnR5VGFibGUuY3BwICov
OyB9OworCQlBREU4MDI5ODFFMDhGMURFMDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4
MDI5MzFFMDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAgKi87IH07
CisJCUFERTgwMjk5MUUwOEYxREUwMDU4REU3OCAvKiBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4MDI5NDFF
MDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFERTgwMjlBMUUwOEYxREUwMDU4
REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4MDI5NTFFMDhGMUM5MDA1OERFNzgg
LyogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFERTgwMjlCMUUwOEYxREUwMDU4REU3OCAv
KiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBREU4MDI5NjFFMDhGMUM5MDA1OERFNzggLyogV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwICovOyB9OworCQlBREU4MDI5QzFFMDhGMURF
MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTgwMjk3MUUwOEYxQzkwMDU4REU3
OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUFERTgwMjlFMUUwOEYyMjgwMDU4REU3OCAv
KiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFERTgwMjlEMUUwOEYyMjYwMDU4REU3OCAvKiBX
ZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJQjU5Rjg5MzkxODkx
RjI5RjAwRDVDQ0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5Rjg5MzgxODkxQURCNTAwRDVD
Q0RDIC8qIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwICovOyB9OwogCQlCQzAyRTkwRDBF
MTgzOURCMDAwRjkyOTcgLyogRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMkU5MDUwRTE4MzlEQjAwMEY5Mjk3IC8qIEVy
cm9yQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJQkMwMkU5MEYwRTE4MzlEQjAwMEY5Mjk3IC8qIEVy
cm9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzAyRTkwNzBFMTgzOURCMDAwRjkyOTcgLyogRXJyb3JQcm90b3R5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDUwNiw2ICs0NTEy
LDEyIEBACiAJCUFEQkM1NEQyMURGOEVBMDAwMDVCRjczOCAvKiBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEQkM1NEQzMURGOEVBMDAwMDVCRjczOCAvKiBXZWJB
c3NlbWJseVRvSlNDYWxsZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLmg7IHBhdGggPSBqcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUREQjFGNjIxOEQ3N0RCNzAwOUI1OEE4IC8q
IE9wYXF1ZVJvb3RTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BhcXVl
Um9vdFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBREU4MDI5MzFFMDhGMUM5
MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmNwcDsgcGF0aCA9IGpz
L0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBREU4MDI5NDFFMDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmg7
IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFERTgwMjk1MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJv
ckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFzc2Vt
Ymx5TGlua0Vycm9yQ29uc3RydWN0b3IuaDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURFODAyOTYxRTA4
RjFDOTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQURFODAyOTcxRTA4RjFDOTAwNThERTc4IC8qIFdl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmg7IHBhdGggPSBqcy9XZWJBc3Nl
bWJseUxpbmtFcnJvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
REU4MDI5RDFFMDhGMjI2MDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseUxp
bmtFcnJvckNvbnN0cnVjdG9yLmNwcDsgcGF0aCA9IGpzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNTlGODkzNzE4OTFB
RDMzMDBENUNDREMgLyogVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1OUY4OTM4MTg5MUFEQjUwMEQ1Q0NEQyAvKiBVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVG9vbEV4ZWN1dGFibGUueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjAzLDYgKzc2MTUsOCBAQAogCQkJ
CTc5NkZCNDM5MURGRjhDM0YwMDM5Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovLAog
CQkJCUFEMkZDQkE4MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3Bw
ICovLAogCQkJCUFEMkZDQkE5MURCNThEQTQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaCAqLywKKwkJCQlBREU4MDI5MzFFMDhGMUM5MDA1OERFNzggLyogSlNXZWJBc3NlbWJseUxp
bmtFcnJvci5jcHAgKi8sCisJCQkJQURFODAyOTQxRTA4RjFDOTAwNThERTc4IC8qIEpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IuaCAqLywKIAkJCQlBRDJGQ0JBQTFEQjU4REE0MDBCM0U3MzYgLyogSlNX
ZWJBc3NlbWJseU1lbW9yeS5jcHAgKi8sCiAJCQkJQUQyRkNCQUIxREI1OERBNDAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHlNZW1vcnkuaCAqLywKIAkJCQlBRDJGQ0I4QzFEQjU4NDQwMDBCM0U3MzYg
LyogSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgKi8sCkBAIC03NjIxLDYgKzc2MzUsMTAgQEAKIAkJ
CQlBRDJGQ0JCNTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVj
dG9yLmggKi8sCiAJCQkJQUQyRkNCQjYxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5SW5z
dGFuY2VQcm90b3R5cGUuY3BwICovLAogCQkJCUFEMkZDQkI3MURCNThEQTQwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmggKi8sCisJCQkJQURFODAyOUQxRTA4RjIyNjAw
NThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCUFE
RTgwMjk1MUUwOEYxQzkwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
LmggKi8sCisJCQkJQURFODAyOTYxRTA4RjFDOTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vy
cm9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQlBREU4MDI5NzFFMDhGMUM5MDA1OERFNzggLyogV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaCAqLywKIAkJCQlBRDJGQ0JCODFEQjU4REE0MDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQUQyRkNC
QjkxREI1OERBNDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuaCAqLywK
IAkJCQlBRDJGQ0JCQTFEQjU4REE0MDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuY3BwICovLApAQCAtNzk1Miw2ICs3OTcwLDcgQEAKIAkJCQlGRTgwQzE5NzFENzc1Q0REMDA4
NTEwQzAgLyogQ2F0Y2hTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDIxN0VBOUY1
OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzBBNDcx
RDU0M0E4QjAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUFE
RTgwMjlBMUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3MEE0ODFENTQzQTkwMDA2RTcyMzIgLyogQ2VsbENv
bnRhaW5lcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUMzRERBMUJCQ0UwOUUwMEU1
MjNFNCAvKiBDZWxsU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkFBQUU1MEUxRjQyNjUw
MEFEODdEOCAvKiBDbGFzc0luZm8uaCBpbiBIZWFkZXJzICovLApAQCAtODQyOSw2ICs4NDQ4LDcg
QEAKIAkJCQlBNTMzOUVDNjFCQjM5OUE2MDA1NEYwMDUgLyogSW5zcGVjdG9ySGVhcEFnZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzVFMDM2MDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNCM0UyNjFCN0FC
RDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQURFODAyOTkxRTA4RjFERTAwNThERTc4IC8qIEpTV2ViQXNzZW1ibHlM
aW5rRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FD
MTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTg3MjEsNiArODc0MSw3IEBACiAJCQkJRTMyOEM2QzcxREE0
MzA0NTAwRDI1NUZEIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MDIxM0UzRTEyM0E0MEMyMDBENDIyRjMgLyogTWVtb3J5U3RhdGlzdGljcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNTQ2N0IxNEY1QzdFMTAwMkMyOTg5IC8qIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUFERTgwMjlDMUUwOEYx
REUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0MwMDhDRTcxODc2MzFCNjAwOTU1QzI0IC8qIE1pY3JvdGFzay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NzAzQ0Q3MTkyODQ0Q0MwMDEzRkJFQSAvKiBtb2RlbHMucHkg
aW4gSGVhZGVycyAqLywKQEAgLTk4MTgsNiArOTgzOSw3IEBACiAJCQkJQTdEODlDRkIxN0EwQjhD
QzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkYwRjE5OTE2QjcyOUY2MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc2N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVI
ZWFkZXJDcmVhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFERTgwMjlFMUUwOEYy
MjgwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc5RjhGQzFFMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU4NzRFRDE5NEZFQjEyMDBB
QUIyQzEgLyogREZHTWF5RXhpdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE3MjVGRjFCNDg3
MTlBMDBBQzNBNTUgLyogREZHTWluaWZpZWRHcmFwaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEw
MTA1LDYgKzEwMTI3LDcgQEAKIAkJCQlBNUMzQTFBNTE4QzA0OTAyMDBDOTU5M0EgLyogSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTQ1NTkyMTgy
NDc0NDcwMENDMzg0MyAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTU3RDIzRTkxODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBREU4MDI5QjFFMDhGMURFMDA1OERFNzgg
LyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1MTAwN0MwMTg3Q0MzQzYwMEIzODg3OSAvKiBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjMx
ODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTAxNjgsNiArMTAxOTEsNyBAQAogCQkJCTc5RTQyM0UyMURFRTY1MzIwMDc4
RDM1NSAvKiBKU1dlYkFzc2VtYmx5Q2FsbGVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEMkZD
QkUyMURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFEMkZDQkU0MURCNThEQUQwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQURFODAyOTgxRTA4RjFERTAwNThERTc4
IC8qIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNC
RTYxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNZW1vcnkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQUQyRkNDMDQxREI1OERBRDAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHlNb2R1bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNCRTgxREI1OERBRDAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZjkwNDViZi4uNWZhMTZiMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAt
MTY2LDYgKzE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE1lbW9yeSkgXAogICAg
IG1hY3JvKFRhYmxlKSBcCiAgICAgbWFjcm8oQ29tcGlsZUVycm9yKSBcCisgICAgbWFjcm8oTGlu
a0Vycm9yKSBcCiAgICAgbWFjcm8oUnVudGltZUVycm9yKSBcCiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNGM4MDgzNC4uYjQyM2M0
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0xNDAsNiArMTQwLDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKICNkZWZpbmUgRk9SX0VBQ0hf
V0VCQVNTRU1CTFlfQ09OU1RSVUNUT1JfVFlQRShtYWNybykgXAogICAgIG1hY3JvKFdlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yLCB3ZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgV2ViQXNzZW1ibHlDb21w
aWxlRXJyb3IsIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yLCBDb21waWxlRXJyb3IsIGVycm9yKSBc
CiAgICAgbWFjcm8oV2ViQXNzZW1ibHlJbnN0YW5jZSwgICAgIHdlYkFzc2VtYmx5SW5zdGFuY2Us
ICAgICBXZWJBc3NlbWJseUluc3RhbmNlLCAgICAgV2ViQXNzZW1ibHlJbnN0YW5jZSwgICAgIElu
c3RhbmNlLCAgICAgb2JqZWN0KSBcCisgICAgbWFjcm8oV2ViQXNzZW1ibHlMaW5rRXJyb3IsICAg
IHdlYkFzc2VtYmx5TGlua0Vycm9yLCAgICBXZWJBc3NlbWJseUxpbmtFcnJvciwgICAgV2ViQXNz
ZW1ibHlMaW5rRXJyb3IsICAgIExpbmtFcnJvciwgICAgZXJyb3IpIFwKICAgICBtYWNybyhXZWJB
c3NlbWJseU1lbW9yeSwgICAgICAgd2ViQXNzZW1ibHlNZW1vcnksICAgICAgIFdlYkFzc2VtYmx5
TWVtb3J5LCAgICAgICBXZWJBc3NlbWJseU1lbW9yeSwgICAgICAgTWVtb3J5LCAgICAgICBvYmpl
Y3QpIFwKICAgICBtYWNybyhXZWJBc3NlbWJseU1vZHVsZSwgICAgICAgd2ViQXNzZW1ibHlNb2R1
bGUsICAgICAgIFdlYkFzc2VtYmx5TW9kdWxlLCAgICAgICBXZWJBc3NlbWJseU1vZHVsZSwgICAg
ICAgTW9kdWxlLCAgICAgICBvYmplY3QpIFwKICAgICBtYWNybyhXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvciwgd2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIFdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwgUnVudGltZUVycm9yLCBlcnJvcikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5oCmluZGV4IDk5NmFmZGEuLjEzM2VmODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5Q2FsbGVlLmgiCiAjaW5jbHVkZSAi
anMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIgogI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaCIKICNp
bmNsdWRlICJqcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgiCiAjaW5jbHVkZSAianMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5oIgogI2luY2x1ZGUgImpzL0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIK
QEAgLTQwLDYgKzQxLDggQEAKICNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAianMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
anMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgImpzL1dlYkFzc2Vt
Ymx5TGlua0Vycm9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJqcy9XZWJBc3NlbWJseUxpbmtF
cnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgImpzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJqcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oIgogI2luY2x1
ZGUgImpzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5ZTU4NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3Iu
Y3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUxp
bmtFcnJvci5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSlNXZWJBc3NlbWJseUxpbmtFcnJvciogSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIFZNKiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlMaW5rRXJy
b3I+KHZtLT5oZWFwKSkgSlNXZWJBc3NlbWJseUxpbmtFcnJvcigqdm0sIHN0cnVjdHVyZSk7Cisg
ICAgaW5zdGFuY2UtPm1fc291cmNlQXBwZW5kZXIgPSBkZWZhdWx0U291cmNlQXBwZW5kZXI7Cisg
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHN0YXRlLCAqdm0sIG1lc3NhZ2UsIHRydWUpOwor
ICAgIHJldHVybiBpbnN0YW5jZTsKK30KKworSlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6SlNXZWJB
c3NlbWJseUxpbmtFcnJvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQoreworfQorCitjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseUxp
bmtFcnJvcjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTGlua0Vycm9yIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5TGlua0Vycm9yKSB9OworCisg
ICAgCitKU09iamVjdCogY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIHN0
YXRlLCBWTSogdm0sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoIW1lc3Nh
Z2UuaXNFbXB0eSgpKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICByZXR1cm4gSlNXZWJBc3NlbWJseUxpbmtFcnJv
cjo6Y3JlYXRlKHN0YXRlLCB2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseUxpbmtFcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTA2ZjBmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU1dlYkFzc2VtYmx5TGlua0Vycm9yIDogcHVi
bGljIEVycm9ySW5zdGFuY2UgeworcHVibGljOgorICAgIHR5cGVkZWYgRXJyb3JJbnN0YW5jZSBC
YXNlOworCisgICAgc3RhdGljIEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IqIGNyZWF0ZShFeGVjU3Rh
dGUqLCBWTSosIFN0cnVjdHVyZSosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKiBjcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgVk0qIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZShzdGF0ZSwgdm0sIHN0cnVjdHVyZSwgbWVzc2FnZS5pc1VuZGVmaW5lZCgpID8gU3RyaW5n
KCkgOiBtZXNzYWdlLnRvV1RGU3RyaW5nKHN0YXRlKSk7CisgICAgfQorCisgICAgREVDTEFSRV9J
TkZPOworCitwcm90ZWN0ZWQ6CisgICAgSlNXZWJBc3NlbWJseUxpbmtFcnJvcihWTSYsIFN0cnVj
dHVyZSopOworfTsKKworSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoRXhl
Y1N0YXRlKiwgVk0qLCBjb25zdCBTdHJpbmcmKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNw
cAppbmRleCA5ZDk1OTI2Li42MWY1OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgiCiAjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1
bGUuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCkBAIC0xMDgsOSArMTA5LDkg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3Nl
bWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgc3dpdGNoIChpbXBvcnQua2luZCkg
ewogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFsS2luZDo6RnVuY3Rpb246IHsKICAgICAgICAg
ICAgIC8vIDQuIElmIGkgaXMgYSBmdW5jdGlvbiBpbXBvcnQ6Ci0gICAgICAgICAgICAvLyBpLiBJ
ZiBJc0NhbGxhYmxlKHYpIGlzIGZhbHNlLCB0aHJvdyBhIFR5cGVFcnJvci4KKyAgICAgICAgICAg
IC8vIGkuIElmIElzQ2FsbGFibGUodikgaXMgZmFsc2UsIHRocm93IGEgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLgogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbXBvcnQgZnVuY3Rpb24g
bXVzdCBiZSBjYWxsYWJsZSIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9y
VmFsdWUodmFsdWUpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtF
cnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0IGZ1bmN0aW9uIG11c3QgYmUgY2Fs
bGFibGUiKSkpKTsKICAgICAgICAgICAgIEpTQ2VsbCogY2VsbCA9IHZhbHVlLmFzQ2VsbCgpOwog
ICAgICAgICAgICAgLy8gaWkuIElmIHYgaXMgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhvdGljIE9i
amVjdDoKICAgICAgICAgICAgIGlmIChXZWJBc3NlbWJseUZ1bmN0aW9uKiBpbXBvcnRlZEV4cG9y
dHMgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihvYmplY3QpKSB7CkBAIC0x
MzQsMjQgKzEzNSwyNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgICAgICAgICAgLy8g
Ny4gT3RoZXJ3aXNlIChpIGlzIGEgdGFibGUgaW1wb3J0KToKICAgICAgICAgICAgIGhhc1RhYmxl
SW1wb3J0ID0gdHJ1ZTsKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZSogdGFibGUgPSBq
c0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlUYWJsZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIC8v
IGkuIElmIHYgaXMgbm90IGEgV2ViQXNzZW1ibHkuVGFibGUgb2JqZWN0LCB0aHJvdyBhIFR5cGVF
cnJvci4KKyAgICAgICAgICAgIC8vIGkuIElmIHYgaXMgbm90IGEgV2ViQXNzZW1ibHkuVGFibGUg
b2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5LkxpbmtFcnJvci4KICAgICAgICAgICAgIGlmICgh
dGFibGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LlRhYmxlIikp
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2
bSwgQVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5LlRhYmxlIikpKSk7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkSW5pdGlh
bCA9IG1vZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24uaW5pdGlhbCgpOwogICAgICAg
ICAgICAgdWludDMyX3QgYWN0dWFsSW5pdGlhbCA9IHRhYmxlLT5zaXplKCk7CiAgICAgICAgICAg
ICBpZiAoYWN0dWFsSW5pdGlhbCA8IGV4cGVjdGVkSW5pdGlhbCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBwcm92aWRlZCBh
biAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0
ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGlt
cG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpKTsKIAogICAg
ICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGV4cGVjdGVkTWF4aW11bSA9IG1v
ZHVsZUluZm9ybWF0aW9uLnRhYmxlSW5mb3JtYXRpb24ubWF4aW11bSgpKSB7CiAgICAgICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gYWN0dWFsTWF4aW11bSA9IHRhYmxlLT5tYXhp
bXVtKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFhY3R1YWxNYXhpbXVtKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJUYWJsZSBpbXBvcnQgZG9lcyBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQg
dGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1i
bHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIlRhYmxlIGltcG9ydCBkb2VzIG5v
dCBoYXZlIGEgJ21heGltdW0nIGJ1dCB0aGUgbW9kdWxlIHJlcXVpcmVzIHRoYXQgaXQgZG9lcyIp
KSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoKmFjdHVhbE1heGlt
dW0gPiAqZXhwZWN0ZWRNYXhpbXVtKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbXBvcnRl
ZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0ZWQg
J21heGltdW0nIikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwg
QVNDSUlMaXRlcmFsKCJJbXBvcnRlZCBUYWJsZSdzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0
aGUgbW9kdWxlJ3MgZXhwZWN0ZWQgJ21heGltdW0nIikpKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCkBAIC0xNjYsMjUgKzE2NywyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRl
KiBleAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5
KTsKICAgICAgICAgICAgIGhhc01lbW9yeUltcG9ydCA9IHRydWU7CiAgICAgICAgICAgICBKU1dl
YkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNZW1v
cnkqPih2YWx1ZSk7Ci0gICAgICAgICAgICAvLyBpLiBJZiB2IGlzIG5vdCBhIFdlYkFzc2VtYmx5
Lk1lbW9yeSBvYmplY3QsIHRocm93IGEgVHlwZUVycm9yLgorICAgICAgICAgICAgLy8gaS4gSWYg
diBpcyBub3QgYSBXZWJBc3NlbWJseS5NZW1vcnkgb2JqZWN0LCB0aHJvdyBhIFdlYkFzc2VtYmx5
LkxpbmtFcnJvci4KICAgICAgICAgICAgIGlmICghbWVtb3J5KQotICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBpcyBub3QgYW4g
aW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuTWVtb3J5IikpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMsICZ2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkg
aW1wb3J0IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5NZW1vcnkiKSkpKTsKIAog
ICAgICAgICAgICAgV2FzbTo6UGFnZUNvdW50IGV4cGVjdGVkSW5pdGlhbCA9IG1vZHVsZUluZm9y
bWF0aW9uLm1lbW9yeS5pbml0aWFsKCk7CiAgICAgICAgICAgICBXYXNtOjpQYWdlQ291bnQgYWN0
dWFsSW5pdGlhbCA9IG1lbW9yeS0+bWVtb3J5KCktPmluaXRpYWwoKTsKICAgICAgICAgICAgIGlm
IChhY3R1YWxJbml0aWFsIDwgZXhwZWN0ZWRJbml0aWFsKQotICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAn
aW5pdGlhbCcgdGhhdCBpcyB0b28gc21hbGwiKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZUpT
V2ViQXNzZW1ibHlMaW5rRXJyb3IoZXhlYywgJnZtLCBBU0NJSUxpdGVyYWwoIk1lbW9yeSBpbXBv
cnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIikpKSk7CiAKICAgICAg
ICAgICAgIGlmIChXYXNtOjpQYWdlQ291bnQgZXhwZWN0ZWRNYXhpbXVtID0gbW9kdWxlSW5mb3Jt
YXRpb24ubWVtb3J5Lm1heGltdW0oKSkgewogICAgICAgICAgICAgICAgIFdhc206OlBhZ2VDb3Vu
dCBhY3R1YWxNYXhpbXVtID0gbWVtb3J5LT5tZW1vcnkoKS0+bWF4aW11bSgpOwogICAgICAgICAg
ICAgICAgIGlmICghYWN0dWFsTWF4aW11bSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWVt
b3J5IGltcG9ydCBkaWQgbm90IGhhdmUgYSAnbWF4aW11bScgYnV0IHRoZSBtb2R1bGUgcmVxdWly
ZXMgdGhhdCBpdCBkb2VzIikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGV4ZWMs
ICZ2bSwgQVNDSUlMaXRlcmFsKCJNZW1vcnkgaW1wb3J0IGRpZCBub3QgaGF2ZSBhICdtYXhpbXVt
JyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXMiKSkpKTsKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYWN0dWFsTWF4aW11bSA+IGV4cGVjdGVkTWF4
aW11bSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKAotICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5IGltcG9ydHMgJ21heGltdW0n
IGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAnbWF4aW11bSIpKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiTWVtb3J5
IGltcG9ydHMgJ21heGltdW0nIGlzIGxhcmdlciB0aGFuIHRoZSBtb2R1bGUncyBleHBlY3RlZCAn
bWF4aW11bSciKSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAvLyBpaS4gQXBwZW5kIHYgdG8gbWVtb3JpZXMuCkBAIC0xOTgsNyArMTk5LDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUlu
c3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgICAgIEFTU0VSVChtb2R1bGVJbmZvcm1hdGlv
bi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLm11dGFiaWxpdHkgPT0gV2FzbTo6R2xvYmFsOjpJ
bW11dGFibGUpOwogICAgICAgICAgICAgLy8gaWkuIElmIFR5cGUodikgaXMgbm90IE51bWJlciwg
dGhyb3cgYSBUeXBlRXJyb3IuCiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbXBvcnRl
ZCBnbG9iYWwgbXVzdCBiZSBhIG51bWJlciIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRp
bWVUeXBlRm9yVmFsdWUodmFsdWUpKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihleGVjLCAmdm0sIEFTQ0lJTGl0ZXJhbCgiaW1wb3J0ZWQgZ2xvYmFsIG11
c3QgYmUgYSBudW1iZXIiKSkpKTsKICAgICAgICAgICAgIC8vIGlpaS4gQXBwZW5kIFRvV2ViQXNz
ZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgogICAgICAgICAgICAgc3dpdGNoIChtb2R1bGVJbmZv
cm1hdGlvbi5nbG9iYWxzW2ltcG9ydC5raW5kSW5kZXhdLnR5cGUpIHsKICAgICAgICAgICAgIGNh
c2UgV2FzbTo6STMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGFmMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlM
aW5rRXJyb3JDb25zdHJ1Y3Rvci5oIgorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFdlYkFz
c2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseUxpbmtFcnJvciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKSB9OworCisvKiBTb3Vy
Y2UgZm9yIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IubHV0LmgKKyBAYmVnaW4gY29u
c3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TGlua0Vycm9yCisgQGVuZAorICovCisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBhdXRvJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIG1lc3Nh
Z2UgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CisgICAgYXV0byogc3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoc3RhdGUsIHN0YXRlLT5uZXdUYXJnZXQo
KSwgYXNJbnRlcm5hbEZ1bmN0aW9uKHN0YXRlLT5qc0NhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCkt
PldlYkFzc2VtYmx5TGlua0Vycm9yU3RydWN0dXJlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNXZWJBc3NlbWJseUxpbmtFcnJvcjo6Y3JlYXRlKHN0YXRlLCAmdm0sIHN0cnVjdHVyZSwgbWVz
c2FnZSkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiV2ViQXNzZW1ibHkuTGlua0Vycm9yIikp
OworfQorCitXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKiBXZWJBc3NlbWJseUxpbmtF
cnJvckNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqIHRoaXNQcm90b3R5cGUpCit7CisgICAgYXV0byog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtF
cnJvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHRo
aXNQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBX
ZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3ZvaWQgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWJB
c3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCBBU0NJSUxpdGVyYWwoIkxpbmtFcnJvciIpKTsKKyAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitXZWJBc3NlbWJseUxpbmtF
cnJvckNvbnN0cnVjdG9yOjpXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K0NvbnN0cnVjdFR5cGUgV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtF
cnJvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKK30KKworQ2FsbFR5cGUgV2Vi
QXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxKU1dl
YkFzc2VtYmx5TGlua0Vycm9yOworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxp
bmtFcnJvckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzcwMGM2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFdlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlOworCitjbGFzcyBXZWJBc3NlbWJseUxpbmtFcnJvckNv
bnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVk
ZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKworICAgIHN0YXRpYyBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZSopOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUqKTsKKworcHJpdmF0
ZToKKyAgICBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ODYwNjI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlMaW5rRXJyb3JQ
cm90b3R5cGUuaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCisjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IldlYkFzc2VtYmx5LkxpbmtFcnJvci5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90
eXBlVGFibGVXZWJBc3NlbWJseUxpbmtFcnJvciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3Nl
bWJseUxpbmtFcnJvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBXZWJBc3NlbWJseUxp
bmtFcnJvclByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5
TGlua0Vycm9yCisgQGVuZAorICovCisKK1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKiBX
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZT4odm0uaGVh
cCkpIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIG9i
amVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVj
dHVyZSogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordm9p
ZCBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGU6OldlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90
b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vy
cm9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1NDZj
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgV2ViQXNzZW1i
bHlMaW5rRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQ
cm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDk3ZjhkOTguLjhlMmRj
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5
TGlua0Vycm9yLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgogI2luY2x1ZGUg
IlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5oIgpAQCAtMTk4LDkgKzE5
OSw5IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBT
Y29wZSwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgLi4uQXJncz4KLU5FVkVSX0lOTElORSBzdGF0aWMg
SlNWYWx1ZSBkYXRhU2VnbWVudEZhaWwoRXhlY1N0YXRlKiBzdGF0ZSwgU2NvcGUmIHNjb3BlLCBO
IG1lbW9yeVNpemUsIE4gc2VnbWVudFNpemUsIE4gb2Zmc2V0LCBBcmdzLi4uIGFyZ3MpCitORVZF
Ul9JTkxJTkUgc3RhdGljIEpTVmFsdWUgZGF0YVNlZ21lbnRGYWlsKEV4ZWNTdGF0ZSogc3RhdGUs
IFZNKiB2bSwgU2NvcGUmIHNjb3BlLCBOIG1lbW9yeVNpemUsIE4gc2VnbWVudFNpemUsIE4gb2Zm
c2V0LCBBcmdzLi4uIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgbWFrZVN0cmluZyhBU0NJSUxpdGVyYWwoIklu
dmFsaWQgZGF0YSBzZWdtZW50IGluaXRpYWxpemF0aW9uOiBzZWdtZW50IG9mICIpLCBTdHJpbmc6
Om51bWJlcihzZWdtZW50U2l6ZSksIEFTQ0lJTGl0ZXJhbCgiIGJ5dGVzIG1lbW9yeSBvZiAiKSwg
U3RyaW5nOjpudW1iZXIobWVtb3J5U2l6ZSksIEFTQ0lJTGl0ZXJhbCgiIGJ5dGVzLCBhdCBvZmZz
ZXQgIiksIFN0cmluZzo6bnVtYmVyKG9mZnNldCksIGFyZ3MuLi4pKSk7CisgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihz
dGF0ZSwgdm0sIG1ha2VTdHJpbmcoQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGRhdGEgc2VnbWVudCBp
bml0aWFsaXphdGlvbjogc2VnbWVudCBvZiAiKSwgU3RyaW5nOjpudW1iZXIoc2VnbWVudFNpemUp
LCBBU0NJSUxpdGVyYWwoIiBieXRlcyBtZW1vcnkgb2YgIiksIFN0cmluZzo6bnVtYmVyKG1lbW9y
eVNpemUpLCBBU0NJSUxpdGVyYWwoIiBieXRlcywgYXQgb2Zmc2V0ICIpLCBTdHJpbmc6Om51bWJl
cihvZmZzZXQpLCBhcmdzLi4uKSkpOwogfQogCiBKU1ZhbHVlIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtMjI0LDcgKzIyNSw3IEBAIEpTVmFs
dWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogc3RhdGUpCiAg
ICAgICAgICAgICB1aW50MzJfdCB0YWJsZUluZGV4ID0gZWxlbWVudC5vZmZzZXQ7CiAgICAgICAg
ICAgICB1aW50NjRfdCBsYXN0V3JpdHRlbkluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRh
YmxlSW5kZXgpICsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnQuZnVuY3Rpb25JbmRpY2Vz
LnNpemUoKSkgLSAxOwogICAgICAgICAgICAgaWYgKGxhc3RXcml0dGVuSW5kZXggPj0gdGFibGUt
PnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1S
YW5nZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJFbGVtZW50IGlzIHRyeWluZyB0
byBzZXQgYW4gb3V0IG9mIGJvdW5kcyB0YWJsZSBpbmRleCIpKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihzdGF0ZSwgJnZtLCBBU0NJSUxpdGVyYWwoIkVsZW1lbnQgaXMgdHJ5aW5nIHRvIHNl
dCBhbiBvdXQgb2YgYm91bmRzIHRhYmxlIGluZGV4IikpKTsKIAogICAgICAgICAgICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IGVsZW1lbnQuZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZXNzZW50aWFsbHkgbWVhbnMgd2UncmUg
ZXhwb3J0aW5nIGFuIGltcG9ydC4KQEAgLTI2NSw5ICsyNjYsOSBAQCBKU1ZhbHVlIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIHN0YXRlKQogICAgICAgICAgICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogZGF0YSkgewogICAgICAgICAgICAgICAgIGlmIChzZWdtZW50
LT5zaXplSW5CeXRlcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2l6ZUlu
Qnl0ZXMgPCBzZWdtZW50LT5zaXplSW5CeXRlcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZGF0YVNlZ21lbnRGYWlsKHN0YXRlLCBzY29wZSwgc2l6ZUluQnl0ZXMsIHNlZ21lbnQt
PnNpemVJbkJ5dGVzLCBzZWdtZW50LT5vZmZzZXQsIEFTQ0lJTGl0ZXJhbCgiLCBzZWdtZW50IGlz
IHRvbyBiaWciKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVNlZ21lbnRG
YWlsKHN0YXRlLCAmdm0sIHNjb3BlLCBzaXplSW5CeXRlcywgc2VnbWVudC0+c2l6ZUluQnl0ZXMs
IHNlZ21lbnQtPm9mZnNldCwgQVNDSUlMaXRlcmFsKCIsIHNlZ21lbnQgaXMgdG9vIGJpZyIpKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNlZ21lbnQtPm9mZnNldCA+IHNpemVJ
bkJ5dGVzIC0gc2VnbWVudC0+c2l6ZUluQnl0ZXMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGRhdGFTZWdtZW50RmFpbChzdGF0ZSwgc2NvcGUsIHNpemVJbkJ5dGVzLCBzZWdtZW50
LT5zaXplSW5CeXRlcywgc2VnbWVudC0+b2Zmc2V0LCBBU0NJSUxpdGVyYWwoIiwgc2VnbWVudCB3
cml0ZXMgb3V0c2lkZSBvZiBtZW1vcnkiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZGF0YVNlZ21lbnRGYWlsKHN0YXRlLCAmdm0sIHNjb3BlLCBzaXplSW5CeXRlcywgc2VnbWVu
dC0+c2l6ZUluQnl0ZXMsIHNlZ21lbnQtPm9mZnNldCwgQVNDSUlMaXRlcmFsKCIsIHNlZ21lbnQg
d3JpdGVzIG91dHNpZGUgb2YgbWVtb3J5IikpOwogICAgICAgICAgICAgICAgICAgICBtZW1jcHko
bWVtb3J5ICsgc2VnbWVudC0+b2Zmc2V0LCAmc2VnbWVudC0+Ynl0ZSgwKSwgc2VnbWVudC0+c2l6
ZUluQnl0ZXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLS0gCjIuOS4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>