<?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>219847</bug_id>
          
          <creation_ts>2020-12-13 22:28:00 -0800</creation_ts>
          <short_desc>[JSC] Introduce vmEntryCustomAccessor and vmEntryHostFunction for JITCage</short_desc>
          <delta_ts>2020-12-16 05:48:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1714377</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-13 22:28:00 -0800</bug_when>
    <thetext>[JSC] Introduce vmEntryCustomAccessor and vmEntryHostFunction for JITCage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714378</commentid>
    <comment_count>1</comment_count>
      <attachid>416137</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-13 22:30:53 -0800</bug_when>
    <thetext>Created attachment 416137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714379</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-13 22:31:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/71825625&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714380</commentid>
    <comment_count>3</comment_count>
      <attachid>416138</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-13 23:00:03 -0800</bug_when>
    <thetext>Created attachment 416138
Patch

Removed assertIsHostFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714382</commentid>
    <comment_count>4</comment_count>
      <attachid>416137</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-12-13 23:41:12 -0800</bug_when>
    <thetext>Comment on attachment 416137
Patch

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

&gt; Source/JavaScriptCore/runtime/NativeFunction.h:36
&gt; +using RawNativeFunctionWithPtr = EncodedJSValue(JSC_HOST_CALL_ATTRIBUTES*)(JSGlobalObject*, CallFrame*, void*);

Please remove this since it is not used.

&gt; Source/JavaScriptCore/runtime/PutPropertySlot.h:42
&gt; -    typedef bool (*PutValueFunc)(JSGlobalObject*, EncodedJSValue thisObject, EncodedJSValue value);
&gt; +    using PutValueFunc = bool (*)(JSGlobalObject*, EncodedJSValue, EncodedJSValue);
&gt; +    using PutValueFuncWithPtr = bool (*)(JSGlobalObject*, EncodedJSValue, EncodedJSValue, void*);

Would you mind keeping the variable names `thisObject` and `value` to document the different purposes of the 2 EncodedJSValue arguments?

&gt; Source/WTF/wtf/PlatformCallingConventions.h:96
&gt; +#define JSC_DEFINE_JIT_OPERATION_WITH_ATTRIBUTES_WITHOUT_VARIABLE(functionName, attributes, returnType, parameters) \
&gt; +    attributes returnType JIT_OPERATION_ATTRIBUTES functionName parameters

Should we get rid of the attributes argument since it is never used?  Do you think there&apos;s value in keeping it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714383</commentid>
    <comment_count>5</comment_count>
      <attachid>416138</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-12-13 23:42:53 -0800</bug_when>
    <thetext>Comment on attachment 416138
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714384</commentid>
    <comment_count>6</comment_count>
      <attachid>416137</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-13 23:44:38 -0800</bug_when>
    <thetext>Comment on attachment 416137
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/NativeFunction.h:36
&gt;&gt; +using RawNativeFunctionWithPtr = EncodedJSValue(JSC_HOST_CALL_ATTRIBUTES*)(JSGlobalObject*, CallFrame*, void*);
&gt; 
&gt; Please remove this since it is not used.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/PutPropertySlot.h:42
&gt;&gt; +    using PutValueFuncWithPtr = bool (*)(JSGlobalObject*, EncodedJSValue, EncodedJSValue, void*);
&gt; 
&gt; Would you mind keeping the variable names `thisObject` and `value` to document the different purposes of the 2 EncodedJSValue arguments?

Recovered.

&gt;&gt; Source/WTF/wtf/PlatformCallingConventions.h:96
&gt;&gt; +    attributes returnType JIT_OPERATION_ATTRIBUTES functionName parameters
&gt; 
&gt; Should we get rid of the attributes argument since it is never used?  Do you think there&apos;s value in keeping it?

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714402</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-14 02:32:40 -0800</bug_when>
    <thetext>Committed r270764: &lt;https://trac.webkit.org/changeset/270764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715090</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-16 05:48:17 -0800</bug_when>
    <thetext>Committed r270888: &lt;https://trac.webkit.org/changeset/270888&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416137</attachid>
            <date>2020-12-13 22:30:53 -0800</date>
            <delta_ts>2020-12-13 23:00:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219847-20201213223053.patch</filename>
            <type>text/plain</type>
            <size>54709</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWIwMmQ4YzdhZmM3MmJiMDZhN2QwN2Q3YzY4ODNlODc1ODhjOGYzLi5lNGMyZGEwY2M3NzI1MmU0
NmE1OWQ3NTNjMWZlNzYzMjZkNmU3NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAyMC0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IgYW5kIHZt
RW50cnlIb3N0RnVuY3Rpb24gZm9yIEpJVENhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVnaXN0ZXJpbmcgYWxsIGhvc3QtZnVu
Y3Rpb25zIGFuZCBjdXN0b20gYWNjZXNzb3JzIHdpdGggT3BlcmF0aW9uUHRyVGFnIG9yIEhvc3RG
dW5jdGlvblB0clRhZywKKyAgICAgICAgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgdHJhbXBvbGlu
ZSB3aGljaCBpbnZva2VzIHRoZW0gd2l0aCBzcGVjaWFsIHB0ci10YWcgdG8gcmVkdWNlIG1lbW9y
eSB1c2FnZSBvZiBKSVRPcGVyYXRpb25MaXN0LgorCisgICAgICAgIFdoZW4gaW52b2tpbmcgY3Vz
dG9tIGFjY2Vzc29yLCB3ZSBwYXNzIHRoYXQgcG9pbnRlciBhcyBhIGZvcnRoIGFyZ3VtZW50LCBh
bmQgY2FsbCB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IuCisgICAgICAgIEFuZCB2bUVudHJ5Q3VzdG9t
QWNjZXNzb3IganVtcHMgdG8gdGhlIHBhc3NlZCBhcmd1bWVudCB3aXRoIHNwZWNpYWwgcHRyIHRh
Zy4gQW5kIHdlIHJlZ2lzdGVyIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhcyBhbiBvcGVyYXRpb24u
CisgICAgICAgIEZvciBob3N0LWZ1bmN0aW9ucywgd2UgcGFzcyB0aGF0IHBvaW50ZXIgYXMgYSB0
aGlyZCBhcmd1bWVudC4KKworICAgICAgICAqIGFzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNw
cDoKKyAgICAgICAgKEpTQzo6YWRkUG9pbnRlcnMpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRp
b25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSk6CisgICAgICAgIChKU0M6
OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5F
bWJlZGRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaDoKKyAgICAg
ICAgKiBiMy90ZXN0YjNfMS5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6
OkdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudCk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0
QnlJZFZhcmlhbnQuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6OmN1c3RvbUFjY2Vz
c29yR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6Cisg
ICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5j
cHA6CisgICAgICAgIChKU0M6OkdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET01HZXR0ZXIpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlR2V0QnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3Ip
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0dhdGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTQ1B0clRhZy5oOgorICAgICAgICAoSlNDOjp0YWdKU0ND
b2RlUHRySW1wbCk6CisgICAgICAgIChKU0M6OnVudGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5
U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6CisgICAgICAgIChK
U0M6OlB1dFByb3BlcnR5U2xvdDo6Y3VzdG9tU2V0dGVyIGNvbnN0KToKKwogMjAyMC0xMi0xMyAg
U2FtdWVsIFRoaWJhdWx0ICA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KIAogICAgICAg
ICBbSlNDXSBTZXQgc19tYXhQYXRoTGVuZ3RoIGZhbGxiYWNrIHdoZW4gT1MgZG9lcyBub3QgaGF2
ZSBhIFBBVEhfTUFYIGxpbWl0YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmY4Y2NmNzI2YjRlYmU4M2UzODRkYTJlMDk0
YmM2OTQxNzY2ZjUzYi4uNGRmMmRlMzg3NjI0ZWI3YWNmMDQyN2Q3NmYyODZjMGY2MTE5NWUwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSB2bUVudHJ5Q3VzdG9tQWNjZXNz
b3IgYW5kIHZtRW50cnlIb3N0RnVuY3Rpb24gZm9yIEpJVENhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZl
bnRpb25zLmg6CisKIDIwMjAtMTItMTIgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA2NjEuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggM2ViMjI3ZjRmZDlmY2NhNzQwYmFhYmQyMzU1MzJhN2M5NDNhZjFmZS4uMzc1YmI3YTQ4OTMy
OGE3MTJhMmI3Yjg1NGU0MTYwZjM1NjJhNDZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhbmQgdm1FbnRyeUhvc3RG
dW5jdGlvbiBmb3IgSklUQ2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwb3B1bGF0ZUpJVE9wZXJhdGlvbnMpOgorICAgICAgICAqIHRlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6
cG9wdWxhdGVKSVRPcGVyYXRpb25zKToKKwogMjAyMC0xMi0xMyAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDIERpc3BsYXldIFRoZSBkaXNwbGF5
IHRyZWUgc2hvdWxkIGJlIG93bmVkIGJ5IHRoZSBkaXNwbGF5IHZpZXcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWEw
ZGI2MmUwOWFkZWE3MmQ4Y2M5MjA5Yzk0OTYzNTk1MjQ0YjZhNC4uMGM4NTllNWI1MTUzZjUwNjEw
ZmYzMTgyZTUzNGU4OWFmMzU3ODZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0x
Mi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IEludHJvZHVjZSB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IgYW5kIHZtRW50cnlIb3N0RnVuY3Rpb24g
Zm9yIEpJVENhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1dlYktpdEpJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpw
b3B1bGF0ZUpJVE9wZXJhdGlvbnMpOgorCiAyMDIwLTEyLTEyICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXVtpT1NdIFR1cm4gb24gbW9kZXJu
IFdlYkF1dGhuIGZvciBkZWZhdWx0IGJyb3dzZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRleCBlNGYyNmFiNDY2ZTJm
YjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1Li5iNWNiZjkwZmRjY2M4MzdjZmEzMWJmYTBlNWQw
OTljMjFiNTExNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAKQEAgLTM5LDggKzM5LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiBMYXp5TmV2ZXJEZXN0cm95ZWQ8SklUT3BlcmF0aW9uTGlzdD4gaml0T3BlcmF0aW9uTGlzdDsK
IAogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi1leHRlcm4gY29uc3QgdWlu
dHB0cl90IHN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5KU0MgX19hc20oInNlY3Rpb24kc3RhcnQkX19E
QVRBX0NPTlNUJF9fanNjX2hvc3QiKTsKLWV4dGVybiBjb25zdCB1aW50cHRyX3QgZW5kT2ZIb3N0
RnVuY3Rpb25zSW5KU0MgX19hc20oInNlY3Rpb24kZW5kJF9fREFUQV9DT05TVCRfX2pzY19ob3N0
Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5KU0MgX19h
c20oInNlY3Rpb24kc3RhcnQkX19EQVRBX0NPTlNUJF9fanNjX29wcyIpOwogZXh0ZXJuIGNvbnN0
IHVpbnRwdHJfdCBlbmRPZkpJVE9wZXJhdGlvbnNJbkpTQyBfX2FzbSgic2VjdGlvbiRlbmQkX19E
QVRBX0NPTlNUJF9fanNjX29wcyIpOwogI2VuZGlmCkBAIC01MSw3ICs0OSw3IEBAIHZvaWQgSklU
T3BlcmF0aW9uTGlzdDo6aW5pdGlhbGl6ZSgpCiB9CiAKICNpZiBFTkFCTEUoSklUX09QRVJBVElP
Tl9WQUxJREFUSU9OKQotc3RhdGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFk
ZFBvaW50ZXJzKEhhc2hNYXA8dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJl
Z2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2lu
T3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKQorc3RhdGljIFNVUFBS
RVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8dm9pZCosIHZv
aWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0
cl90KiBlbmRPcGVyYXRpb25zKQogewogI2lmIEVOQUJMRShKSVRfQ0FHRSkKICAgICBpZiAoT3B0
aW9uczo6dXNlSklUQ2FnZSgpKSB7CkBAIC02MCwxMSArNTgsNiBAQCBzdGF0aWMgU1VQUFJFU1Nf
QVNBTiBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkUG9pbnRlcnMoSGFzaE1hcDx2b2lkKiwgdm9pZCo+
JiBtYXAsCiAgICAgfQogI2VuZGlmCiAgICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkg
ewotICAgICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9IGJlZ2luSG9zdDsgY3Vy
cmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKLSAgICAgICAgICAgIHZvaWQqIGNvZGVQdHIg
PSByZW1vdmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAg
ICAgICAgIGlmIChjb2RlUHRyKQotICAgICAgICAgICAgICAgIG1hcC5hZGQoY29kZVB0ciwgV1RG
Ojp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVuY3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAg
ICAgICAgfQogICAgICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9IGJlZ2luT3Bl
cmF0aW9uczsgY3VycmVudCAhPSBlbmRPcGVyYXRpb25zOyArK2N1cnJlbnQpIHsKICAgICAgICAg
ICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4o
KmN1cnJlbnQpKTsKICAgICAgICAgICAgIGlmIChjb2RlUHRyKQpAQCAtODAsNyArNzMsNyBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCkK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbXSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKLSAgICAgICAgICAg
IGFkZFBvaW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9ucywgJnN0
YXJ0T2ZIb3N0RnVuY3Rpb25zSW5KU0MsICZlbmRPZkhvc3RGdW5jdGlvbnNJbkpTQywgJnN0YXJ0
T2ZKSVRPcGVyYXRpb25zSW5KU0MsICZlbmRPZkpJVE9wZXJhdGlvbnNJbkpTQyk7CisgICAgICAg
ICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMs
ICZzdGFydE9mSklUT3BlcmF0aW9uc0luSlNDLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5KU0MpOwog
ICAgIH0pOwogI2VuZGlmCiB9CkBAIC0xMjgsMjIgKzEyMSwyMCBAQCB2b2lkIEpJVE9wZXJhdGlv
bkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKQogICAgICAg
ICAgICAgSlNDX1dBU01fR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKICAgICAg
ICAgfTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAgICAgICAgICAgYWRkUG9p
bnRlcnMoaml0T3BlcmF0aW9uTGlzdC0+bV92YWxpZGF0ZWRPcGVyYXRpb25zLCBudWxscHRyLCBu
dWxscHRyLCBvcGVyYXRpb25zLCBvcGVyYXRpb25zICsgV1RGX0FSUkFZX0xFTkdUSChvcGVyYXRp
b25zKSk7CisgICAgICAgICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlk
YXRlZE9wZXJhdGlvbnMsIG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RI
KG9wZXJhdGlvbnMpKTsKICN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KICAgICB9KTsKICNl
bmRpZgogfQogCiAKLXZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1i
ZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9z
dCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5k
T3BlcmF0aW9ucykKK3ZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1i
ZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCog
ZW5kT3BlcmF0aW9ucykKIHsKLSAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKLSAgICBVTlVT
RURfUEFSQU0oZW5kSG9zdCk7CiAgICAgVU5VU0VEX1BBUkFNKGJlZ2luT3BlcmF0aW9ucyk7CiAg
ICAgVU5VU0VEX1BBUkFNKGVuZE9wZXJhdGlvbnMpOwogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9O
X1ZBTElEQVRJT04pCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAgICAgICBhZGRQb2lu
dGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIGJlZ2luSG9zdCwg
ZW5kSG9zdCwgYmVnaW5PcGVyYXRpb25zLCBlbmRPcGVyYXRpb25zKTsKKyAgICAgICAgYWRkUG9p
bnRlcnMoaml0T3BlcmF0aW9uTGlzdC0+bV92YWxpZGF0ZWRPcGVyYXRpb25zLCBiZWdpbk9wZXJh
dGlvbnMsIGVuZE9wZXJhdGlvbnMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggNWQ3Zjg1NjVkNWNl
YTMzNDIzNmEzZGJiZDFkMzMxOWQ1NGUxODc0Yy4uZTZjNmEzN2I3OTlkMjk0Y2UzMGQyMjk2MmEw
OTY0NzQxYmNmZjliZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9KSVRPcGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9KSVRPcGVyYXRpb25MaXN0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSklUT3BlcmF0aW9u
TGlzdCB7CiAgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUo
KTsKICAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxM
SW50KCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50
ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90
KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0
cl90KiBlbmRPcGVyYXRpb25zKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBw
b3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9u
cywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKTsKIAogICAgIC8vIEZJWE1FOiBDdXJy
ZW50bHksIGFzc2VydElzSG9zdEZ1bmN0aW9uIGFuZCBhc3NlcnRJc0pJVE9wZXJhdGlvbiBhcmUg
dGhlIHNhbWUuCiAgICAgLy8gV2Ugd2lsbCBtYWtlIHRoZW0gd29yayBpbiBhIHN1YnNlcXVlbnQg
cGF0Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzXzEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18xLmNwcAppbmRleCA4ZmZhM2Q0MTY1
YTg3ZDZiODdhNmEwYzZjZWQxNjdjYTAxZTNiMWVlLi45NjRjNmMzNTk3MTFkMzhiMDE5ZWEzZWFh
NmMyODgyZmJkMTY3ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzXzEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKQEAg
LTg5Miw4ICs4OTIsNiBAQCBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciopCiAjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKIAogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi1l
eHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5UZXN0QjMgX19hc20o
InNlY3Rpb24kc3RhcnQkX19EQVRBX0NPTlNUJF9fanNjX2hvc3QiKTsKLWV4dGVybiBjb25zdCB1
aW50cHRyX3QgZW5kT2ZIb3N0RnVuY3Rpb25zSW5UZXN0QjMgX19hc20oInNlY3Rpb24kZW5kJF9f
REFUQV9DT05TVCRfX2pzY19ob3N0Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZK
SVRPcGVyYXRpb25zSW5UZXN0QjMgX19hc20oInNlY3Rpb24kc3RhcnQkX19EQVRBX0NPTlNUJF9f
anNjX29wcyIpOwogZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkpJVE9wZXJhdGlvbnNJblRl
c3RCMyBfX2FzbSgic2VjdGlvbiRlbmQkX19EQVRBX0NPTlNUJF9fanNjX29wcyIpOwogI2VuZGlm
CkBAIC05MTgsNyArOTE2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAg
IEpTQzo6aW5pdGlhbGl6ZSgpOwogCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElP
TikKLSAgICBKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVy
KCZzdGFydE9mSG9zdEZ1bmN0aW9uc0luVGVzdEIzLCAmZW5kT2ZIb3N0RnVuY3Rpb25zSW5UZXN0
QjMsICZzdGFydE9mSklUT3BlcmF0aW9uc0luVGVzdEIzLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5U
ZXN0QjMpOworICAgIEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1i
ZWRkZXIoJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5UZXN0QjMsICZlbmRPZkpJVE9wZXJhdGlvbnNJ
blRlc3RCMyk7CiAjZW5kaWYKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IDI7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
CmluZGV4IDQzNWJiZTkyYTczNmJmMjZlZWUyYjMyMzNlNDhkNTZlMDJiNzhjYzIuLjYyNWU4NTcy
YmM4NWU5YzM4YmYxYjVhYWNlOThjZmVhOGQ2NTZlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZS5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCkBAIC0xNzIyLDIxICsxNzIz
LDQzIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICAvLyBtdXN0IGtlZXAgaXQgYWxpdmUuCiAgICAgICAgICAg
ICBpZiAobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nl
c3NvckdldHRlcikgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faWRlbnRpZmll
cik7Ci0gICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPigKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdsb2JhbE9iamVjdCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VGb3JDdXN0b20pLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIodWlkKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuY1dpdGhQdHI+KAorICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlRm9yQ3VzdG9tKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1aWQoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcy0+
YXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKS5tX2N1c3RvbUFjY2Vzc29yLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBqaXQuc2V0dXBBcmd1bWVudHM8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KAorICAgICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVj
dCksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
Rm9yQ3VzdG9tKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih1aWQoKSkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPigKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdsb2JhbE9iamVjdCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VGb3JDdXN0b20pLAotICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MpOwor
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
V2l0aFB0cj4oCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VGb3JDdXN0b20pLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWVSZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHRoaXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkubV9jdXN0b21BY2Nlc3Nvci5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPigKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnbG9iYWxPYmplY3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUZvckN1c3RvbSksCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVJl
Z3MpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CiAK
LSAgICAgICAgICAgIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwor
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgICAgICBv
cGVyYXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoQ3VzdG9tQWNjZXNz
b3JQdHJUYWcpOwogICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRpb25D
YWxsLCB0aGlzLT5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLm1fY3VzdG9tQWNjZXNzb3Ip
OworICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAgICAgICAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KHZtRW50cnlDdXN0b21BY2Nlc3NvcikpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIHRo
aXMtPmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkubV9jdXN0b21BY2Nlc3Nvcik7CiAgICAg
ICAgICAgICB9KTsKIAogICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21WYWx1ZUdldHRl
ciB8fCBtX3R5cGUgPT0gQ3VzdG9tQWNjZXNzb3JHZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBhZWFmYmQ2YmYwMWNm
MmU5YTJjM2ZjYWRjNDg1NWIwZDM2YTgwYzk2Li41YTlkNmQ0YzE2MmZhNTU3ZWViODc4NWZlZTBj
NjI0YTEzMDJiNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR2V0QnlJZFZhcmlhbnQ6OkdldEJ5
SWRWYXJpYW50KAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQsCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlua1N0YXR1
cywKICAgICBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiwKLSAgICBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0dGVyLAorICAgIEZ1bmN0aW9uUHRyPEN1
c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciwKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogICAgIDogbV9zdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICwgbV9jb25kaXRpb25TZXQoY29uZGl0aW9uU2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaApp
bmRleCA0MmMwMTNkMWZmNDQyZmRkODFkNjg0MWUxMDUyYmZlYWU5OTU4MzcxLi5iNzNjN2ZkYTgz
Y2NiNmM4M2YxN2Q2YjIyMWM5YjAyMDNlMzY4NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBH
ZXRCeUlkVmFyaWFudCB7CiAgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCksCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsTGlua1N0YXR1cz4gPSBudWxscHRyLAogICAgICAgICBKU0Z1bmN0aW9uKiA9IG51bGxw
dHIsCi0gICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY3VzdG9tQWNjZXNzb3JH
ZXR0ZXIgPSBudWxscHRyLAorICAgICAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRh
Zz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSBudWxscHRyLAogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gPSBudWxscHRyKTsKIAogICAgIH5HZXRCeUlkVmFy
aWFudCgpOwpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBHZXRCeUlkVmFyaWFudCB7CiAgICAgQ2Fs
bExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsTGlua1N0
YXR1cy5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnRyaW5zaWNGdW5jdGlvbjsgfQogICAgIEludHJpbnNpYyBpbnRyaW5zaWMo
KSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY0Z1bmN0aW9uID8gbV9pbnRyaW5zaWNGdW5jdGlv
bi0+aW50cmluc2ljKCkgOiBOb0ludHJpbnNpYzsgfQotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUFj
Y2Vzc29yR2V0dGVyOyB9CisgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1
c3RvbUFjY2Vzc29yR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21BY2Nlc3NvckdldHRl
cjsgfQogICAgIERPTUF0dHJpYnV0ZUFubm90YXRpb24qIGRvbUF0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9tQXR0cmlidXRlLmdldCgpOyB9CiAKICAgICBib29sIGlzUHJvcGVydHlVbnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KQEAgLTEwNyw3
ICsxMDcsNyBAQCBjbGFzcyBHZXRCeUlkVmFyaWFudCB7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBtX2NhbGxMaW5rU3Rh
dHVzOwogICAgIEpTRnVuY3Rpb24qIG1faW50cmluc2ljRnVuY3Rpb247Ci0gICAgRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPiBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyOworICAgIEZ1bmN0aW9u
UHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcAppbmRleCBhZGYyMWRlZTc5ZDAzZGNl
ZjgzNzUzYjQwZjFhZjQ0NmE1ZTkwNDVhLi43NjNjNmE0MTk3ODI4YmQxMGI0ZGQwMDBhZTE0YTg5
ZTY2MzE1MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBHZXRCeVN0YXR1cyBHZXRCeVN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICBjYXNl
IENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzOwogICAgICAgICAgICAgICAg
IEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAg
ICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0dGVyOworICAg
ICAgICAgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nl
c3NvckdldHRlcjsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NQXR0cmlidXRl
QW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlOwogICAgICAgICAgICAgICAgIGJvb2wgaGF2ZURPTUF0
dHJpYnV0ZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKaW5kZXggY2RkYjc4ZTBiNDBmOWUw
ZDc4ZGE0ZTI2MjhlOTI1OWRhODg3MzI4NS4uZThiNGNhNWU0YmJlNWY3MTAzODI3NTAxNmI5YWVj
MmM1MTlkMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcApAQCAtNDksNyArNDksNyBAQCBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBvd25lciwgQWNjZXNz
VHlwZSB0eXBlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiBjb25kaXRpb25TZXQsCi0gICAgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCog
YWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjdXN0b21HZXR0ZXIs
IEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwKKyAgICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50
U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3Vz
dG9tR2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UsCiAgICAgT3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3Rv
QWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluKQogewogICAgIHN3aXRjaCAodHlwZSkg
ewpAQCAtNjMsMTcgKzYzLDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJT
ZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZT4gcmVzdWx0KG5ldyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgdHlwZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgdmlh
UHJveHksIGFkZGl0aW9uYWxTZXQsIGN1c3RvbVNsb3RCYXNlLCBXVEZNb3ZlKHByb3RvdHlwZUFj
Y2Vzc0NoYWluKSkpOwogICAgIHJlc3VsdC0+bV9kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7
Ci0gICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0gY3VzdG9tR2V0dGVyID8gRnVuY3Rpb25Q
dHI8T3BlcmF0aW9uUHRyVGFnPihjdXN0b21HZXR0ZXIpIDogbnVsbHB0cjsKKyAgICByZXN1bHQt
Pm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxDdXN0b21BY2Nl
c3NvclB0clRhZz4oY3VzdG9tR2V0dGVyKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6
OmNyZWF0ZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUgdHlwZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0LAogICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRp
b25TZXQsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNj
ZXNzQ2hhaW4sIGJvb2wgdmlhUHJveHksIAotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4gY3VzdG9tU2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCisgICAgRnVuY3Rpb25Q
dHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciwgSlNPYmplY3QqIGN1c3RvbVNs
b3RCYXNlKQogewogICAgIEFTU0VSVCh0eXBlID09IFNldHRlciB8fCB0eXBlID09IEN1c3RvbVZh
bHVlU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tQWNjZXNzb3JTZXR0ZXIpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3IEdldHRlclNldHRlckFj
Y2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZzZXQsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCB2aWFQcm94eSwgbnVsbHB0ciwgY3VzdG9tU2xvdEJhc2UsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7Ci0gICAgcmVzdWx0LT5tX2N1c3RvbUFjY2Vzc29yID0g
Y3VzdG9tU2V0dGVyID8gRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihjdXN0b21TZXR0ZXIp
IDogbnVsbHB0cjsKKyAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIg
PyBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oY3VzdG9tU2V0dGVyKSA6IG51bGxw
dHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgKaW5kZXggZmFmODlhZGQw
MzlhZmIzY2VjOWE2OTJhNzQ3MTg0ZjYyY2U3YWM5NC4uNjAzZmJmNjI0NTQ2MDcwNzc0MWUyNTgw
ZjQ0Zjc1NDdiZDgyZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5oCkBAIC01NSwxOSArNTUsMTkgQEAgY2xh
c3MgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3ND
YXNlIHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY3JlYXRlKAog
ICAgICAgICBWTSYsIEpTQ2VsbCogb3duZXIsIEFjY2Vzc1R5cGUsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIFByb3BlcnR5T2Zmc2V0LCBTdHJ1Y3R1cmUqLAotICAgICAgICBjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9u
YWxTZXQsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY3VzdG9tR2V0dGVyLAorICAgICAg
ICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIGJvb2wgdmlhUHJveHksIFdhdGNo
cG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFn
PiBjdXN0b21HZXR0ZXIsCiAgICAgICAgIEpTT2JqZWN0KiBjdXN0b21TbG90QmFzZSwgT3B0aW9u
YWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4sIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4pOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVh
dGUoVk0mLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCwKICAgICAgICAgY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmLCBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+LCBib29s
IHZpYVByb3h5ID0gZmFsc2UsCi0gICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4g
Y3VzdG9tU2V0dGVyID0gbnVsbHB0ciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlID0gbnVsbHB0
cik7CisgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21TZXR0
ZXIgPSBudWxscHRyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKIAogICAg
IHZvaWQgZHVtcEltcGwoUHJpbnRTdHJlYW0mLCBDb21tYVByaW50ZXImKSBjb25zdCBmaW5hbDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gY2xvbmUoKSBjb25zdCBmaW5hbDsKIAog
ICAgIH5HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKCkgZmluYWw7CiAKLSAgICBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+IGN1c3RvbUFjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21B
Y2Nlc3NvcjsgfQorICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21B
Y2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQWNjZXNzb3I7IH0KIAogcHJpdmF0ZToK
ICAgICBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlKFZNJiwgSlNDZWxsKiwgQWNjZXNzVHlwZSwgQ2Fj
aGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVjdHVyZSosIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRk
aXRpb25hbFNldCwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBzdGQ6OnVuaXF1ZV9wdHI8UG9s
eVByb3RvQWNjZXNzQ2hhaW4+KTsKQEAgLTc2LDcgKzc2LDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZSBmaW5hbCA6IHB1YmxpYyBQcm94eWFibGVBY2Nlc3NDYXNlIHsKIAogICAgIFdy
aXRlQmFycmllcjxKU09iamVjdD4gbV9jdXN0b21TbG90QmFzZTsKICAgICBDYWxsTGlua0luZm8q
IG1fY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OwotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4gbV9jdXN0b21BY2Nlc3NvcjsKKyAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0
clRhZz4gbV9jdXN0b21BY2Nlc3NvcjsKICAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiBtX2RvbUF0dHJpYnV0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
aW5kZXggYWJlYjE3YmRjMGYzMTM0NmRhMjMzNzcyNDI5MDZlNzY1YzgwYTA4NC4uN2U5YzZhZGFi
MjE1NjQ1MGQ5OTNlYzQzZWZjMzEyYzQxZWEzY2FhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdHJ1Y3QgU3RhY2tBY2Nlc3NEYXRhIHsKIH07
CiAKIHN0cnVjdCBDYWxsRE9NR2V0dGVyRGF0YSB7Ci0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlcjsKKyAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nl
c3NvclB0clRhZz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgY29uc3QgRE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVCB7IG51bGxwdHIgfTsKICAgICBET01KSVQ6OkNhbGxET01HZXR0ZXJT
bmlwcGV0KiBzbmlwcGV0IHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IGI1ZWIwODhiNmY1YTg0MjFkZTIzN2RhMjUwZjllZGU1ZmI0NGU2MGUuLmEw
N2Y1NmMwMGNjYmE1M2M1ZGUxN2VjM2YwYmYwZDdlMTM4MGI1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpAQCAtMTAxMDQsNyArMTAxMDUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2Rl
KQogewogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclNuaXBwZXQqIHNuaXBwZXQgPSBub2RlLT5j
YWxsRE9NR2V0dGVyRGF0YSgpLT5zbmlwcGV0OwogICAgIGlmICghc25pcHBldCkgewotICAgICAg
ICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGdldHRlciA9IG5vZGUtPmNhbGxET01HZXR0
ZXJEYXRhKCktPmN1c3RvbUFjY2Vzc29yR2V0dGVyOworICAgICAgICBGdW5jdGlvblB0cjxDdXN0
b21BY2Nlc3NvclB0clRhZz4gZ2V0dGVyID0gbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3Vz
dG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAKQEAgLTEwMTEyLDEwICsxMDExMywxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXJVSUQobm9k
ZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlcikpOworICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8
Sl9KSVRPcGVyYXRpb25fR0pJUD4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNhbGxET01HZXR0
ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpLCBnZXR0ZXIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3Bl
cmF0aW9uX0dKST4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCkt
PmlkZW50aWZpZXJOdW1iZXIpKTsKKwogICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtKCkudG9wQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQuZW1p
dFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBtX2ppdC5hcHBlbmRDYWxsKGdldHRlci5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCkpOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgbV9qaXQuYXBw
ZW5kQ2FsbCh2bUVudHJ5Q3VzdG9tQWNjZXNzb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2ppdC5hcHBlbmRDYWxsKGdldHRlci5yZXRhZ2dlZDxDRnVuY3Rpb25QdHJUYWc+KCkpOwog
ICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0UmVncyk7CiAKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCAwZmUyZDBmMDEzOThjZTZiYjU1MjhkNDdhM2Y1YmU4Mzk3MTViMTY0
Li5lNDc3ZDhhOGY0ZDZiNWY5MTFiMmVhOTVkYmI5MWFjNmI4NWUwODE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC04NSw2ICs4NSw3IEBA
CiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtz
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCkBAIC0xNDUwMiw5ICsxNDUwMywxNCBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzIwNAogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsK
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgm
dm0oKS50b3BDYWxsRnJhbWUpKTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUoCi0gICAgICAgICAg
ICAgICAgdm1DYWxsKEludDY0LCBiaXR3aXNlX2Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0
b21HZXR0ZXI+KG1fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JHZXR0
ZXIucmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxDRnVuY3Rpb25QdHJUYWc+KCkpLAotICAgICAg
ICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2Rl
LT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyXSkpKTsKKyAgICAgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRKU1ZhbHVl
KAorICAgICAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIHZtRW50cnlDdXN0b21BY2Nlc3Nv
ciwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+Y2FsbERPTUdl
dHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlcl0pLCBtX291dC5jb25zdEludFB0cihtX25vZGUt
PmNhbGxET01HZXR0ZXJEYXRhKCktPmN1c3RvbUFjY2Vzc29yR2V0dGVyLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNldEpTVmFs
dWUoCisgICAgICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgYml0d2lzZV9jYXN0PEN1c3Rv
bUdldHRlclNldHRlcjo6Q3VzdG9tR2V0dGVyPihtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCkt
PmN1c3RvbUFjY2Vzc29yR2V0dGVyLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8Q0Z1bmN0aW9u
UHRyVGFnPigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3Jh
cGguaWRlbnRpZmllcnMoKVttX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJO
dW1iZXJdKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYjc1YTdi
MTBlNjZhODIxZTcwNWMxNDk0MzcxMDdlMTU2MDYxNjBlMS4uM2QwNTQ1ZTBhODU1YTNiN2M5OTQ0
ZjI2NTdjMzAxMmIxMjQzOTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCB1c2luZyBQX0pJVE9wZXJhdGlvbl9WbVN0WkIg
PSBjaGFyKihKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKikoVk0qLCBTdHJ1Y3R1cmUqLAogdXNp
bmcgUF9KSVRPcGVyYXRpb25fR1N0WkIgPSBjaGFyKihKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMg
KikoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKTsKIHVz
aW5nIEpfSklUT3BlcmF0aW9uX0dKID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9BVFRS
SUJVVEVTICopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogdXNpbmcgSl9KSVRP
cGVyYXRpb25fR0pJID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9BVFRSSUJVVEVTICop
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7Cit1
c2luZyBKX0pJVE9wZXJhdGlvbl9HSklQID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9B
VFRSSUJVVEVTICopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJp
bmdJbXBsKiwgdm9pZCopOwogdXNpbmcgVl9KSVRPcGVyYXRpb25fR1NzaUpKQyA9IHZvaWQoSklU
X09QRVJBVElPTl9BVFRSSUJVVEVTICopKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCk7CiB1c2luZyBD
X0pJVE9wZXJhdGlvbl9UVCA9IHVpbnRwdHJfdChKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKiko
U3RyaW5nSW1wbCosIFN0cmluZ0ltcGwqKTsKIHVzaW5nIENfSklUT3BlcmF0aW9uX0JfR0pzc0pz
cyA9IHVpbnRwdHJfdChKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKikoSlNHbG9iYWxPYmplY3Qq
LCBKU1N0cmluZyosIEpTU3RyaW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAppbmRleCAwNzcxMTYxYzE1YzllMTc1OTJkNjViNmRhYTgxNGJhZDJkM2EzNjMwLi41N2I2YzEz
M2Y4ZjI3ZDNiZDMwZDVjYTM5NDE3Y2RjOTkyMjViYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sq
CiAKICAgICAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6
OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHR5cGUsIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZy
b21Qcm94eSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNsb3Qud2F0Y2hwb2ludFNldCgpLCBz
bG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgPyBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHNs
b3QuY3VzdG9tR2V0dGVyKCkpIDogbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNs
b3Qud2F0Y2hwb2ludFNldCgpLCBzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgPyBGdW5jdGlvblB0
cjxDdXN0b21BY2Nlc3NvclB0clRhZz4oc2xvdC5jdXN0b21HZXR0ZXIoKSkgOiBudWxscHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmIHNsb3Qu
c2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUgPyBzbG90LnNsb3RCYXNlKCkgOiBudWxscHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgZG9tQXR0cmlidXRlLCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ29kZUJsb2NrCiAKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gR2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICB2bSwgY29kZUJsb2NrLCBz
bG90LmlzQ3VzdG9tQWNjZXNzb3IoKSA/IEFjY2Vzc0Nhc2U6OkN1c3RvbUFjY2Vzc29yU2V0dGVy
IDogQWNjZXNzQ2FzZTo6Q3VzdG9tVmFsdWVTZXR0ZXIsIG9sZFN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lLAotICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT2Zmc2V0LCBjb25kaXRpb25TZXQsIFdU
Rk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pLCBpc1Byb3h5LCBzbG90LmN1c3RvbVNldHRlcigp
LnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4oKSwgc2xvdC5iYXNlKCkgIT0gYmFzZVZhbHVlID8g
c2xvdC5iYXNlKCkgOiBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9mZnNl
dCwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSwgaXNQcm94eSwg
c2xvdC5jdXN0b21TZXR0ZXIoKS5yZXRhZ2dlZDxDdXN0b21BY2Nlc3NvclB0clRhZz4oKSwgc2xv
dC5iYXNlKCkgIT0gYmFzZVZhbHVlID8gc2xvdC5iYXNlKCkgOiBudWxscHRyKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNsb3QuaXNDYWNoZWFibGVTZXR0
ZXIoKSk7CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0
aW9uU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CmluZGV4IGYzMDdkODczYjViMTVhNGUwMjI1ZWMxZGE0NGYwMTQ5MGFhZmU5MWIuLmEzOTkzZjhl
NDA5YzMwMDA0M2MwZTM4NGNkNTY0YzY1YzI3Y2ExMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSklUVGh1bmtzLmgiCiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJNYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtK
SVQuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CkBAIC0yOTEsMTEgKzI5MiwyNSBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5l
cmF0b3IoVk0mIHZtLCBUaHVua0Z1bgogICAgICAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBqaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50
R1BSMiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9u
OjpyYXJlRGF0YVRhZyksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIGhhc0V4ZWN1
dGFibGUubGluaygmaml0KTsKLSAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBIb3N0
RnVuY3Rpb25QdHJUYWcpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7Cisg
ICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7CisgICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRp
b25QdHJUYWcpOworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRpb25D
YWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHZtRW50cnlIb3N0RnVuY3Rpb24pKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGppdC5jYWxsKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIsIGV4ZWN1dGFibGVPZmZz
ZXRUb0Z1bmN0aW9uKSwgSG9zdEZ1bmN0aW9uUHRyVGFnKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlQodGh1bmtGdW5jdGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkludGVybmFs
RnVuY3Rpb24pOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6YXJndW1lbnRHUFIyLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZkdsb2JhbE9iamVj
dCgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zm
c2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOworICAgICAgICAgICAgYXV0byBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoT3BlcmF0
aW9uUHRyVGFnKTsKKyAgICAgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsob3BlcmF0aW9u
Q2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih2bUVudHJ5SG9zdEZ1bmN0aW9uKSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBqaXQuY2FsbChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBJbnRlcm5hbEZ1bmN0
aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtpbmQpKSwgSG9zdEZ1bmN0aW9uUHRyVGFn
KTsKICAgICB9CiAKICNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCBkOTMxODEwOWRmNTVlNDBjMzE4MDc3NDgzNWJhODA2MWQ0NmZmNDU1Li5hM2Qx
NWU3MDM4OGNjOWI1ODk1ZjhlOTc2YTU1MzUzMzA4ZTZlNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtMzQ4MSw4ICszNDgxLDYgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0
aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKIH0KIAogI2lmIEVOQUJMRShK
SVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi1leHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZI
b3N0RnVuY3Rpb25zSW5TaGVsbCBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19q
c2NfaG9zdCIpOwotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkhvc3RGdW5jdGlvbnNJblNo
ZWxsIF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09OU1QkX19qc2NfaG9zdCIpOwogZXh0ZXJu
IGNvbnN0IHVpbnRwdHJfdCBzdGFydE9mSklUT3BlcmF0aW9uc0luU2hlbGwgX19hc20oInNlY3Rp
b24kc3RhcnQkX19EQVRBX0NPTlNUJF9fanNjX29wcyIpOwogZXh0ZXJuIGNvbnN0IHVpbnRwdHJf
dCBlbmRPZkpJVE9wZXJhdGlvbnNJblNoZWxsIF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09O
U1QkX19qc2Nfb3BzIik7CiAjZW5kaWYKQEAgLTM1MDcsNyArMzUwNSw3IEBAIGludCBqc2NtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIEpTQzo6aW5pdGlhbGl6ZSgpOwogI2lmIEVO
QUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi0gICAgSlNDOjpKSVRPcGVyYXRpb25MaXN0
Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcigmc3RhcnRPZkhvc3RGdW5jdGlvbnNJblNoZWxs
LCAmZW5kT2ZIb3N0RnVuY3Rpb25zSW5TaGVsbCwgJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5TaGVs
bCwgJmVuZE9mSklUT3BlcmF0aW9uc0luU2hlbGwpOworICAgIEpTQzo6SklUT3BlcmF0aW9uTGlz
dDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5TaGVs
bCwgJmVuZE9mSklUT3BlcmF0aW9uc0luU2hlbGwpOwogI2VuZGlmCiAgICAgaW5pdGlhbGl6ZVRp
bWVvdXRJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCmluZGV4IDBmNTI1ODcwMGUyNTQ1NWMzOGZkZTM2ZGI2NTVmOTliODM5OTk3OTUuLjIxYjli
MTI4ODFhNzZjYWFlMWVlNDNkZTZlZWQyNzM3NGMwMTkzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC01Niw3ICs1Niw2IEBAIGV4dGVybiAiQyIgdm9p
ZCB3YXNtX2VudHJ5KHZvaWQqLCB2b2lkKiwgdm9pZCopOwogCiAjaWYgRU5BQkxFKEpJVF9DQUdF
KQogZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOwot
ZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CiBleHRlcm4g
IkMiIHZvaWQgdGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKIGV4dGVybiAiQyIgdm9p
ZCB0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CiBleHRlcm4gIkMiIHZv
aWQgZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CkBAIC0xNDgsMTQgKzE0Nyw2IEBA
IHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRD
b2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJU
YWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5l
KSkpKTsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9Ci0gICAgewotICAgICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
PiBjb2RlUmVmOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCi0gICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIp
LCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9OYXRpdmUiKSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRk
cmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZSkpKSk7Ci0gICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb05h
dGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICB9
CiAgICAgewogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAppbmRleCAxN2ZkYWQzZDI1YTQxY2IwNDFmYWE5YjI1NDZjNzA5NWRmYmY3NWRhLi45NjBk
MTE1ZmUwM2RhMWI0ZTkzZTQzOGNlZTg1MTI1MGQ3NWIwNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAgLTUzLDExICs1MywxMiBAQCBKU0NfQU5O
T1RBVEVfTExJTlRfSklUX09QRVJBVElPTihqaXRDYWdlUHRyR2F0ZUFmdGVyKTsKIEpTQ19BTk5P
VEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOwogSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKIEpTQ19BTk5PVEFURV9M
TElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOwotSlNDX0FO
Tk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKIEpT
Q19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIpOwogSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJ
T04obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOwogSlND
X0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKIEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BF
UkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0
ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeUN1c3RvbUFjY2Vz
c29yKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlIb3N0RnVuY3Rp
b24pOwogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAppbmRleCAwNzE1NzNmNzdkYWRmNjkwNzEwODE1ZWQ4MWE3YjlkM2IwZTQ4Y2ZmLi45Y2Q0Nzhh
MDc0NWM2MTQzZTJiMzRhZWIzN2YxY2U1YmE4MzFhN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtMzgsMTMgKzM4LDE0IEBAIHR5cGVkZWYgaW50NjRf
dCBFbmNvZGVkSlNWYWx1ZTsKIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50
cnlUb0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKICAgICBFbmNvZGVk
SlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKKyAg
ICBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IoQ1BVUmVnaXN0ZXIsIENQVVJl
Z2lzdGVyLCBDUFVSZWdpc3RlciwgQ1BVUmVnaXN0ZXIpOworICAgIEVuY29kZWRKU1ZhbHVlIHZt
RW50cnlIb3N0RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCB2b2lkKik7CiB9
CiAKICNpZiBFTkFCTEUoSklUX0NBR0UpCiBleHRlcm4gIkMiIHsKICAgICB2b2lkIGppdENhZ2VQ
dHJHYXRlQWZ0ZXIodm9pZCk7CiAgICAgdm9pZCB2bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVy
KHZvaWQpOwotICAgIHZvaWQgdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKHZvaWQpOwogCiAgICAg
dm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKHZv
aWQpOwogICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRl
QWZ0ZXIodm9pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWRmZDljN2U3YTE1ZTJiYTdlZTA5ZjQwZTZiYWZjOWVh
OGIzZTZiMC4uYzZkNjU0Yzc5MTkzNGYzOTM1Y2YwNjA4NzZiNGE0NDM3NzYzMjNjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMjU1LDYgKzI1NSw3IEBAIGNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNv
bnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51CiAjIFBvaW50ZXIg
VGFncwogY29uc3QgQWRkcmVzc0RpdmVyc2lmaWVkID0gMQogY29uc3QgQnl0ZWNvZGVQdHJUYWcg
PSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKK2NvbnN0IEN1c3RvbUFjY2Vzc29yUHRyVGFnID0g
Y29uc3RleHByIEN1c3RvbUFjY2Vzc29yUHRyVGFnCiBjb25zdCBKU0VudHJ5UHRyVGFnID0gY29u
c3RleHByIEpTRW50cnlQdHJUYWcKIGNvbnN0IEhvc3RGdW5jdGlvblB0clRhZyA9IGNvbnN0ZXhw
ciBIb3N0RnVuY3Rpb25QdHJUYWcKIGNvbnN0IEpTRW50cnlTbG93UGF0aFB0clRhZyA9IGNvbnN0
ZXhwciBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKQEAgLTE2MTIsNiArMTYxMywxNiBAQCBlbmQKICAg
ICBmdW5jdGlvbkVwaWxvZ3VlKCkKICAgICByZXQKIAorIyBhMCwgYTEsIGEyIGFyZSB1c2VkLiBh
MyBjb250YWlucyBmdW5jdGlvbiBhZGRyZXNzLgorZ2xvYmFsIF92bUVudHJ5Q3VzdG9tQWNjZXNz
b3IKK192bUVudHJ5Q3VzdG9tQWNjZXNzb3I6CisgICAgam1wIGEzLCBDdXN0b21BY2Nlc3NvclB0
clRhZworCisjIGEwIGFuZCBhMSBhcmUgdXNlZC4gYTIgY29udGFpbnMgZnVuY3Rpb24gYWRkcmVz
cy4KK2dsb2JhbCBfdm1FbnRyeUhvc3RGdW5jdGlvbgorX3ZtRW50cnlIb3N0RnVuY3Rpb246Cisg
ICAgam1wIGEyLCBIb3N0RnVuY3Rpb25QdHJUYWcKKwogIyB1bnNpZ25lZCB2bUVudHJ5VG9DU1NK
SVQodWludHB0cl90LCB1aW50cHRyX3QsIHVpbnRwdHJfdCwgY29uc3Qgdm9pZCogY29kZVB0cik7
CiBpZiBBUk02NCBvciBBUk02NEUKIGVtaXQgIi5nbG9ibCBfdm1FbnRyeVRvQ1NTSklUIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQppbmRleCAwZGNhMWY4MTI3NmQ4NDRlMzMyMzVkYjU5NGJiOTY5MjgwMGYyOGIyLi43MTQ1
ZjFhN2E4MzBjMTdkODE1OTZjNjM4OThkYWQ1MGFiMTA4ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMzM2
LDIwICszMzYsOSBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxs
RnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICAgICAgc3VicCAzMiwgc3AKICAgICAgICAgY2FsbCB0
ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgICAgIGFkZHAgMzIsIHNwCi0gICAgZWxzaWYg
QVJNNjRFCi0gICAgICAgIG1vdmUgdGVtcDEsIHQzCi0gICAgICAgIGxlYXAgSlNDQ29uZmlnICsg
Y29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRl
Ojp2bUVudHJ5VG9OYXRpdmUpICogUHRyU2l6ZSwgYTIKLSAgICAgICAgam1wIFthMl0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEhvc3RGdW5jdGlvblB0clRhZwotICAgICAgICBnbG9iYWwgX3Zt
RW50cnlUb05hdGl2ZVRyYW1wb2xpbmUKLSAgICAgICAgX3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xp
bmU6Ci0gICAgICAgIGNhbGwgdDMsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVsc2UKICAgICAg
ICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZW5kCi0gICAgaWYgQVJNNjRF
Ci0gICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyCi0gICAgICAgIF92bUVu
dHJ5VG9OYXRpdmVHYXRlQWZ0ZXI6Ci0gICAgZW5kCiBlbmQKIAogb3AobGxpbnRfaGFuZGxlX3Vu
Y2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUu
aAppbmRleCBhNWQwMjcxMjhjYWIxZjk5ZWJiMjRjN2RmYjI5OGEzYjI3ODQ5NDJjLi4wNmViYzRl
NDNmNzlhNTVhYjk4YmVmNzdkOWM2ODVhZWZhNGZjOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2F0ZS5oCkBAIC00Myw3ICs0Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHYobGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAog
ICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZywgTm9QdHJU
YWcpIFwKICAgICB2KHZtRW50cnlUb0phdmFTY3JpcHQsIEpTRW50cnlQdHJUYWcpIFwKLSAgICB2
KHZtRW50cnlUb05hdGl2ZSwgSG9zdEZ1bmN0aW9uUHRyVGFnKSBcCiAKICNkZWZpbmUgSlNDX0pT
X0dBVEVfT1BDT0RFUyh2KSBcCiAgICAgdihvcF9jYWxsLCBKU0VudHJ5UHRyVGFnKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCmluZGV4IDRkMmQ0N2RjZTA0Y2Rm
ZTJmODg1ZTRhM2FmOTQ0NWRiZWU5MjAwNDQuLmRkMGFkNTM4MTIzMDFiZDkzMDZlYjNhZTk5ZTc4
YTc5MGJjODBjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1B0clRhZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5o
CkBAIC00Myw3ICs0Myw2IEBAIHVzaW5nIFB0clRhZyA9IFdURjo6UHRyVGFnOwogICAgIC8qIENh
bGxlZTpOYXRpdmUgQ2FsbGVyOk5vbmUgKi8gXAogICAgIHYoRE9NSklURnVuY3Rpb25QdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAg
IHYoRGlzYXNzZW1ibHlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6Tm9uZSkgXAotICAgIHYoUHV0VmFsdWVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIC8qIENhbGxlZTpKSVQgQ2Fs
bGVyOk5vbmUgKi8gXAogICAgIHYoQjNDb21waWxhdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihFeGVjdXRhYmxlTWVtb3J5
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
QEAgLTU0LDYgKzUzLDggQEAgdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAgICAgdihZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVy
VHlwZTo6Tm9uZSkgXAogICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAg
ICAgdihCeXRlY29kZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxs
ZXJUeXBlOjpOYXRpdmUpIFwKKyAgICB2KEN1c3RvbUFjY2Vzc29yUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAorICAgIHYoSG9zdEZ1
bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6
Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2
ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZUV4ZWN1dG9yUHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkg
XAogICAgIHYoSklUUHJvYmVTdGFja0luaXRpYWxpemF0aW9uRnVuY3Rpb25QdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCkBAIC02Miw3
ICs2Myw2IEBAIHVzaW5nIFB0clRhZyA9IFdURjo6UHRyVGFnOwogICAgIHYoWWFyckVudHJ5UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAog
ICAgIHYoQ1NTU2VsZWN0b3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6SklUICovIFwK
LSAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICAvKiBDYWxsZWU6SklU
IENhbGxlcjpKSVQgKi8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKQEAgLTEyNCwxMSArMTI0LDgg
QEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRyVHlwZSB0YWdKU0NDb2RlUHRySW1wbChQdHJUeXBl
IHB0cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNhbGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNhbGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRh
ZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgaWYgY29uc3RleHByICh0
YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQotICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5z
dGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwotICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIEpJVE9wZXJhdGlv
bkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgSklUT3BlcmF0aW9u
TGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwogI2lmIEVOQUJMRShK
SVRfQ0FHRSkKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKICAgICAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2Uo
KS5tYXAoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpKSk7CkBAIC0xNDUsMTEgKzE0Miw4IEBAIEFM
V0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUgdW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0
cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNhbGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNhbGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6
TmF0aXZlKSB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8
fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgaWYgY29uc3RleHByICh0YWcg
PT0gT3BlcmF0aW9uUHRyVGFnKQotICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFu
Y2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwotICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxp
c3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAgSklUT3BlcmF0aW9uTGlz
dDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwogI2lmIEVOQUJMRShKSVRf
Q0FHRSkKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgewogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omlu
c3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSkpID09IHB0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAppbmRleCBjZTA3MTEz
ZTJhYjE4MTUwNzVlNTQ0ZjI4MzgzYjExZGM2OTIyNTIxLi42ODc3MTNjMjg4ZGIxMzE5M2Y0NzZh
NTM4YjUxODhiYzhlOTQxNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUZ1bmN0aW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBDYWxsRnJhbWU7CiAKIHVzaW5nIFJhd05hdGl2ZUZ1bmN0aW9uID0gRW5jb2RlZEpTVmFsdWUo
SlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3VzaW5nIFJhd05hdGl2ZUZ1bmN0aW9uV2l0aFB0ciA9IEVuY29kZWRKU1ZhbHVlKEpTQ19IT1NU
X0NBTExfQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgdm9pZCopOwog
CiBjbGFzcyBOYXRpdmVGdW5jdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCmluZGV4IDNmYzlkMmE3OWU4ODMyYzY4NjkyYTUzZjg4
OTE3MmI3N2U3MGU0ZGUuLmE3OGE2ZWYzOGNiYzg5YjEwMjRhZTJiNDAyNzFiOWJiZDRjM2I3ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0x
MjIsNiArMTIyLDcgQEAgY2xhc3MgUHJvcGVydHlTbG90IHsKICAgICB9CiAKICAgICB1c2luZyBH
ZXRWYWx1ZUZ1bmMgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMqKShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKTsK
KyAgICB1c2luZyBHZXRWYWx1ZUZ1bmNXaXRoUHRyID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJB
VElPTl9BVFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSwgdm9pZCopOwogCiAgICAgSlNWYWx1ZSBnZXRWYWx1ZShKU0dsb2Jh
bE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgSlNWYWx1ZSBnZXRWYWx1ZShKU0ds
b2JhbE9iamVjdCosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5U2xvdC5oCmluZGV4IDBlY2Q1MmRhYTJm
N2VlMDhkOTdiYzcwNGRjNGFjZTNlYTA5YzNlZWMuLjFhNzVjMTQ1YTU0MmQ5ZWNiNzhjZTVkOTI2
NWMyYzhhOGQ0OTFhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1B1dFByb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1
dFByb3BlcnR5U2xvdC5oCkBAIC0zOCw3ICszOCw4IEBAIGNsYXNzIFB1dFByb3BlcnR5U2xvdCB7
CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IFVuY2FjaGFibGUsIEV4aXN0aW5n
UHJvcGVydHksIE5ld1Byb3BlcnR5LCBTZXR0ZXJQcm9wZXJ0eSwgQ3VzdG9tVmFsdWUsIEN1c3Rv
bUFjY2Vzc29yIH07CiAgICAgZW51bSBDb250ZXh0IHsgVW5rbm93bkNvbnRleHQsIFB1dEJ5SWQs
IFB1dEJ5SWRFdmFsIH07Ci0gICAgdHlwZWRlZiBib29sICgqUHV0VmFsdWVGdW5jKShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVl
KTsKKyAgICB1c2luZyBQdXRWYWx1ZUZ1bmMgPSBib29sICgqKShKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CisgICAgdXNpbmcgUHV0VmFsdWVGdW5jV2l0
aFB0ciA9IGJvb2wgKCopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCB2b2lkKik7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3QoSlNWYWx1ZSB0aGlzVmFsdWUs
IGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2UsIENvbnRleHQgY29udGV4dCA9IFVua25vd25Db250
ZXh0LCBib29sIGlzSW5pdGlhbGl6YXRpb24gPSBmYWxzZSkKICAgICAgICAgOiBtX2Jhc2UobnVs
bHB0cikKQEAgLTk3LDcgKzk4LDcgQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKICAgICAgICAg
bV9pc1N0cmljdE1vZGUgPSB2YWx1ZTsKICAgICB9CiAKLSAgICBGdW5jdGlvblB0cjxQdXRWYWx1
ZVB0clRhZz4gY3VzdG9tU2V0dGVyKCkgY29uc3QKKyAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nl
c3NvclB0clRhZz4gY3VzdG9tU2V0dGVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c0NhY2hlYWJsZUN1c3RvbSgpKTsKICAgICAgICAgcmV0dXJuIG1fcHV0RnVuY3Rpb247CkBAIC0x
MzcsNyArMTM4LDcgQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKICAgICBUeXBlIG1fdHlwZTsK
ICAgICB1aW50OF90IG1fY29udGV4dDsKICAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmls
aXR5OwotICAgIEZ1bmN0aW9uUHRyPFB1dFZhbHVlUHRyVGFnPiBtX3B1dEZ1bmN0aW9uOworICAg
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBtX3B1dEZ1bmN0aW9uOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUNh
bGxpbmdDb252ZW50aW9ucy5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1DYWxsaW5nQ29udmVu
dGlvbnMuaAppbmRleCA1ZjZkYjJhMjY0MDA4MzM1NWU3N2ZhNTkxOGY2MmZmNThkZWQxY2QxLi5l
N2M2YmExYjMzYTI4MjNlZDVjYWI0NmFiMTViOWZlMmJjNWQzZjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgKQEAgLTQyLDEyICs0Miw3IEBACiAjZGVm
aW5lIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSklUX09Q
RVJBVElPTl9WQUxJREFUSU9OKQotI2RlZmluZSBKU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihm
dW5jdGlvbklkLCBmdW5jdGlvbikgXAotICAgIGNvbnN0ZXhwciBhdXRvIGZ1bmN0aW9uSWQgX19h
dHRyaWJ1dGVfXygodXNlZCwgc2VjdGlvbigiX19EQVRBX0NPTlNULF9fanNjX2hvc3QiKSkpID0g
ZnVuY3Rpb247Ci0jZWxzZQogI2RlZmluZSBKU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbklkLCBmdW5jdGlvbikKLSNlbmRpZgogCiAjZGVmaW5lIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTl9XSVRIX0FUVFJJQlVURVMoZnVuY3Rpb25OYW1lLCBhdHRyaWJ1dGVzLCBwYXJhbWV0ZXJz
KSBcCiAgICAgSlNDX0FOTk9UQVRFX0hPU1RfRlVOQ1RJT04oX0pJVFRhcmdldF8jI2Z1bmN0aW9u
TmFtZSwgc3RhdGljX2Nhc3Q8SlNDOjpFbmNvZGVkSlNWYWx1ZSgqKXBhcmFtZXRlcnM+KGZ1bmN0
aW9uTmFtZSkpOyBcCkBAIC05Niw2ICs5MSw5IEBACiAjZGVmaW5lIEpTQ19BTk5PVEFURV9KSVRf
T1BFUkFUSU9OKGZ1bmN0aW9uSWQsIGZ1bmN0aW9uKQogI2VuZGlmCiAKKworI2RlZmluZSBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT05fV0lUSF9BVFRSSUJVVEVTX1dJVEhPVVRfVkFSSUFCTEUoZnVu
Y3Rpb25OYW1lLCBhdHRyaWJ1dGVzLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJzKSBcCisgICAgYXR0
cmlidXRlcyByZXR1cm5UeXBlIEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyBmdW5jdGlvbk5hbWUg
cGFyYW1ldGVycwogI2RlZmluZSBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT05fV0lUSF9BVFRSSUJV
VEVTKGZ1bmN0aW9uTmFtZSwgYXR0cmlidXRlcywgcmV0dXJuVHlwZSwgcGFyYW1ldGVycykgXAog
ICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNmdW5jdGlvbk5hbWUs
IHN0YXRpY19jYXN0PHJldHVyblR5cGUoKilwYXJhbWV0ZXJzPihmdW5jdGlvbk5hbWUpKTsgXAog
ICAgIGF0dHJpYnV0ZXMgcmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgZnVuY3Rp
b25OYW1lIHBhcmFtZXRlcnMKQEAgLTEwOCw1ICsxMDYsNSBAQAogCiAjZGVmaW5lIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoZnVuY3Rpb25OYW1lKSBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
X1dJVEhPVVRfV1RGX0lOVEVSTkFMKGZ1bmN0aW9uTmFtZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSkpCiAjZGVmaW5lIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoZnVuY3Rpb25OYW1lKSBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OX1dJVEhPVVRfV1RGX0lOVEVSTkFMKGZ1bmN0aW9uTmFt
ZSwgYm9vbCwgKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKSkKLSNkZWZpbmUgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGZ1bmN0
aW9uTmFtZSwgcGFyYW1ldGVycykgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKGZ1bmN0aW9uTmFt
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgcGFyYW1ldGVycykKLSNkZWZpbmUgSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKGZ1bmN0aW9uTmFtZSwgcGFyYW1ldGVycykgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKGZ1bmN0aW9uTmFtZSwgYm9vbCwgcGFyYW1ldGVycykKKyNkZWZpbmUgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGZ1bmN0aW9uTmFtZSwgcGFyYW1ldGVycykgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OX1dJVEhfQVRUUklCVVRFU19XSVRIT1VUX1ZBUklBQkxFKGZ1bmN0aW9uTmFtZSwg
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBwYXJhbWV0ZXJzKQorI2RlZmluZSBKU0NfREVGSU5FX0NV
U1RPTV9TRVRURVIoZnVuY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKSBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT05fV0lUSF9BVFRSSUJVVEVTX1dJVEhPVVRfVkFSSUFCTEUoZnVuY3Rpb25OYW1lLCAsIGJv
b2wsIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMDQzN2UyMmE1YjgwZGVmY2RkMTQ5ZjZmMzQwNzYz
YTdiYTI1MjA3Mi4uMjdmYTZkMGZkODMxZDhkODgwYmFmMjYwNWNiZTFjNGNjNzhjMTgxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKSVRPcGVyYXRpb25z
LmNwcApAQCAtMzEsOCArMzEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxF
KEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKLWV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRP
Zkhvc3RGdW5jdGlvbnNJbldlYkNvcmUgX19hc20oInNlY3Rpb24kc3RhcnQkX19EQVRBX0NPTlNU
JF9fanNjX2hvc3QiKTsKLWV4dGVybiBjb25zdCB1aW50cHRyX3QgZW5kT2ZIb3N0RnVuY3Rpb25z
SW5XZWJDb3JlIF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09OU1QkX19qc2NfaG9zdCIpOwog
ZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBzdGFydE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZSBfX2Fz
bSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiBleHRlcm4gY29uc3Qg
dWludHB0cl90IGVuZE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZSBfX2FzbSgic2VjdGlvbiRlbmQk
X19EQVRBX0NPTlNUJF9fanNjX29wcyIpOwogI2VuZGlmCkBAIC00Miw3ICs0MCw3IEBAIHZvaWQg
cG9wdWxhdGVKSVRPcGVyYXRpb25zKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFU
SU9OKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFtdIHsKLSAgICAgICAgSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0
ZVBvaW50ZXJzSW5FbWJlZGRlcigmc3RhcnRPZkhvc3RGdW5jdGlvbnNJbldlYkNvcmUsICZlbmRP
Zkhvc3RGdW5jdGlvbnNJbldlYkNvcmUsICZzdGFydE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZSwg
JmVuZE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZSk7CisgICAgICAgIEpTQzo6SklUT3BlcmF0aW9u
TGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5X
ZWJDb3JlLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5XZWJDb3JlKTsKICAgICB9KTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CmluZGV4IDQ0ZTZjMzk1OGVhNjFkYTI0MGMzY2U5ZGYxYTRiNjUzZjRhZDdkYTIuLjhkZGM0MGU1
NzhmNWIxNmI2ZTBkZmJkNTk0NDJlZjdjYjA0MDBmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTI0Miw4ICsyNDIsNiBAQCB2
b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhjb25zdCBXVEY6
OlN0cmluZyYgaW1hZ2VUeXBlcykKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05f
VkFMSURBVElPTikKLWV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkhvc3RGdW5jdGlvbnNJ
bldlYkNvcmVUZXN0U3VwcG9ydCBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19q
c2NfaG9zdCIpOwotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkhvc3RGdW5jdGlvbnNJbldl
YkNvcmVUZXN0U3VwcG9ydCBfX2FzbSgic2VjdGlvbiRlbmQkX19EQVRBX0NPTlNUJF9fanNjX2hv
c3QiKTsKIGV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkpJVE9wZXJhdGlvbnNJbldlYkNv
cmVUZXN0U3VwcG9ydCBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19qc2Nfb3Bz
Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IGVuZE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZVRl
c3RTdXBwb3J0IF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiAj
ZW5kaWYKQEAgLTI1Myw3ICsyNTEsNyBAQCB2b2lkIHBvcHVsYXRlSklUT3BlcmF0aW9ucygpCiAj
aWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7Ci0gICAgICAg
IEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0
T2ZIb3N0RnVuY3Rpb25zSW5XZWJDb3JlVGVzdFN1cHBvcnQsICZlbmRPZkhvc3RGdW5jdGlvbnNJ
bldlYkNvcmVUZXN0U3VwcG9ydCwgJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5XZWJDb3JlVGVzdFN1
cHBvcnQsICZlbmRPZkpJVE9wZXJhdGlvbnNJbldlYkNvcmVUZXN0U3VwcG9ydCk7CisgICAgICAg
IEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0
T2ZKSVRPcGVyYXRpb25zSW5XZWJDb3JlVGVzdFN1cHBvcnQsICZlbmRPZkpJVE9wZXJhdGlvbnNJ
bldlYkNvcmVUZXN0U3VwcG9ydCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYktpdEpJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViS2l0SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggODE3MDUyYThhOWQ4ZTY1Y2E4
ZDg2OWJlMTUxMDdkNzQ1YmIzYzQ3Ni4uYjJmODM3NjZjYjcyMmI5N2I0NDg2NGYxZmEwNWQwMmYx
NmUwZTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0SklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0SklUT3BlcmF0aW9ucy5j
cHAKQEAgLTMxLDggKzMxLDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgRU5BQkxFKEpJ
VF9PUEVSQVRJT05fVkFMSURBVElPTikKLWV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkhv
c3RGdW5jdGlvbnNJbldlYktpdCBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19q
c2NfaG9zdCIpOwotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkhvc3RGdW5jdGlvbnNJbldl
YktpdCBfX2FzbSgic2VjdGlvbiRlbmQkX19EQVRBX0NPTlNUJF9fanNjX2hvc3QiKTsKIGV4dGVy
biBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkpJVE9wZXJhdGlvbnNJbldlYktpdCBfX2FzbSgic2Vj
dGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiBleHRlcm4gY29uc3QgdWludHB0
cl90IGVuZE9mSklUT3BlcmF0aW9uc0luV2ViS2l0IF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFf
Q09OU1QkX19qc2Nfb3BzIik7CiAjZW5kaWYKQEAgLTQyLDcgKzQwLDcgQEAgdm9pZCBwb3B1bGF0
ZUpJVE9wZXJhdGlvbnMoKQogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCiAg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgW10gewotICAgICAgICBKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRl
cnNJbkVtYmVkZGVyKCZzdGFydE9mSG9zdEZ1bmN0aW9uc0luV2ViS2l0LCAmZW5kT2ZIb3N0RnVu
Y3Rpb25zSW5XZWJLaXQsICZzdGFydE9mSklUT3BlcmF0aW9uc0luV2ViS2l0LCAmZW5kT2ZKSVRP
cGVyYXRpb25zSW5XZWJLaXQpOworICAgICAgICBKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVs
YXRlUG9pbnRlcnNJbkVtYmVkZGVyKCZzdGFydE9mSklUT3BlcmF0aW9uc0luV2ViS2l0LCAmZW5k
T2ZKSVRPcGVyYXRpb25zSW5XZWJLaXQpOwogICAgIH0pOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416138</attachid>
            <date>2020-12-13 23:00:03 -0800</date>
            <delta_ts>2020-12-13 23:42:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219847-20201213230002.patch</filename>
            <type>text/plain</type>
            <size>55854</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZWIwMmQ4YzdhZmM3MmJiMDZhN2QwN2Q3YzY4ODNlODc1ODhjOGYzLi41Mjc0OTg5MWIyMWFkMjM5
ZjUzN2QzNTBkOWI4OWMwMjg4OTg4YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAyMC0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IgYW5kIHZt
RW50cnlIb3N0RnVuY3Rpb24gZm9yIEpJVENhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVnaXN0ZXJpbmcgYWxsIGhvc3QtZnVu
Y3Rpb25zIGFuZCBjdXN0b20gYWNjZXNzb3JzIHdpdGggT3BlcmF0aW9uUHRyVGFnIG9yIEhvc3RG
dW5jdGlvblB0clRhZywKKyAgICAgICAgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgdHJhbXBvbGlu
ZSB3aGljaCBpbnZva2VzIHRoZW0gd2l0aCBzcGVjaWFsIHB0ci10YWcgdG8gcmVkdWNlIG1lbW9y
eSB1c2FnZSBvZiBKSVRPcGVyYXRpb25MaXN0LgorCisgICAgICAgIFdoZW4gaW52b2tpbmcgY3Vz
dG9tIGFjY2Vzc29yLCB3ZSBwYXNzIHRoYXQgcG9pbnRlciBhcyBhIGZvcnRoIGFyZ3VtZW50LCBh
bmQgY2FsbCB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IuCisgICAgICAgIEFuZCB2bUVudHJ5Q3VzdG9t
QWNjZXNzb3IganVtcHMgdG8gdGhlIHBhc3NlZCBhcmd1bWVudCB3aXRoIHNwZWNpYWwgcHRyIHRh
Zy4gQW5kIHdlIHJlZ2lzdGVyIHZtRW50cnlDdXN0b21BY2Nlc3NvciBhcyBhbiBvcGVyYXRpb24u
CisgICAgICAgIEZvciBob3N0LWZ1bmN0aW9ucywgd2UgcGFzcyB0aGF0IHBvaW50ZXIgYXMgYSB0
aGlyZCBhcmd1bWVudC4KKworICAgICAgICAqIGFzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNw
cDoKKyAgICAgICAgKEpTQzo6YWRkUG9pbnRlcnMpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRp
b25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSk6CisgICAgICAgIChKU0M6
OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5F
bWJlZGRlcik6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaDoKKyAgICAg
ICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6YXNzZXJ0SXNIb3N0RnVuY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGIzL3Rlc3RiM18xLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5l
cmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6OkdldEJ5SWRWYXJpYW50KToKKyAgICAgICAgKiBieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6Y3Vz
dG9tQWNjZXNzb3JHZXR0ZXIgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5U3RhdHVz
LmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKToKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmg6CisgICAgICAg
ICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcik6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpT
Qzo6dHJ5Q2FjaGVHZXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6Om5hdGl2ZUZvckdl
bmVyYXRvcik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGpzY21haW4pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgICogbGxpbnQvTExJ
bnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvR2F0ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmg6CisgICAgICAgIChKU0M6
OnRhZ0pTQ0NvZGVQdHJJbXBsKToKKyAgICAgICAgKEpTQzo6dW50YWdKU0NDb2RlUHRySW1wbCk6
CisgICAgICAgICogcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
UHJvcGVydHlTbG90Lmg6CisgICAgICAgICogcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaDoKKyAg
ICAgICAgKEpTQzo6UHV0UHJvcGVydHlTbG90OjpjdXN0b21TZXR0ZXIgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Z2V0SG9zdEZ1bmN0aW9uKToK
KwogMjAyMC0xMi0xMyAgU2FtdWVsIFRoaWJhdWx0ICA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9u
Lm9yZz4KIAogICAgICAgICBbSlNDXSBTZXQgc19tYXhQYXRoTGVuZ3RoIGZhbGxiYWNrIHdoZW4g
T1MgZG9lcyBub3QgaGF2ZSBhIFBBVEhfTUFYIGxpbWl0YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMmY4Y2NmNzI2YjRl
YmU4M2UzODRkYTJlMDk0YmM2OTQxNzY2ZjUzYi4uNGRmMmRlMzg3NjI0ZWI3YWNmMDQyN2Q3NmYy
ODZjMGY2MTE5NWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMi0xMyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludHJvZHVjZSB2bUVu
dHJ5Q3VzdG9tQWNjZXNzb3IgYW5kIHZtRW50cnlIb3N0RnVuY3Rpb24gZm9yIEpJVENhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTg0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtQ2FsbGluZ0NvbnZlbnRpb25zLmg6CisKIDIwMjAtMTItMTIgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA2
NjEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggM2ViMjI3ZjRmZDlmY2NhNzQwYmFhYmQyMzU1MzJhN2M5NDNhZjFm
ZS4uMzc1YmI3YTQ4OTMyOGE3MTJhMmI3Yjg1NGU0MTYwZjM1NjJhNDZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW50cm9kdWNlIHZtRW50cnlDdXN0b21BY2Nlc3NvciBh
bmQgdm1FbnRyeUhvc3RGdW5jdGlvbiBmb3IgSklUQ2FnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUpJVE9wZXJhdGlvbnMpOgorICAg
ICAgICAqIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmVUZXN0U3VwcG9ydDo6cG9wdWxhdGVKSVRPcGVyYXRpb25zKToKKwogMjAyMC0xMi0xMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDIERpc3Bs
YXldIFRoZSBkaXNwbGF5IHRyZWUgc2hvdWxkIGJlIG93bmVkIGJ5IHRoZSBkaXNwbGF5IHZpZXcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWEwZGI2MmUwOWFkZWE3MmQ4Y2M5MjA5Yzk0OTYzNTk1MjQ0YjZhNC4uMGM4
NTllNWI1MTUzZjUwNjEwZmYzMTgyZTUzNGU4OWFmMzU3ODZkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMC0xMi0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIEludHJvZHVjZSB2bUVudHJ5Q3VzdG9tQWNjZXNzb3IgYW5kIHZtRW50
cnlIb3N0RnVuY3Rpb24gZm9yIEpJVENhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYktpdEpJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpwb3B1bGF0ZUpJVE9wZXJhdGlvbnMpOgorCiAyMDIwLTEyLTEyICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXVtpT1Nd
IFR1cm4gb24gbW9kZXJuIFdlYkF1dGhuIGZvciBkZWZhdWx0IGJyb3dzZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRl
eCBlNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1Li5iNWNiZjkwZmRjY2M4
MzdjZmEzMWJmYTBlNWQwOTljMjFiNTExNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAKQEAgLTM5LDggKzM5LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiBMYXp5TmV2ZXJEZXN0cm95ZWQ8SklUT3BlcmF0aW9uTGlzdD4gaml0
T3BlcmF0aW9uTGlzdDsKIAogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi1l
eHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5KU0MgX19hc20oInNl
Y3Rpb24kc3RhcnQkX19EQVRBX0NPTlNUJF9fanNjX2hvc3QiKTsKLWV4dGVybiBjb25zdCB1aW50
cHRyX3QgZW5kT2ZIb3N0RnVuY3Rpb25zSW5KU0MgX19hc20oInNlY3Rpb24kZW5kJF9fREFUQV9D
T05TVCRfX2pzY19ob3N0Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZKSVRPcGVy
YXRpb25zSW5KU0MgX19hc20oInNlY3Rpb24kc3RhcnQkX19EQVRBX0NPTlNUJF9fanNjX29wcyIp
OwogZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkpJVE9wZXJhdGlvbnNJbkpTQyBfX2FzbSgi
c2VjdGlvbiRlbmQkX19EQVRBX0NPTlNUJF9fanNjX29wcyIpOwogI2VuZGlmCkBAIC01MSw3ICs0
OSw3IEBAIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlhbGl6ZSgpCiB9CiAKICNpZiBFTkFC
TEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotc3RhdGljIFNVUFBSRVNTX0FTQU4gQUxXQVlT
X0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8dm9pZCosIHZvaWQqPiYgbWFwLCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1
aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25z
KQorc3RhdGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhh
c2hNYXA8dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9u
cywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewogI2lmIEVOQUJMRShKSVRfQ0FH
RSkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CkBAIC02MCwxMSArNTgsNiBAQCBz
dGF0aWMgU1VQUFJFU1NfQVNBTiBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkUG9pbnRlcnMoSGFzaE1h
cDx2b2lkKiwgdm9pZCo+JiBtYXAsCiAgICAgfQogI2VuZGlmCiAgICAgaWYgY29uc3RleHByIChB
U1NFUlRfRU5BQkxFRCkgewotICAgICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9
IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKLSAgICAgICAgICAg
IHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1
cnJlbnQpKTsKLSAgICAgICAgICAgIGlmIChjb2RlUHRyKQotICAgICAgICAgICAgICAgIG1hcC5h
ZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVuY3Rpb25QdHJUYWc+
KGNvZGVQdHIpKTsKLSAgICAgICAgfQogICAgICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3Vy
cmVudCA9IGJlZ2luT3BlcmF0aW9uczsgY3VycmVudCAhPSBlbmRPcGVyYXRpb25zOyArK2N1cnJl
bnQpIHsKICAgICAgICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdp
c2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKICAgICAgICAgICAgIGlmIChjb2RlUHRyKQpAQCAt
ODAsNyArNzMsNyBAQCB2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkph
dmFTY3JpcHRDb3JlKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbXSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQo
KSkKLSAgICAgICAgICAgIGFkZFBvaW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVk
T3BlcmF0aW9ucywgJnN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5KU0MsICZlbmRPZkhvc3RGdW5jdGlv
bnNJbkpTQywgJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5KU0MsICZlbmRPZkpJVE9wZXJhdGlvbnNJ
bkpTQyk7CisgICAgICAgICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlk
YXRlZE9wZXJhdGlvbnMsICZzdGFydE9mSklUT3BlcmF0aW9uc0luSlNDLCAmZW5kT2ZKSVRPcGVy
YXRpb25zSW5KU0MpOwogICAgIH0pOwogI2VuZGlmCiB9CkBAIC0xMjgsMjIgKzEyMSwyMCBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9y
TExJbnQoKQogICAgICAgICAgICAgSlNDX1dBU01fR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9M
T0NBVElPTikKICAgICAgICAgfTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAg
ICAgICAgICAgYWRkUG9pbnRlcnMoaml0T3BlcmF0aW9uTGlzdC0+bV92YWxpZGF0ZWRPcGVyYXRp
b25zLCBudWxscHRyLCBudWxscHRyLCBvcGVyYXRpb25zLCBvcGVyYXRpb25zICsgV1RGX0FSUkFZ
X0xFTkdUSChvcGVyYXRpb25zKSk7CisgICAgICAgICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRp
b25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBX
VEZfQVJSQVlfTEVOR1RIKG9wZXJhdGlvbnMpKTsKICN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJ
T04KICAgICB9KTsKICNlbmRpZgogfQogCiAKLXZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxh
dGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVp
bnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0
IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKK3ZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxh
dGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNv
bnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBVTlVTRURfUEFSQU0oYmVnaW5I
b3N0KTsKLSAgICBVTlVTRURfUEFSQU0oZW5kSG9zdCk7CiAgICAgVU5VU0VEX1BBUkFNKGJlZ2lu
T3BlcmF0aW9ucyk7CiAgICAgVU5VU0VEX1BBUkFNKGVuZE9wZXJhdGlvbnMpOwogI2lmIEVOQUJM
RShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQot
ICAgICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlv
bnMsIGJlZ2luSG9zdCwgZW5kSG9zdCwgYmVnaW5PcGVyYXRpb25zLCBlbmRPcGVyYXRpb25zKTsK
KyAgICAgICAgYWRkUG9pbnRlcnMoaml0T3BlcmF0aW9uTGlzdC0+bV92YWxpZGF0ZWRPcGVyYXRp
b25zLCBiZWdpbk9wZXJhdGlvbnMsIGVuZE9wZXJhdGlvbnMpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5k
ZXggNWQ3Zjg1NjVkNWNlYTMzNDIzNmEzZGJiZDFkMzMxOWQ1NGUxODc0Yy4uODVhYjdkODRmMjBm
MTU4Mzc0NzY4NmMwMGFjMGI3Nzc4YmE4NjY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKQEAgLTQ5LDE3ICs0OSw3IEBAIGNs
YXNzIEpJVE9wZXJhdGlvbkxpc3QgewogICAgIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJ
bkphdmFTY3JpcHRDb3JlKCk7CiAgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCgpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3Qs
IGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlv
bnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucyk7Ci0KLSAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5LCBhc3NlcnRJc0hvc3RGdW5jdGlvbiBhbmQgYXNzZXJ0SXNKSVRPcGVyYXRpb24gYXJl
IHRoZSBzYW1lLgotICAgIC8vIFdlIHdpbGwgbWFrZSB0aGVtIHdvcmsgaW4gYSBzdWJzZXF1ZW50
IHBhdGNoLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFzc2VydElzSG9z
dEZ1bmN0aW9uKFQgZnVuY3Rpb24pCi0gICAgewotICAgICAgICBVTlVTRURfUEFSQU0oZnVuY3Rp
b24pOwotI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VS
VChmdW5jdGlvbiwgIU9wdGlvbnM6OnVzZUpJVCgpIHx8IEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7Ci0jZW5kaWYKLSAgICB9
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luRW1i
ZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCog
ZW5kT3BlcmF0aW9ucyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBh
c3NlcnRJc0pJVE9wZXJhdGlvbihUIGZ1bmN0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzEuY3BwCmluZGV4IDhmZmEzZDQxNjVhODdkNmI4N2E2YTBjNmNlZDE2N2NhMDFl
M2IxZWUuLjk2NGM2YzM1OTcxMWQzOGIwMTllYTNlYWE2YzI4ODJmYmQxNjdlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18xLmNwcApAQCAtODkyLDggKzg5Miw2IEBAIHN0YXRpYyB2
b2lkIHJ1bihjb25zdCBjaGFyKikKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQogCiAjaWYgRU5B
QkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKLWV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3Rh
cnRPZkhvc3RGdW5jdGlvbnNJblRlc3RCMyBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09O
U1QkX19qc2NfaG9zdCIpOwotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkhvc3RGdW5jdGlv
bnNJblRlc3RCMyBfX2FzbSgic2VjdGlvbiRlbmQkX19EQVRBX0NPTlNUJF9fanNjX2hvc3QiKTsK
IGV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkpJVE9wZXJhdGlvbnNJblRlc3RCMyBfX2Fz
bSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiBleHRlcm4gY29uc3Qg
dWludHB0cl90IGVuZE9mSklUT3BlcmF0aW9uc0luVGVzdEIzIF9fYXNtKCJzZWN0aW9uJGVuZCRf
X0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiAjZW5kaWYKQEAgLTkxOCw3ICs5MTYsNyBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgSlNDOjppbml0aWFsaXplKCk7CiAKICNp
ZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotICAgIEpTQzo6SklUT3BlcmF0aW9u
TGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5U
ZXN0QjMsICZlbmRPZkhvc3RGdW5jdGlvbnNJblRlc3RCMywgJnN0YXJ0T2ZKSVRPcGVyYXRpb25z
SW5UZXN0QjMsICZlbmRPZkpJVE9wZXJhdGlvbnNJblRlc3RCMyk7CisgICAgSlNDOjpKSVRPcGVy
YXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcigmc3RhcnRPZkpJVE9wZXJhdGlv
bnNJblRlc3RCMywgJmVuZE9mSklUT3BlcmF0aW9uc0luVGVzdEIzKTsKICNlbmRpZgogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0gMjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggNDM1YmJlOTJhNzM2YmYyNmVl
ZTJiMzIzM2U0OGQ1NmUwMmI3OGNjMi4uNjI1ZTg1NzJiYzg1ZTljMzhiZjFiNWFhY2U5OGNmZWE4
ZDY1NmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIK
ICNpbmNsdWRlICJNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCiAjaW5jbHVkZSAiUG9seW1v
cnBoaWNBY2Nlc3MuaCIKQEAgLTE3MjIsMjEgKzE3MjMsNDMgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIC8v
IG11c3Qga2VlcCBpdCBhbGl2ZS4KICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gQ3VzdG9tVmFs
dWVHZXR0ZXIgfHwgbV90eXBlID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyKSB7CiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9pZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBqaXQu
c2V0dXBBcmd1bWVudHM8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwKLSAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUZvckN1c3RvbSksCi0g
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1aWQoKSkpOwor
ICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jV2l0
aFB0cj4oCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VGb3JDdXN0b20pLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0aGlzLT5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
PigpLm1fY3VzdG9tQWNjZXNzb3IuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VGb3JDdXN0b20pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCgpKSk7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBqaXQuc2V0
dXBBcmd1bWVudHM8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwKLSAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUZvckN1c3RvbSksCi0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmNXaXRoUHRyPigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUZvckN1c3Rv
bSksCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGhpcy0+YXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5tX2N1c3RvbUFjY2Vzc29yLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBqaXQuc2V0dXBBcmd1
bWVudHM8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KAorICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksCisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlRm9yQ3VzdG9tKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKIAotICAgICAgICAgICAgb3BlcmF0aW9uQ2Fs
bCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChP
cGVyYXRpb25QdHJUYWcpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJh
dGlvbkNhbGwgPSBqaXQuY2FsbChDdXN0b21BY2Nlc3NvclB0clRhZyk7CiAgICAgICAgICAgICBq
aXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIHRoaXMtPmFzPEdldHRlclNldHRl
ckFjY2Vzc0Nhc2U+KCkubV9jdXN0b21BY2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5r
KG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4odm1FbnRyeUN1c3Rv
bUFjY2Vzc29yKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsob3BlcmF0aW9uQ2FsbCwgdGhpcy0+YXM8R2V0dGVyU2V0dGVyQWNjZXNz
Q2FzZT4oKS5tX2N1c3RvbUFjY2Vzc29yKTsKICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAg
ICBpZiAobV90eXBlID09IEN1c3RvbVZhbHVlR2V0dGVyIHx8IG1fdHlwZSA9PSBDdXN0b21BY2Nl
c3NvckdldHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuY3BwCmluZGV4IGFlYWZiZDZiZjAxY2YyZTlhMmMzZmNhZGM0ODU1YjBkMzZhODBj
OTYuLjVhOWQ2ZDRjMTYyZmE1NTdlZWI4Nzg1ZmVlMGM2MjRhMTMwMmI2ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApAQCAtMzgs
NyArMzgsNyBAQCBHZXRCeUlkVmFyaWFudDo6R2V0QnlJZFZhcmlhbnQoCiAgICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzLAogICAgIEpTRnVuY3Rpb24qIGludHJp
bnNpY0Z1bmN0aW9uLAotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY3VzdG9tQWNj
ZXNzb3JHZXR0ZXIsCisgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3Rv
bUFjY2Vzc29yR2V0dGVyLAogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiBkb21BdHRyaWJ1dGUpCiAgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAg
ICAgLCBtX2NvbmRpdGlvblNldChjb25kaXRpb25TZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCmluZGV4IDQyYzAxM2QxZmY0NDJmZGQ4MWQ2
ODQxZTEwNTJiZmVhZTk5NTgzNzEuLmI3M2M3ZmRhODNjY2I2YzgzZjE3ZDZiMjIxYzliMDIwM2Uz
Njg0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEdldEJ5SWRWYXJpYW50IHsKICAgICAgICAg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmID0gT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQoKSwKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiA9IG51bGxw
dHIsCiAgICAgICAgIEpTRnVuY3Rpb24qID0gbnVsbHB0ciwKLSAgICAgICAgRnVuY3Rpb25QdHI8
T3BlcmF0aW9uUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciA9IG51bGxwdHIsCisgICAgICAg
IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3NvckdldHRlciA9
IG51bGxwdHIsCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
PiA9IG51bGxwdHIpOwogCiAgICAgfkdldEJ5SWRWYXJpYW50KCk7CkBAIC03MCw3ICs3MCw3IEBA
IGNsYXNzIEdldEJ5SWRWYXJpYW50IHsKICAgICBDYWxsTGlua1N0YXR1cyogY2FsbExpbmtTdGF0
dXMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxMaW5rU3RhdHVzLmdldCgpOyB9CiAgICAgSlNGdW5j
dGlvbiogaW50cmluc2ljRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ludHJpbnNpY0Z1bmN0
aW9uOyB9CiAgICAgSW50cmluc2ljIGludHJpbnNpYygpIGNvbnN0IHsgcmV0dXJuIG1faW50cmlu
c2ljRnVuY3Rpb24gPyBtX2ludHJpbnNpY0Z1bmN0aW9uLT5pbnRyaW5zaWMoKSA6IE5vSW50cmlu
c2ljOyB9Ci0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjdXN0b21BY2Nlc3Nvckdl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7IH0KKyAgICBGdW5j
dGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyOyB9CiAgICAgRE9NQXR0cmlidXRlQW5u
b3RhdGlvbiogZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGUuZ2V0
KCk7IH0KIAogICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0
KCkgPT0gaW52YWxpZE9mZnNldDsgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIEdldEJ5SWRW
YXJpYW50IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+IG1fY2FsbExpbmtTdGF0dXM7CiAgICAgSlNGdW5jdGlvbiogbV9p
bnRyaW5zaWNGdW5jdGlvbjsKLSAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG1fY3Vz
dG9tQWNjZXNzb3JHZXR0ZXI7CisgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+
IG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTUF0dHJpYnV0
ZUFubm90YXRpb24+IG1fZG9tQXR0cmlidXRlOwogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlT
dGF0dXMuY3BwCmluZGV4IGFkZjIxZGVlNzlkMDNkY2VmODM3NTNiNDBmMWFmNDQ2YTVlOTA0NWEu
Ljc2M2M2YTQxOTc4MjhiZDEwYjRkZDAwMGFlMTRhODllNjYzMTUxMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5U3RhdHVzLmNwcApAQCAtMjc5LDcgKzI3OSw3
IEBAIEdldEJ5U3RhdHVzIEdldEJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5saW5l
YWJsZTogewogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4g
Y2FsbExpbmtTdGF0dXM7CiAgICAgICAgICAgICAgICAgSlNGdW5jdGlvbiogaW50cmluc2ljRnVu
Y3Rpb24gPSBudWxscHRyOwotICAgICAgICAgICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4gY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CisgICAgICAgICAgICAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGU7
CiAgICAgICAgICAgICAgICAgYm9vbCBoYXZlRE9NQXR0cmlidXRlID0gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3ND
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAppbmRleCBjZGRiNzhlMGI0MGY5ZTBkNzhkYTRlMjYyOGU5MjU5ZGE4ODczMjg1
Li5lOGI0Y2E1ZTRiYmU1ZjcxMDM4Mjc1MDE2YjlhZWMyYzUxOWQwYjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nh
c2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OkdldHRlclNl
dHRlckFjY2Vzc0Nhc2UoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAg
ICAgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBBY2Nlc3NUeXBlIHR5cGUsIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwKLSAg
ICBib29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+IGN1c3RvbUdldHRlciwgSlNPYmplY3QqIGN1c3RvbVNsb3RCYXNl
LAorICAgIGJvb2wgdmlhUHJveHksIFdhdGNocG9pbnRTZXQqIGFkZGl0aW9uYWxTZXQsIEZ1bmN0
aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21HZXR0ZXIsIEpTT2JqZWN0KiBjdXN0
b21TbG90QmFzZSwKICAgICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRy
aWJ1dGUsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNj
ZXNzQ2hhaW4pCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC02MywxNyArNjMsMTcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEdldHRlclNldHRlckFjY2Vzc0Nhc2U6OmNyZWF0ZSgK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPiByZXN1bHQobmV3
IEdldHRlclNldHRlckFjY2Vzc0Nhc2Uodm0sIG93bmVyLCB0eXBlLCBpZGVudGlmaWVyLCBvZmZz
ZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCB2aWFQcm94eSwgYWRkaXRpb25hbFNldCwgY3Vz
dG9tU2xvdEJhc2UsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKSk7CiAgICAgcmVzdWx0
LT5tX2RvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKLSAgICByZXN1bHQtPm1fY3VzdG9tQWNj
ZXNzb3IgPSBjdXN0b21HZXR0ZXIgPyBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGN1c3Rv
bUdldHRlcikgOiBudWxscHRyOworICAgIHJlc3VsdC0+bV9jdXN0b21BY2Nlc3NvciA9IGN1c3Rv
bUdldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihjdXN0b21HZXR0ZXIp
IDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQWNjZXNzVHlwZSB0eXBlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsCiAgICAgY29uc3QgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCwgc3RkOjp1bmlxdWVfcHRyPFBv
bHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbiwgYm9vbCB2aWFQcm94eSwg
Ci0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjdXN0b21TZXR0ZXIsIEpTT2JqZWN0
KiBjdXN0b21TbG90QmFzZSkKKyAgICBGdW5jdGlvblB0cjxDdXN0b21BY2Nlc3NvclB0clRhZz4g
Y3VzdG9tU2V0dGVyLCBKU09iamVjdCogY3VzdG9tU2xvdEJhc2UpCiB7CiAgICAgQVNTRVJUKHR5
cGUgPT0gU2V0dGVyIHx8IHR5cGUgPT0gQ3VzdG9tVmFsdWVTZXR0ZXIgfHwgdHlwZSA9PSBDdXN0
b21BY2Nlc3NvclNldHRlcik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdldHRlclNldHRlckFjY2Vz
c0Nhc2U+IHJlc3VsdChuZXcgR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZSh2bSwgb3duZXIsIHR5cGUs
IGlkZW50aWZpZXIsIG9mZnNldCwgc3RydWN0dXJlLCBjb25kaXRpb25TZXQsIHZpYVByb3h5LCBu
dWxscHRyLCBjdXN0b21TbG90QmFzZSwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpKTsK
LSAgICByZXN1bHQtPm1fY3VzdG9tQWNjZXNzb3IgPSBjdXN0b21TZXR0ZXIgPyBGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KGN1c3RvbVNldHRlcikgOiBudWxscHRyOworICAgIHJlc3VsdC0+
bV9jdXN0b21BY2Nlc3NvciA9IGN1c3RvbVNldHRlciA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vz
c29yUHRyVGFnPihjdXN0b21TZXR0ZXIpIDogbnVsbHB0cjsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldHRlclNl
dHRlckFjY2Vzc0Nhc2UuaAppbmRleCBmYWY4OWFkZDAzOWFmYjNjZWM5YTY5MmE3NDcxODRmNjJj
ZTdhYzk0Li42MDNmYmY2MjQ1NDYwNzA3NzQxZTI1ODBmNDRmNzU0N2JkODJmODU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmgKQEAgLTU1LDE5ICs1NSwxOSBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
IGZpbmFsIDogcHVibGljIFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBjcmVhdGUoCiAgICAgICAgIFZNJiwgSlNDZWxsKiBvd25l
ciwgQWNjZXNzVHlwZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQsIFN0cnVj
dHVyZSosCi0gICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiwgYm9vbCB2
aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPiBjdXN0b21HZXR0ZXIsCisgICAgICAgIGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0JiwgYm9vbCB2aWFQcm94eSwgV2F0Y2hwb2ludFNldCogYWRkaXRpb25hbFNldCwg
RnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUdldHRlciwKICAgICAgICAg
SlNPYmplY3QqIGN1c3RvbVNsb3RCYXNlLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9u
Piwgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPik7CiAKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IGNyZWF0ZShWTSYsIEpTQ2VsbCogb3duZXIsIEFj
Y2Vzc1R5cGUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0
LAogICAgICAgICBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYsIHN0ZDo6dW5pcXVl
X3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4sIGJvb2wgdmlhUHJveHkgPSBmYWxzZSwKLSAgICAg
ICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBjdXN0b21TZXR0ZXIgPSBudWxscHRyLCBK
U09iamVjdCogY3VzdG9tU2xvdEJhc2UgPSBudWxscHRyKTsKKyAgICAgICAgRnVuY3Rpb25QdHI8
Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbVNldHRlciA9IG51bGxwdHIsIEpTT2JqZWN0KiBj
dXN0b21TbG90QmFzZSA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBkdW1wSW1wbChQcmludFN0cmVh
bSYsIENvbW1hUHJpbnRlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
c3NDYXNlPiBjbG9uZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgfkdldHRlclNldHRlckFjY2Vzc0Nh
c2UoKSBmaW5hbDsKIAotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4gY3VzdG9tQWNj
ZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbUFjY2Vzc29yOyB9CisgICAgRnVuY3Rpb25Q
dHI8Q3VzdG9tQWNjZXNzb3JQdHJUYWc+IGN1c3RvbUFjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21BY2Nlc3NvcjsgfQogCiBwcml2YXRlOgogICAgIEdldHRlclNldHRlckFjY2Vzc0Nh
c2UoVk0mLCBKU0NlbGwqLCBBY2Nlc3NUeXBlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCwgU3RydWN0dXJlKiwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmLCBi
b29sIHZpYVByb3h5LCBXYXRjaHBvaW50U2V0KiBhZGRpdGlvbmFsU2V0LCBKU09iamVjdCogY3Vz
dG9tU2xvdEJhc2UsIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4pOwpAQCAt
NzYsNyArNzYsNyBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlIGZpbmFsIDogcHVibGlj
IFByb3h5YWJsZUFjY2Vzc0Nhc2UgewogCiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2N1
c3RvbVNsb3RCYXNlOwogICAgIENhbGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm8geyBudWxscHRy
IH07Ci0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiBtX2N1c3RvbUFjY2Vzc29yOwor
ICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBtX2N1c3RvbUFjY2Vzc29yOwog
ICAgIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IG1fZG9tQXR0cmlidXRlOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBhYmViMTdiZGMwZjMxMzQ2ZGEy
MzM3NzI0MjkwNmU3NjVjODBhMDg0Li43ZTljNmFkYWIyMTU2NDUwZDk5M2VjNDNlZmMzMTJjNDFl
YTNjYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMjc2LDcgKzI3Niw3
IEBAIHN0cnVjdCBTdGFja0FjY2Vzc0RhdGEgewogfTsKIAogc3RydWN0IENhbGxET01HZXR0ZXJE
YXRhIHsKLSAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IGN1c3RvbUFjY2Vzc29yR2V0
dGVyOworICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21BY2Nlc3Nv
ckdldHRlcjsKICAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUIHsgbnVsbHB0
ciB9OwogICAgIERPTUpJVDo6Q2FsbERPTUdldHRlclNuaXBwZXQqIHNuaXBwZXQgeyBudWxscHRy
IH07CiAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYjVlYjA4OGI2ZjVh
ODQyMWRlMjM3ZGEyNTBmOWVkZTVmYjQ0ZTYwZS4uYTA3ZjU2YzAwY2NiYTUzYzVkZTE3ZWMzZjBi
ZjBkN2UxMzgwYjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNT
ZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiUmVnRXhw
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyTG9nLmgiCkBAIC0xMDEwNCw3ICsxMDEwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiB7CiAgICAgRE9NSklUOjpDYWxsRE9N
R2V0dGVyU25pcHBldCogc25pcHBldCA9IG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPnNuaXBw
ZXQ7CiAgICAgaWYgKCFzbmlwcGV0KSB7Ci0gICAgICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4gZ2V0dGVyID0gbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JH
ZXR0ZXI7CisgICAgICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBnZXR0ZXIg
PSBub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5jdXN0b21BY2Nlc3NvckdldHRlcjsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIApAQCAtMTAxMTIsMTAgKzEw
MTEzLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJh
dGlvbl9HSkk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5p
ZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisg
ICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSklQPihUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJl
ciksIGdldHRlci5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJPihUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZp
ZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlcikpOworCiAg
ICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0oKS50
b3BDYWxsRnJhbWUpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVu
dE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIG1faml0LmFwcGVuZENhbGwoZ2V0dGVy
LnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKSk7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VK
SVRDYWdlKCkpCisgICAgICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKHZtRW50cnlDdXN0b21BY2Nl
c3Nvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faml0LmFwcGVuZENhbGwoZ2V0dGVy
LnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKSk7CiAgICAgICAgIG1faml0LnNldHVwUmVzdWx0
cyhyZXN1bHRSZWdzKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDBmZTJkMGYw
MTM5OGNlNmJiNTUyOGQ0N2EzZjViZTgzOTcxNWIxNjQuLmU0NzdkOGE4ZjRkNmI1ZjkxMWIyZWE5
NWRiYjkxYWM2Yjg1ZTA4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1NldEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lu
bGluZXMuaCIKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKQEAgLTE0NTAyLDkgKzE0NTAzLDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMjA0
CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmVQ
dHIobV9jYWxsRnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOwotICAg
ICAgICAgICAgc2V0SlNWYWx1ZSgKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIGJpdHdp
c2VfY2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlcj4obV9ub2RlLT5jYWxsRE9N
R2V0dGVyRGF0YSgpLT5jdXN0b21BY2Nlc3NvckdldHRlci5yZXRhZ2dlZEV4ZWN1dGFibGVBZGRy
ZXNzPENGdW5jdGlvblB0clRhZz4oKSksCi0gICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50
UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlk
ZW50aWZpZXJOdW1iZXJdKSkpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworICAgICAgICAgICAgICAgIHNldEpTVmFsdWUoCisgICAgICAgICAgICAgICAgICAgIHZt
Q2FsbChJbnQ2NCwgdm1FbnRyeUN1c3RvbUFjY2Vzc29yLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cihtX2dyYXBo
LmlkZW50aWZpZXJzKClbbV9ub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVt
YmVyXSksIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3Vz
dG9tQWNjZXNzb3JHZXR0ZXIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAg
dm1DYWxsKEludDY0LCBiaXR3aXNlX2Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyOjpDdXN0b21HZXR0
ZXI+KG1fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIucmV0
YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxDRnVuY3Rpb25QdHJUYWc+KCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlcl0pKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBiNzVhN2IxMGU2NmE4MjFlNzA1YzE0OTQzNzEwN2Ux
NTYwNjE2MGUxLi4zZDA1NDVlMGE4NTVhM2I3Yzk5NDRmMjY1N2MzMDEyYjEyNDM5MzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTMzLDYgKzEzMyw3
IEBAIHVzaW5nIFBfSklUT3BlcmF0aW9uX1ZtU3RaQiA9IGNoYXIqKEpJVF9PUEVSQVRJT05fQVRU
UklCVVRFUyAqKShWTSosIFN0cnVjdHVyZSosCiB1c2luZyBQX0pJVE9wZXJhdGlvbl9HU3RaQiA9
IGNoYXIqKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyAqKShKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSosIGludDMyX3QsIEJ1dHRlcmZseSopOwogdXNpbmcgSl9KSVRPcGVyYXRpb25fR0ogPSBF
bmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKikoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSk7CiB1c2luZyBKX0pJVE9wZXJhdGlvbl9HSkkgPSBFbmNvZGVkSlNW
YWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKK3VzaW5nIEpfSklUT3BlcmF0aW9uX0dKSVAg
PSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKikoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqLCB2b2lkKik7CiB1c2luZyBW
X0pJVE9wZXJhdGlvbl9HU3NpSkpDID0gdm9pZChKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMgKiko
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgdWludHB0cl90KTsKIHVzaW5nIENfSklUT3BlcmF0aW9uX1RUID0gdWludHB0
cl90KEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyAqKShTdHJpbmdJbXBsKiwgU3RyaW5nSW1wbCop
OwogdXNpbmcgQ19KSVRPcGVyYXRpb25fQl9HSnNzSnNzID0gdWludHB0cl90KEpJVF9PUEVSQVRJ
T05fQVRUUklCVVRFUyAqKShKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgSlNTdHJpbmcqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDA3NzExNjFjMTVjOWUxNzU5
MmQ2NWI2ZGFhODE0YmFkMmQzYTM2MzAuLjU3YjZjMTMzZjhmMjdkM2JkMzBkNWNhMzk0MTdjZGM5
OTIyNWJjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNDEwLDcg
KzQxMCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayoKIAogICAgICAgICAgICAgICAgICAgICBu
ZXdDYXNlID0gR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZTo6Y3JlYXRlKAogICAgICAgICAgICAgICAg
ICAgICAgICAgdm0sIGNvZGVCbG9jaywgdHlwZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIHN0cnVj
dHVyZSwgY29uZGl0aW9uU2V0LCBsb2FkVGFyZ2V0RnJvbVByb3h5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgc2xvdC53YXRjaHBvaW50U2V0KCksIHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSA/
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4oc2xvdC5jdXN0b21HZXR0ZXIoKSkgOiBudWxs
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC53YXRjaHBvaW50U2V0KCksIHNsb3Qu
aXNDYWNoZWFibGVDdXN0b20oKSA/IEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPihz
bG90LmN1c3RvbUdldHRlcigpKSA6IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBz
bG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgJiYgc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSA/
IHNsb3Quc2xvdEJhc2UoKSA6IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkb21B
dHRyaWJ1dGUsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC03NDYsNyArNzQ2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKIAogICAgICAg
ICAgICAgICAgIG5ld0Nhc2UgPSBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlOjpjcmVhdGUoCiAgICAg
ICAgICAgICAgICAgICAgIHZtLCBjb2RlQmxvY2ssIHNsb3QuaXNDdXN0b21BY2Nlc3NvcigpID8g
QWNjZXNzQ2FzZTo6Q3VzdG9tQWNjZXNzb3JTZXR0ZXIgOiBBY2Nlc3NDYXNlOjpDdXN0b21WYWx1
ZVNldHRlciwgb2xkU3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgICAgICAgICAgICAg
IGludmFsaWRPZmZzZXQsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFp
biksIGlzUHJveHksIHNsb3QuY3VzdG9tU2V0dGVyKCkucmV0YWdnZWQ8T3BlcmF0aW9uUHRyVGFn
PigpLCBzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUgPyBzbG90LmJhc2UoKSA6IG51bGxwdHIpOwor
ICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT2Zmc2V0LCBjb25kaXRpb25TZXQsIFdURk1vdmUo
cHJvdG90eXBlQWNjZXNzQ2hhaW4pLCBpc1Byb3h5LCBzbG90LmN1c3RvbVNldHRlcigpLnJldGFn
Z2VkPEN1c3RvbUFjY2Vzc29yUHRyVGFnPigpLCBzbG90LmJhc2UoKSAhPSBiYXNlVmFsdWUgPyBz
bG90LmJhc2UoKSA6IG51bGxwdHIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKTsKICAgICAgICAgICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggZjMwN2Q4NzNiNWIxNWE0ZTAy
MjVlYzFkYTQ0ZjAxNDkwYWFmZTkxYi4uYTM5OTNmOGU0MDljMzAwMDQzYzBlMzg0Y2Q1NjRjNjVj
MjdjYTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKSVRUaHVua3MuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
LmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgogI2luY2x1ZGUgPHd0Zi9Jbmxp
bmVBU00uaD4KQEAgLTI5MSwxMSArMjkyLDI1IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAg
ICAgICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVy
czo6WmVybywgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKICAgICAgICAgaGFzRXhlY3V0YWJsZS5saW5rKCZqaXQpOwotICAgICAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIsIGV4ZWN1dGFibGVPZmZz
ZXRUb0Z1bmN0aW9uKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgICAgIGF1dG8g
b3BlcmF0aW9uQ2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisgICAgICAgICAgICBq
aXQuYWRkTGlua1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4odm1FbnRyeUhvc3RGdW5jdGlvbikpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBIb3N0RnVuY3Rp
b25QdHJUYWcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCh0aHVua0Z1bmN0aW9uVHlw
ZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6SW50ZXJuYWxGdW5jdGlvbik7CiAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjIsIEludGVy
bmFsRnVuY3Rpb246Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwotICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBJbnRlcm5hbEZ1bmN0aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKGtp
bmQpKSwgSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENh
Z2UoKSkgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5j
dGlvbkZvcihraW5kKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgICAgICBhdXRv
IG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgICAgICAgICAg
aml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KHZtRW50cnlIb3N0RnVuY3Rpb24pKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rp
b25Gb3Ioa2luZCkpLCBIb3N0RnVuY3Rpb25QdHJUYWcpOwogICAgIH0KIAogI2lmIENQVShYODZf
NjQpICYmIE9TKFdJTkRPV1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQ5MzE4MTA5ZGY1NWU0
MGMzMTgwNzc0ODM1YmE4MDYxZDQ2ZmY0NTUuLmEzZDE1ZTcwMzg4Y2M5YjU4OTVmOGU5NzZhNTUz
NTMzMDhlNmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zNDgxLDggKzM0ODEsNiBAQCBp
bnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sIGlzV29ya2VyLCBjb25z
dCBGdW5jJiBmdW5jKQogfQogCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikK
LWV4dGVybiBjb25zdCB1aW50cHRyX3Qgc3RhcnRPZkhvc3RGdW5jdGlvbnNJblNoZWxsIF9fYXNt
KCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05TVCRfX2pzY19ob3N0Iik7Ci1leHRlcm4gY29uc3Qg
dWludHB0cl90IGVuZE9mSG9zdEZ1bmN0aW9uc0luU2hlbGwgX19hc20oInNlY3Rpb24kZW5kJF9f
REFUQV9DT05TVCRfX2pzY19ob3N0Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZK
SVRPcGVyYXRpb25zSW5TaGVsbCBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFfQ09OU1QkX19q
c2Nfb3BzIik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IGVuZE9mSklUT3BlcmF0aW9uc0luU2hl
bGwgX19hc20oInNlY3Rpb24kZW5kJF9fREFUQV9DT05TVCRfX2pzY19vcHMiKTsKICNlbmRpZgpA
QCAtMzUwNyw3ICszNTA1LDcgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQog
CiAgICAgSlNDOjppbml0aWFsaXplKCk7CiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURB
VElPTikKLSAgICBKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkVtYmVk
ZGVyKCZzdGFydE9mSG9zdEZ1bmN0aW9uc0luU2hlbGwsICZlbmRPZkhvc3RGdW5jdGlvbnNJblNo
ZWxsLCAmc3RhcnRPZkpJVE9wZXJhdGlvbnNJblNoZWxsLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5T
aGVsbCk7CisgICAgSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJl
ZGRlcigmc3RhcnRPZkpJVE9wZXJhdGlvbnNJblNoZWxsLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5T
aGVsbCk7CiAjZW5kaWYKICAgICBpbml0aWFsaXplVGltZW91dElmTmVlZGVkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggMGY1MjU4NzAwZTI1NDU1
YzM4ZmRlMzZkYjY1NWY5OWI4Mzk5OTc5NS4uMjFiOWIxMjg4MWE3NmNhYWUxZWU0M2RlNmVlZDI3
Mzc0YzAxOTNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
QEAgLTU2LDcgKzU2LDYgQEAgZXh0ZXJuICJDIiB2b2lkIHdhc21fZW50cnkodm9pZCosIHZvaWQq
LCB2b2lkKik7CiAKICNpZiBFTkFCTEUoSklUX0NBR0UpCiBleHRlcm4gIkMiIHZvaWQgdm1FbnRy
eVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUodm9pZCk7Ci1leHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRv
TmF0aXZlVHJhbXBvbGluZSh2b2lkKTsKIGV4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpTRW50cnlU
cmFtcG9saW5lKHZvaWQpOwogZXh0ZXJuICJDIiB2b2lkIHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRo
VHJhbXBvbGluZSh2b2lkKTsKIGV4dGVybiAiQyIgdm9pZCBleGNlcHRpb25IYW5kbGVyVHJhbXBv
bGluZSh2b2lkKTsKQEAgLTE0OCwxNCArMTQ3LDYgQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pigmdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUpKSkpOwogICAgICAgICBnX2pzY0NvbmZp
Zy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp2bUVudHJ5VG9KYXZh
U2NyaXB0KV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAg
IH0KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7Ci0gICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVQoKSkKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZUpT
R2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25Q
dHJUYWc+KHZtRW50cnlUb05hdGl2ZUdhdGVBZnRlciksIEhvc3RGdW5jdGlvblB0clRhZywgInZt
RW50cnlUb05hdGl2ZSIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwg
Q0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZ2bUVudHJ5VG9OYXRpdmVU
cmFtcG9saW5lKSkpKTsKLSAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvTmF0aXZlKV0gPSBjb2RlUmVmLmdldCgpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgIH0KICAgICB7CiAgICAgICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDE3ZmRhZDNkMjVhNDFj
YjA0MWZhYTliMjU0NmM3MDk1ZGZiZjc1ZGEuLjk2MGQxMTVmZTAzZGExYjRlOTNlNDM4Y2VlODUx
MjUwZDc1YjA3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcApAQCAtNTMsMTEgKzUzLDEyIEBAIEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KGppdENhZ2VQdHJHYXRlQWZ0ZXIpOwogSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04o
dm1FbnRyeVRvSmF2YVNjcmlwdCk7CiBKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2
bUVudHJ5VG9OYXRpdmUpOwogSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRy
eVRvSmF2YVNjcmlwdEdhdGVBZnRlcik7Ci1KU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElP
Tih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpOwogSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVS
QVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7
CiBKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7CiBKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJB
VElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0
ZXIpOwogSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRf
SklUX09QRVJBVElPTih2bUVudHJ5Q3VzdG9tQWNjZXNzb3IpOworSlNDX0FOTk9UQVRFX0xMSU5U
X0pJVF9PUEVSQVRJT04odm1FbnRyeUhvc3RGdW5jdGlvbik7CiAKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4IDA3MTU3M2Y3N2RhZGY2OTA3
MTA4MTVlZDgxYTdiOWQzYjBlNDhjZmYuLjljZDQ3OGEwNzQ1YzYxNDNlMmIzNGFlYjM3ZjFjZTVi
YTgzMWE3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCkBA
IC0zOCwxMyArMzgsMTQgQEAgdHlwZWRlZiBpbnQ2NF90IEVuY29kZWRKU1ZhbHVlOwogZXh0ZXJu
ICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvSmF2YVNjcmlwdCh2b2lkKiwgVk0q
LCBQcm90b0NhbGxGcmFtZSopOwogICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2ZSh2
b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOworICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlD
dXN0b21BY2Nlc3NvcihDUFVSZWdpc3RlciwgQ1BVUmVnaXN0ZXIsIENQVVJlZ2lzdGVyLCBDUFVS
ZWdpc3Rlcik7CisgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeUhvc3RGdW5jdGlvbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSosIHZvaWQqKTsKIH0KIAogI2lmIEVOQUJMRShKSVRfQ0FHRSkK
IGV4dGVybiAiQyIgewogICAgIHZvaWQgaml0Q2FnZVB0ckdhdGVBZnRlcih2b2lkKTsKICAgICB2
b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9pZCk7Ci0gICAgdm9pZCB2bUVudHJ5
VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CiAKICAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7CiAgICAgdm9pZCBsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2b2lkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA5
ZGZkOWM3ZTdhMTVlMmJhN2VlMDlmNDBlNmJhZmM5ZWE4YjNlNmIwLi5jNmQ2NTRjNzkxOTM0ZjM5
MzVjZjA2MDg3NmI0YTQ0Mzc3NjMyM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTUsNiArMjU1LDcgQEAgY29u
c3QgQXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2Zp
bGU6Om9ic2VydmVkTnVtYmVyTnUKICMgUG9pbnRlciBUYWdzCiBjb25zdCBBZGRyZXNzRGl2ZXJz
aWZpZWQgPSAxCiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRh
ZworY29uc3QgQ3VzdG9tQWNjZXNzb3JQdHJUYWcgPSBjb25zdGV4cHIgQ3VzdG9tQWNjZXNzb3JQ
dHJUYWcKIGNvbnN0IEpTRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29u
c3QgSG9zdEZ1bmN0aW9uUHRyVGFnID0gY29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZwogY29u
c3QgSlNFbnRyeVNsb3dQYXRoUHRyVGFnID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRh
ZwpAQCAtMTYxMiw2ICsxNjEzLDE2IEBAIGVuZAogICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQogICAg
IHJldAogCisjIGEwLCBhMSwgYTIgYXJlIHVzZWQuIGEzIGNvbnRhaW5zIGZ1bmN0aW9uIGFkZHJl
c3MuCitnbG9iYWwgX3ZtRW50cnlDdXN0b21BY2Nlc3NvcgorX3ZtRW50cnlDdXN0b21BY2Nlc3Nv
cjoKKyAgICBqbXAgYTMsIEN1c3RvbUFjY2Vzc29yUHRyVGFnCisKKyMgYTAgYW5kIGExIGFyZSB1
c2VkLiBhMiBjb250YWlucyBmdW5jdGlvbiBhZGRyZXNzLgorZ2xvYmFsIF92bUVudHJ5SG9zdEZ1
bmN0aW9uCitfdm1FbnRyeUhvc3RGdW5jdGlvbjoKKyAgICBqbXAgYTIsIEhvc3RGdW5jdGlvblB0
clRhZworCiAjIHVuc2lnbmVkIHZtRW50cnlUb0NTU0pJVCh1aW50cHRyX3QsIHVpbnRwdHJfdCwg
dWludHB0cl90LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKIGlmIEFSTTY0IG9yIEFSTTY0RQogZW1p
dCAiLmdsb2JsIF92bUVudHJ5VG9DU1NKSVQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDBkY2ExZjgxMjc2ZDg0
NGUzMzIzNWRiNTk0YmI5NjkyODAwZjI4YjIuLjcxNDVmMWE3YTgzMGMxN2Q4MTU5NmM2Mzg5OGRh
ZDUwYWIxMDhmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0zMzYsMjAgKzMzNiw5IEBAIG1hY3JvIG1ha2VI
b3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAg
ICAgICBzdWJwIDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcK
ICAgICAgICAgYWRkcCAzMiwgc3AKLSAgICBlbHNpZiBBUk02NEUKLSAgICAgICAgbW92ZSB0ZW1w
MSwgdDMKLSAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05hdGl2ZSkgKiBQdHJT
aXplLCBhMgotICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSG9zdEZ1
bmN0aW9uUHRyVGFnCi0gICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZQot
ICAgICAgICBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKLSAgICAgICAgY2FsbCB0MywgSG9z
dEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rp
b25QdHJUYWcKICAgICBlbmQKLSAgICBpZiBBUk02NEUKLSAgICAgICAgZ2xvYmFsIF92bUVudHJ5
VG9OYXRpdmVHYXRlQWZ0ZXIKLSAgICAgICAgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcjoKLSAg
ICBlbmQKIGVuZAogCiBvcChsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uLCBtYWNybyAo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCmluZGV4IGE1ZDAyNzEyOGNhYjFmOTll
YmIyNGM3ZGZiMjk4YTNiMjc4NDk0MmMuLjA2ZWJjNGU0M2Y3OWE1NWFiOThiZWY3N2Q5YzY4NWFl
ZmE0ZmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTQzLDcgKzQz
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCiAgICAgdihsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAogICAgIHYodm1FbnRyeVRvSmF2
YVNjcmlwdCwgSlNFbnRyeVB0clRhZykgXAotICAgIHYodm1FbnRyeVRvTmF0aXZlLCBIb3N0RnVu
Y3Rpb25QdHJUYWcpIFwKIAogI2RlZmluZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwKICAgICB2
KG9wX2NhbGwsIEpTRW50cnlQdHJUYWcpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUHRyVGFnLmgKaW5kZXggNGQyZDQ3ZGNlMDRjZGZlMmY4ODVlNGEzYWY5NDQ1ZGJlZTkyMDA0
NC4uZGQwYWQ1MzgxMjMwMWJkOTMwNmViM2FlOTllNzhhNzkwYmM4MGNkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgKQEAgLTQzLDcgKzQzLDYgQEAgdXNpbmcg
UHRyVGFnID0gV1RGOjpQdHJUYWc7CiAgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6Tm9uZSAq
LyBcCiAgICAgdihET01KSVRGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZl
LCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihEaXNhc3NlbWJseVB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCi0gICAgdihQ
dXRWYWx1ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBl
OjpOb25lKSBcCiAgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6Tm9uZSAqLyBcCiAgICAgdihCM0Nv
bXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVNZW1vcnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXApAQCAtNTQsNiArNTMsOCBAQCB1c2luZyBQ
dHJUYWcgPSBXVEY6OlB0clRhZzsKICAgICB2KFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgLyogQ2Fs
bGVlOk5hdGl2ZSBDYWxsZXI6TmF0aXZlICovIFwKICAgICB2KEJ5dGVjb2RlUHRyVGFnLCBQdHJU
YWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAorICAgIHYo
Q3VzdG9tQWNjZXNzb3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCisgICAgdihIb3N0RnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9i
ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRp
dmUpIFwKICAgICB2KEpJVFByb2JlRXhlY3V0b3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5h
dGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVN0YWNrSW5p
dGlhbGl6YXRpb25GdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKQEAgLTYyLDcgKzYzLDYgQEAgdXNpbmcgUHRyVGFnID0g
V1RGOjpQdHJUYWc7CiAgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihDU1NTZWxlY3RvclB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICAv
KiBDYWxsZWU6TmF0aXZlIENhbGxlcjpKSVQgKi8gXAotICAgIHYoSG9zdEZ1bmN0aW9uUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAg
IHYoT3BlcmF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxl
clR5cGU6OkpJVCkgXAogICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOkpJVCAqLyBcCiAgICAgdihF
eGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxl
clR5cGU6OkpJVCkgXApAQCAtMTI0LDExICsxMjQsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQ
dHJUeXBlIHRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3Nl
cnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhw
ciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25Q
dHJUYWcpOwotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0g
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0
aW9uKHB0cik7Ci0gICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKQotICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRp
b25QdHJUYWcpOworICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElz
SklUT3BlcmF0aW9uKHB0cik7CiAjaWYgRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUQ2FnZSgpKQogICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJU
eXBlPihKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLm1hcChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHB0cikpKTsKQEAgLTE0NSwxMSArMTQyLDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRyVHlw
ZSB1bnRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQo
Y2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAo
Y2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpOwotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAg
ICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9u
KHB0cik7Ci0gICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRy
VGFnKQotICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hv
c3RGdW5jdGlvbihwdHIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25Q
dHJUYWcpOworICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklU
T3BlcmF0aW9uKHB0cik7CiAjaWYgRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICBpZiAoT3B0aW9u
czo6dXNlSklUQ2FnZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXR3aXNlX2Nh
c3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5tYXAoYml0d2lzZV9jYXN0
PHZvaWQqPihwdHIpKSkgPT0gcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVGdW5jdGlvbi5oCmluZGV4IGNlMDcxMTNlMmFiMTgxNTA3NWU1NDRmMjgzODNiMTFk
YzY5MjI1MjEuLjY4NzcxM2MyODhkYjEzMTkzZjQ3NmE1MzhiNTE4OGJjOGU5NDE1NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENhbGxGcmFtZTsKIAogdXNpbmcgUmF3
TmF0aXZlRnVuY3Rpb24gPSBFbmNvZGVkSlNWYWx1ZShKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMq
KShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwordXNpbmcgUmF3TmF0aXZlRnVuY3Rpb25X
aXRoUHRyID0gRW5jb2RlZEpTVmFsdWUoSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTKikoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqLCB2b2lkKik7CiAKIGNsYXNzIE5hdGl2ZUZ1bmN0aW9uIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgK
aW5kZXggM2ZjOWQyYTc5ZTg4MzJjNjg2OTJhNTNmODg5MTcyYjc3ZTcwZTRkZS4uYTc4YTZlZjM4
Y2JjODliMTAyNGFlMmI0MDI3MWI5YmJkNGMzYjdmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBjbGFzcyBQcm9w
ZXJ0eVNsb3QgewogICAgIH0KIAogICAgIHVzaW5nIEdldFZhbHVlRnVuYyA9IEVuY29kZWRKU1Zh
bHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHVzaW5nIEdldFZhbHVlRnVuY1dp
dGhQdHIgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMqKShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lLCB2b2lkKik7
CiAKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBj
b25zdDsKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgcHJv
cGVydHlOYW1lKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1B1dFByb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0
UHJvcGVydHlTbG90LmgKaW5kZXggMGVjZDUyZGFhMmY3ZWUwOGQ5N2JjNzA0ZGM0YWNlM2VhMDlj
M2VlYy4uMWE3NWMxNDVhNTQyZDllY2I3OGNlNWQ5MjY1YzJjOGE4ZDQ5MWE4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTM4LDcg
KzM4LDggQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUg
OiB1aW50OF90IHsgVW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVydHksIFNl
dHRlclByb3BlcnR5LCBDdXN0b21WYWx1ZSwgQ3VzdG9tQWNjZXNzb3IgfTsKICAgICBlbnVtIENv
bnRleHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsKLSAgICB0eXBl
ZGVmIGJvb2wgKCpQdXRWYWx1ZUZ1bmMpKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
dGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpOworICAgIHVzaW5nIFB1dFZhbHVlRnVu
YyA9IGJvb2wgKCopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKTsKKyAgICB1c2luZyBQdXRWYWx1ZUZ1bmNXaXRoUHRyID0gYm9vbCAoKikoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHZvaWQqKTsKIAogICAgIFB1
dFByb3BlcnR5U2xvdChKU1ZhbHVlIHRoaXNWYWx1ZSwgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxz
ZSwgQ29udGV4dCBjb250ZXh0ID0gVW5rbm93bkNvbnRleHQsIGJvb2wgaXNJbml0aWFsaXphdGlv
biA9IGZhbHNlKQogICAgICAgICA6IG1fYmFzZShudWxscHRyKQpAQCAtOTcsNyArOTgsNyBAQCBj
bGFzcyBQdXRQcm9wZXJ0eVNsb3QgewogICAgICAgICBtX2lzU3RyaWN0TW9kZSA9IHZhbHVlOwog
ICAgIH0KIAotICAgIEZ1bmN0aW9uUHRyPFB1dFZhbHVlUHRyVGFnPiBjdXN0b21TZXR0ZXIoKSBj
b25zdAorICAgIEZ1bmN0aW9uUHRyPEN1c3RvbUFjY2Vzc29yUHRyVGFnPiBjdXN0b21TZXR0ZXIo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlQ3VzdG9tKCkpOwogICAg
ICAgICByZXR1cm4gbV9wdXRGdW5jdGlvbjsKQEAgLTEzNyw3ICsxMzgsNyBAQCBjbGFzcyBQdXRQ
cm9wZXJ0eVNsb3QgewogICAgIFR5cGUgbV90eXBlOwogICAgIHVpbnQ4X3QgbV9jb250ZXh0Owog
ICAgIENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7Ci0gICAgRnVuY3Rpb25QdHI8UHV0
VmFsdWVQdHJUYWc+IG1fcHV0RnVuY3Rpb247CisgICAgRnVuY3Rpb25QdHI8Q3VzdG9tQWNjZXNz
b3JQdHJUYWc+IG1fcHV0RnVuY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBmNWFhNWQ0MzFmY2JjYTc4MTVmNWIxZjBm
OGVkZTdhNDYxZThmZjkzLi44NDAzZTJjODFjNzI2ODFjMGQ1MTA4NzlhOGJlOTgwZjZlMWUwZjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04MzUsNyArODM1LDYgQEAg
TmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5jdGlvbihOYXRpdmVGdW5jdGlvbiBmdW5j
dGlvbiwgSW50cmluc2ljIGludHJpbnMKIHsKICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChPcHRp
b25zOjp1c2VKSVQoKSkgewotICAgICAgICBKSVRPcGVyYXRpb25MaXN0Ojphc3NlcnRJc0hvc3RG
dW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9u
U3R1YigKICAgICAgICAgICAgICp0aGlzLCBmdW5jdGlvbiwgY29uc3RydWN0b3IsCiAgICAgICAg
ICAgICBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRvckZvckludHJpbnNp
YyhpbnRyaW5zaWMpIDogbnVsbHB0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtQ2FsbGluZ0NvbnZlbnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUNhbGxpbmdD
b252ZW50aW9ucy5oCmluZGV4IDVmNmRiMmEyNjQwMDgzMzU1ZTc3ZmE1OTE4ZjYyZmY1OGRlZDFj
ZDEuLmU3YzZiYTFiMzNhMjgyM2VkNWNhYjQ2YWIxNWI5ZmUyYmM1ZDNmNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1DYWxsaW5nQ29udmVudGlvbnMuaApAQCAtNDIsMTIgKzQyLDcgQEAK
ICNkZWZpbmUgSlNDX0hPU1RfQ0FMTF9BVFRSSUJVVEVTCiAjZW5kaWYKIAotI2lmIEVOQUJMRShK
SVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi0jZGVmaW5lIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uSWQsIGZ1bmN0aW9uKSBcCi0gICAgY29uc3RleHByIGF1dG8gZnVuY3Rpb25J
ZCBfX2F0dHJpYnV0ZV9fKCh1c2VkLCBzZWN0aW9uKCJfX0RBVEFfQ09OU1QsX19qc2NfaG9zdCIp
KSkgPSBmdW5jdGlvbjsKLSNlbHNlCiAjZGVmaW5lIEpTQ19BTk5PVEFURV9IT1NUX0ZVTkNUSU9O
KGZ1bmN0aW9uSWQsIGZ1bmN0aW9uKQotI2VuZGlmCiAKICNkZWZpbmUgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbk5hbWUsIGF0dHJpYnV0ZXMsIHBhcmFt
ZXRlcnMpIFwKICAgICBKU0NfQU5OT1RBVEVfSE9TVF9GVU5DVElPTihfSklUVGFyZ2V0XyMjZnVu
Y3Rpb25OYW1lLCBzdGF0aWNfY2FzdDxKU0M6OkVuY29kZWRKU1ZhbHVlKCopcGFyYW1ldGVycz4o
ZnVuY3Rpb25OYW1lKSk7IFwKQEAgLTk2LDYgKzkxLDkgQEAKICNkZWZpbmUgSlNDX0FOTk9UQVRF
X0pJVF9PUEVSQVRJT04oZnVuY3Rpb25JZCwgZnVuY3Rpb24pCiAjZW5kaWYKIAorCisjZGVmaW5l
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTl9XSVRIX0FUVFJJQlVURVNfV0lUSE9VVF9WQVJJQUJM
RShmdW5jdGlvbk5hbWUsIGF0dHJpYnV0ZXMsIHJldHVyblR5cGUsIHBhcmFtZXRlcnMpIFwKKyAg
ICBhdHRyaWJ1dGVzIHJldHVyblR5cGUgSklUX09QRVJBVElPTl9BVFRSSUJVVEVTIGZ1bmN0aW9u
TmFtZSBwYXJhbWV0ZXJzCiAjZGVmaW5lIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTl9XSVRIX0FU
VFJJQlVURVMoZnVuY3Rpb25OYW1lLCBhdHRyaWJ1dGVzLCByZXR1cm5UeXBlLCBwYXJhbWV0ZXJz
KSBcCiAgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF8jI2Z1bmN0aW9u
TmFtZSwgc3RhdGljX2Nhc3Q8cmV0dXJuVHlwZSgqKXBhcmFtZXRlcnM+KGZ1bmN0aW9uTmFtZSkp
OyBcCiAgICAgYXR0cmlidXRlcyByZXR1cm5UeXBlIEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyBm
dW5jdGlvbk5hbWUgcGFyYW1ldGVycwpAQCAtMTA4LDUgKzEwNiw1IEBACiAKICNkZWZpbmUgSlND
X0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihmdW5jdGlvbk5hbWUpIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT05fV0lUSE9VVF9XVEZfSU5URVJOQUwoZnVuY3Rpb25OYW1lLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKSkKICNkZWZpbmUgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihmdW5jdGlvbk5h
bWUpIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT05fV0lUSE9VVF9XVEZfSU5URVJOQUwoZnVuY3Rp
b25OYW1lLCBib29sLCAoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpKQotI2RlZmluZSBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
ZnVuY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKSBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oZnVuY3Rp
b25OYW1lLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBwYXJhbWV0ZXJzKQotI2RlZmluZSBKU0NfREVG
SU5FX0NVU1RPTV9TRVRURVIoZnVuY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKSBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04oZnVuY3Rpb25OYW1lLCBib29sLCBwYXJhbWV0ZXJzKQorI2RlZmluZSBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIoZnVuY3Rpb25OYW1lLCBwYXJhbWV0ZXJzKSBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT05fV0lUSF9BVFRSSUJVVEVTX1dJVEhPVVRfVkFSSUFCTEUoZnVuY3Rpb25O
YW1lLCAsIEpTQzo6RW5jb2RlZEpTVmFsdWUsIHBhcmFtZXRlcnMpCisjZGVmaW5lIEpTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihmdW5jdGlvbk5hbWUsIHBhcmFtZXRlcnMpIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTl9XSVRIX0FUVFJJQlVURVNfV0lUSE9VVF9WQVJJQUJMRShmdW5jdGlvbk5hbWUs
ICwgYm9vbCwgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVKSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNDM3ZTIyYTViODBkZWZjZGQxNDlmNmYz
NDA3NjNhN2JhMjUyMDcyLi4yN2ZhNmQwZmQ4MzFkOGQ4ODBiYWYyNjA1Y2JlMWM0Y2M3OGMxODE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpJVE9wZXJh
dGlvbnMuY3BwCkBAIC0zMSw4ICszMSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBz
dGFydE9mSG9zdEZ1bmN0aW9uc0luV2ViQ29yZSBfX2FzbSgic2VjdGlvbiRzdGFydCRfX0RBVEFf
Q09OU1QkX19qc2NfaG9zdCIpOwotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBlbmRPZkhvc3RGdW5j
dGlvbnNJbldlYkNvcmUgX19hc20oInNlY3Rpb24kZW5kJF9fREFUQV9DT05TVCRfX2pzY19ob3N0
Iik7CiBleHRlcm4gY29uc3QgdWludHB0cl90IHN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5XZWJDb3Jl
IF9fYXNtKCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05TVCRfX2pzY19vcHMiKTsKIGV4dGVybiBj
b25zdCB1aW50cHRyX3QgZW5kT2ZKSVRPcGVyYXRpb25zSW5XZWJDb3JlIF9fYXNtKCJzZWN0aW9u
JGVuZCRfX0RBVEFfQ09OU1QkX19qc2Nfb3BzIik7CiAjZW5kaWYKQEAgLTQyLDcgKzQwLDcgQEAg
dm9pZCBwb3B1bGF0ZUpJVE9wZXJhdGlvbnMoKQogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZB
TElEQVRJT04pCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgW10gewotICAgICAgICBKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OnBv
cHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKCZzdGFydE9mSG9zdEZ1bmN0aW9uc0luV2ViQ29yZSwg
JmVuZE9mSG9zdEZ1bmN0aW9uc0luV2ViQ29yZSwgJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5XZWJD
b3JlLCAmZW5kT2ZKSVRPcGVyYXRpb25zSW5XZWJDb3JlKTsKKyAgICAgICAgSlNDOjpKSVRPcGVy
YXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcigmc3RhcnRPZkpJVE9wZXJhdGlv
bnNJbldlYkNvcmUsICZlbmRPZkpJVE9wZXJhdGlvbnNJbldlYkNvcmUpOwogICAgIH0pOwogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5jcHAKaW5kZXggNDRlNmMzOTU4ZWE2MWRhMjQwYzNjZTlkZjFhNGI2NTNmNGFkN2RhMi4uOGRk
YzQwZTU3OGY1YjE2YjZlMGRmYmQ1OTQ0MmVmN2NiMDQwMGY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtMjQyLDggKzI0Miw2
IEBAIHZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0
IFdURjo6U3RyaW5nJiBpbWFnZVR5cGVzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSklUX09QRVJB
VElPTl9WQUxJREFUSU9OKQotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBzdGFydE9mSG9zdEZ1bmN0
aW9uc0luV2ViQ29yZVRlc3RTdXBwb3J0IF9fYXNtKCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05T
VCRfX2pzY19ob3N0Iik7Ci1leHRlcm4gY29uc3QgdWludHB0cl90IGVuZE9mSG9zdEZ1bmN0aW9u
c0luV2ViQ29yZVRlc3RTdXBwb3J0IF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09OU1QkX19q
c2NfaG9zdCIpOwogZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBzdGFydE9mSklUT3BlcmF0aW9uc0lu
V2ViQ29yZVRlc3RTdXBwb3J0IF9fYXNtKCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05TVCRfX2pz
Y19vcHMiKTsKIGV4dGVybiBjb25zdCB1aW50cHRyX3QgZW5kT2ZKSVRPcGVyYXRpb25zSW5XZWJD
b3JlVGVzdFN1cHBvcnQgX19hc20oInNlY3Rpb24kZW5kJF9fREFUQV9DT05TVCRfX2pzY19vcHMi
KTsKICNlbmRpZgpAQCAtMjUzLDcgKzI1MSw3IEBAIHZvaWQgcG9wdWxhdGVKSVRPcGVyYXRpb25z
KCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAg
ICAgICAgSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcigm
c3RhcnRPZkhvc3RGdW5jdGlvbnNJbldlYkNvcmVUZXN0U3VwcG9ydCwgJmVuZE9mSG9zdEZ1bmN0
aW9uc0luV2ViQ29yZVRlc3RTdXBwb3J0LCAmc3RhcnRPZkpJVE9wZXJhdGlvbnNJbldlYkNvcmVU
ZXN0U3VwcG9ydCwgJmVuZE9mSklUT3BlcmF0aW9uc0luV2ViQ29yZVRlc3RTdXBwb3J0KTsKKyAg
ICAgICAgSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcigm
c3RhcnRPZkpJVE9wZXJhdGlvbnNJbldlYkNvcmVUZXN0U3VwcG9ydCwgJmVuZE9mSklUT3BlcmF0
aW9uc0luV2ViQ29yZVRlc3RTdXBwb3J0KTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViS2l0SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJLaXRKSVRPcGVyYXRpb25zLmNwcAppbmRleCA4MTcwNTJhOGE5ZDhl
NjVjYThkODY5YmUxNTEwN2Q3NDViYjNjNDc2Li5iMmY4Mzc2NmNiNzIyYjk3YjQ0ODY0ZjFmYTA1
ZDAyZjE2ZTBlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXRKSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJLaXRKSVRPcGVyYXRp
b25zLmNwcApAQCAtMzEsOCArMzEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBFTkFC
TEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBzdGFy
dE9mSG9zdEZ1bmN0aW9uc0luV2ViS2l0IF9fYXNtKCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05T
VCRfX2pzY19ob3N0Iik7Ci1leHRlcm4gY29uc3QgdWludHB0cl90IGVuZE9mSG9zdEZ1bmN0aW9u
c0luV2ViS2l0IF9fYXNtKCJzZWN0aW9uJGVuZCRfX0RBVEFfQ09OU1QkX19qc2NfaG9zdCIpOwog
ZXh0ZXJuIGNvbnN0IHVpbnRwdHJfdCBzdGFydE9mSklUT3BlcmF0aW9uc0luV2ViS2l0IF9fYXNt
KCJzZWN0aW9uJHN0YXJ0JF9fREFUQV9DT05TVCRfX2pzY19vcHMiKTsKIGV4dGVybiBjb25zdCB1
aW50cHRyX3QgZW5kT2ZKSVRPcGVyYXRpb25zSW5XZWJLaXQgX19hc20oInNlY3Rpb24kZW5kJF9f
REFUQV9DT05TVCRfX2pzY19vcHMiKTsKICNlbmRpZgpAQCAtNDIsNyArNDAsNyBAQCB2b2lkIHBv
cHVsYXRlSklUT3BlcmF0aW9ucygpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElP
TikKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbXSB7Ci0gICAgICAgIEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQ
b2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0T2ZIb3N0RnVuY3Rpb25zSW5XZWJLaXQsICZlbmRPZkhv
c3RGdW5jdGlvbnNJbldlYktpdCwgJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5XZWJLaXQsICZlbmRP
ZkpJVE9wZXJhdGlvbnNJbldlYktpdCk7CisgICAgICAgIEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6
cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoJnN0YXJ0T2ZKSVRPcGVyYXRpb25zSW5XZWJLaXQs
ICZlbmRPZkpJVE9wZXJhdGlvbnNJbldlYktpdCk7CiAgICAgfSk7CiAjZW5kaWYKIH0K
</data>
<flag name="review"
          id="433567"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>