<?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>38155</bug_id>
          
          <creation_ts>2010-04-26 17:44:06 -0700</creation_ts>
          <short_desc>Need to support more efficient dispatch of lightweight builtins</short_desc>
          <delta_ts>2010-04-26 21:23:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217386</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-26 17:44:06 -0700</bug_when>
    <thetext>Need to support more efficient dispatch of lightweight builtins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217427</commentid>
    <comment_count>1</comment_count>
      <attachid>54369</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-26 18:34:28 -0700</bug_when>
    <thetext>Created attachment 54369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217429</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-26 18:35:54 -0700</bug_when>
    <thetext>Attachment 54369 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/Lookup.h:80:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:1707:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
JavaScriptCore/jit/JSInterfaceJIT.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/jit/SpecializedThunkJIT.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/jit/ThunkGenerators.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 20 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217430</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-26 18:37:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 54369 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot;
&gt; exit_code: 1
&gt; JavaScriptCore/runtime/Lookup.h:80:  More than one command on the same line 
&gt; [whitespace/newline] [4]
&gt; JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:1707:
&gt;  One or more unexpected \r (^M) found; better to use only a \n 
&gt; [whitespace/carriage_return] [1]
&gt; Suppressing further [whitespace/carriage_return] reports for this file.
&gt; JavaScriptCore/jit/JSInterfaceJIT.h:38:  Code inside a namespace should not be
&gt; indented.  [whitespace/indent] [4]
&gt; JavaScriptCore/jit/SpecializedThunkJIT.h:37:  Code inside a namespace should
&gt; not be indented.  [whitespace/indent] [4]
&gt; JavaScriptCore/jit/ThunkGenerators.h:33:  Code inside a namespace should not be
&gt; indented.  [whitespace/indent] [4]
&gt; Total errors found: 20 in 27 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

style bot is wrong here -- code inside a namespace in a .h file should be indented.  \r should be used in the vcproj, lookup.h has an assert as the first command which is also allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217463</commentid>
    <comment_count>4</comment_count>
      <attachid>54369</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-26 20:26:50 -0700</bug_when>
    <thetext>Comment on attachment 54369
Patch

Please split this patch into two, and land the file moves separately.
Also, please remove the friend from StringImpl - add a static method to access the offset of m_data instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217495</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-26 21:23:01 -0700</bug_when>
    <thetext>Committed r58286: &lt;http://trac.webkit.org/changeset/58286&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54369</attachid>
            <date>2010-04-26 18:34:28 -0700</date>
            <delta_ts>2010-04-26 20:26:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38155-20100426183426.patch</filename>
            <type>text/plain</type>
            <size>64709</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZWRiZTViNmUwYWJmZDAyOTM5YmRjZDcwZWE2ZjQ1ZjQ3ZDY3NzFhLi41
NTI3MDZiYjlmMWEwNWIyM2JkOWUwNmZkMmRhMjA5ZDhiOGU0YTI4IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAwIEBACisyMDEwLTA0LTI2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0
byBzdXBwb3J0IG1vcmUgZWZmaWNpZW50IGRpc3BhdGNoIG9mIGxpZ2h0d2VpZ2h0IGJ1aWx0aW5z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODE1NQor
CisgICAgICAgIFRoZSBwcm9ibGVtIHdpdGggY2FsbGluZyBsaWdodHdlaWdodCBidWlsdGlucyBp
cyB0aGF0IG1hcnNoYWxsaW5nCisgICAgICAgIHRoZSBjYWxsIGZyb20gdGhlIG5pdHJvIGNhbGxp
bmcgY29udmVudGlvbiB0byB0aGUgc3lzdGVtIGNhbGxpbmcKKyAgICAgICAgY29udmVudGlvbiBp
cyB2ZXJ5IGV4cGVuc2l2ZSByZWxhdGl2ZSB0byB0aGUgY29zdCBvZiB0aGUgYWN0dWFsbHkKKyAg
ICAgICAgZXZhbHVhdGluZyB0aGUgZnVuY3Rpb24uICBUbyB3b3JrIGFyb3VuZCB0aGlzIHByb2Js
ZW0gdGhpcyBwYXRjaAorICAgICAgICBhZGRzIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBhIGN1c3Rv
bSB0aHVuayBmb3IgYSBidWlsdGluLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHVzZSBo
aWdoIHBlcmZvcm1hbmNlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgICAgICAgdGhlIGNv
bW1vbiBhbmQgc2Vuc2libGUgdmVyc2lvbnMgb2Ygc2ltcGxlIGJ1aWx0aW5zLiAgVGhpcyBwYXRj
aAorICAgICAgICBpbmNsdWRlcyBhIHNpbXBsZSAodXNlIG9mIHdoaWNoIGlzIGN1cnJlbnRseSBo
YXJkY29kZWQpIHRodW5rIGZvcgorICAgICAgICBjaGFyQ29kZUF0LgorCisgICAgICAgIFRvIHJl
ZHVjZSBjb2RlIGR1cGxpY2F0aW9uIHRoaXMgcGF0Y2ggcHVsbHMgYSBudW1iZXIgb2YgY29uc3Rh
bnRzCisgICAgICAgIGFuZCBoZWxwZXIgZnVuY3Rpb25zIG91dCBvZiB0aGUgSklUIGNsYXNzIGlu
dG8gYSBKU0ludGVyZmFjZUpJVAorICAgICAgICBjbGFzcyB0aGF0IG5vdyBzaXRzIGJldHdlZW4g
TWFjcm9Bc3NlbWJsZXIgYW5kIEpJVC4gIFdlIHRoZW4gYWRkCisgICAgICAgIGFuIGFkZGl0aW9u
YWwgSlNJbnRlcmZhY2VKSVQgc3ViY2xhc3MgY2FsbGVkIFNwZWNpYWxpemVkVGh1bmtKSVQKKyAg
ICAgICAgdGhhdCBoYXMgaGVscGVyIGZ1bmN0aW9ucyB0byByZW1vdmUgKG9yIGF0IGxlYXN0IHJl
ZHVjZSkgdGhlIG5lZWQKKyAgICAgICAgdG8gaGF2ZSBzZXBhcmF0ZSB0aHVuayBpbXBsZW1lbnRh
dGlvbnMgZm9yIGVhY2ggSlNWYWx1ZSBlbmNvZGluZy4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICAg
TWFueSBwcm9qZWN0IGZpbGUgdXBkYXRlcworCisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6
CisgICAgICAgICAgQWRkIHRodW5rIGdlbmVyYXRpb24gY2FsbGJhY2tzIHRvIHRoZSBoYXNoIHRh
YmxlcywgY3VycmVudGx5CisgICAgICAgICAgd2UgaGFyZGNvZGUgdGhlIHNjcmlwdCB0byBvbmx5
IHN1cHBvcnQgY2hhckNvZGVBdAorCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAgIFB1
bGwgYSBjb25zdGFudHMgYW5kIGhlbHBlcnMgaW50byBKU0ludGVyZmFjZUpJVAorCisgICAgICAg
ICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAgIFVzZSBoZWxwZXIgZnVuY3Rpb24gbm93IGlu
IEpTSW50ZXJmYWNlSklUCisKKyAgICAgICAgKiBqaXQvSklUU3R1YkNhbGwuaDoKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6On5KSVRUaHVua3Mp
OgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnNwZWNpYWxpemVkVGh1bmspOgorICAgICAgICAq
IGppdC9KSVRTdHVicy5oOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSlNDZWxsKToKKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJm
YWNlSklUOjp0YWdGb3IpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZv
cik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjphZGRyZXNzRm9yKToKKyAgICAgICAg
ICBMb3RzIG9mIGhlbHBlcnMKKworICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpTcGVjaWFsaXplZFRo
dW5rSklUKToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZENlbGxBcmd1
bWVudCk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0cmluZ0Fy
Z3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEludDMyQXJn
dW1lbnQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjphcHBlbmRGYWlsdXJl
KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmV0dXJuSW50MzIpOgorICAg
ICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6
OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmFyZ3VtZW50VG9WaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjp0YWdSZXR1cm5Bc0ludDMyKToKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRodW5rSGVs
cGVyczo6c3RyaW5nSW1wbERhdGFPZmZzZXQpOgorICAgICAgICAoSlNDOjpUaHVua0hlbHBlcnM6
OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VGh1bmtIZWxwZXJzOjpqc1N0
cmluZ1ZhbHVlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y2hhckNvZGVBdFRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjpOYXRp
dmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbERhdGE6OmdldFRodW5rKToKKyAgICAgICAgKiBydW50aW1lL0pTSW1tZWRpYXRl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjopOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAgIFByb3RlY3Qgc29tZSBvZiB0aGUg
SlNWQUxVRTMyIGFuZCBKU1ZBTFVFMzJfNjQgb25seSBjb25zdGFudHMKKyAgICAgICAgICBhbmQg
ZnVuY3Rpb24gYmVoaW5kIGFwcHJvcHJpYXRlIFVTRSgpIGd1YXJkcyB0byBtYWtlIGl0IGhhcmRl
cgorICAgICAgICAgIHRvIHVzZSB0aGUgd3JvbmcgZmxhZ3MgZm9yIHRoZSB0YXJnZXQgYnVpbGQu
CisgICAgICAgICogcnVudGltZS9Mb29rdXAuY3BwOgorICAgICAgICAoSlNDOjpIYXNoVGFibGU6
OmNyZWF0ZVRhYmxlKToKKyAgICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChKU0M6Okhhc2hFbnRyeTo6Z2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SGFzaEVudHJ5OjopOgorICAgICAgICAgIE1ha2UgdGhlIGxvb2t1cCB0YWJsZXMgdXNl
IGEgc3BlY2lhbGl6ZWQgdGh1bmtHZW5lcmF0b3IKKyAgICAgICAgICBpZiBwcmVzZW50CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEwLTA0LTI2ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFRpZ2VyIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0gYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCBlODlmMzY3YjA1OGYyZGM1ODIzNTgyNjE3ZDU2MDIzNmQ1ZTRjYjIzLi5kNGFl
OGQyZWM1MjY5ZjFkOWY5N2RlZDg3NThkYzc0OThlMjAzNTk0IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtOTUsNiArOTUsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmggXAogCUphdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViQ2FsbC5oIFwKKwlKYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBcCisJSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVk
VGh1bmtKSVQuaCBcCisJSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgXAor
CUphdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBcCiAJSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybyBi
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCAxY2Q5NjA5MDVlMWZhYjYx
Y2Q0YzkwMDNiNzI0MDVjNGVmZjM2NDc4Li4xODE5NmYyMDQzYzIyZmMwNzI0OGQwY2M3N2EzYjQw
YmYzN2JmMzYwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcm8K
KysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCkBAIC0xMDMsNiArMTAzLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBcCiAgICAgaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIFwKICAgICBqaXQvSklUU3R1YnMuY3BwIFwKKyAg
ICBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBcCiAgICAgcGFyc2VyL0xleGVyLmNwcCBcCiAgICAg
cGFyc2VyL05vZGVzLmNwcCBcCiAgICAgcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBcCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCAxNTg2MjFhYjRk
ZjA1MjExOWRiYjUxMTIwMWM1ZDQ5YmQ0NjAxZDAyLi40ODdjM2UyNTYxODA1NjBmZWM2NjNlMGFj
NzI2ZjJkYzU4NzNkOWUzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oKQEAgLTE3MDQsNiArMTcwNCwyMiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5caml0XEpJVFN0dWJzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSlNJbnRlcmZhY2VKSVQuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxTcGVjaWFsaXpl
ZFRodW5rSklULmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxqaXRcVGh1bmtHZW5lcmF0b3JzLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxUaHVua0dlbmVyYXRv
cnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KIAkJ
CU5hbWU9IlJlc291cmNlcyINCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMzEwY2EzZjI3ZWVmNDU5ODA4
ZDY3ODJkMmE4OTcwYmY2Y2IyMDE2Li41YzcwOWYxYTA4ZWI2YjUzZmY2MjRhNDlkYzE3NGMyNzBk
OTQ5NTFjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5Niw2ICsyOTYsNyBAQAogCQlBNzQ4MkU5MzEx
NkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NDgyRTM3MTE2QTY5N0IwMDNC
MDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NEIzNDk5MTAyQTVGOEUwMDMyQUI5OCAv
KiBNYXJrU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc0QjM0OTgxMDJBNUY4RTAwMzJBQjk4IC8qIE1hcmtTdGFjay5jcHAgKi87IH07CiAJ
CUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0Q0ZD
MDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAvKiBK
U0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi87IH07
CiAJCUE3NkVFNjU5MEZBRTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkVFNjU4MEZB
RTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzc5NTU5MDEwMUE3NEQ1MDAxMTRF
NTUgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzc5NTU4RjEwMUE3NEQ1MDAxMTRFNTUgLyogTWFya1N0YWNrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4MkYxQTUwRUVDOUZB
MjAwMzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzgyRjFBNDBFRUM5RkEyMDAzNjI3M0Yg
LyogRXhlY3V0YWJsZUFsbG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKQEAgLTMwMyw2ICszMDQsOSBA
QAogCQlBNzkxRUYyOTBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVGMjcwRjExRTA3OTAw
QUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCAqLzsgfTsKIAkJQTdBMUY3QUMwRjI1MkIzQzAwRTE4
NEUyIC8qIEJ5dGVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0ExRjdBQTBGMjUyQjNDMDBFMTg0RTIgLyogQnl0ZUFycmF5LmNwcCAqLzsg
fTsKIAkJQTdBMUY3QUQwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBMUY3QUIwRjI1MkIzQzAwRTE4
NEUyIC8qIEJ5dGVBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3QTZGNUY1MTE4NUE3RDIwMDkxOUY5OCAvKiBUaHVua0dlbmVyYXRvcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdBNkY1
RjQxMTg1QTdEMjAwOTE5Rjk4IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgKi87IH07CisJCUE3QUJG
MDQ4MTE4NTY3Q0MwMDEyNzNBNSAvKiBTcGVjaWFsaXplZFRodW5rSklULmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0FCRjA0NzExODU2N0NDMDAxMjcz
QTUgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oICovOyB9OworCQlBN0FCRjE1QzExODU5QTZFMDAx
MjczQTUgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0FCRjE1QjExODU5QTZFMDAxMjczQTUgLyogVGh1bmtHZW5lcmF0
b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTdCNDhGNDkwRUU4OTM2RjAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjYwRUU3NENG
QzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICovOyB9OwogCQlBN0MxRThFNDEx
MkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MxRThDODExMkU3MDFDMDBBMzdG
OTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgKi87IH07CiAJCUE3QzIyMTc4MTBDNzQ3
OTQwMEY5NzkxMyAvKiBKU1pvbWJpZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBN0MyMjE2QjEwQzc0NjlDMDBGOTc5MTMgLyogSlNab21iaWUuY3Bw
ICovOyB9OwpAQCAtODc1LDYgKzg3OSw3IEBACiAJCUE3NDgyQjdBMTE2NkNERUEwMDNCMDcxMiAv
KiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzQ4MkUzNzExNkE2OTdCMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0
TWFwUmVmSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWFr
T2JqZWN0TWFwUmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0
QjM0OTgxMDJBNUY4RTAwMzJBQjk4IC8qIE1hcmtTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VKSVQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2RUU2NTgwRkFFNTlENTAwM0YwNjlBIC8qIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVG
dW5jdGlvbldyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3OTU1OEYx
MDFBNzRENTAwMTE0RTU1IC8qIE1hcmtTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNYXJrU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4MkYx
QTQwRUVDOUZBMjAwMzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yUG9zaXgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgzLDYgKzg4OCw5IEBACiAJCUE3
OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3RSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3QTFGN0FBMEYyNTJCM0MwMEUxODRFMiAvKiBCeXRlQXJyYXku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZUFycmF5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdBMUY3QUIwRjI1MkIzQzAwRTE4NEUyIC8q
IEJ5dGVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdBNkY1RjQxMTg1QTdEMjAwOTE5Rjk4
IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUaHVua0dlbmVyYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0FCRjA0NzExODU2N0NDMDAxMjczQTUgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjaWFsaXplZFRodW5rSklULmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QUJGMTVCMTE4NTlBNkUwMDEyNzNBNSAvKiBUaHVua0dl
bmVyYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGh1bmtHZW5lcmF0
b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QjQ4REI1MEVFNzRDRkMwMERD
QkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTdCNDhEQjYwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzFFOEM4MTEyRTcwMUMwMEEzN0Y5
OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTIyMSw2ICsxMjI5LDEwIEBACiAJCQkJOTYwNjI2OTUwRkI4RUMwMjAw
OTc5OEFCIC8qIEpJVFN0dWJDYWxsLmggKi8sCiAJCQkJMTRBMjNENkMwRjRFMTlDRTAwMjNDREFE
IC8qIEpJVFN0dWJzLmNwcCAqLywKIAkJCQkxNEE2NTgxQTBGNEUzNkY0MDAwMTUwRkQgLyogSklU
U3R1YnMuaCAqLywKKwkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VK
SVQuaCAqLywKKwkJCQlBN0FCRjA0NzExODU2N0NDMDAxMjczQTUgLyogU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oICovLAorCQkJCUE3QUJGMTVCMTE4NTlBNkUwMDEyNzNBNSAvKiBUaHVua0dlbmVyYXRv
cnMuaCAqLywKKwkJCQlBN0E2RjVGNDExODVBN0QyMDA5MTlGOTggLyogVGh1bmtHZW5lcmF0b3Jz
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaml0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTIxMTIsNiArMjEyNCw5IEBACiAJCQkJQkM1RjdCQkUxMTgyM0I1OTAwNTJDMDJDIC8q
IEF0b21pY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUY3QkJGMTE4MjNCNTkwMDUyQzAyQyAv
KiBUaHJlYWRpbmdQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVGN0JDMDExODIz
QjU5MDA1MkMwMkMgLyogVGhyZWFkU2FmZVNoYXJlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc2
QzUxNzYxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggaW4gSGVhZGVycyAqLywK
KwkJCQlBN0FCRjA0ODExODU2N0NDMDAxMjczQTUgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTdBQkYxNUMxMTg1OUE2RTAwMTI3M0E1IC8qIFRodW5rR2VuZXJh
dG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTYwLDYgKzI1NzUsNyBAQAogCQkJCTg2OEJGQTE3
MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZC
OTlBQjgxMTdFMzkxRTAwREY1QTkwIC8qIFJvcGVJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMUZDNEM5MTE3RUUyODcwMDQyNTI3MiAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTdBNkY1RjUxMTg1QTdEMjAwOTE5Rjk4IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlIGIvSmF2
YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKaW5kZXggNzc0NjNmYmRjYjI5ZTk3YjYyYjVi
MDQ0YzQ4NTQ0YTBmZTY5YTRhYy4uOGNkMWVjZDVlYjc2ZGFiNGUxOGMyNmUzMTViZTZhMjFjNDE5
NzM5MCAxMDA3NTUKLS0tIGEvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKKysrIGIv
SmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTI0Nyw2ICsyNDcsMTEgQEAgc3Vi
IG91dHB1dCgpIHsKICAgICAgICAgcHJpbnQgIlxubmFtZXNwYWNlIEpTQyB7XG4iOwogICAgIH0K
ICAgICBteSAkY291bnQgPSBzY2FsYXIgQGtleXMgKyAxOworICAgIHByaW50ICIjaWYgRU5BQkxF
KEpJVClcbiI7CisgICAgcHJpbnQgIiNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikg
LCBnZW5lcmF0b3JcbiI7CisgICAgcHJpbnQgIiNlbHNlXG4iOworICAgIHByaW50ICIjZGVmaW5l
IFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpXG4iOworICAgIHByaW50ICIjZW5kaWZcbiI7CiAg
ICAgcHJpbnQgIlxuc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSAke25hbWVFbnRy
aWVzfVxbJGNvdW50XF0gPSB7XG4iOwogICAgIG15ICRpID0gMDsKICAgICBmb3JlYWNoIG15ICRr
ZXkgKEBrZXlzKSB7CkBAIC0yNjYsMTEgKzI3MSwxNiBAQCBzdWIgb3V0cHV0KCkgewogICAgICAg
ICAgICAgJGZpcnN0VmFsdWUgPSAkdmFsdWVzWyRpXXsidmFsdWUifTsKICAgICAgICAgICAgICRz
ZWNvbmRWYWx1ZSA9ICIwIjsKICAgICAgICAgfQotICAgICAgICBwcmludCAiICAgeyBcIiRrZXlc
IiwgJGF0dHJzWyRpXSwgKGludHB0cl90KSIgLiAkY2FzdFN0ciAuICIoJGZpcnN0VmFsdWUpLCAo
aW50cHRyX3QpJHNlY29uZFZhbHVlIH0sXG4iOworICAgICAgICBteSAkdGh1bmtHZW5lcmF0b3Ig
PSAiMCI7CisgICAgICAgIGlmICgka2V5IGVxICJjaGFyQ29kZUF0IikgeworICAgICAgICAgICAg
JHRodW5rR2VuZXJhdG9yID0gImNoYXJDb2RlQXRUaHVua0dlbmVyYXRvciI7CisgICAgICAgIH0K
KyAgICAgICAgcHJpbnQgIiAgIHsgXCIka2V5XCIsICRhdHRyc1skaV0sIChpbnRwdHJfdCkiIC4g
JGNhc3RTdHIgLiAiKCRmaXJzdFZhbHVlKSwgKGludHB0cl90KSRzZWNvbmRWYWx1ZSBUSFVOS19H
RU5FUkFUT1IoJHRodW5rR2VuZXJhdG9yKSB9LFxuIjsKICAgICAgICAgJGkrKzsKICAgICB9Ci0g
ICAgcHJpbnQgIiAgIHsgMCwgMCwgMCwgMCB9XG4iOworICAgIHByaW50ICIgICB7IDAsIDAsIDAs
IDAgVEhVTktfR0VORVJBVE9SKDApIH1cbiI7CiAgICAgcHJpbnQgIn07XG5cbiI7CisgICAgcHJp
bnQgIiN1bmRlZiBUSFVOS19HRU5FUkFUT1JcbiI7CiAgICAgcHJpbnQgImV4dGVybiBKU0NfQ09O
U1RfSEFTSFRBQkxFIEhhc2hUYWJsZSAkbmFtZSA9XG4iOwogICAgIHByaW50ICIgICAgXHsgJGNv
bXBhY3RTaXplLCAkY29tcGFjdEhhc2hTaXplTWFzaywgJG5hbWVFbnRyaWVzLCAwIFx9O1xuIjsK
ICAgICBwcmludCAifSAvLyBuYW1lc3BhY2VcbiI7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZTc1NzExMjYxMWQz
MTEzNWU3ZWMyZTk1MmQ2M2YxMzc3YjE0ZTUwZi4uOGU4YWVkYzdhYTZhYTQwZDEyZDQ5MWYxMGMz
NjY1NjUxNTY0MjNjZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDAsMTUgKzQwLDEwIEBACiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIkpJVENv
ZGUuaCIKLSNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCi0jaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJQcm9maWxlci5oIgogI2luY2x1ZGUgPGJ5
dGVjb2RlL1NhbXBsaW5nVG9vbC5oPgotI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNzAsMTI4ICsx
NjUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFk
ZHJlc3MoQ29kZUJsb2NrKiBjb2RlYmxvY2ssIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVz
cywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG5ld0NhbGxlZUZ1bmN0aW9uKTsKICAgICB2b2lkIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhDb2RlQmxvY2sqIGNvZGVibG9jaywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0ciBuZXdDYWxsZWVGdW5jdGlvbik7CiAK
LSAgICBjbGFzcyBKSVQgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKKyAgICBjbGFzcyBKSVQg
OiBwcml2YXRlIEpTSW50ZXJmYWNlSklUIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJD
YWxsOwogCiAgICAgICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyOjpKdW1wOwogICAgICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q7CiAgICAgICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbDsKIAotICAgICAgICAvLyBOT1RFUzoKLSAgICAgICAgLy8KLSAgICAgICAgLy8gcmVn
VDAgaGFzIHR3byBzcGVjaWFsIG1lYW5pbmdzLiAgVGhlIHJldHVybiB2YWx1ZSBmcm9tIGEgc3R1
YgotICAgICAgICAvLyBjYWxsIHdpbGwgYWx3YXlzIGJlIGluIHJlZ1QwLCBhbmQgYnkgZGVmYXVs
dCAodW5sZXNzCi0gICAgICAgIC8vIGEgcmVnaXN0ZXIgaXMgc3BlY2lmaWVkKSBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKCkgd2lsbCBzdG9yZQotICAgICAgICAvLyB0aGUgdmFsdWUgZnJvbSByZWdU
MC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gcmVnVDMgaXMgcmVxdWlyZWQgdG8gYmUgY2FsbGVl
LXByZXNlcnZlZC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gdGVtcFJlZ2lzdGVyMiBpcyBoYXMg
bm8gc3VjaCBkZXBlbmRlbmNpZXMuICBJdCBpcyBpbXBvcnRhbnQgdGhhdAotICAgICAgICAvLyBv
biB4ODYveDg2LTY0IGl0IGlzIGVjeCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgc2luY2UgdGhl
Ci0gICAgICAgIC8vIE1hY3JvQXNzZW1ibGVyIHdpbGwgbmVlZCB0byBwbGFudCByZWdpc3RlciBz
d2FwcyBpZiBpdCBpcyBub3QgLQotICAgICAgICAvLyBob3dldmVyIHRoZSBjb2RlIHdpbGwgc3Rp
bGwgZnVuY3Rpb24gY29ycmVjdGx5LgotI2lmIENQVShYODZfNjQpCi0gICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OmVheDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RB
cmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZGk7Ci0KLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMjsK
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZS
ZWdpc3RlcnM6OnIxMzsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGFnVHlwZU51
bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OwotCi0gICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVnaXN0ZXJzOjplZHg7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gWDg2UmVnaXN0ZXJzOjplY3g7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gWDg2UmVnaXN0ZXJzOjpl
Yng7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gWDg2UmVn
aXN0ZXJzOjp4bW0wOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEg
PSBYODZSZWdpc3RlcnM6OnhtbTE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQg
ZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsKLSNlbGlmIENQVShYODYpCi0gICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OmVheDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKLSAgICAgICAgLy8gT24geDg2IHdlIGFsd2F5cyB1c2Ug
ZmFzdGNhbGwgY29udmVudGlvbnMgPSBidXQgb24KLSAgICAgICAgLy8gT1MgWCBpZiBtaWdodCBt
YWtlIG1vcmUgc2Vuc2UgdG8ganVzdCB1c2UgcmVncGFybS4KLSAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplY3g7Ci0K
LSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0ZXIgPSBY
ODZSZWdpc3RlcnM6OmVzaTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZy
YW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwotICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4NlJlZ2lzdGVyczo6ZWR4OwotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IFg4NlJlZ2lzdGVyczo6ZWN4OwotICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwotCi0gICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IFg4NlJlZ2lzdGVyczo6eG1tMDsK
LSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gWDg2UmVnaXN0ZXJz
Ojp4bW0xOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBYODZS
ZWdpc3RlcnM6OnhtbTI7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJN
UmVnaXN0ZXJzOjpyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1
bWVudFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCByZWdUMCA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpyMTsKLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBBUk1SZWdpc3RlcnM6OnIyOwotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI1
OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjY7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBm
cFJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpkMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0
ZXJJRCBmcFJlZ1QxID0gQVJNUmVnaXN0ZXJzOjpkMTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmcFJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpkMjsKLSNlbGlmIENQVShBUk1fVFJB
RElUSU9OQUwpCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblZhbHVlUmVn
aXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6
cjA7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgdGltZW91dENoZWNrUmVnaXN0
ZXIgPSBBUk1SZWdpc3RlcnM6OnI1OwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBj
YWxsRnJhbWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjQ7Ci0KLSAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBBUk1SZWdpc3RlcnM6OnIwOwotICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKLSAgICAgICAgLy8g
Q2FsbGVlIHByZXNlcnZlZAotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9
IEFSTVJlZ2lzdGVyczo6cjc7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVn
UzAgPSBBUk1SZWdpc3RlcnM6OlMwOwotICAgICAgICAvLyBDYWxsZWUgcHJlc2VydmVkCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1MxID0gQVJNUmVnaXN0ZXJzOjpTMTsKLQot
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTdGFja1B0ciA9IEFSTVJlZ2lzdGVy
czo6c3A7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ0xpbmsgPSBBUk1SZWdp
c3RlcnM6OmxyOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9
IEFSTVJlZ2lzdGVyczo6ZDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBS
ZWdUMSA9IEFSTVJlZ2lzdGVyczo6ZDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVy
SUQgZnBSZWdUMiA9IEFSTVJlZ2lzdGVyczo6ZDI7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IE1JUFNSZWdpc3Rl
cnM6OnYwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKLQotICAgICAgICAv
LyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCi0gICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7Ci0KLSAg
ICAgICAgLy8gcmVnVDEgbXVzdCBiZSB2MSBmb3IgcmV0dXJuaW5nIGEgcGFpciBvZiAzMi1iaXQg
dmFsdWUuCi0gICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gTUlQU1JlZ2lz
dGVyczo6djE7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDIgPSBNSVBT
UmVnaXN0ZXJzOjp0NDsKLQotICAgICAgICAvLyByZWdUMyBtdXN0IGJlIHNhdmVkIGluIHRoZSBj
YWxsZWUsIHNvIHVzZSBhbiBTIHJlZ2lzdGVyLgotICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCByZWdUMyA9IE1JUFNSZWdpc3RlcnM6OnMyOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czA7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRpbWVvdXRDaGVja1JlZ2lzdGVyID0gTUlQU1JlZ2lz
dGVyczo6czE7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0g
TUlQU1JlZ2lzdGVyczo6ZjQ7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBS
ZWdUMSA9IE1JUFNSZWdpc3RlcnM6OmY2OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3Rl
cklEIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmODsKLSNlbHNlCi0gICAgI2Vycm9yICJKSVQg
bm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKLSNlbmRpZgotCiAgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQgcGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSA9IC0xOwogICAgICAgICAv
LyBNYWdpYyBudW1iZXIgLSBpbml0aWFsIG9mZnNldCBjYW5ub3QgYmUgcmVwcmVzZW50YWJsZSBh
cyBhIHNpZ25lZCA4Yml0IHZhbHVlLCBvciB0aGUgWDg2QXNzZW1ibGVyCiAgICAgICAgIC8vIHdp
bGwgY29tcHJlc3MgdGhlIGRpc3BsYWNlbWVudCwgYW5kIHdlIG1heSBub3QgYmUgYWJsZSB0byBm
aXQgYSBwYXRjaGVkIG9mZnNldC4KQEAgLTQwNSwxNCArMjg1LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUodW5zaWduZWQgaW5kZXgsIEZQUmVnaXN0ZXJJ
RCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKHVuc2lnbmVkIGlu
ZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogCi0gICAgICAgIEFkZHJlc3MgYWRkcmVzc0Zvcih1
bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotCiAg
ICAgICAgIHZvaWQgdGVzdFByb3RvdHlwZShTdHJ1Y3R1cmUqLCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzKTsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIEFkZHJlc3MgdGFnRm9yKHVu
c2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAg
ICAgIEFkZHJlc3MgcGF5bG9hZEZvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0g
Y2FsbEZyYW1lUmVnaXN0ZXIpOwotCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KHVuc2lnbmVkIG9wMSwgdW5zaWduZWQgb3AyLCB1bnNpZ25lZCYgb3AsIGludDMy
X3QmIGNvbnN0YW50KTsKIAogICAgICAgICB2b2lkIGVtaXRMb2FkVGFnKHVuc2lnbmVkIGluZGV4
LCBSZWdpc3RlcklEIHRhZyk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAppbmRl
eCA5NmEyZTViNzU4MDY0M2UyOWM4NWQzZGM1YjY1MmYzYmMwMzc0MzY3Li5jYTEyNzBmNDY4ZmFh
ZWNiMjhhMWZjMDBlMGQ2ZGNlZWE3ZWQ2ZTc5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVN
ZXRob2RzLmgKQEAgLTMyMywyMyArMzIzLDggQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2Ft
cGxlQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogI2VuZGlmCiAjZW5kaWYKIAotaW5s
aW5lIEpJVDo6QWRkcmVzcyBKSVQ6OmFkZHJlc3NGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVy
SUQgYmFzZSkKLXsKLSAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoaW5kZXggKiBzaXplb2YoUmVn
aXN0ZXIpKSk7Ci19Ci0KICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogCi1pbmxpbmUgSklUOjpBZGRy
ZXNzIEpJVDo6dGFnRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi17Ci0gICAg
cmV0dXJuIEFkZHJlc3MoYmFzZSwgKGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7Ci19Ci0KLWlubGluZSBKSVQ6OkFkZHJl
c3MgSklUOjpwYXlsb2FkRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi17Ci0g
ICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOwotfQotCiBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRMb2FkVGFnKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIHRhZykKIHsKICAg
ICBSZWdpc3RlcklEIG1hcHBlZFRhZzsKQEAgLTU2MCw3ICs1NDUsNyBAQCBpbmxpbmUgYm9vbCBK
SVQ6OmdldE1hcHBlZFRhZyh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJ
RCYgdGFnKQogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodW5z
aWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCiB7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bk5vdEltbWVkaWF0ZSh2aXJ0dWFsUmVnaXN0ZXJJbmRleCkpCi0gICAgICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90
SlNDZWxsKHZpcnR1YWxSZWdpc3RlckluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBS
ZWdpc3RlcklEIHRhZykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViQ2Fs
bC5oIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgKaW5kZXggY2ZiZDdkYzY4YmVm
ZDYxOGNhZTIzZmJhMjYzMWY3ODdjNmMxOWM4MC4uNzBkMjg5MzUwYmQ3Njc0NjgxYzgzMzFlZDMz
YjIwYTk5ZjA2MjVkYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxs
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgKQEAgLTExNiwxMyArMTE2
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9qaXQtPnBva2UoYXJndW1lbnQs
IG1fc3RhY2tJbmRleCk7CiAgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3RhY2tJbmRleFN0
ZXA7CiAgICAgICAgIH0KLQorICAgICAgICAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICB2b2lkIGFkZEFyZ3VtZW50KGNvbnN0IEpTVmFsdWUmIHZhbHVlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2ppdC0+cG9rZShKSVQ6OkltbTMyKHZhbHVlLnBheWxvYWQoKSksIG1fc3RhY2tJ
bmRleCk7CiAgICAgICAgICAgICBtX2ppdC0+cG9rZShKSVQ6OkltbTMyKHZhbHVlLnRhZygpKSwg
bV9zdGFja0luZGV4ICsgMSk7CiAgICAgICAgICAgICBtX3N0YWNrSW5kZXggKz0gc3RhY2tJbmRl
eFN0ZXA7CiAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgYWRkQXJndW1lbnQoSklU
OjpSZWdpc3RlcklEIHRhZywgSklUOjpSZWdpc3RlcklEIHBheWxvYWQpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGNhNDVlYTI1MzYwOTZkODI2ODhkYjk2ZjZkZjA0NGEw
OThkNTQ2YzYuLmViZDI2YmI5NzM0NGMwODk0NzM4MGVmN2ViNTUxMDIxYTBkOWRlYzEgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcApAQCAtODM4LDYgKzgzOCwxMCBAQCBKSVRUaHVua3M6OkpJVFRo
dW5rcyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAjZW5kaWYKIH0KIAorSklUVGh1bmtzOjp+
SklUVGh1bmtzKCkKK3sKK30KKwogI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfUFJPUEVSVFlfQUND
RVNTKQogCiBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlUHV0QnlJRChDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYg
c2xvdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQpAQCAtMzMwMyw2ICszMzA3LDE1IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCB0b19vYmplY3QpCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpLnRvT2JqZWN0
KGNhbGxGcmFtZSkpOwogfQogCitOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6OnNwZWNpYWxp
emVkVGh1bmsoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0
b3IpCit7CisgICAgc3RkOjpwYWlyPFRodW5rTWFwOjppdGVyYXRvciwgYm9vbD4gZW50cnkgPSBt
X3RodW5rTWFwLmFkZChnZW5lcmF0b3IsIDApOworICAgIGlmICghZW50cnkuc2Vjb25kKQorICAg
ICAgICByZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICBlbnRyeS5maXJzdC0+
c2Vjb25kID0gZ2VuZXJhdG9yKGdsb2JhbERhdGEsIG1fZXhlY3V0YWJsZVBvb2wuZ2V0KCkpOwor
ICAgIHJldHVybiBlbnRyeS5maXJzdC0+c2Vjb25kLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCmluZGV4IGY0
MTljOGNmNzdlZDUxODUyZDVmOGY1ZTA2NmY3YTdjMzI0MjRkYjYuLjRmZjZjOTgzODg1NDU4NzE0
ZTU1ZjA0YmIwZDIwOTg2MjgzMzQyZjAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0zMSw2ICsz
MSw4IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJS
ZWdpc3Rlci5oIgorI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKICNpZiBFTkFCTEUoSklUKQogCkBAIC00MywxNiArNDUsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIElkZW50
aWZpZXI7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwotICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
KyAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFz
cyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3Mg
SlNWYWx1ZUVuY29kZWRBc1BvaW50ZXI7CisgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAg
ICBjbGFzcyBQcm9maWxlcjsKICAgICBjbGFzcyBQcm9wZXJ0eVNsb3Q7CiAgICAgY2xhc3MgUHV0
UHJvcGVydHlTbG90OwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKLSAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICBjbGFzcyBSZWdFeHA7CiAKICAgICB1bmlvbiBKSVRTdHViQXJnIHsKQEAg
LTI2NSw2ICsyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKSVRUaHVua3Mgewog
ICAgIHB1YmxpYzoKICAgICAgICAgSklUVGh1bmtzKEpTR2xvYmFsRGF0YSopOworICAgICAgICB+
SklUVGh1bmtzKCk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdHJ5Q2FjaGVHZXRCeUlEKENhbGxG
cmFtZSosIENvZGVCbG9jayosIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSlNWYWx1
ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVy
dHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKTsKICAgICAgICAgc3RhdGljIHZv
aWQgdHJ5Q2FjaGVQdXRCeUlEKENhbGxGcmFtZSosIENvZGVCbG9jayosIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IFB1dFByb3BlcnR5U2xv
dCYsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyk7CkBAIC0yNzUsNyArMjc4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpTmF0aXZlQ2Fs
bFRodW5rKCkgeyByZXR1cm4gbV90cmFtcG9saW5lU3RydWN0dXJlLmN0aU5hdGl2ZUNhbGxUaHVu
azsgfQogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3RpU29mdE1vZHVsbygpIHsgcmV0
dXJuIG1fdHJhbXBvbGluZVN0cnVjdHVyZS5jdGlTb2Z0TW9kdWxvOyB9CiAKKyAgICAgICAgTmF0
aXZlRXhlY3V0YWJsZSogc3BlY2lhbGl6ZWRUaHVuayhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcik7CiAgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPFRodW5rR2VuZXJhdG9yLCBSZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4gPiBUaHVu
a01hcDsKKyAgICAgICAgVGh1bmtNYXAgbV90aHVua01hcDsKICAgICAgICAgUmVmUHRyPEV4ZWN1
dGFibGVQb29sPiBtX2V4ZWN1dGFibGVQb29sOwogCiAgICAgICAgIFRyYW1wb2xpbmVTdHJ1Y3R1
cmUgbV90cmFtcG9saW5lU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmggYi9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NGZjMGU0ZGE4OWY2OTE0N2UxMWYwZjQ3NzVlNGFkOWU1YzQ5NWU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAgLTAs
MCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKKyNkZWZp
bmUgSlNJbnRlcmZhY2VKSVRfaAorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNJbW1lZGlhdGUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgPHd0Zi9BbHdheXNJ
bmxpbmUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworICAg
IGNsYXNzIEpTSW50ZXJmYWNlSklUIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIC8vIE5PVEVTOgorICAgICAgICAvLworICAgICAgICAvLyByZWdUMCBoYXMg
dHdvIHNwZWNpYWwgbWVhbmluZ3MuICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gYSBzdHViCisgICAg
ICAgIC8vIGNhbGwgd2lsbCBhbHdheXMgYmUgaW4gcmVnVDAsIGFuZCBieSBkZWZhdWx0ICh1bmxl
c3MKKyAgICAgICAgLy8gYSByZWdpc3RlciBpcyBzcGVjaWZpZWQpIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoKSB3aWxsIHN0b3JlCisgICAgICAgIC8vIHRoZSB2YWx1ZSBmcm9tIHJlZ1QwLgorICAg
ICAgICAvLworICAgICAgICAvLyByZWdUMyBpcyByZXF1aXJlZCB0byBiZSBjYWxsZWUtcHJlc2Vy
dmVkLgorICAgICAgICAvLworICAgICAgICAvLyB0ZW1wUmVnaXN0ZXIyIGlzIGhhcyBubyBzdWNo
IGRlcGVuZGVuY2llcy4gIEl0IGlzIGltcG9ydGFudCB0aGF0CisgICAgICAgIC8vIG9uIHg4Ni94
ODYtNjQgaXQgaXMgZWN4IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBzaW5jZSB0aGUKKyAgICAg
ICAgLy8gTWFjcm9Bc3NlbWJsZXIgd2lsbCBuZWVkIHRvIHBsYW50IHJlZ2lzdGVyIHN3YXBzIGlm
IGl0IGlzIG5vdCAtCisgICAgICAgIC8vIGhvd2V2ZXIgdGhlIGNvZGUgd2lsbCBzdGlsbCBmdW5j
dGlvbiBjb3JyZWN0bHkuCisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6ZWF4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVkaTsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHRpbWVvdXRDaGVja1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTI7
CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjpyMTM7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OworICAgICAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCB0YWdNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjpl
YXg7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVnaXN0ZXJz
OjplZHg7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gWDg2UmVnaXN0
ZXJzOjplY3g7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gWDg2UmVn
aXN0ZXJzOjplYng7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklE
IGZwUmVnVDAgPSBYODZSZWdpc3RlcnM6OnhtbTA7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJl
Z2lzdGVySUQgZnBSZWdUMSA9IFg4NlJlZ2lzdGVyczo6eG1tMTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QyID0gWDg2UmVnaXN0ZXJzOjp4bW0yOworI2VsaWYgQ1BV
KFg4NikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBj
YWNoZWRSZXN1bHRSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgICAgICAvLyBPbiB4
ODYgd2UgYWx3YXlzIHVzZSBmYXN0Y2FsbCBjb252ZW50aW9ucyA9IGJ1dCBvbgorICAgICAgICAv
LyBPUyBYIGlmIG1pZ2h0IG1ha2UgbW9yZSBzZW5zZSB0byBqdXN0IHVzZSByZWdwYXJtLgorICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBYODZS
ZWdpc3RlcnM6OmVjeDsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklE
IHRpbWVvdXRDaGVja1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplc2k7CisgICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIGNhbGxGcmFtZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplZGk7
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IFg4NlJl
Z2lzdGVyczo6ZWF4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4
NlJlZ2lzdGVyczo6ZWR4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9
IFg4NlJlZ2lzdGVyczo6ZWN4OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MyA9IFg4NlJlZ2lzdGVyczo6ZWJ4OworICAgICAgICAKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UmVnaXN0ZXJJRCBmcFJlZ1QwID0gWDg2UmVnaXN0ZXJzOjp4bW0wOworICAgICAgICBzdGF0aWMg
Y29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDEgPSBYODZSZWdpc3RlcnM6OnhtbTE7CisgICAgICAg
IHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFg4NlJlZ2lzdGVyczo6eG1tMjsK
KyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBy
ZXR1cm5WYWx1ZVJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnIwOwor
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBB
Uk1SZWdpc3RlcnM6OnIwOworICAgICAgICAKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnVDAgPSBBUk1SZWdpc3RlcnM6OnIwOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0
ZXJJRCByZWdUMSA9IEFSTVJlZ2lzdGVyczo6cjE7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHJlZ1QyID0gQVJNUmVnaXN0ZXJzOjpyMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmVnVDMgPSBBUk1SZWdpc3RlcnM6OnI0OworICAgICAgICAKKyAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI1
OworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0aW1lb3V0Q2hlY2tSZWdpc3RlciA9
IEFSTVJlZ2lzdGVyczo6cjY7CisgICAgICAgIAorICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdp
c3RlcklEIGZwUmVnVDAgPSBBUk1SZWdpc3RlcnM6OmQwOworICAgICAgICBzdGF0aWMgY29uc3Qg
RlBSZWdpc3RlcklEIGZwUmVnVDEgPSBBUk1SZWdpc3RlcnM6OmQxOworICAgICAgICBzdGF0aWMg
Y29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBBUk1SZWdpc3RlcnM6OmQyOworI2VsaWYgQ1BV
KEFSTV9UUkFESVRJT05BTCkKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmV0dXJu
VmFsdWVSZWdpc3RlciA9IEFSTVJlZ2lzdGVyczo6cjA7CisgICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyMDsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gQVJNUmVn
aXN0ZXJzOjpyMDsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRp
bWVvdXRDaGVja1JlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpyNTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OnI0OworICAg
ICAgICAKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBBUk1SZWdpc3Rl
cnM6OnIwOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IEFSTVJlZ2lz
dGVyczo6cjE7CisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gQVJNUmVn
aXN0ZXJzOjpyMjsKKyAgICAgICAgLy8gQ2FsbGVlIHByZXNlcnZlZAorICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCByZWdUMyA9IEFSTVJlZ2lzdGVyczo6cjc7CisgICAgICAgIAorICAg
ICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdTMCA9IEFSTVJlZ2lzdGVyczo6UzA7Cisg
ICAgICAgIC8vIENhbGxlZSBwcmVzZXJ2ZWQKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnUzEgPSBBUk1SZWdpc3RlcnM6OlMxOworICAgICAgICAKKyAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmVnU3RhY2tQdHIgPSBBUk1SZWdpc3RlcnM6OnNwOworICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdMaW5rID0gQVJNUmVnaXN0ZXJzOjpscjsKKyAgICAg
ICAgCisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMCA9IEFSTVJlZ2lz
dGVyczo6ZDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IEFS
TVJlZ2lzdGVyczo6ZDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdU
MiA9IEFSTVJlZ2lzdGVyczo6ZDI7CisjZWxpZiBDUFUoTUlQUykKKyAgICAgICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgcmV0dXJuVmFsdWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwor
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1J
UFNSZWdpc3RlcnM6OnYwOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFy
Z3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICAgICAgCisgICAgICAgIC8v
IHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KKyAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKKyAgICAg
ICAgCisgICAgICAgIC8vIHJlZ1QxIG11c3QgYmUgdjEgZm9yIHJldHVybmluZyBhIHBhaXIgb2Yg
MzItYml0IHZhbHVlLgorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IE1J
UFNSZWdpc3RlcnM6OnYxOworICAgICAgICAKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICAgICAgCisgICAgICAgIC8vIHJlZ1Qz
IG11c3QgYmUgc2F2ZWQgaW4gdGhlIGNhbGxlZSwgc28gdXNlIGFuIFMgcmVnaXN0ZXIuCisgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6czI7Cisg
ICAgICAgIAorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWxsRnJhbWVSZWdpc3Rl
ciA9IE1JUFNSZWdpc3RlcnM6OnMwOworICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0
aW1lb3V0Q2hlY2tSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMxOworICAgICAgICAKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjQ7
CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMSA9IE1JUFNSZWdpc3Rl
cnM6OmY2OworICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgPSBNSVBT
UmVnaXN0ZXJzOjpmODsKKyNlbHNlCisjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRoaXMg
cGxhdGZvcm0uIgorI2VuZGlmCisKKyAgICAgICAgaW5saW5lIEp1bXAgZW1pdExvYWRKU0NlbGwo
dW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCk7CisgICAg
ICAgIGlubGluZSBKdW1wIGVtaXRMb2FkSW50MzIodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5k
ZXgsIFJlZ2lzdGVySUQgZHN0KTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGlu
bGluZSBKdW1wIGVtaXRKdW1wSWZOb3RKU0NlbGwodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5k
ZXgpOworICAgICAgICBpbmxpbmUgQWRkcmVzcyB0YWdGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lz
dGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyNlbmRpZgorICAgICAgICBpbmxpbmUg
QWRkcmVzcyBwYXlsb2FkRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxs
RnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGlubGluZSBBZGRyZXNzIGFkZHJlc3NGb3IodW5zaWdu
ZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICB9Owor
ICAgIAorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpK
dW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0
ZXJJbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihwYXls
b2FkRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgcGF5bG9hZCk7CisgICAgICAgIHJldHVybiBl
bWl0SnVtcElmTm90SlNDZWxsKHZpcnR1YWxSZWdpc3RlckluZGV4KTsKKyAgICB9CisKKyAgICBp
bmxpbmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RK
U0NlbGwodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCisgICAgeworICAgICAgICByZXR1
cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCksIEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIEpTSW50ZXJmYWNl
SklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxS
ZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGxvYWRQdHIocGF5
bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCksIGRzdCk7CisgICAgICAgIHJldHVybiBicmFu
Y2gzMihOb3RFcXVhbCwgdGFnRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKTsKKyAgICB9CisgICAgCisgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpB
ZGRyZXNzIEpTSW50ZXJmYWNlSklUOjp0YWdGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQg
YmFzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChpbmRleCAqIHNpemVv
ZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOwor
ICAgIH0KKyAgICAKKyAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZh
Y2VKSVQ6OnBheWxvYWRGb3IodW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChpbmRleCAqIHNpemVvZihSZWdpc3Rlcikp
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsKKyAgICB9Cisj
ZW5kaWYKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpK
dW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0
ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBsb2FkUHRyKGFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dFB0cihOb25aZXJvLCBkc3QsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgfQorICAgIAorICAgIGlu
bGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRJbnQzMih1
bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBsb2FkUHRyKGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOworICAg
ICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaFB0cihCZWxvdywgZHN0LCB0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpOworICAgICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihkc3QsIGRzdCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorI2VuZGlmCisKKyNpZiBVU0UoSlNWQUxVRTMyKQorICAgIGlu
bGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRKU0NlbGwo
dW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAg
ICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0KTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihOb25aZXJvLCBkc3QsIEltbTMyKEpTSW1tZWRpYXRl
OjpUYWdNYXNrKSk7CisgICAgfQorCisgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpT
SW50ZXJmYWNlSklUOjplbWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXJJbmRleCksIGRzdCk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoVGVz
dDMyKFplcm8sIGRzdCwgSW1tMzIoSlNJbW1lZGlhdGU6OlRhZ1R5cGVOdW1iZXIpKTsKKyAgICAg
ICAgcnNoaWZ0MzIoSW1tMzIoSlNJbW1lZGlhdGU6OkludGVnZXJQYXlsb2FkU2hpZnQpLCBkc3Qp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gICAgCisjZW5kaWYKKworI2lmICFVU0Uo
SlNWQUxVRTMyXzY0KQorICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVy
ZmFjZUpJVDo6cGF5bG9hZEZvcih1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3IoaW5kZXgsIGJhc2UpOworICAgIH0KKyNlbmRp
ZgorCisgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjph
ZGRyZXNzRm9yKHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAg
ICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKSk7CisgICAg
fQorCit9CisKKyNlbmRpZiAvLyBKU0ludGVyZmFjZUpJVF9oCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGIvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWFjYmQ5YWI2M2IzNWExMWUyZWQwYWMw
NDhiY2U2YTJjNTExMjIxCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3BlY2lhbGl6ZWRUaHVua0pJVF9oCisjZGVmaW5lIFNwZWNpYWxpemVkVGh1bmtKSVRfaAor
CisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJK
U0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKKyAgICBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUIDogcHVibGljIEpTSW50ZXJmYWNl
SklUIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgVGhpc0FyZ3VtZW50
ID0gLTE7CisgICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoaW50IGV4cGVjdGVkQXJnQ291bnQs
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVBvb2wqIHBvb2wpCisgICAgICAg
ICAgICA6IG1fZXhwZWN0ZWRBcmdDb3VudChleHBlY3RlZEFyZ0NvdW50KQorICAgICAgICAgICAg
LCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICAgICAgICAgICwgbV9wb29sKHBvb2wpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQg
bnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNo
MzIoTm90RXF1YWwsIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIFJlZ2lzdGVyRmlsZTo6QXJn
dW1lbnRDb3VudCAqIChpbnQpc2l6ZW9mKFJlZ2lzdGVyKSksIEltbTMyKGV4cGVjdGVkQXJnQ291
bnQgKyAxKSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGxvYWRDZWxsQXJn
dW1lbnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgc3JjID0gYXJndW1lbnRUb1ZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudCk7Cisg
ICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0TG9hZEpTQ2VsbChzcmMsIGRzdCkpOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGxvYWRKU1N0cmluZ0FyZ3VtZW50KGlu
dCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvYWRD
ZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCAwKSwgSW1tUHRyKG1fZ2xvYmFsRGF0
YS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNo
VGVzdDMyKE5vblplcm8sIEFkZHJlc3MoZHN0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1f
ZmliZXJDb3VudCkpKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgbG9hZElu
dDMyQXJndW1lbnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdW5zaWduZWQgc3JjID0gYXJndW1lbnRUb1ZpcnR1YWxSZWdpc3Rlcihhcmd1bWVu
dCk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChlbWl0TG9hZEludDMyKHNyYywgZHN0
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgYXBwZW5kRmFpbHVyZShjb25z
dCBKdW1wJiBmYWlsdXJlKQorICAgICAgICB7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVu
ZChmYWlsdXJlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCByZXR1cm5JbnQz
MihSZWdpc3RlcklEIHNyYykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHNyYyAhPSByZWdU
MCkKKyAgICAgICAgICAgICAgICBtb3ZlKHNyYywgcmVnVDApOworICAgICAgICAgICAgdGFnUmV0
dXJuQXNJbnQzMigpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lz
dGVyLCBSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lICogKGludClzaXplb2YoUmVnaXN0ZXIpKSwg
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICAgICAgcmV0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFBhc3NSZWZQdHI8TmF0aXZlRXhlY3V0YWJsZT4gZmluYWxpemUoKQorICAg
ICAgICB7CisgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fcG9vbC5n
ZXQoKSk7CisgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZmFpbHVyZXMsIENvZGVMb2Nh
dGlvbkxhYmVsKG1fZ2xvYmFsRGF0YS0+aml0U3R1YnMuY3RpTmF0aXZlQ2FsbFRodW5rKCkpKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShwYXRjaEJ1
ZmZlci5maW5hbGl6ZUNvZGUoKSkpOworICAgICAgICB9CisgICAgICAgIAorICAgIHByaXZhdGU6
CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50VG9WaXJ0dWFsUmVnaXN0ZXIodW5zaWduZWQgYXJn
dW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAtKFJlZ2lzdGVyRmlsZTo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSArIChtX2V4cGVjdGVkQXJnQ291bnQgLSBhcmd1bWVudCkpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCB0YWdSZXR1cm5Bc0ludDMyKCkKKyAgICAgICAgeworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBvclB0cih0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IHJlZ1QwKTsKKyNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICAgICBtb3ZlKEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSwgcmVnVDEpOworI2Vsc2UKKyAgICAgICAgICAgIHNpZ25FeHRl
bmQzMlRvUHRyKHJlZ1QwLCByZWdUMCk7CisgICAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCB0YWcg
dGhlIHJlc3VsdCwgZ2l2ZSB1cCBhbmQganVtcCB0byB0aGUgc2xvdyBjYXNlCisgICAgICAgICAg
ICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hBZGRQdHIoT3ZlcmZsb3csIHJlZ1QwLCByZWdUMCkp
OworICAgICAgICAgICAgYWRkUHRyKEltbTMyKEpTSW1tZWRpYXRlOjpUYWdUeXBlTnVtYmVyKSwg
cmVnVDApOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBtX2V4cGVj
dGVkQXJnQ291bnQ7CisgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOworICAgICAg
ICBSZWZQdHI8RXhlY3V0YWJsZVBvb2w+IG1fcG9vbDsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IG1fZmFpbHVyZXM7CisgICAgfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKKworI2VuZGlmIC8vIFNwZWNpYWxpemVkVGh1bmtKSVRfaApkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Nzg1MmFlYzFlYjNkYjZhYmNlOTlkMzU3OWRk
M2QxZWFiNjEzNWIxCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKKworI2luY2x1ZGUgIlNwZWNp
YWxpemVkVGh1bmtKSVQuaCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0Mgewor
CitzdHJ1Y3QgVGh1bmtIZWxwZXJzIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgc3RyaW5nSW1wbERh
dGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RyaW5nSW1wbCwgbV9kYXRhKTsg
fQorICAgIHN0YXRpYyB1bnNpZ25lZCBqc1N0cmluZ0xlbmd0aE9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9CisgICAgc3RhdGljIHVuc2lnbmVk
IGpzU3RyaW5nVmFsdWVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcs
IG1fdmFsdWUpOyB9Cit9OworICAgIAorUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBjaGFy
Q29kZUF0VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxl
UG9vbCogcG9vbCkKK3sKKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCgxLCBnbG9iYWxEYXRh
LCBwb29sKTsKKyAgICAKKyAgICAvLyBsb2FkIHN0cmluZworICAgIGppdC5sb2FkSlNTdHJpbmdB
cmd1bWVudChTcGVjaWFsaXplZFRodW5rSklUOjpUaGlzQXJndW1lbnQsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAvLyByZWdUMCBub3cgY29udGFpbnMgdGhpcywgYW5kIGlzIGEg
bm9uLXJvcGUgSlNTdHJpbmcqCisKKyAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDIs
IGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byBy
ZWdUMAorICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0
cmluZ1ZhbHVlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CisgICAgaml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDAsIFRodW5rSGVscGVyczo6c3RyaW5nSW1wbERhdGFPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICAvLyBsb2FkIGluZGV4CisgICAgaml0LmxvYWRJbnQz
MkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsgLy8gcmVnVDEgY29udGFp
bnMgdGhlIGluZGV4CisgICAgCisgICAgLy8gRG8gYW4gdW5zaWduZWQgY29tcGFyZSB0byBzaW11
bHRhbmVvdXNseSBmaWx0ZXIgbmVnYXRpdmUgaW5kaWNlcyBhcyB3ZWxsIGFzIGluZGljZXMgdGhh
dCBhcmUgdG9vIGxhcmdlCisgICAgaml0LmFwcGVuZEZhaWx1cmUoaml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMikpOworICAgIAorICAgIC8vIExvYWQgdGhlIGNoYXJhY3Rl
cgorICAgIGppdC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc1R3bywgMCksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKKyAgICBqaXQucmV0
dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOworICAgIHJldHVybiBqaXQuZmlu
YWxpemUoKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTJiZTQ2NTcyN2JkNDYzMjE1YWYwM2IzMjE3
ZTFhMDAzYTAzZWFmCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRodW5r
R2VuZXJhdG9yc19oCisjZGVmaW5lIFRodW5rR2VuZXJhdG9yc19oCisKKyNpZiBFTkFCTEUoSklU
KQorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworICAgIGNs
YXNzIEV4ZWN1dGFibGVQb29sOworICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKKyAgICBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOworCisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPE5hdGl2ZUV4ZWN1dGFi
bGU+ICgqVGh1bmtHZW5lcmF0b3IpKEpTR2xvYmFsRGF0YSosIEV4ZWN1dGFibGVQb29sKik7Cisg
ICAgUGFzc1JlZlB0cjxOYXRpdmVFeGVjdXRhYmxlPiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKiwgRXhlY3V0YWJsZVBvb2wqKTsKK30KKyNlbmRpZgorCisjZW5kaWYgLy8g
VGh1bmtHZW5lcmF0b3JfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBmNzRh
YmU5M2Q0NzIxYjM5ZDgzMWU3NjdkZDM4NTA5M2NkNDgxMDEyLi4yMmUwMDE5NzUxZDY3M2Y4Y2Q2
Y2IyMDM0ZmNjMzc1MTI3ZDc5N2E4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApA
QCAtODcsNiArODcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IG1faml0Q29kZSA9IEpJVENvZGUoSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKS5qaXRTdHVicy5jdGlOYXRpdmVDYWxsVGh1bmsoKSkpOwogICAgICAgICB9CisgICAgICAg
IE5hdGl2ZUV4ZWN1dGFibGUoSklUQ29kZSB0aHVuaykKKyAgICAgICAgICAgIDogRXhlY3V0YWJs
ZUJhc2UoTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9q
aXRDb2RlID0gdGh1bms7CisgICAgICAgIH0KIAogICAgICAgICB+TmF0aXZlRXhlY3V0YWJsZSgp
OwogICAgIH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBjYmE2Nzk1
NTViMGIzOTZiODc4ODZkNjUyMTM0ZjA4M2FlOTZjOGNhLi42M2E2Y2I2N2U4MmVlMzI4ZDNkOGVl
ZjgwOTM2NTFiMTc2NDVkYTkyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTU2LDYgKzU2LDIzIEBAIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oTm9uTnVsbFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiB7CiB9CiAKK0pTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwg
aW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRXhlY3V0YWJsZSogdGh1
bmssIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCisgICAgOiBCYXNlKCZleGVjLT5nbG9iYWxEYXRhKCks
IHN0cnVjdHVyZSwgbmFtZSkKKyNpZiBFTkFCTEUoSklUKQorICAgICwgbV9leGVjdXRhYmxlKHRo
dW5rKQorI2VuZGlmCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzZXROYXRpdmVGdW5jdGlvbihm
dW5jKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoZXhlYywgbGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0odGh1bmspOworICAgIFVOVVNFRF9QQVJBTShsZW5ndGgpOwor
ICAgIFVOVVNFRF9QQVJBTShmdW5jKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRp
ZgorfQorCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCiAgICAgOiBCYXNlKCZleGVjLT5nbG9iYWxE
YXRhKCksIHN0cnVjdHVyZSwgbmFtZSkKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAppbmRleCBhZmEyNGE4YmU4MzU2ZDIwMzQ4MDBlYjBkMzUwZjIyODlkNjFh
ZTk0Li4zMDFiOTA4MTE3YjU1MDQ0NWE2NmM3ZTk3NDIyZmVhMDRiMDlkZTViIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKIAog
ICAgIGNsYXNzIEpTRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC00Miw2ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgcHVibGljOgogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIE5vbk51bGxQYXNzUmVm
UHRyPFN0cnVjdHVyZT4sIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5j
dGlvbik7CisgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9uTnVsbFBhc3NSZWZQdHI8
U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBOYXRpdmVGdW5jdGlvbik7CiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgTm9u
TnVsbFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiwgU2NvcGVDaGFpbk5vZGUqKTsKICAg
ICAgICAgdmlydHVhbCB+SlNGdW5jdGlvbigpOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAppbmRleCA5YjA2ODQ1Y2FlZmNlMGU3YjBmMGQ4ZDVlODU3YTdjMDQzZmNiNWI5Li44
MzVmZDUxOGYyNjE3ZGZmZWQ2NTc3MzNiZmQ4MDNmN2U5ZDEwOGY0IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTE3MSw2ICsxNzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICBKSVRUaHVua3Mgaml0U3R1YnM7CisgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGdldFRo
dW5rKFRodW5rR2VuZXJhdG9yIGdlbmVyYXRvcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGppdFN0dWJzLnNwZWNpYWxpemVkVGh1bmsodGhpcywgZ2VuZXJhdG9yKTsKKyAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIFRpbWVvdXRDaGVja2VyIHRpbWVvdXRDaGVja2VyOwogICAgICAg
ICBUZXJtaW5hdG9yIHRlcm1pbmF0b3I7CkBAIC0yMjAsNyArMjI0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFs
KCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKICAgICB9OwotICAgIAorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTR2xvYmFsRGF0YV9oCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW1tZWRpYXRlLmggYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW1tZWRpYXRlLmgKaW5kZXggMGY1NGY2MDA4ZWI1OTFhOGMzMjg5ZmJhNjVjM2I5
Nzg3NDJlOTQ2Zi4uNjk5YzRjY2QxZGYzZGIwYjI2YjE2NzRlZjU2ZWI5ZDhiMTM4MjVjMSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ltbWVkaWF0ZS5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNJbW1lZGlhdGUuaApAQCAtMTM0LDggKzEzNCwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0ltbWVkaWF0ZSB7CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpTSW50ZXJmYWNlSklU
OwogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpT
RmFzdE1hdGg7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTcGVjaWFsaXplZFRodW5rSklUOwogICAg
ICAgICBmcmllbmQgSlNWYWx1ZSBqc051bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSBkKTsK
ICAgICAgICAgZnJpZW5kIEpTVmFsdWUganNOdW1iZXIoRXhlY1N0YXRlKiwgY2hhciBpKTsKICAg
ICAgICAgZnJpZW5kIEpTVmFsdWUganNOdW1iZXIoRXhlY1N0YXRlKiwgdW5zaWduZWQgY2hhciBp
KTsKQEAgLTE2NCw3ICsxNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gVGhpcyB2
YWx1ZSBpcyAyXjQ4LCB1c2VkIHRvIGVuY29kZSBkb3VibGVzIHN1Y2ggdGhhdCB0aGUgZW5jb2Rl
ZCB2YWx1ZSB3aWxsIGJlZ2luCiAgICAgICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVybiB3aXRo
aW4gdGhlIHJhbmdlIDB4MDAwMS4uMHhGRkZFLgogICAgICAgICBzdGF0aWMgY29uc3QgaW50cHRy
X3QgRG91YmxlRW5jb2RlT2Zmc2V0ID0gMHgxMDAwMDAwMDAwMDAwbGw7Ci0jZWxzZQorI2VsaWYg
VVNFKEpTVkFMVUUzMikKICAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IFRhZ1R5cGVOdW1i
ZXIgPSAweDE7IC8vIGJvdHRvbSBiaXQgc2V0IGluZGljYXRlcyBpbnRlZ2VyLCB0aGlzIGRvbWlu
YXRlcyB0aGUgZm9sbG93aW5nIGJpdAogI2VuZGlmCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnRw
dHJfdCBUYWdCaXRUeXBlT3RoZXIgICA9IDB4MjsgLy8gc2Vjb25kIGJpdCBzZXQgaW5kaWNhdGVz
IGltbWVkaWF0ZSBvdGhlciB0aGFuIGFuIGludGVnZXIKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAppbmRleCBiMWRjY2ZhYWNlNzUzMWYzZGM4NWRhN2I3NWJkODZlZDQyMzRiNzU1Li44NWQzYzhl
ZDA4MjRiN2JhOTEwMWJlYjk4Mjg3YTc3MjYzOGVhYmQzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCkBAIC02Niw2ICs2Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0
YTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQ7CisgICAgICAgIGZy
aWVuZCBzdHJ1Y3QgVGh1bmtIZWxwZXJzOwogCiAgICAgICAgIGNsYXNzIFJvcGVCdWlsZGVyIHsK
ICAgICAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAppbmRleCBiMzdhZGMwZWM0
MzM0OGM2YTJkYjA0ZWRiYWU5Yzc2ZWQ2OTdjMDYxLi5iY2Y4MmVlYWI5YWI1YjgzMjIwMjc0N2U5
NWExMTYzN2ZhMzBmMjg4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApAQCAtNjYsNiArNjYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVFN0dWJzOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUU3R1YkNhbGw7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0ludGVyZmFjZUpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFNwZWNpYWxpemVkVGh1bmtKSVQ7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGUoSlNWYWx1ZSB2YWx1ZSk7CkBAIC0yMTQsNiArMjE2LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVj
U3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNPYmplY3QqIHRvVGhpc09iamVjdFNsb3dDYXNlKEV4
ZWNTdGF0ZSopIGNvbnN0OwogCisgICAgICAgIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBl
KEV4ZWNTdGF0ZSopIGNvbnN0OworICAgICAgICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChF
eGVjU3RhdGUqKSBjb25zdDsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGVudW0g
eyBJbnQzMlRhZyA9ICAgICAgICAweGZmZmZmZmZmIH07CiAgICAgICAgIGVudW0geyBDZWxsVGFn
ID0gICAgICAgICAweGZmZmZmZmZlIH07CiAgICAgICAgIGVudW0geyBUcnVlVGFnID0gICAgICAg
ICAweGZmZmZmZmZkIH07CkBAIC0yMjIsMTYgKzIyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgZW51bSB7IFVuZGVmaW5lZFRhZyA9ICAgIDB4ZmZmZmZmZmEgfTsKICAgICAgICAgZW51
bSB7IEVtcHR5VmFsdWVUYWcgPSAgIDB4ZmZmZmZmZjkgfTsKICAgICAgICAgZW51bSB7IERlbGV0
ZWRWYWx1ZVRhZyA9IDB4ZmZmZmZmZjggfTsKLQorICAgICAgICAKICAgICAgICAgZW51bSB7IExv
d2VzdFRhZyA9ICBEZWxldGVkVmFsdWVUYWcgfTsKLQorICAgICAgICAKICAgICAgICAgdWludDMy
X3QgdGFnKCkgY29uc3Q7CiAgICAgICAgIGludDMyX3QgcGF5bG9hZCgpIGNvbnN0OwogCi0gICAg
ICAgIEpTT2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OwotICAg
ICAgICBKU09iamVjdCogc3ludGhlc2l6ZU9iamVjdChFeGVjU3RhdGUqKSBjb25zdDsKLQotI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIEVuY29kZWRK
U1ZhbHVlIGFzRW5jb2RlZEpTVmFsdWU7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggNGU5ZTA4NjAyOTE0NzIxY2ZkZDJlMDVlNmRk
MzNjNmFmNGUwNmJlNS4uMDA0MmU0ZDNlYjRkYzU5ODU2ZDczYzg3N2VkNTk4YjA4NmRjMzRkYSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNDYsNyArNDYsMTEgQEAgdm9pZCBIYXNo
VGFibGU6OmNyZWF0ZVRhYmxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgY29uc3QKICAgICAg
ICAgICAgIGVudHJ5ID0gZW50cnktPm5leHQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGVudHJ5
LT5pbml0aWFsaXplKGlkZW50aWZpZXIsIHZhbHVlc1tpXS5hdHRyaWJ1dGVzLCB2YWx1ZXNbaV0u
dmFsdWUxLCB2YWx1ZXNbaV0udmFsdWUyKTsKKyAgICAgICAgZW50cnktPmluaXRpYWxpemUoaWRl
bnRpZmllciwgdmFsdWVzW2ldLmF0dHJpYnV0ZXMsIHZhbHVlc1tpXS52YWx1ZTEsIHZhbHVlc1tp
XS52YWx1ZTIKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAsIHZh
bHVlc1tpXS5nZW5lcmF0b3IKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgIH0KICAgICB0YWJsZSA9IGVudHJpZXM7CiB9CkBAIC03MCw3ICs3NCwxMyBAQCB2b2lkIHNl
dFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBl
bnRyeSwgSlNPYmplY3QqCiAgICAgSlNWYWx1ZSogbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJl
Y3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwogCiAgICAgaWYgKCFsb2NhdGlvbikgewotICAgICAg
ICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUoKSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uKCkpOworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbjsKKyNp
ZiBFTkFCTEUoSklUKQorICAgICAgICBpZiAoZW50cnktPmdlbmVyYXRvcigpKQorICAgICAgICAg
ICAgZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIGVu
dHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmdsb2JhbERhdGEoKS5n
ZXRUaHVuayhlbnRyeS0+Z2VuZXJhdG9yKCkpLCBlbnRyeS0+ZnVuY3Rpb24oKSk7CisgICAgICAg
IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlcihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5h
bWUsIGVudHJ5LT5mdW5jdGlvbigpKTsKIAogICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RGdW5j
dGlvbihwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKICAgICAg
ICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKaW5kZXggOTk1YWVlZTBlNGYzNmU2YTg4MDYyM2Y1NDhhMjAy
NzY0OWJkZWJiOS4uZGQzNjQwMDYyMjQyNGI1MTgyNmU0NTI3MTgwMDZmZjQxYzM4ZTZmYyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0zNywxMyArMzcsMTUgQEAKICNlbmRpZgogCiBuYW1l
c3BhY2UgSlNDIHsKLQogICAgIC8vIEhhc2ggdGFibGUgZ2VuZXJhdGVkIGJ5IHRoZSBjcmVhdGVf
aGFzaF90YWJsZSBzY3JpcHQuCiAgICAgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHsKICAgICAgICAg
Y29uc3QgY2hhcioga2V5OyAvLyBwcm9wZXJ0eSBuYW1lCiAgICAgICAgIHVuc2lnbmVkIGNoYXIg
YXR0cmlidXRlczsgLy8gSlNPYmplY3QgYXR0cmlidXRlcwogICAgICAgICBpbnRwdHJfdCB2YWx1
ZTE7CiAgICAgICAgIGludHB0cl90IHZhbHVlMjsKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICBU
aHVua0dlbmVyYXRvciBnZW5lcmF0b3I7CisjZW5kaWYKICAgICB9OwogCiAgICAgLy8gRklYTUU6
IFRoZXJlIGlzIG5vIHJlYXNvbiB0aGlzIGdldCBmdW5jdGlvbiBjYW4ndCBiZSBzaW1wbGVyLgpA
QCAtNTMsMTIgKzU1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGFzaEVudHJ5
IDogcHVibGljIEZhc3RBbGxvY0Jhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCBpbml0
aWFsaXplKFVTdHJpbmc6OlJlcCoga2V5LCB1bnNpZ25lZCBjaGFyIGF0dHJpYnV0ZXMsIGludHB0
cl90IHYxLCBpbnRwdHJfdCB2MikKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKFVTdHJpbmc6OlJl
cCoga2V5LCB1bnNpZ25lZCBjaGFyIGF0dHJpYnV0ZXMsIGludHB0cl90IHYxLCBpbnRwdHJfdCB2
MgorI2lmIEVOQUJMRShKSVQpCisgICAgICAgICAgICAgICAgICAgICAgICAsIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvciA9IDAKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgKQogICAg
ICAgICB7CiAgICAgICAgICAgICBtX2tleSA9IGtleTsKICAgICAgICAgICAgIG1fYXR0cmlidXRl
cyA9IGF0dHJpYnV0ZXM7CiAgICAgICAgICAgICBtX3Uuc3RvcmUudmFsdWUxID0gdjE7CiAgICAg
ICAgICAgICBtX3Uuc3RvcmUudmFsdWUyID0gdjI7CisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
ICAgIG1fdS5mdW5jdGlvbi5nZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisjZW5kaWYKICAgICAgICAg
ICAgIG1fbmV4dCA9IDA7CiAgICAgICAgIH0KIApAQCAtNjcsNiArNzYsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBjaGFyIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXM7IH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgICAgIFRodW5rR2VuZXJh
dG9yIGdlbmVyYXRvcigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9uKTsg
cmV0dXJuIG1fdS5mdW5jdGlvbi5nZW5lcmF0b3I7IH0KKyNlbmRpZgogICAgICAgICBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbigpIGNvbnN0IHsgQVNTRVJUKG1fYXR0cmlidXRlcyAmIEZ1bmN0aW9u
KTsgcmV0dXJuIG1fdS5mdW5jdGlvbi5mdW5jdGlvblZhbHVlOyB9CiAgICAgICAgIHVuc2lnbmVk
IGNoYXIgZnVuY3Rpb25MZW5ndGgoKSBjb25zdCB7IEFTU0VSVChtX2F0dHJpYnV0ZXMgJiBGdW5j
dGlvbik7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3UuZnVuY3Rpb24ubGVu
Z3RoKTsgfQogCkBAIC05MCw2ICsxMDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25WYWx1ZTsK
ICAgICAgICAgICAgICAgICBpbnRwdHJfdCBsZW5ndGg7IC8vIG51bWJlciBvZiBhcmd1bWVudHMg
Zm9yIGZ1bmN0aW9uCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgICAgICAgICBUaHVua0dlbmVy
YXRvciBnZW5lcmF0b3I7CisjZW5kaWYKICAgICAgICAgICAgIH0gZnVuY3Rpb247CiAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIEdldEZ1bmN0aW9uIGdldDsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAzZGJhNmU4YjZjNTJjYzVlMmM3YmVhYzk2NDFh
YWM4ZjE0ZDVhNWU2Li4wNDQ5MjQzOGE2NWJjZjQ1YmYyMmQwNjI0MzNkZTI3YzQyZDY3ODk4IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC01MCw2ICs1MCwxMCBAQCBzdHJ1
Y3QgSGFzaEFuZENoYXJhY3RlcnNUcmFuc2xhdG9yOwogCiB9CiAKK25hbWVzcGFjZSBKU0Mgewor
c3RydWN0IFRodW5rSGVscGVyczsKK30KKwogLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkg
bGF5ZXJpbmcgdmlvbGF0aW9uIHdoaWxlIHdlIG1vdmUgc3RyaW5nIGNvZGUgdG8gV1RGLgogLy8g
TGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGgg
cGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02OCw2ICs3Miw3IEBAIGNsYXNzIFN0cmluZ0ltcGwgOiBwdWJsaWMgU3RyaW5nSW1wbEJhc2Ug
ewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpDU3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RG
OjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7CisgICAgZnJpZW5kIHN0cnVjdCBKU0M6OlRo
dW5rSGVscGVyczsKIHByaXZhdGU6CiAgICAgLy8gVXNlZCB0byBjb25zdHJ1Y3Qgc3RhdGljIHN0
cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCByZWZDb3VudCB0aGF0IGNhbiBuZXZlciBoaXQg
emVyby4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0YXRpYyBzdHJpbmcgd2lsbCBuZXZl
ciBiZSBkZXN0cm95ZWQsIHdoaWNoIGlzIGltcG9ydGFudCBiZWNhdXNlCkBAIC0zMjAsNyArMzI1
LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBCdWZmZXJPd25lcnNoaXAgYnVmZmVyT3duZXJzaGlw
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QnVmZmVyT3duZXJzaGlwPihtX3JlZkNvdW50
QW5kRmxhZ3MgJiBzX3JlZkNvdW50TWFza0J1ZmZlck93bmVyc2hpcCk7IH0KICAgICBib29sIGlz
U3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9yZWZDb3VudEFuZEZsYWdzICYgc19yZWZDb3VudEZs
YWdTdGF0aWM7IH0KLQogICAgIGNvbnN0IFVDaGFyKiBtX2RhdGE7CiAgICAgdW5pb24gewogICAg
ICAgICB2b2lkKiBtX2J1ZmZlcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzBkYTk4ZWI0MGYwY2ZlM2EzNWMxMGQyOGMzOGRiNzMxZjM3
ZjlkYy4uY2EzZTk5Mjg3NGJkNDIzYjYyMzEzMzA0MzhlNTljYmZjMDA0NzdiYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wNC0yNiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgdG8gc3VwcG9y
dCBtb3JlIGVmZmljaWVudCBkaXNwYXRjaCBvZiBsaWdodHdlaWdodCBidWlsdGlucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxNTUKKworICAgICAg
ICBVcGRhdGUgYmluZGluZ3MgZ2VuZXJhdGlvbiB0byBpbmNsdWRlIG5ldyB0aHVuayBnZW5lcmF0
b3IgZmllbGQKKyAgICAgICAgaW4gdGhlIHByb3BlcnR5IG1hcCBoYXNoIHRhYmxlcy4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorCiAyMDEwLTA0LTI2
ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCBjOTYzZTkyYzc4ZjY3MzRkYWM2OWE0YzFiMWQxOGM3N2IxNjI2ZWM1Li4zY2Mz
Y2M1ZDIzMzUwMjQ2ZDZiODNhNTkyZWVlYjk3MWJjOGYyNjM2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIxODYsNiArMjE4NiwxMSBAQCB0YWJs
ZVNpemVMb29wOgogCiAgICAgIyBEdW1wIHRoZSBoYXNoIHRhYmxlCiAgICAgbXkgJGNvdW50ID0g
c2NhbGFyIEB7JGtleXN9ICsgMTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUo
SklUKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZGVmaW5lIFRIVU5LX0dFTkVSQVRP
UihnZW5lcmF0b3IpICwgZ2VuZXJhdG9yXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNl
bHNlXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNkZWZpbmUgVEhVTktfR0VORVJBVE9S
KGdlbmVyYXRvcilcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlICRuYW1l
RW50cmllc1xbJGNvdW50XF0gPVxuXHtcbiIpOwogICAgICRpID0gMDsKICAgICBmb3JlYWNoIG15
ICRrZXkgKEB7JGtleXN9KSB7CkBAIC0yMjA1LDE0ICsyMjEwLDE1IEBAIHRhYmxlU2l6ZUxvb3A6
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkdGFyZ2V0VHlwZSA9ICJzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4iOwogICAgICAgICB9Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHsgXCIka2V5XCIsIEAkc3BlY2lhbHNbJGldLCAoaW50cHRyX3Qp
IiAuICR0YXJnZXRUeXBlIC4gIihAJHZhbHVlMVskaV0pLCAoaW50cHRyX3QpQCR2YWx1ZTJbJGld
IH0sXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgeyBcIiRrZXlcIiwgQCRz
cGVjaWFsc1skaV0sIChpbnRwdHJfdCkiIC4gJHRhcmdldFR5cGUgLiAiKEAkdmFsdWUxWyRpXSks
IChpbnRwdHJfdClAJHZhbHVlMlskaV0gVEhVTktfR0VORVJBVE9SKDApIH0sXG4iKTsKICAgICAg
ICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZW5kaWZcbiIpOwogICAgICAgICB9CiAgICAgICAgICsrJGk7CiAgICAgfQotICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHsgMCwgMCwgMCwgMCB9XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB7IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9SKDApIH1cbiIpOwogICAgIHB1c2go
QGltcGxDb250ZW50LCAifTtcblxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIjdW5kZWYg
VEhVTktfR0VORVJBVE9SXG4iKTsKICAgICBteSAkcGVyZmVjdFNpemVNYXNrID0gJHBlcmZlY3RT
aXplIC0gMTsKICAgICBteSAkY29tcGFjdFNpemVNYXNrID0gJG51bUVudHJpZXMgLSAxOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxl
ICRuYW1lID1cbiIpOwo=
</data>
<flag name="review"
          id="38320"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>