<?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>220412</bug_id>
          
          <creation_ts>2021-01-07 06:46:12 -0800</creation_ts>
          <short_desc>[JSC] Implement a B3::ValueRep replacement for wasm-llint</short_desc>
          <delta_ts>2021-01-14 14:48:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220365</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717937</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-07 06:46:12 -0800</bug_when>
    <thetext>This is used unconditionally by WebAssembly (even at the interpreter level), so we need to move it somewhere else if we want a B3-less implementation. It&apos;s a self-contained class mostly tasked with representing how a value is laid out. See bug #220365.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717938</commentid>
    <comment_count>1</comment_count>
      <attachid>417175</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-07 06:49:44 -0800</bug_when>
    <thetext>Created attachment 417175
WIP patch.

WIP.

A couple things:
- There&apos;s a node type in DFG also named ValueRep. In some cases I had to add extra namespace information to avoid ambiguities.
- See the changed comment in ValueRep.h wrt ValueRecovery. It seems to me we could try to create a class that could be used by the wasm code using ValueRep, either based on ValueRecovery or merging bits from both. In any case probably moving stuff to bytecode/ first is a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717993</commentid>
    <comment_count>2</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-07 10:36:49 -0800</bug_when>
    <thetext>After some talk today offline we&apos;ll try to come up with a class that WasmCallingConvention can use just for its needs, to remove the B3::ValueRep dependency on LLInt code. Possibly will need o translator to B3::ValueRep for the B3/Air generators in wasm/, but that should be simple? We&apos;ll see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718985</commentid>
    <comment_count>3</comment_count>
      <attachid>417453</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-12 07:01:43 -0800</bug_when>
    <thetext>Created attachment 417453
WIP patch.

New WIP patch.

This just takes B3::ValueRep, removes everything that Wasm/LLInt does not use (most of it), renames it to WasmValueLocation and uses it where needed. I added a method to convert a WasmValueLocation to a B3::ValueRep and use it in the B3/Air generators, which actually do need to use the full B3::ValueRep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719060</commentid>
    <comment_count>4</comment_count>
      <attachid>417453</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-01-12 10:59:19 -0800</bug_when>
    <thetext>Comment on attachment 417453
WIP patch.

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

&gt; Source/JavaScriptCore/wasm/WasmValueLocation.h:65
&gt; +    static ValueLocation stack(intptr_t offsetFromFP)

do we really need this and stackArgument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719230</commentid>
    <comment_count>5</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-13 01:43:49 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #4)
&gt; Comment on attachment 417453 [details]
&gt; WIP patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=417453&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmValueLocation.h:65
&gt; &gt; +    static ValueLocation stack(intptr_t offsetFromFP)
&gt; 
&gt; do we really need this and stackArgument?

All three &apos;kinds&apos; left in the class (reg, stack, stackArgument) are used in WasmCallingConvention (see marshallLocationImpl), if that&apos;s what you are asking. If you mean whether the class *really* needs that, not sure. The code seems sensible enough, but it&apos;s the first time I work on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719584</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-14 06:47:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73196482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719601</commentid>
    <comment_count>7</comment_count>
      <attachid>417624</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-14 08:29:57 -0800</bug_when>
    <thetext>Created attachment 417624
WasmValueLocation, v1

v1, add the Mac build bits and fill in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719603</commentid>
    <comment_count>8</comment_count>
      <attachid>417625</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-14 08:35:21 -0800</bug_when>
    <thetext>Created attachment 417625
WasmValueLocation, v2

v2, try again with the Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719605</commentid>
    <comment_count>9</comment_count>
      <attachid>417626</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-01-14 08:41:35 -0800</bug_when>
    <thetext>Created attachment 417626
WasmValueLocation, v3

v3, try to fix the Watch build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719704</commentid>
    <comment_count>10</comment_count>
      <attachid>417626</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-14 14:44:19 -0800</bug_when>
    <thetext>Comment on attachment 417626
WasmValueLocation, v3

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719708</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-14 14:48:47 -0800</bug_when>
    <thetext>Committed r271500: &lt;https://trac.webkit.org/changeset/271500&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417626.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417175</attachid>
            <date>2021-01-07 06:49:44 -0800</date>
            <delta_ts>2021-01-12 07:01:43 -0800</delta_ts>
            <desc>WIP patch.</desc>
            <filename>0001-JSC-Move-B3-ValueRep-to-bytecode.patch</filename>
            <type>text/plain</type>
            <size>40269</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzZDZhZGRiY2U1MzkzNzVjODJmZGFjYzU5YmMyNTI4YTJiNDJlZDgzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVGh1LCA3IEphbiAyMDIxIDEyOjUzOjI4ICswMTAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gTW92ZSBCMzo6VmFsdWVSZXAgdG8gYnl0ZWNvZGUvCiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNDEyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiogU291cmNlcy50eHQ6CiogYjMvQjNDb25zdHJhaW5lZFZhbHVlLmg6CiogYjMvQjNT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMuaDoKKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5oOgoqIGIz
L0IzU3RhY2ttYXBWYWx1ZS5oOgoqIGIzL2Fpci90ZXN0YWlyLmNwcDoKKiBieXRlY29kZS9WYWx1
ZVJlcC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJl
cC5jcHAuCihKU0M6OlZhbHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8gY29uc3QpOgooSlNDOjpW
YWx1ZVJlcDo6dXNlZFJlZ2lzdGVycyBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjpkdW1wIGNvbnN0
KToKKEpTQzo6VmFsdWVSZXA6OmVtaXRSZXN0b3JlIGNvbnN0KToKKEpTQzo6VmFsdWVSZXA6OnJl
Y292ZXJ5Rm9ySlNWYWx1ZSBjb25zdCk6CihXVEY6OnByaW50SW50ZXJuYWwpOgoqIGJ5dGVjb2Rl
L1ZhbHVlUmVwLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZVJlcC5oLgooSlNDOjpWYWx1ZVJlcDo6VmFsdWVSZXApOgooSlNDOjpWYWx1ZVJlcDo6cmVnKToK
KEpTQzo6VmFsdWVSZXA6OmxhdGVSZWcpOgooSlNDOjpWYWx1ZVJlcDo6c3RhY2spOgooSlNDOjpW
YWx1ZVJlcDo6c3RhY2tBcmd1bWVudCk6CihKU0M6OlZhbHVlUmVwOjpjb25zdGFudCk6CihKU0M6
OlZhbHVlUmVwOjpjb25zdGFudERvdWJsZSk6CihKU0M6OlZhbHVlUmVwOjpjb25zdGFudEZsb2F0
KToKKEpTQzo6VmFsdWVSZXA6OmtpbmQgY29uc3QpOgooSlNDOjpWYWx1ZVJlcDo6b3BlcmF0b3I9
PSBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjpvcGVyYXRvciE9IGNvbnN0KToKKEpTQzo6VmFsdWVS
ZXA6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgooSlNDOjpWYWx1ZVJlcDo6aXNBbnkgY29uc3QpOgoo
SlNDOjpWYWx1ZVJlcDo6aXNSZWcgY29uc3QpOgooSlNDOjpWYWx1ZVJlcDo6cmVnIGNvbnN0KToK
KEpTQzo6VmFsdWVSZXA6OmlzR1BSIGNvbnN0KToKKEpTQzo6VmFsdWVSZXA6OmlzRlBSIGNvbnN0
KToKKEpTQzo6VmFsdWVSZXA6OmdwciBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjpmcHIgY29uc3Qp
OgooSlNDOjpWYWx1ZVJlcDo6aXNTdGFjayBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjpvZmZzZXRG
cm9tRlAgY29uc3QpOgooSlNDOjpWYWx1ZVJlcDo6aXNTdGFja0FyZ3VtZW50IGNvbnN0KToKKEpT
Qzo6VmFsdWVSZXA6Om9mZnNldEZyb21TUCBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjppc0NvbnN0
YW50IGNvbnN0KToKKEpTQzo6VmFsdWVSZXA6OnZhbHVlIGNvbnN0KToKKEpTQzo6VmFsdWVSZXA6
OmRvdWJsZVZhbHVlIGNvbnN0KToKKEpTQzo6VmFsdWVSZXA6OmZsb2F0VmFsdWUgY29uc3QpOgoo
SlNDOjpWYWx1ZVJlcDo6d2l0aE9mZnNldCBjb25zdCk6CihKU0M6OlZhbHVlUmVwOjp1c2VkUmVn
aXN0ZXJzKToKKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKEpTQzo6RlRMOjpjYW5Db21waWxl
KToKKiBmdGwvRlRMTG9jYXRpb24uY3BwOgoqIGZ0bC9GVExMb2NhdGlvbi5oOgoqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgooSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3
VHlwZWRBcnJheSk6CihKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JD
b25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3MpOgooSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojp1bnRhZ0FycmF5UHRyKToKKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FnZWQpOgoo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkb3VibGVUb0ludDMyKToKKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6bGF6eVNsb3dQYXRoKToKKiBmdGwvRlRMT1NSRXhpdC5oOgoqIGZ0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgooSlNDOjpGVEw6OmNvbXBpbGVSZWNvdmVyeSk6Ciog
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgooSlNDOjpXYXNtOjpDb25zdHJhaW5lZFRtcDo6
Q29uc3RyYWluZWRUbXApOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNocG9p
bnQpOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IpOgooSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6CihKU0M6Oldhc206OkFp
cklSR2VuZXJhdG9yOjphZGRSZXR1cm4pOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRk
Q2FsbCk6Ciogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CihKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IpOgooSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZXR1
cm4pOgoqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmg6CihKU0M6Oldhc206OkNhbGxJbmZv
cm1hdGlvbjo6Y29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KToKKiB3YXNtL1dhc21PU1JFbnRyeURh
dGEuaDoKKEpTQzo6V2FzbTo6T1NSRW50cnlWYWx1ZTo6T1NSRW50cnlWYWx1ZSk6Ciogd2FzbS9X
YXNtT3BlcmF0aW9ucy5jcHA6CihKU0M6Oldhc206OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
Ciogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CihKU0M6Oldhc206Om1hcnNoYWxsSlNSZXN1bHQpOgot
LS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8IDg0ICsr
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCAgICAg
ICAgICAgICB8ICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZh
bHVlLmggfCAgMiArLQogLi4uL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggICAgICAg
ICAgIHwgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5o
ICB8ICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmggICAg
fCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcCAgICAgIHwg
MTIgKy0tCiAuLi4vQjNWYWx1ZVJlcC5jcHAgPT4gYnl0ZWNvZGUvVmFsdWVSZXAuY3BwfSAgfCAx
MiArLS0KIC4uLi97YjMvQjNWYWx1ZVJlcC5oID0+IGJ5dGVjb2RlL1ZhbHVlUmVwLmh9ICB8IDQw
ICsrKystLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
IHwgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uY3BwICAgICB8
ICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmggICAgICAgfCAg
NCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIHwgMjQg
KysrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXQuaCAgICAgICAgfCAg
NCArLQogLi4uL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwIHwgIDIg
Ky0KIC4uLi93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8IDMyICsr
Ky0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCB8ICA0
ICstCiAuLi4vd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgNCAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5RGF0YS5oIHwgIDggKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCB8ICAyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgICAgfCAgNCArLQogMjEg
ZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygtKQogcmVuYW1l
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS97YjMvQjNWYWx1ZVJlcC5jcHAgPT4gYnl0ZWNvZGUvVmFs
dWVSZXAuY3BwfSAoOTclKQogcmVuYW1lIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS97YjMvQjNWYWx1
ZVJlcC5oID0+IGJ5dGVjb2RlL1ZhbHVlUmVwLmh9ICg4OCUpCgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKaW5kZXggNTRmM2U0MTZlMTFiLi40YTAyMDExMmQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDIxLTAxLTA3ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlh
LmNvbT4KKworICAgICAgICBbSlNDXSBNb3ZlIEIzOjpWYWx1ZVJlcCB0byBieXRlY29kZS8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogYjMvQjNDb25zdHJhaW5lZFZhbHVlLmg6CisgICAgICAgICogYjMvQjNT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMuaDoKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lh
bC5oOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBWYWx1ZS5oOgorICAgICAgICAqIGIzL2Fpci90
ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9WYWx1ZVJlcC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAuCisgICAgICAgIChKU0M6
OlZhbHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpWYWx1
ZVJlcDo6dXNlZFJlZ2lzdGVycyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVwOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmVtaXRSZXN0b3JlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VmFsdWVSZXA6OnJlY292ZXJ5Rm9ySlNWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVwLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oLgorICAgICAg
ICAoSlNDOjpWYWx1ZVJlcDo6VmFsdWVSZXApOgorICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6cmVn
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmxhdGVSZWcpOgorICAgICAgICAoSlNDOjpWYWx1
ZVJlcDo6c3RhY2spOgorICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudCk6Cisg
ICAgICAgIChKU0M6OlZhbHVlUmVwOjpjb25zdGFudCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVw
Ojpjb25zdGFudERvdWJsZSk6CisgICAgICAgIChKU0M6OlZhbHVlUmVwOjpjb25zdGFudEZsb2F0
KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmtpbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpW
YWx1ZVJlcDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVwOjpvcGVy
YXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6aXNBbnkgY29uc3QpOgorICAgICAgICAoSlND
OjpWYWx1ZVJlcDo6aXNSZWcgY29uc3QpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6cmVnIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmlzR1BSIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VmFsdWVSZXA6OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmdwciBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVwOjpmcHIgY29uc3QpOgorICAgICAgICAoSlND
OjpWYWx1ZVJlcDo6aXNTdGFjayBjb25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUmVwOjpvZmZz
ZXRGcm9tRlAgY29uc3QpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6aXNTdGFja0FyZ3VtZW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6Om9mZnNldEZyb21TUCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlZhbHVlUmVwOjppc0NvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFsdWVSZXA6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmRvdWJsZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVSZXA6OmZsb2F0VmFsdWUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYWx1ZVJlcDo6d2l0aE9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhbHVlUmVwOjp1c2VkUmVnaXN0ZXJzKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG9jYXRpb24uY3BwOgorICAgICAgICAqIGZ0bC9GVExMb2NhdGlvbi5oOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFy
Z3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp1bnRhZ0FycmF5UHRy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FnZWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpkb3VibGVUb0ludDMyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bGF6eVNsb3dQYXRoKToKKyAgICAgICAgKiBm
dGwvRlRMT1NSRXhpdC5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVSZWNvdmVyeSk6CisgICAgICAgICogd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpDb25zdHJhaW5lZFRtcDo6
Q29uc3RyYWluZWRUbXApOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1p
dFBhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6QWlySVJH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BU
aWVyVXBDaGVjayk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZXR1
cm4pOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRSZXR1cm4pOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9u
Lmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxJbmZvcm1hdGlvbjo6Y29tcHV0ZVJlc3VsdHNP
ZmZzZXRMaXN0KToKKyAgICAgICAgKiB3YXNtL1dhc21PU1JFbnRyeURhdGEuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6T1NSRW50cnlWYWx1ZTo6T1NSRW50cnlWYWx1ZSk6CisgICAgICAgICogd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkpTQ19ERUZJTkVfSklU
X09QRVJBVElPTik6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Om1hcnNoYWxsSlNSZXN1bHQpOgorCiAyMDIxLTAxLTA3ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSBhbGlhc2VzIG9mIG9ic29s
ZXRlIEpTQyBvcHRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIxZGM1MjFi
Yjg1YS4uNTYwOGJiZWE3ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzcs
NyArMTc3LDYgQEAgYjMvQjNVc2VDb3VudHMuY3BwCiBiMy9CM1ZhbGlkYXRlLmNwcAogYjMvQjNW
YWx1ZS5jcHAKIGIzL0IzVmFsdWVLZXkuY3BwCi1iMy9CM1ZhbHVlUmVwLmNwcAogYjMvQjNWYXJp
YWJsZS5jcHAKIGIzL0IzVmFyaWFibGVMaXZlbmVzcy5jcHAKIGIzL0IzVmFyaWFibGVWYWx1ZS5j
cHAKQEAgLTI5MCw2ICsyODksNyBAQCBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuY3Bw
CiBieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY3BwCiBieXRlY29kZS9V
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2suY3BwCiBieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAor
Ynl0ZWNvZGUvVmFsdWVSZXAuY3BwCiBieXRlY29kZS9WYXJpYWJsZVdyaXRlRmlyZURldGFpbC5j
cHAKIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5jcHAKIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdHJhaW5lZFZhbHVlLmgKaW5kZXgg
ZDJjZDMxZmUxZDc1Li4yZjNhZjQ4MDk4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0cmFpbmVkVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdHJhaW5lZFZhbHVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKLSNpbmNsdWRlICJCM1ZhbHVlUmVwLmgiCisjaW5jbHVkZSAiVmFsdWVSZXAuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgKaW5kZXggYTM2MjU0
ODhlYTdkLi5kMzUyOTA1NzI4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oCkBAIC0yOCw5ICsyOCw5IEBACiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFpckdlbmVyYXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiQjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJWYWx1ZVJlcC5oIgogI2luY2x1ZGUgPHd0Zi9C
b3guaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0
YWNrbWFwU3BlY2lhbC5oCmluZGV4IGM4ZmY5MGQyNjA2NS4uNGQ5NzNkNjU3MTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuaApAQCAtMjksNyArMjks
NyBAQAogCiAjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgotI2lu
Y2x1ZGUgIkIzVmFsdWVSZXAuaCIKKyNpbmNsdWRlICJWYWx1ZVJlcC5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU3RhY2ttYXBWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2tt
YXBWYWx1ZS5oCmluZGV4IDg3ZjAwOWQ0OTAxMS4uNzZlYjYzMzRjMjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNp
bmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCi0jaW5j
bHVkZSAiQjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAi
VmFsdWVSZXAuaCIKICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IGZlZmM3YTEx
OGE4Zi4uM2RmNmNkNzNmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFp
ci5jcHAKQEAgLTIxNDAsNyArMjE0MCw3IEBAIHZvaWQgdGVzdEVsaWRlSGFuZGxlc0Vhcmx5Q2xv
YmJlcigpCiAgICAgfQogICAgIEFTU0VSVChmaXJzdENhbGxlZVNhdmUgIT0gbGFzdENhbGxlZVNh
dmUpOwogICAgIHBhdGNoLT5lYXJseUNsb2JiZXJlZCgpLmNsZWFyKGZpcnN0Q2FsbGVlU2F2ZSk7
Ci0gICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzLmFwcGVuZCh7IEIzOjpWYWx1ZVJlcDo6cmVn
KGZpcnN0Q2FsbGVlU2F2ZSkgfSk7CisgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzLmFwcGVu
ZCh7IFZhbHVlUmVwOjpyZWcoZmlyc3RDYWxsZWVTYXZlKSB9KTsKICAgICBwYXRjaC0+ZWFybHlD
bG9iYmVyZWQoKS5jbGVhcihsYXN0Q2FsbGVlU2F2ZSk7CiAgICAgcGF0Y2gtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQobGFzdENhbGxlZVNhdmUpKTsKIApAQCAtMjI2Miw4ICsyMjYyLDggQEAgdm9pZCB0
ZXN0TGluZWFyU2NhblNwaWxsUmFuZ2VzTGF0ZVVzZSgpCiAgICAgICAgIEIzOjpWYWx1ZSogZHVt
bXlWYWx1ZTIgPSBwcm9jLmFkZENvbnN0YW50KEIzOjpPcmlnaW4oKSwgQjM6OkludDY0LCAwKTsK
IAogICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gcHJvYy5hZGQ8QjM6
OlBhdGNocG9pbnRWYWx1ZT4oQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7Ci0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChkdW1teVZhbHVlLCBCMzo6VmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChkdW1teVZhbHVlMiwgQjM6OlZhbHVlUmVwOjpTb21l
TGF0ZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGR1bW15VmFsdWUsIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoZHVtbXlW
YWx1ZTIsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKTsKICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGFy
YW1zWzBdLmdwcigpICE9IHBhcmFtc1sxXS5ncHIoKSk7CiAKQEAgLTIzMTUsOCArMjMxNSw4IEBA
IHZvaWQgdGVzdExpbmVhclNjYW5TcGlsbFJhbmdlc0Vhcmx5RGVmKCkKICAgICAgICAgQjM6OlZh
bHVlKiBkdW1teVZhbHVlID0gcHJvYy5hZGRDb25zdGFudChCMzo6T3JpZ2luKCksIEIzOjpJbnQ2
NCwgMCk7CiAKICAgICAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IHByb2Mu
YWRkPEIzOjpQYXRjaHBvaW50VmFsdWU+KEIzOjpJbnQzMiwgQjM6Ok9yaWdpbigpKTsKLSAgICAg
ICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IEIzOjpWYWx1ZVJlcDo6U29tZUVh
cmx5UmVnaXN0ZXIgfTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGR1bW15VmFsdWUsIEIz
OjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3Vs
dENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6U29tZUVhcmx5UmVnaXN0ZXIgfTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKGR1bW15VmFsdWUsIFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVy
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocGFyYW1zWzBdLmdwcigpICE9IHBhcmFtc1sxXS5ncHIoKSk7
CiAKQEAgLTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgdGVzdExpbmVhclNjYW5TcGlsbFJhbmdlc0Vh
cmx5RGVmKCkKICAgICAgICAgQjM6OlZhbHVlKiBkdW1teVZhbHVlID0gcHJvYy5hZGRDb25zdGFu
dChCMzo6T3JpZ2luKCksIEIzOjpJbnQ2NCwgMCk7CiAKICAgICAgICAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IHByb2MuYWRkPEIzOjpQYXRjaHBvaW50VmFsdWU+KEIzOjpWb2lk
LCBCMzo6T3JpZ2luKCkpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoZHVtbXlWYWx1ZSwg
QjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
ZHVtbXlWYWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIGF1dG8gZ29vZCA9IGppdC5i
cmFuY2gzMihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGkpKTsKICAgICAgICAgICAgIGppdC5icmVha3BvaW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZXAuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTcl
CnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmNwcApyZW5h
bWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVwLmNwcAppbmRleCBk
NTQ4MzhjMWI0ZjQuLmViZGZiYmMwNWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVSZXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9WYWx1ZVJlcC5jcHAKQEAgLTI0LDE0ICsyNCwxMiBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJCM1ZhbHVlUmVwLmgiCi0KLSNpZiBFTkFCTEUoQjNfSklUKQorI2lu
Y2x1ZGUgIlZhbHVlUmVwLmgiCiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKK25hbWVzcGFjZSBKU0MgewogCiB2b2lkIFZhbHVlUmVwOjphZGRVc2VkUmVnaXN0ZXJzVG8o
UmVnaXN0ZXJTZXQmIHNldCkgY29uc3QKIHsKQEAgLTE1OCwxMSArMTU2LDExIEBAIFZhbHVlUmVj
b3ZlcnkgVmFsdWVSZXA6OnJlY292ZXJ5Rm9ySlNWYWx1ZSgpIGNvbnN0CiAgICAgfQogfQogCi19
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKK30gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdXNpbmcgbmFtZXNwYWNlIEpTQzo6QjM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVmFsdWVSZXA6OktpbmQga2lu
ZCkKIHsKQEAgLTIwOCw1ICsyMDYsMyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgVmFsdWVSZXA6OktpbmQga2luZCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
cC5oCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlUmVwLmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9WYWx1ZVJlcC5oCmluZGV4IDliNzE2MDEyMDJmMi4uYWI5OWYxNjc5ZWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlcC5oCkBAIC0yNSw4ICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgRU5BQkxFKEIzX0pJVCkKLQogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNp
bmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMzksMTggKzM3
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBc3NlbWJseUhlbHBlcnM7CiAKLW5hbWVz
cGFjZSBCMyB7Ci0KIC8vIFdlIHVzZSB0aGlzIGNsYXNzIHRvIGRlc2NyaWJlIHZhbHVlIHJlcHJl
c2VudGF0aW9ucyBhdCBzdGFja21hcHMuIEl0J3MgdXNlZCBib3RoIHRvIGZvcmNlIGEKLS8vIHJl
cHJlc2VudGF0aW9uIGFuZCB0byBnZXQgdGhlIHJlcHJlc2VudGF0aW9uLiBXaGVuIHRoZSBCMyBj
bGllbnQgZm9yY2VzIGEgcmVwcmVzZW50YXRpb24sIHdlIHNheQotLy8gdGhhdCBpdCdzIGFuIGlu
cHV0LiBXaGVuIEIzIHRlbGxzIHRoZSBjbGllbnQgd2hhdCByZXByZXNlbnRhdGlvbiBpdCBwaWNr
ZWQsIHdlIHNheSB0aGF0IGl0J3MgYW4KKy8vIHJlcHJlc2VudGF0aW9uIGFuZCB0byBnZXQgdGhl
IHJlcHJlc2VudGF0aW9uLiBXaGVuIHRoZSBjbGllbnQgZm9yY2VzIGEgcmVwcmVzZW50YXRpb24s
IHdlIHNheQorLy8gdGhhdCBpdCdzIGFuIGlucHV0LiBXaGVuIHdlIHRlbGwgdGhlIGNsaWVudCB3
aGF0IHJlcHJlc2VudGF0aW9uIGl0IHBpY2tlZCwgd2Ugc2F5IHRoYXQgaXQncyBhbgogLy8gb3V0
cHV0LgogCiBjbGFzcyBWYWx1ZVJlcCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZW51bSBLaW5kIDogdWludDhfdCB7Ci0gICAgICAgIC8vIEFzIGFuIGlucHV0
IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1lYW5zIHRoYXQgQjMgY2FuIHBpY2sgYW55IHJlcHJlc2Vu
dGF0aW9uLiBBcyBhbiBvdXRwdXQKKyAgICAgICAgLy8gQXMgYW4gaW5wdXQgcmVwcmVzZW50YXRp
b24sIHRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4gcGljayBhbnkgcmVwcmVzZW50YXRpb24uIEFzIGFu
IG91dHB1dAogICAgICAgICAvLyByZXByZXNlbnRhdGlvbiwgdGhpcyBtZWFucyB0aGF0IHdlIGRv
bid0IGtub3cuIFRoaXMgd2lsbCBvbmx5IGFyaXNlIGFzIGFuIG91dHB1dAogICAgICAgICAvLyBy
ZXByZXNlbnRhdGlvbiBmb3IgdGhlIGFjdGl2ZSBhcmd1bWVudHMgb2YgQ2hlY2svQ2hlY2tBZGQv
Q2hlY2tTdWIvQ2hlY2tNdWwuCiAgICAgICAgIFdhcm1BbnksCkBAIC02MywyNSArNTksMjUgQEAg
cHVibGljOgogICAgICAgICAvLyB2YWx1ZS4KICAgICAgICAgTGF0ZUNvbGRBbnksCiAKLSAgICAg
ICAgLy8gQXMgYW4gaW5wdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgbWVhbnMgdGhhdCBCMyBzaG91
bGQgcGljayBzb21lIHJlZ2lzdGVyLiBJdCBjb3VsZCBiZSBhCisgICAgICAgIC8vIEFzIGFuIGlu
cHV0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIHBpY2sgc29tZSBy
ZWdpc3Rlci4gSXQgY291bGQgYmUgYQogICAgICAgICAvLyByZWdpc3RlciB0aGF0IHRoaXMgY2xh
aW1zIHRvIGNsb2JiZXIhCiAgICAgICAgIFNvbWVSZWdpc3RlciwKICAgICAgICAgCi0gICAgICAg
IC8vIEFzIGFuIGlucHV0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1lYW5zIHRoYXQgQjMgc2hvdWxk
IHBpY2sgc29tZSByZWdpc3RlciBidXQgdGhhdCB0aGlzCisgICAgICAgIC8vIEFzIGFuIGlucHV0
IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIHBpY2sgc29tZSByZWdp
c3RlciBidXQgdGhhdCB0aGlzCiAgICAgICAgIC8vIHJlZ2lzdGVyIGlzIHRoZW4gY29iYmVyZWQg
d2l0aCBnYXJiYWdlLiBUaGlzIG9ubHkgd29ya3MgZm9yIHBhdGNocG9pbnRzLgogICAgICAgICBT
b21lUmVnaXN0ZXJXaXRoQ2xvYmJlciwKIAotICAgICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNl
bnRhdGlvbiwgdGhpcyB0ZWxscyB1cyB0aGF0IEIzIHNob3VsZCBwaWNrIHNvbWUgcmVnaXN0ZXIs
IGJ1dCBpbXBsaWVzCisgICAgICAgIC8vIEFzIGFuIGlucHV0IHJlcHJlc2VudGF0aW9uLCB0aGlz
IHRlbGxzIHVzIHRoYXQgd2Ugc2hvdWxkIHBpY2sgc29tZSByZWdpc3RlciwgYnV0IGltcGxpZXMK
ICAgICAgICAgLy8gdGhhdCB0aGUgZGVmIGhhcHBlbnMgYmVmb3JlIGFueSBvZiB0aGUgZWZmZWN0
cyBvZiB0aGUgc3RhY2ttYXAuIFRoaXMgaXMgb25seSB2YWxpZCBmb3IKICAgICAgICAgLy8gdGhl
IHJlc3VsdCBjb25zdHJhaW50IG9mIGEgUGF0Y2hwb2ludC4KICAgICAgICAgU29tZUVhcmx5UmVn
aXN0ZXIsCiAKLSAgICAgICAgLy8gQXMgYW4gaW5wdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgdGVs
bHMgdXMgdGhhdCBCMyBzaG91bGQgcGljayBzb21lIHJlZ2lzdGVyLCBidXQgaW1wbGllcworICAg
ICAgICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyB0ZWxscyB1cyB0aGF0IHdl
IHNob3VsZCBwaWNrIHNvbWUgcmVnaXN0ZXIsIGJ1dCBpbXBsaWVzCiAgICAgICAgIC8vIHRoZSB1
c2UgaGFwcGVucyBhZnRlciBhbnkgZGVmcy4gVGhpcyBpcyBvbmx5IHdvcmtzIGZvciBwYXRjaHBv
aW50cy4KICAgICAgICAgU29tZUxhdGVSZWdpc3RlciwKIAogICAgICAgICAvLyBBcyBhbiBpbnB1
dCByZXByZXNlbnRhdGlvbiwgdGhpcyBmb3JjZXMgYSBwYXJ0aWN1bGFyIHJlZ2lzdGVyLiBBcyBh
biBvdXRwdXQKLSAgICAgICAgLy8gcmVwcmVzZW50YXRpb24sIHRoaXMgdGVsbHMgdXMgd2hhdCBy
ZWdpc3RlciBCMyBwaWNrZWQuCisgICAgICAgIC8vIHJlcHJlc2VudGF0aW9uLCB0aGlzIHRlbGxz
IHVzIHdoYXQgcmVnaXN0ZXIgd2UgcGlja2VkLgogICAgICAgICBSZWdpc3RlciwKIAogICAgICAg
ICAvLyBBcyBhbiBpbnB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyBmb3JjZXMgYSBwYXJ0aWN1bGFy
IHJlZ2lzdGVyIGFuZCBzdGF0ZXMgdGhhdApAQCAtOTAsMTUgKzg2LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gSXQncyBub3QgYSB2YWxpZCBvdXRwdXQgcmVwcmVzZW50YXRpb24uCiAgICAgICAg
IExhdGVSZWdpc3RlciwKIAotICAgICAgICAvLyBBcyBhbiBvdXRwdXQgcmVwcmVzZW50YXRpb24s
IHRoaXMgdGVsbHMgdXMgd2hhdCBzdGFjayBzbG90IEIzIHBpY2tlZC4gSXQncyBub3QgYSB2YWxp
ZAorICAgICAgICAvLyBBcyBhbiBvdXRwdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgdGVsbHMgdXMg
d2hhdCBzdGFjayBzbG90IHdlIHBpY2tlZC4gSXQncyBub3QgYSB2YWxpZAogICAgICAgICAvLyBp
bnB1dCByZXByZXNlbnRhdGlvbi4KICAgICAgICAgU3RhY2ssCiAKICAgICAgICAgLy8gQXMgYW4g
aW5wdXQgcmVwcmVzZW50YXRpb24sIHRoaXMgZm9yY2VzIHRoZSB2YWx1ZSB0byBlbmQgdXAgaW4g
dGhlIGFyZ3VtZW50IGFyZWEgYXQgc29tZQotICAgICAgICAvLyBvZmZzZXQuIEFzIGFuIG91dHB1
dCByZXByZXNlbnRhdGlvbiB0aGlzIHRlbGxzIHVzIHdoYXQgb2Zmc2V0IGZyb20gU1AgQjMgcGlj
a2VkLgorICAgICAgICAvLyBvZmZzZXQuIEFzIGFuIG91dHB1dCByZXByZXNlbnRhdGlvbiB0aGlz
IHRlbGxzIHVzIHdoYXQgb2Zmc2V0IGZyb20gU1Agd2UgcGlja2VkLgogICAgICAgICBTdGFja0Fy
Z3VtZW50LAogCi0gICAgICAgIC8vIEFzIGFuIG91dHB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyB0
ZWxscyB1cyB0aGF0IEIzIGNvbnN0YW50LWZvbGRlZCB0aGUgdmFsdWUuCisgICAgICAgIC8vIEFz
IGFuIG91dHB1dCByZXByZXNlbnRhdGlvbiwgdGhpcyB0ZWxscyB1cyB0aGF0IHdlIGNvbnN0YW50
LWZvbGRlZCB0aGUgdmFsdWUuCiAgICAgICAgIENvbnN0YW50CiAgICAgfTsKICAgICAKQEAgLTI3
OCw5ICsyNzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFJlc3RvcmUoQXNzZW1ibHlIZWxw
ZXJzJiwgUmVnKSBjb25zdDsKIAogICAgIC8vIENvbXB1dGVzIHRoZSBWYWx1ZVJlY292ZXJ5IGFz
c3VtaW5nIHRoYXQgdGhlIFZhbHVlKiB3YXMgZm9yIGEgSlNWYWx1ZSAoaS5lLiBJbnQ2NCkuCi0g
ICAgLy8gTk9URTogV2Ugc2hvdWxkIGF2b2lkIHB1dHRpbmcgSlNWYWx1ZS1yZWxhdGVkIG1ldGhv
ZHMgaW4gQjMsIGJ1dCB0aGlzIHdhcyBoYXJkIHRvIGF2b2lkCi0gICAgLy8gYmVjYXVzZSBzb21l
IHBhcnRzIG9mIEpTQyB1c2UgVmFsdWVSZWNvdmVyeSBsaWtlIGEgZ2VuZXJhbCAid2hlcmUgbXkg
Yml0cyBhdCIgb2JqZWN0LCBhbG1vc3QKLSAgICAvLyBleGFjdGx5IGxpa2UgVmFsdWVSZXAuCisg
ICAgLy8gTk9URTogVGhlcmUgaXMgc29tZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIFZhbHVlUmVwIGFu
ZAorICAgIC8vIFZhbHVlUmVjb3ZlcnksIGFzIHNvbWUgcGFydHMgb2YgSlNDIHVzZSBWYWx1ZVJl
Y292ZXJ5IGxpa2UgYQorICAgIC8vIGdlbmVyYWwgIndoZXJlIG15IGJpdHMgYXQiIG9iamVjdCwg
YWxtb3N0IGV4YWN0bHkgbGlrZQorICAgIC8vIFZhbHVlUmVwLiBXZSBjb3VsZCBwcm9iYWJseSB0
cnkgdG8gbWVyZ2UgdGhhdCBmdW5jdGlvbmFsaXR5CisgICAgLy8gaW50byBhIHNpbmdsZSBjbGFz
cy4KICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5Rm9ySlNWYWx1ZSgpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtMjk4LDEyICsyOTYsMTAgQEAgcHJpdmF0ZToKICAgICBLaW5kIG1fa2luZDsKIH07
CiAKLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVz
cGFjZSBXVEYgewogCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzOjpW
YWx1ZVJlcDo6S2luZCk7Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlZh
bHVlUmVwOjpLaW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDM1MjUzYjYwNGU0Ny4uODU0NWUzNWQyYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbnN0YW5j
ZU9mOgogICAgIGNhc2UgSW5zdGFuY2VPZkN1c3RvbToKICAgICBjYXNlIERvdWJsZVJlcDoKLSAg
ICBjYXNlIFZhbHVlUmVwOgorICAgIGNhc2UgREZHOjpWYWx1ZVJlcDoKICAgICBjYXNlIEludDUy
UmVwOgogICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBJbnQ1MkNvbnN0YW50Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvY2F0aW9uLmNwcAppbmRleCA5NjA3MjM0ZjA3
NDAuLmFjZDU2Nzg2NzE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlv
bi5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCi0jaW5jbHVk
ZSAiQjNWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIkZUTFNhdmVSZXN0b3JlLmgiCiAjaW5jbHVkZSAi
UmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJWYWx1ZVJlcC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG9jYXRpb24uaAppbmRleCBiZDRiNDE2NWVjODIuLjQ5MTBkZjA1NDBmOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb2NhdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG9jYXRpb24uaApAQCAtMzUsOSArMzUsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotbmFtZXNwYWNlIEIzIHsKIGNsYXNzIFZhbHVlUmVwOwot
fSAvLyBuYW1lc3BhY2UgQjMKIAogbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTg4LDcgKzg2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBMb2Nh
dGlvbiBmb3JWYWx1ZVJlcChjb25zdCBCMzo6VmFsdWVSZXAmKTsKKyAgICBzdGF0aWMgTG9jYXRp
b24gZm9yVmFsdWVSZXAoY29uc3QgSlNDOjpWYWx1ZVJlcCYpOwogCiAgICAgS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAwZTRkMjE4MDk0MjIuLjAyZjBhMzUyYzhlNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNzc4
NSw3ICs3Nzg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBMVmFsdWUgc2l6ZVB0ciA9
IG1fb3V0Lnplcm9FeHRQdHIoc2l6ZSk7CiAgICAgICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwogICAgICAg
ICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHN0b3JhZ2UpOwotICAg
ICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemVQdHIsIEIzOjpWYWx1ZVJlcChC
Mzo6VmFsdWVSZXA6OlNvbWVMYXRlUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgICAgICBhdXRoZW50
aWNhdGUtPmFwcGVuZChzaXplUHRyLCBWYWx1ZVJlcChWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3Rl
cikpOwogICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7
CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKHBhcmFtc1sxXS5ncHIoKSwgcGFyYW1zWzBd
LmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnRhZ0FycmF5UHRyKHBhcmFtc1syXS5n
cHIoKSwgcGFyYW1zWzBdLmdwcigpKTsKQEAgLTEwMDUxLDcgKzEwMDUxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjQgPSBhbGxvY2F0b3IuYWxsb2NhdGVT
Y3JhdGNoR1BSKCk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFsbG9jYXRvci5u
dW1iZXJPZlJldXNlZFJlZ2lzdGVycygpKTsKIAotICAgICAgICAgICAgICAgIGF1dG8gZ2V0VmFs
dWVGcm9tUmVwID0gWyZdIChCMzo6VmFsdWVSZXAgcmVwLCBHUFJSZWcgcmVzdWx0KSB7CisgICAg
ICAgICAgICAgICAgYXV0byBnZXRWYWx1ZUZyb21SZXAgPSBbJl0gKEpTQzo6VmFsdWVSZXAgcmVw
LCBHUFJSZWcgcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghdXNlZFJlZ2lz
dGVycy5nZXQocmVzdWx0KSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcC5pc0NvbnN0
YW50KCkpIHsKQEAgLTEwMDgzLDcgKzEwMDgzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtVXNlZFNsb3RzID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG9yaWdpbmFsU3Rh
Y2tIZWlnaHQgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAgICAgICAgICAg
QjM6OlZhbHVlUmVwIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzUmVwID0gcGFyYW1zWzNdOwor
ICAgICAgICAgICAgICAgICAgICBKU0M6OlZhbHVlUmVwIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzUmVwID0gcGFyYW1zWzNdOwogICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNSZXAsIHNjcmF0Y2hHUFIyKTsKICAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6OkFib3Zl
LCBzY3JhdGNoR1BSMiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjptYXhBcmd1bWVu
dHMgKyAxKSkpOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTEwMTQ4LDcgKzEwMTQ4LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAgPSB0YXJnZXQtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCBudW1Bcmd1bWVudHNUb0NvcHkgPSBwYXJh
bXNbcGFyYW1zT2Zmc2V0ICsgKGluZGV4KyspXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEpT
Qzo6VmFsdWVSZXAgbnVtQXJndW1lbnRzVG9Db3B5ID0gcGFyYW1zW3BhcmFtc09mZnNldCArIChp
bmRleCsrKV07CiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRWYWx1ZUZyb21SZXAobnVtQXJn
dW1lbnRzVG9Db3B5LCBzY3JhdGNoR1BSMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bG9hZE9mZnNldCA9IChBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1N0YXJ0KGlubGluZUNhbGxG
cmFtZSkub2Zmc2V0KCkgKyBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCkgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpOwogCkBAIC0xMDM0OCw5ICsxMDM0OCw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50c0dQUiA9IGpzQXJndW1lbnRzID8gcGFy
YW1zW2FyZ0luZGV4KytdLmdwcigpIDogSW52YWxpZEdQUlJlZzsKICAgICAgICAgICAgICAgICBH
UFJSZWcgdGhpc0dQUiA9IHBhcmFtc1thcmdJbmRleCsrXS5ncHIoKTsKIAotICAgICAgICAgICAg
ICAgIEIzOjpWYWx1ZVJlcCBjYWxsZWVMYXRlUmVwOwotICAgICAgICAgICAgICAgIEIzOjpWYWx1
ZVJlcCBhcmd1bWVudHNMYXRlUmVwOwotICAgICAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCB0aGlz
TGF0ZVJlcDsKKyAgICAgICAgICAgICAgICBKU0M6OlZhbHVlUmVwIGNhbGxlZUxhdGVSZXA7Cisg
ICAgICAgICAgICAgICAgSlNDOjpWYWx1ZVJlcCBhcmd1bWVudHNMYXRlUmVwOworICAgICAgICAg
ICAgICAgIEpTQzo6VmFsdWVSZXAgdGhpc0xhdGVSZXA7CiAgICAgICAgICAgICAgICAgaWYgKCFm
b3J3YXJkaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG5vdCBmb3J3YXJk
aW5nIHRoZW4gd2UnbGwgbmVlZCBjYWxsZWUsIGFyZ3VtZW50cywgYW5kIHRoaXMgYWZ0ZXIgd2UK
ICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBwb3RlbnRpYWxseSBjbG9iYmVyZWQgY2FsbGVl
R1BSLCBhcmd1bWVudHNHUFIsIGFuZCB0aGlzR1BSLiBPdXIgdGVjaG5pcXVlCkBAIC0xNjI0OSw3
ICsxNjI0OSw3IEBAIHByaXZhdGU6CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBhdXRoZW50aWNhdGUgPSBtX291dC5wYXRjaHBvaW50KHBvaW50ZXJUeXBlKCkpOwog
ICAgICAgICBhdXRoZW50aWNhdGUtPmFwcGVuZFNvbWVSZWdpc3RlcihwdHIpOwotICAgICAgICBh
dXRoZW50aWNhdGUtPmFwcGVuZChzaXplLCBCMzo6VmFsdWVSZXAoQjM6OlZhbHVlUmVwOjpTb21l
TGF0ZVJlZ2lzdGVyKSk7CisgICAgICAgIGF1dGhlbnRpY2F0ZS0+YXBwZW5kKHNpemUsIFZhbHVl
UmVwKFZhbHVlUmVwOjpTb21lTGF0ZVJlZ2lzdGVyKSk7CiAgICAgICAgIGF1dGhlbnRpY2F0ZS0+
c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBqaXQubW92ZShwYXJhbXNbMV0uZ3By
KCksIHBhcmFtc1swXS5ncHIoKSk7CiAgICAgICAgICAgICBqaXQudW50YWdBcnJheVB0cihwYXJh
bXNbMl0uZ3ByKCksIHBhcmFtc1swXS5ncHIoKSk7CkBAIC0xNjMxMCw3ICsxNjMxMCw3IEBAIHBy
aXZhdGU6CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgaWYgKGtpbmQgPT0gR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkgewogICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBtZXJnZSA9IG1fb3V0LnBh
dGNocG9pbnQocG9pbnRlclR5cGUoKSk7Ci0gICAgICAgICAgICBtZXJnZS0+YXBwZW5kKHJlc3Vs
dCwgQjM6OlZhbHVlUmVwKEIzOjpWYWx1ZVJlcDo6U29tZUxhdGVSZWdpc3RlcikpOworICAgICAg
ICAgICAgbWVyZ2UtPmFwcGVuZChyZXN1bHQsIFZhbHVlUmVwKFZhbHVlUmVwOjpTb21lTGF0ZVJl
Z2lzdGVyKSk7CiAgICAgICAgICAgICBtZXJnZS0+YXBwZW5kU29tZVJlZ2lzdGVyKHB0cik7CiAg
ICAgICAgICAgICBtZXJnZS0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAg
aml0Lm1vdmUocGFyYW1zWzJdLmdwcigpLCBwYXJhbXNbMF0uZ3ByKCkpOwpAQCAtMTcwMTQsNyAr
MTcwMTQsNyBAQCBwcml2YXRlOgogI2lmIENQVShBUk02NCkKICAgICAgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OnN1cHBvcnRzRG91YmxlVG9JbnQzMkNvbnZlcnNpb25Vc2luZ0phdmFTY3Jp
cHRTZW1hbnRpY3MoKSkgewogICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gbV9vdXQucGF0Y2hwb2ludChJbnQzMik7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShkb3VibGVWYWx1ZSwgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGRv
dWJsZVZhbHVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CiAgICAgICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBqaXQuY29udmVydERv
dWJsZVRvSW50MzJVc2luZ0phdmFTY3JpcHRTZW1hbnRpY3MocGFyYW1zWzFdLmZwcigpLCBwYXJh
bXNbMF0uZ3ByKCkpOwogICAgICAgICAgICAgfSk7CkBAIC0xNzE0Myw3ICsxNzE0Myw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IG1fb3V0
LnBhdGNocG9pbnQoQjM6OkludDY0KTsKICAgICAgICAgZm9yIChMVmFsdWUgYXJnIDogdXNlckFy
Z3VtZW50cykKLSAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJn
LCBCMzo6VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKIAogICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0K
ICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhyZXN1bHQpOwpAQCAt
MTcxNTQsNyArMTcxNTQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXN1bHQtPnNldEdlbmVyYXRv
cigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPExvY2F0aW9u
PiBsb2NhdGlvbnM7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBCMzo6VmFsdWVSZXAmIHJl
cCA6IHBhcmFtcykKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEpTQzo6VmFsdWVSZXAmIHJl
cCA6IHBhcmFtcykKICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zLmFwcGVuZChMb2NhdGlv
bjo6Zm9yVmFsdWVSZXAocmVwKSk7CiAKICAgICAgICAgICAgICAgICBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IGdlbmVyYXRvciA9IGZ1bmN0b3IobG9jYXRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0LmgKaW5kZXggYTY0MWViNzRiNjFmLi45MTdhM2IwOWNl
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdC5oCkBAIC0yNyw3ICsyNyw2
IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAotI2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKICNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKICNpbmNs
dWRlICJERkdOb2RlT3JpZ2luLmgiCkBAIC00Myw2ICs0Miw3IEBACiAjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKICNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNs
dWRlICJWYWx1ZVJlcC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdHJ1Y3QgT1NSRXhpdCA6IHB1YmxpYyBERkc6
Ok9TUkV4aXRCYXNlIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4g
bV9jb2RlOwogICAgIC8vIFRoaXMgdGVsbHMgdXMgd2hlcmUgdG8gcGxhY2UgYSBqdW1wLgogICAg
IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4gbV9wYXRjaGFibGVKdW1wOwotICAg
IFZlY3RvcjxCMzo6VmFsdWVSZXA+IG1fdmFsdWVSZXBzOworICAgIFZlY3RvcjxKU0M6OlZhbHVl
UmVwPiBtX3ZhbHVlUmVwczsKIAogICAgIENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4gY29kZUxvY2F0aW9uRm9yUmVwYXRjaChDb2RlQmxvY2sqIGZ0bENvZGVCbG9jaykgY29uc3Q7
CiAgICAgdm9pZCBjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZShDb2RlQmxvY2sqIHBy
b2ZpbGVkQ29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCmluZGV4IDM4MzY3NzhjYTNjNy4uOGM4MDE5N2ZlMDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgcmVib3hBY2NvcmRpbmdUb0Zvcm1hdCgKIAogc3Rh
dGljIHZvaWQgY29tcGlsZVJlY292ZXJ5KAogICAgIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBF
eGl0VmFsdWUmIHZhbHVlLAotICAgIFZlY3RvcjxCMzo6VmFsdWVSZXA+JiB2YWx1ZVJlcHMsCisg
ICAgVmVjdG9yPEpTQzo6VmFsdWVSZXA+JiB2YWx1ZVJlcHMsCiAgICAgY2hhciogcmVnaXN0ZXJT
Y3JhdGNoLAogICAgIGNvbnN0IEhhc2hNYXA8RXhpdFRpbWVPYmplY3RNYXRlcmlhbGl6YXRpb24q
LCBFbmNvZGVkSlNWYWx1ZSo+JiBtYXRlcmlhbGl6YXRpb25Ub1BvaW50ZXIpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBi
NzRhYTYyNDdkNDcuLjUxZWQwOGYzOThkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC02NSwxMCArNjUsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIEIzOjpBaXI7CiBzdHJ1Y3QgQ29uc3RyYWluZWRUbXAgewogICAgIENvbnN0cmFp
bmVkVG1wKCkgPSBkZWZhdWx0OwogICAgIENvbnN0cmFpbmVkVG1wKFRtcCB0bXApCi0gICAgICAg
IDogQ29uc3RyYWluZWRUbXAodG1wLCB0bXAuaXNSZWcoKSA/IEIzOjpWYWx1ZVJlcDo6cmVnKHRt
cC5yZWcoKSkgOiBCMzo6VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikKKyAgICAgICAgOiBDb25zdHJh
aW5lZFRtcCh0bXAsIHRtcC5pc1JlZygpID8gVmFsdWVSZXA6OnJlZyh0bXAucmVnKCkpIDogVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikKICAgICB7IH0KIAotICAgIENvbnN0cmFpbmVkVG1wKFRtcCB0
bXAsIEIzOjpWYWx1ZVJlcCByZXApCisgICAgQ29uc3RyYWluZWRUbXAoVG1wIHRtcCwgVmFsdWVS
ZXAgcmVwKQogICAgICAgICA6IHRtcCh0bXApCiAgICAgICAgICwgcmVwKHJlcCkKICAgICB7CkBA
IC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBDb25zdHJhaW5lZFRtcCB7CiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhdG1wOyB9CiAKICAgICBUbXAgdG1wOwotICAg
IEIzOjpWYWx1ZVJlcCByZXA7CisgICAgVmFsdWVSZXAgcmVwOwogfTsKIAogY2xhc3MgVHlwZWRU
bXAgewpAQCAtNDg2LDE4ICs0ODYsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHRzLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVz
dWx0cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAocGF0Y2gtPnJlc3Vs
dENvbnN0cmFpbnRzW2ldLmtpbmQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQjM6OlZhbHVl
UmVwOjpTdGFja0FyZ3VtZW50OiB7CisgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3Rh
Y2tBcmd1bWVudDogewogICAgICAgICAgICAgICAgICAgICBBcmcgYXJnID0gQXJnOjpjYWxsQXJn
KHBhdGNoLT5yZXN1bHRDb25zdHJhaW50c1tpXS5vZmZzZXRGcm9tU1AoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQoYXJnKTsKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0TW92cy5hcHBlbmQoSW5zdChCMzo6QWlyOjptb3ZlRm9yVHlwZShtX3Byb2MudHlwZUF0T2Zm
c2V0KHBhdGNoLT50eXBlKCksIGkpKSwgbnVsbHB0ciwgYXJnLCB0b1RtcChyZXN1bHRzW2ldKSkp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgY2FzZSBCMzo6VmFsdWVSZXA6OlJlZ2lzdGVyOiB7CisgICAgICAgICAgICAgICAg
Y2FzZSBWYWx1ZVJlcDo6UmVnaXN0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgaW5zdC5hcmdz
LmFwcGVuZChUbXAocGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzW2ldLnJlZygpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdE1vdnMuYXBwZW5kKEluc3QoQjM6OkFpcjo6cmVsYXhlZE1vdmVG
b3JUeXBlKG1fcHJvYy50eXBlQXRPZmZzZXQocGF0Y2gtPnR5cGUoKSwgaSkpLCBudWxscHRyLCBU
bXAocGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzW2ldLnJlZygpKSwgdG9UbXAocmVzdWx0c1tpXSkp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNhc2UgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXI6IHsKKyAgICAgICAgICAg
ICAgICBjYXNlIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAg
aW5zdC5hcmdzLmFwcGVuZCh0b1RtcChyZXN1bHRzW2ldKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTUxNywxNiArNTE3LDE2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBCMzo6VmFsdWUqIGR1bW15VmFsdWUgPSBtX3Byb2MuYWRkQ29uc3RhbnQo
QjM6Ok9yaWdpbigpLCB0bXAudG1wLmlzR1AoKSA/IEIzOjpJbnQ2NCA6IEIzOjpEb3VibGUsIDAp
OwogICAgICAgICAgICAgcGF0Y2gtPmFwcGVuZChkdW1teVZhbHVlLCB0bXAucmVwKTsKICAgICAg
ICAgICAgIHN3aXRjaCAodG1wLnJlcC5raW5kKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQjM6OlZh
bHVlUmVwOjpDb2xkQW55OiAvLyBCMzo6VmFsdWUgcHJvcGFnYXRlcyBDb2xkQW55IGluZm9ybWF0
aW9uIGFuZCBsYXRlciBBaXIgd2lsbCBhbGxvY2F0ZSBhcHByb3ByaWF0ZSBzdGFjay4KLSAgICAg
ICAgICAgIGNhc2UgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0ZXI6CisgICAgICAgICAgICBjYXNl
IFZhbHVlUmVwOjpDb2xkQW55OiAvLyBCMzo6VmFsdWUgcHJvcGFnYXRlcyBDb2xkQW55IGluZm9y
bWF0aW9uIGFuZCBsYXRlciBBaXIgd2lsbCBhbGxvY2F0ZSBhcHByb3ByaWF0ZSBzdGFjay4KKyAg
ICAgICAgICAgIGNhc2UgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcjoKICAgICAgICAgICAgICAgICBp
bnN0LmFyZ3MuYXBwZW5kKHRtcC50bXApOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBCMzo6VmFsdWVSZXA6OlJlZ2lzdGVyOgorICAgICAgICAgICAgY2FzZSBWYWx1
ZVJlcDo6UmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgcGF0Y2gtPmVhcmx5Q2xvYmJlcmVkKCku
Y2xlYXIodG1wLnJlcC5yZWcoKSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kKGJhc2ljQmxvY2ss
IHRtcC50bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVEb3VibGUsIHRtcC50bXAsIHRtcC5yZXAucmVn
KCkpOwogICAgICAgICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQoVG1wKHRtcC5yZXAucmVnKCkp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQjM6OlZhbHVlUmVw
OjpTdGFja0FyZ3VtZW50OiB7CisgICAgICAgICAgICBjYXNlIFZhbHVlUmVwOjpTdGFja0FyZ3Vt
ZW50OiB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXRjaC0+ZWZmZWN0cy50ZXJtaW5hbCk7
CiAgICAgICAgICAgICAgICAgQXJnIGFyZyA9IEFyZzo6Y2FsbEFyZyh0bXAucmVwLm9mZnNldEZy
b21TUCgpKTsKICAgICAgICAgICAgICAgICBhcHBlbmQoYmFzaWNCbG9jaywgdG1wLnRtcC5pc0dQ
KCkgPyBNb3ZlIDogTW92ZURvdWJsZSwgdG1wLnRtcCwgYXJnKTsKQEAgLTg5MSw3ICs4OTEsNyBA
QCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbElu
Zm8gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5jYWxsSW5mb3JtYXRpb25Gb3Ioc2lnbmF0dXJl
LCBDYWxsUm9sZTo6Q2FsbGVlKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3YXNt
Q2FsbEluZm8ucGFyYW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEIzOjpWYWx1ZVJlcCBsb2Nh
dGlvbiA9IHdhc21DYWxsSW5mby5wYXJhbXNbaV07CisgICAgICAgIFZhbHVlUmVwIGxvY2F0aW9u
ID0gd2FzbUNhbGxJbmZvLnBhcmFtc1tpXTsKICAgICAgICAgQXJnIGFyZyA9IGxvY2F0aW9uLmlz
UmVnKCkgPyBBcmcoVG1wKGxvY2F0aW9uLnJlZygpKSkgOiBBcmc6OmFkZHIoVG1wKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKSwgbG9jYXRpb24ub2Zmc2V0RnJvbUZQKCkpOwogICAgICAgICBz
d2l0Y2ggKHNpZ25hdHVyZS5hcmd1bWVudChpKSkgewogICAgICAgICBjYXNlIFR5cGU6OkkzMjoK
QEAgLTI2NzIsMTQgKzI2NzIsMTQgQEAgdm9pZCBBaXJJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVy
VXBDaGVjayh1aW50MzJfdCBsb29wSW5kZXgsIGNvbnN0IFN0YWNrJiBlbmNsb3MKICAgICBwYXRj
aEFyZ3MuYXBwZW5kKGNvdW50ZG93blB0cik7CiAKICAgICBmb3IgKGF1dG8mIGxvY2FsIDogbV9s
b2NhbHMpCi0gICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAobG9jYWwsIEIz
OjpWYWx1ZVJlcDo6Q29sZEFueSkpOworICAgICAgICBwYXRjaEFyZ3MuYXBwZW5kKENvbnN0cmFp
bmVkVG1wKGxvY2FsLCBWYWx1ZVJlcDo6Q29sZEFueSkpOwogICAgIGZvciAodW5zaWduZWQgY29u
dHJvbEluZGV4ID0gMDsgY29udHJvbEluZGV4IDwgbV9wYXJzZXItPmNvbnRyb2xTdGFjaygpLnNp
emUoKTsgKytjb250cm9sSW5kZXgpIHsKICAgICAgICAgU3RhY2smIGV4cHJlc3Npb25TdGFjayA9
IG1fcGFyc2VyLT5jb250cm9sU3RhY2soKVtjb250cm9sSW5kZXhdLmVuY2xvc2VkRXhwcmVzc2lv
blN0YWNrOwogICAgICAgICBmb3IgKFR5cGVkRXhwcmVzc2lvbiB2YWx1ZSA6IGV4cHJlc3Npb25T
dGFjaykKLSAgICAgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAodmFsdWUu
dmFsdWUoKSwgQjM6OlZhbHVlUmVwOjpDb2xkQW55KSk7CisgICAgICAgICAgICBwYXRjaEFyZ3Mu
YXBwZW5kKENvbnN0cmFpbmVkVG1wKHZhbHVlLnZhbHVlKCksIFZhbHVlUmVwOjpDb2xkQW55KSk7
CiAgICAgfQogICAgIGZvciAoVHlwZWRFeHByZXNzaW9uIHZhbHVlIDogZW5jbG9zaW5nU3RhY2sp
Ci0gICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAodmFsdWUudmFsdWUoKSwg
QjM6OlZhbHVlUmVwOjpDb2xkQW55KSk7CisgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3Ry
YWluZWRUbXAodmFsdWUudmFsdWUoKSwgVmFsdWVSZXA6OkNvbGRBbnkpKTsKIAogICAgIFRpZXJV
cENvdW50OjpUcmlnZ2VyUmVhc29uKiBmb3JjZUVudHJ5VHJpZ2dlciA9ICYobV90aWVyVXAtPm9z
ckVudHJ5VHJpZ2dlcnMoKS5sYXN0KCkpOwogICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0
PHVpbnQ4X3Q+KFRpZXJVcENvdW50OjpUcmlnZ2VyUmVhc29uOjpEb250VHJpZ2dlciksICJ0aGUg
SklUIGNvZGUgYXNzdW1lcyBub24temVybyBtZWFucyAnZW50ZXInIik7CkBAIC0yNzk5LDcgKzI3
OTksNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZXR1cm4oY29uc3QgQ29udHJvbERhdGEm
IGRhdGEsIGNvbnN0IFN0YWNrJiByZXR1cm5WYWx1ZQogICAgIHVuc2lnbmVkIG9mZnNldCA9IHJl
dHVyblZhbHVlcy5zaXplKCkgLSB3YXNtQ2FsbEluZm8ucmVzdWx0cy5zaXplKCk7CiAgICAgVmVj
dG9yPENvbnN0cmFpbmVkVG1wLCA4PiByZXR1cm5Db25zdHJhaW50czsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgd2FzbUNhbGxJbmZvLnJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21DYWxsSW5mby5yZXN1bHRzW2ldOworICAgICAgICBW
YWx1ZVJlcCByZXAgPSB3YXNtQ2FsbEluZm8ucmVzdWx0c1tpXTsKICAgICAgICAgVHlwZWRUbXAg
dG1wID0gcmV0dXJuVmFsdWVzW29mZnNldCArIGldOwogCiAgICAgICAgIGlmIChyZXAuaXNTdGFj
aygpKSB7CkBAIC0zMDI4LDcgKzMwMjgsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxs
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAogICAg
ICAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgTW92ZSwgQXJnOjphZGRyKGp1bXBEZXN0
aW5hdGlvbiksIGp1bXBEZXN0aW5hdGlvbik7CiAKICAgICAgICAgICAgIFZlY3RvcjxDb25zdHJh
aW5lZFRtcD4ganVtcEFyZ3M7Ci0gICAgICAgICAgICBqdW1wQXJncy5hcHBlbmQoeyBqdW1wRGVz
dGluYXRpb24sIEIzOjpWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyIH0pOworICAgICAgICAgICAganVt
cEFyZ3MuYXBwZW5kKHsganVtcERlc3RpbmF0aW9uLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyIH0p
OwogICAgICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGVtaXRDYWxsUGF0Y2hwb2ludChpc0Vt
YmVkZGVyQmxvY2ssIHNpZ25hdHVyZSwgcmVzdWx0cywgYXJncywgV1RGTW92ZShqdW1wQXJncykp
OwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVk
IHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KICAgICAg
ICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0
byBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggYjUzMjRmNDdiZTVjLi5i
ZWNkNWNmZTliMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVy
ZQogICAgICAgICBzdGF0aWNfYXNzZXJ0KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHNpemVv
ZihSZWdpc3RlcikgPCBXYXNtQ2FsbGluZ0NvbnZlbnRpb246OmhlYWRlclNpemVJbkJ5dGVzLCAi
V2UgcmVseSBvbiB0aGlzIGhlcmUgZm9yIG5vdy4iKTsKICAgICAgICAgc3RhdGljX2Fzc2VydChD
YWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzaXplb2YoUmVnaXN0ZXIpIDwgV2FzbUNhbGxpbmdDb252
ZW50aW9uOjpoZWFkZXJTaXplSW5CeXRlcywgIldlIHJlbHkgb24gdGhpcyBoZXJlIGZvciBub3cu
Iik7CiAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIGdldENhbGxlZVBhdGNocG9pbnQgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6
OkludDY0LCBPcmlnaW4oKSk7Ci0gICAgICAgIGdldENhbGxlZVBhdGNocG9pbnQtPnJlc3VsdENv
bnN0cmFpbnRzID0geyBCMzo6VmFsdWVSZXA6OlNvbWVSZWdpc3RlciB9OworICAgICAgICBnZXRD
YWxsZWVQYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OlNvbWVSZWdp
c3RlciB9OwogICAgICAgICBnZXRDYWxsZWVQYXRjaHBvaW50LT5lZmZlY3RzID0gQjM6OkVmZmVj
dHM6Om5vbmUoKTsKICAgICAgICAgZ2V0Q2FsbGVlUGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFJldHVybihjb25zdCBDb250cm9sRGF0YSYsIGNvbnN0IFN0YWNrJiByZXR1
cm5WYWx1ZXMpIC0+CiAgICAgUkVMRUFTRV9BU1NFUlQocmV0dXJuVmFsdWVzLnNpemUoKSA+PSB3
YXNtQ2FsbEluZm8ucmVzdWx0cy5zaXplKCkpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHJldHVy
blZhbHVlcy5zaXplKCkgLSB3YXNtQ2FsbEluZm8ucmVzdWx0cy5zaXplKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdhc21DYWxsSW5mby5yZXN1bHRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIEIzOjpWYWx1ZVJlcCByZXAgPSB3YXNtQ2FsbEluZm8ucmVzdWx0c1tpXTsKKyAgICAg
ICAgVmFsdWVSZXAgcmVwID0gd2FzbUNhbGxJbmZvLnJlc3VsdHNbaV07CiAgICAgICAgIGlmIChy
ZXAuaXNTdGFjaygpKSB7CiAgICAgICAgICAgICBCMzo6VmFsdWUqIGFkZHJlc3MgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwg
ZnJhbWVQb2ludGVyKCksIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHJlcC5vZmZzZXRGcm9tRlAo
KSkpOwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6TWVtb3J5VmFs
dWU+KG1fcHJvYywgQjM6OlN0b3JlLCBPcmlnaW4oKSwgcmV0dXJuVmFsdWVzW29mZnNldCArIGld
LCBhZGRyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
YWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgKaW5kZXggYjQxODRmNjM2ZmJlLi5kZGMzMGQ0MmI1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCkBA
IC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyA9IDI7CiAKLXVz
aW5nIEFyZ3VtZW50TG9jYXRpb24gPSBCMzo6VmFsdWVSZXA7Cit1c2luZyBBcmd1bWVudExvY2F0
aW9uID0gVmFsdWVSZXA7CiBlbnVtIGNsYXNzIENhbGxSb2xlIDogdWludDhfdCB7CiAgICAgQ2Fs
bGVyLAogICAgIENhbGxlZSwKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IENhbGxJbmZvcm1hdGlv
biB7CiAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgY29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KCkK
ICAgICB7CiAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZXN1bHRSZWdpc3RlcnM7Ci0gICAgICAg
IGZvciAoQjM6OlZhbHVlUmVwIHJlcCA6IHJlc3VsdHMpIHsKKyAgICAgICAgZm9yIChWYWx1ZVJl
cCByZXAgOiByZXN1bHRzKSB7CiAgICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkpCiAgICAgICAg
ICAgICAgICAgdXNlZFJlc3VsdFJlZ2lzdGVycy5zZXQocmVwLnJlZygpKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5RGF0YS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5RGF0YS5oCmluZGV4IGJm
ZTM5OGQyNzdjYS4uMGIyMDYwYTc2MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT1NSRW50cnlEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9TUkVudHJ5RGF0YS5oCkBAIC0yNywxNiArMjcsMTYgQEAKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKIAotI2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKKyNpbmNsdWRlICJWYWx1ZVJl
cC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLWNsYXNzIE9TUkVudHJ5VmFsdWUg
OiBwdWJsaWMgQjM6OlZhbHVlUmVwIHsKK2NsYXNzIE9TUkVudHJ5VmFsdWUgOiBwdWJsaWMgVmFs
dWVSZXAgewogcHVibGljOgotICAgIE9TUkVudHJ5VmFsdWUoY29uc3QgQjM6OlZhbHVlUmVwJiB2
YWx1ZVJlcCwgQjM6OlR5cGUgdHlwZSkKLSAgICAgICAgOiBCMzo6VmFsdWVSZXAodmFsdWVSZXAp
CisgICAgT1NSRW50cnlWYWx1ZShjb25zdCBWYWx1ZVJlcCYgdmFsdWVSZXAsIEIzOjpUeXBlIHR5
cGUpCisgICAgICAgIDogVmFsdWVSZXAodmFsdWVSZXApCiAgICAgICAgICwgbV90eXBlKHR5cGUp
CiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRp
b25zLmNwcAppbmRleCBkYzliMGIyNTc0N2UuLmU4ZDczYzgzOGU2MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNjAzLDcgKzYwMyw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25BbGxvY2F0ZVJlc3VsdHNBcnJheSwg
SlNBcnJheSosIChDYWxsRnJhbWUqIGNhCiAKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1Zh
bHVlKSA9PSBzaXplb2YoQ1BVUmVnaXN0ZXIpLCAiVGhlIGNvZGUgYmVsb3cgcmVsaWVzIG9uIHRo
aXMuIik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS0+cmV0dXJuQ291
bnQoKTsgKytpKSB7Ci0gICAgICAgIEIzOjpWYWx1ZVJlcCByZXAgPSB3YXNtQ2FsbEluZm8ucmVz
dWx0c1tpXTsKKyAgICAgICAgVmFsdWVSZXAgcmVwID0gd2FzbUNhbGxJbmZvLnJlc3VsdHNbaV07
CiAgICAgICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgICAgIGlmIChyZXAuaXNSZWcoKSkKICAgICAg
ICAgICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNhbGxlZVsocmVnaXN0ZXJSZXN1bHRzLmZp
bmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtQ2FsbEluZm8uaGVhZGVyQW5kQXJndW1lbnRT
dGFja1NpemVJbkJ5dGVzKSAvIHNpemVvZihKU1ZhbHVlKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggOWU2YThlMjhmOTEyLi4zZWFlM2U1NjcyMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBtYXJzaGFsbEpTUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgQ2FsbEkKICAgICAgICAgRlBSUmVnIGZwclNjcmF0
Y2ggPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5mcHJBcmdzWzBdLmZwcigpOwogICAgICAgICBi
b29sIGhhc0k2NCA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2ln
bmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgewotICAgICAgICAgICAgQjM6OlZhbHVlUmVwIHJl
cCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKKyAgICAgICAgICAgIFZhbHVlUmVw
IHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKICAgICAgICAgICAgIFR5cGUg
dHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpOwogCiAgICAgICAgICAgICBoYXNJNjQgfD0g
dHlwZSA9PSBXYXNtOjpJNjQ7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBtYXJzaGFsbEpTUmVz
dWx0KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3Qg
Q2FsbEkKICAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBjb252ZXJ0IHZhbHVlcyB0byBC
aWdJbnQuCiAgICAgICAgIGlmIChoYXNJNjQpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKKyAg
ICAgICAgICAgICAgICBWYWx1ZVJlcCByZXAgPSB3YXNtRnJhbWVDb252ZW50aW9uLnJlc3VsdHNb
aV07CiAgICAgICAgICAgICAgICAgVHlwZSB0eXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGUoaSk7
CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2FzbTo6STY0KQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLS0gCjIuMjkuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417453</attachid>
            <date>2021-01-12 07:01:43 -0800</date>
            <delta_ts>2021-01-14 08:29:57 -0800</delta_ts>
            <desc>WIP patch.</desc>
            <filename>0001-JSC-Implement-a-B3-ValueRep-replacement-for-wasm-lli.patch</filename>
            <type>text/plain</type>
            <size>22888</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA3ZmJkNDI2OGM1ZGE3MmJhODk1MDQ1N2VkZTM5YjNhZDNjZDllZTk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAxNTo1NzoxNiArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEltcGxlbWVudCBhIEIzOjpWYWx1ZVJlcCByZXBsYWNlbWVudCBmb3Igd2Fz
bS1sbGludAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMgoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFNvdXJjZXMudHh0OgoqIGIzL0IzVmFsdWVS
ZXAuaDoKKEpTQzo6QjM6OlZhbHVlUmVwOjpWYWx1ZVJlcCk6Ciogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50
KToKKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRv
cjo6Y3JlYXRlQ2FsbFBhdGNocG9pbnQpOgoqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmg6
CihKU0M6Oldhc206OkNhbGxJbmZvcm1hdGlvbjo6Y29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KToK
KiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKEpTQzo6V2FzbTo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKiB3YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNwcDogQWRkZWQuCihKU0M6Oldhc206
OlZhbHVlTG9jYXRpb246OmR1bXAgY29uc3QpOgooV1RGOjpwcmludEludGVybmFsKToKKiB3YXNt
L1dhc21WYWx1ZUxvY2F0aW9uLmg6IEFkZGVkLgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpW
YWx1ZUxvY2F0aW9uKToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnKToKKEpTQzo6V2Fz
bTo6VmFsdWVMb2NhdGlvbjo6c3RhY2spOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpzdGFj
a0FyZ3VtZW50KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6a2luZCBjb25zdCk6CihKU0M6
Oldhc206OlZhbHVlTG9jYXRpb246OmlzUmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2Nh
dGlvbjo6cmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNHUFIgY29uc3Qp
OgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc0ZQUiBjb25zdCk6CihKU0M6Oldhc206OlZh
bHVlTG9jYXRpb246OmdwciBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmZwciBj
b25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3RhY2sgY29uc3QpOgooSlNDOjpX
YXNtOjpWYWx1ZUxvY2F0aW9uOjpvZmZzZXRGcm9tRlAgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1
ZUxvY2F0aW9uOjppc1N0YWNrQXJndW1lbnQgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0
aW9uOjpvZmZzZXRGcm9tU1AgY29uc3QpOgoqIHdhc20vanMvSlNUb1dhc20uY3BwOgooSlNDOjpX
YXNtOjptYXJzaGFsbEpTUmVzdWx0KToKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgfCAgNDAgKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWVSZXAuaCAgICAgICAgIHwgIDI1ICsrKysKIC4uLi93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgICAgICAgICAgICAgICB8ICAgOSArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIHwgICA5ICstCiAuLi4vd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaCAgICAgICAgICAgICAgfCAgMTggKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT3BlcmF0aW9ucy5jcHAgfCAgIDggKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21W
YWx1ZUxvY2F0aW9uLmNwcCB8ICA3MCArKysrKysrKysKIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWx1ZUxvY2F0aW9uLmggICB8IDEzNSArKysrKysrKysrKysrKysrKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCAgICB8ICAyNiArKy0tCiAxMCBmaWxl
cyBjaGFuZ2VkLCAzMDcgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbHVlTG9jYXRpb24uY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbHVl
TG9jYXRpb24uaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY0ODkxZGEzYjA1NC4uY2Vk
NDU0YjlhNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAy
MS0wMS0xMiAgWGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1w
bGVtZW50IGEgQjM6OlZhbHVlUmVwIHJlcGxhY2VtZW50IGZvciB3YXNtLWxsaW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0MTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGIzL0IzVmFsdWVSZXAuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjpW
YWx1ZVJlcCk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KToKKyAgICAg
ICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6Y3JlYXRlQ2FsbFBhdGNocG9pbnQpOgorICAgICAgICAqIHdhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxJbmZvcm1hdGlvbjo6
Y29tcHV0ZVJlc3VsdHNPZmZzZXRMaXN0KToKKyAgICAgICAgKiB3YXNtL1dhc21PcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAg
ICAgICAgKiB3YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
Oldhc206OlZhbHVlTG9jYXRpb246OmR1bXAgY29uc3QpOgorICAgICAgICAoV1RGOjpwcmludElu
dGVybmFsKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpWYWx1ZUxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFs
dWVMb2NhdGlvbjo6c3RhY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpz
dGFja0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6a2luZCBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzUmVnIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNHUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpX
YXNtOjpWYWx1ZUxvY2F0aW9uOjppc0ZQUiBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZh
bHVlTG9jYXRpb246OmdwciBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRp
b246OmZwciBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3Rh
Y2sgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpvZmZzZXRGcm9t
RlAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc1N0YWNrQXJn
dW1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpvZmZzZXRG
cm9tU1AgY29uc3QpOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjptYXJzaGFsbEpTUmVzdWx0KToKKwogMjAyMS0wMS0xMCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpJVENhZ2UncyBHYXRlIG1l
Y2hhbmlzbSBpcyB1c2VkIGluIEFSTTY0RSBldmVuIGlmIEpJVENhZ2UgaXMgZGlzYWJsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIxZGM1MjFiYjg1YS4uNmI5NzhhMzkwZTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDc3LDYgKzEwNzcsNyBAQCB3YXNtL1dh
c21TdHJlYW1pbmdQYXJzZXIuY3BwCiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2FzbVRodW5r
cy5jcHAKIHdhc20vV2FzbVRpZXJVcENvdW50LmNwcAord2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5j
cHAKIHdhc20vV2FzbVdvcmtsaXN0LmNwcAogCiB3YXNtL2pzL0pTVG9XYXNtLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKaW5kZXggOWI3MTYwMTIwMmYyLi4xMWI3NWNjN2Jk
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaApAQCAtMzQsNiArMzQsOSBA
QAogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgog
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyNp
bmNsdWRlICJXYXNtVmFsdWVMb2NhdGlvbi5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC0xMjEsNiArMTI0LDI4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gV2Fy
bUFueSB8fCBraW5kID09IENvbGRBbnkgfHwga2luZCA9PSBMYXRlQ29sZEFueSB8fCBraW5kID09
IFNvbWVSZWdpc3RlciB8fCBraW5kID09IFNvbWVSZWdpc3RlcldpdGhDbG9iYmVyIHx8IGtpbmQg
PT0gU29tZUVhcmx5UmVnaXN0ZXIgfHwga2luZCA9PSBTb21lTGF0ZVJlZ2lzdGVyKTsKICAgICB9
CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgVmFsdWVSZXAoV2FzbTo6VmFsdWVMb2Nh
dGlvbiBsb2NhdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAobG9jYXRpb24ua2luZCgpKSB7
CisgICAgICAgIGNhc2UgV2FzbTo6VmFsdWVMb2NhdGlvbjo6S2luZDo6UmVnaXN0ZXI6CisgICAg
ICAgICAgICBtX2tpbmQgPSBSZWdpc3RlcjsKKyAgICAgICAgICAgIHUucmVnID0gbG9jYXRpb24u
cmVnKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXYXNtOjpWYWx1ZUxvY2F0
aW9uOjpLaW5kOjpTdGFjazoKKyAgICAgICAgICAgIG1fa2luZCA9IFN0YWNrOworICAgICAgICAg
ICAgdS5vZmZzZXRGcm9tRlAgPSBsb2NhdGlvbi5vZmZzZXRGcm9tRlAoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdhc206OlZhbHVlTG9jYXRpb246OktpbmQ6OlN0YWNrQXJn
dW1lbnQ6CisgICAgICAgICAgICBtX2tpbmQgPSBTdGFja0FyZ3VtZW50OworICAgICAgICAgICAg
dS5vZmZzZXRGcm9tU1AgPSBsb2NhdGlvbi5vZmZzZXRGcm9tU1AoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIHN0YXRpYyBWYWx1ZVJlcCByZWcoUmVn
IHJlZykKICAgICB7CiAgICAgICAgIHJldHVybiBWYWx1ZVJlcChyZWcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYjc0YWE2
MjQ3ZDQ3Li5hOTdiYzc1MTcwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkIz
UGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUg
IkIzUHJvY2VkdXJlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zLmgiCiAjaW5jbHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKQEAgLTI5NjQsOCAr
Mjk2NSwxMiBAQCBCMzo6UGF0Y2hwb2ludFZhbHVlKiBBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQ
YXRjaHBvaW50KEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQogICAgICAgICBwYXRjaEFyZ3NbaSArIG9mZnNldF0g
PSBDb25zdHJhaW5lZFRtcChhcmdzW2ldLCBsb2NhdGlvbnMucGFyYW1zW2ldKTsKIAotICAgIGlm
IChwYXRjaHBvaW50LT50eXBlKCkgIT0gQjM6OlZvaWQpCi0gICAgICAgIHBhdGNocG9pbnQtPnJl
c3VsdENvbnN0cmFpbnRzID0gV1RGTW92ZShsb2NhdGlvbnMucmVzdWx0cyk7CisgICAgaWYgKHBh
dGNocG9pbnQtPnR5cGUoKSAhPSBCMzo6Vm9pZCkgeworICAgICAgICBWZWN0b3I8QjM6OlZhbHVl
UmVwLCAxPiByZXN1bHRDb25zdHJhaW50czsKKyAgICAgICAgZm9yIChhdXRvIHZhbHVlTG9jYXRp
b24gOiBsb2NhdGlvbnMucmVzdWx0cykKKyAgICAgICAgICAgIHJlc3VsdENvbnN0cmFpbnRzLmFw
cGVuZChCMzo6VmFsdWVSZXAodmFsdWVMb2NhdGlvbikpOworICAgICAgICBwYXRjaHBvaW50LT5y
ZXN1bHRDb25zdHJhaW50cyA9IFdURk1vdmUocmVzdWx0Q29uc3RyYWludHMpOworICAgIH0KICAg
ICBlbWl0UGF0Y2hwb2ludChibG9jaywgcGF0Y2hwb2ludCwgcmVzdWx0cywgV1RGTW92ZShwYXRj
aEFyZ3MpKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBiNTMyNGY0N2JlNWMuLmUy
MGQwMWEzOGViZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZUlmLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtMjE1MSw4ICsyMTUyLDEyIEBAIEIzOjpWYWx1ZSogQjNJ
UkdlbmVyYXRvcjo6Y3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxvY2ssIE9yaWdp
biBvcmlnaW4sCiAgICAgcGF0Y2hwb2ludEZ1bmN0b3IocGF0Y2hwb2ludCk7CiAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kVmVjdG9yKGNvbnN0cmFpbmVkQXJndW1lbnRzKTsKIAotICAgIGlmIChyZXR1
cm5UeXBlICE9IEIzOjpWb2lkKQotICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50
cyA9IFdURk1vdmUod2FzbUNhbGxJbmZvLnJlc3VsdHMpOworICAgIGlmIChyZXR1cm5UeXBlICE9
IEIzOjpWb2lkKSB7CisgICAgICAgIFZlY3RvcjxCMzo6VmFsdWVSZXAsIDE+IHJlc3VsdENvbnN0
cmFpbnRzOworICAgICAgICBmb3IgKGF1dG8gdmFsdWVMb2NhdGlvbiA6IHdhc21DYWxsSW5mby5y
ZXN1bHRzKQorICAgICAgICAgICAgcmVzdWx0Q29uc3RyYWludHMuYXBwZW5kKEIzOjpWYWx1ZVJl
cCh2YWx1ZUxvY2F0aW9uKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRz
ID0gV1RGTW92ZShyZXN1bHRDb25zdHJhaW50cyk7CisgICAgfQogICAgIHJldHVybiBwYXRjaHBv
aW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5oCmluZGV4IGI0MTg0ZjYzNmZiZS4uODcyMzZhZWExOTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAt
MjcsMjggKzI3LDIwIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJB
aXJDb2RlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCi0j
aW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCi0jaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgi
Ci0jaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKLSNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFs
dWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCi0jaW5jbHVkZSAiQjNQYXRjaHBvaW50
VmFsdWUuaCIKLSNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgotI2luY2x1ZGUgIkIzU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAi
UmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCisjaW5jbHVkZSAiV2FzbVZh
bHVlTG9jYXRpb24uaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkxMSW50
Q2FsbGVlU2F2ZVJlZ2lzdGVycyA9IDI7CiAKLXVzaW5nIEFyZ3VtZW50TG9jYXRpb24gPSBCMzo6
VmFsdWVSZXA7Cit1c2luZyBBcmd1bWVudExvY2F0aW9uID0gVmFsdWVMb2NhdGlvbjsKIGVudW0g
Y2xhc3MgQ2FsbFJvbGUgOiB1aW50OF90IHsKICAgICBDYWxsZXIsCiAgICAgQ2FsbGVlLApAQCAt
NjQsOSArNTYsOSBAQCBzdHJ1Y3QgQ2FsbEluZm9ybWF0aW9uIHsKICAgICBSZWdpc3RlckF0T2Zm
c2V0TGlzdCBjb21wdXRlUmVzdWx0c09mZnNldExpc3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0
ZXJTZXQgdXNlZFJlc3VsdFJlZ2lzdGVyczsKLSAgICAgICAgZm9yIChCMzo6VmFsdWVSZXAgcmVw
IDogcmVzdWx0cykgewotICAgICAgICAgICAgaWYgKHJlcC5pc1JlZygpKQotICAgICAgICAgICAg
ICAgIHVzZWRSZXN1bHRSZWdpc3RlcnMuc2V0KHJlcC5yZWcoKSk7CisgICAgICAgIGZvciAoVmFs
dWVMb2NhdGlvbiBsb2MgOiByZXN1bHRzKSB7CisgICAgICAgICAgICBpZiAobG9jLmlzUmVnKCkp
CisgICAgICAgICAgICAgICAgdXNlZFJlc3VsdFJlZ2lzdGVycy5zZXQobG9jLnJlZygpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHNhdmVkUmVncyh1c2VkUmVz
dWx0UmVnaXN0ZXJzLCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA4MmE5ZGNjMmI2
MWQuLjFmMjY3OGI0OTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
cGVyYXRpb25zLmNwcApAQCAtNjAzLDEyICs2MDMsMTIgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkFsbG9jYXRlUmVzdWx0c0FycmF5LCBKU0FycmF5KiwgKENhbGxGcmFtZSog
Y2EKIAogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTVmFsdWUpID09IHNpemVvZihDUFVSZWdp
c3RlciksICJUaGUgY29kZSBiZWxvdyByZWxpZXMgb24gdGhpcy4iKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLT5yZXR1cm5Db3VudCgpOyArK2kpIHsKLSAgICAgICAg
QjM6OlZhbHVlUmVwIHJlcCA9IHdhc21DYWxsSW5mby5yZXN1bHRzW2ldOworICAgICAgICBWYWx1
ZUxvY2F0aW9uIGxvYyA9IHdhc21DYWxsSW5mby5yZXN1bHRzW2ldOwogICAgICAgICBKU1ZhbHVl
IHZhbHVlOwotICAgICAgICBpZiAocmVwLmlzUmVnKCkpCi0gICAgICAgICAgICB2YWx1ZSA9IHN0
YWNrUG9pbnRlckZyb21DYWxsZWVbKHJlZ2lzdGVyUmVzdWx0cy5maW5kKHJlcC5yZWcoKSktPm9m
ZnNldCgpICsgd2FzbUNhbGxJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykg
LyBzaXplb2YoSlNWYWx1ZSldOworICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAgICAg
ICB2YWx1ZSA9IHN0YWNrUG9pbnRlckZyb21DYWxsZWVbKHJlZ2lzdGVyUmVzdWx0cy5maW5kKGxv
Yy5yZWcoKSktPm9mZnNldCgpICsgd2FzbUNhbGxJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tT
aXplSW5CeXRlcykgLyBzaXplb2YoSlNWYWx1ZSldOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB2YWx1ZSA9IHN0YWNrUG9pbnRlckZyb21DYWxsZWVbcmVwLm9mZnNldEZyb21TUCgpIC8gc2l6
ZW9mKEpTVmFsdWUpXTsKKyAgICAgICAgICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNhbGxl
ZVtsb2Mub2Zmc2V0RnJvbVNQKCkgLyBzaXplb2YoSlNWYWx1ZSldOwogICAgICAgICByZXN1bHQt
PmluaXRpYWxpemVJbmRleChpbml0aWFsaXphdGlvblNjb3BlLCBpLCB2YWx1ZSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lODVkM2NjNDRlMWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2Nh
dGlvbi5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldhc21W
YWx1ZUxvY2F0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CisKK3Zv
aWQgVmFsdWVMb2NhdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91
dC5wcmludChtX2tpbmQpOworICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgY2FzZSBSZWdpc3Rl
cjoKKyAgICAgICAgb3V0LnByaW50KCIoIiwgcmVnKCksICIpIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFN0YWNrOgorICAgICAgICBvdXQucHJpbnQoIigiLCBvZmZzZXRGcm9tRlAoKSwg
IikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhY2tBcmd1bWVudDoKKyAgICAgICAg
b3V0LnByaW50KCIoIiwgb2Zmc2V0RnJvbVNQKCksICIpIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOjpX
YXNtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVmFsdWVMb2NhdGlv
bjo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVmFsdWVMb2Nh
dGlvbjo6UmVnaXN0ZXI6CisgICAgICAgIG91dC5wcmludCgiUmVnaXN0ZXIiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgVmFsdWVMb2NhdGlvbjo6U3RhY2s6CisgICAgICAgIG91dC5wcmlu
dCgiU3RhY2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVMb2NhdGlvbjo6U3Rh
Y2tBcmd1bWVudDoKKyAgICAgICAgb3V0LnByaW50KCJTdGFja0FyZ3VtZW50Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVmFsdWVMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZh
bHVlTG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM0
M2I5ODdkNTQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWx1ZUxvY2F0aW9uLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNl
IFdhc20geworCitjbGFzcyBWYWx1ZUxvY2F0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIEtpbmQgOiB1aW50OF90IHsKKyAgICAgICAgUmVnaXN0
ZXIsCisgICAgICAgIFN0YWNrLAorICAgICAgICBTdGFja0FyZ3VtZW50LAorICAgIH07CisKKyAg
ICBWYWx1ZUxvY2F0aW9uKCkKKyAgICAgICAgOiBtX2tpbmQoUmVnaXN0ZXIpCisgICAgeworICAg
IH0KKworICAgIGV4cGxpY2l0IFZhbHVlTG9jYXRpb24oUmVnIHJlZykKKyAgICAgICAgOiBtX2tp
bmQoUmVnaXN0ZXIpCisgICAgeworICAgICAgICB1LnJlZyA9IHJlZzsKKyAgICB9CisKKyAgICBW
YWx1ZUxvY2F0aW9uKGNvbnN0IFZhbHVlTG9jYXRpb24mKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0
aWMgVmFsdWVMb2NhdGlvbiByZWcoUmVnIHJlZykKKyAgICB7CisgICAgICAgIHJldHVybiBWYWx1
ZUxvY2F0aW9uKHJlZyk7CisgICAgfQorCisgICAgc3RhdGljIFZhbHVlTG9jYXRpb24gc3RhY2so
aW50cHRyX3Qgb2Zmc2V0RnJvbUZQKQorICAgIHsKKyAgICAgICAgVmFsdWVMb2NhdGlvbiByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGFjazsKKyAgICAgICAgcmVzdWx0LnUub2Zm
c2V0RnJvbUZQID0gb2Zmc2V0RnJvbUZQOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIHN0YXRpYyBWYWx1ZUxvY2F0aW9uIHN0YWNrQXJndW1lbnQoaW50cHRyX3Qgb2Zmc2V0
RnJvbVNQKQorICAgIHsKKyAgICAgICAgVmFsdWVMb2NhdGlvbiByZXN1bHQ7CisgICAgICAgIHJl
c3VsdC5tX2tpbmQgPSBTdGFja0FyZ3VtZW50OworICAgICAgICByZXN1bHQudS5vZmZzZXRGcm9t
U1AgPSBvZmZzZXRGcm9tU1A7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
S2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisKKyAgICBib29sIGlzUmVnKCkg
Y29uc3QgeyByZXR1cm4ga2luZCgpID09IFJlZ2lzdGVyOyB9CisKKyAgICBSZWcgcmVnKCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlZygpKTsKKyAgICAgICAgcmV0dXJuIHUucmVn
OworICAgIH0KKworICAgIGJvb2wgaXNHUFIoKSBjb25zdCB7IHJldHVybiBpc1JlZygpICYmIHJl
ZygpLmlzR1BSKCk7IH0KKyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4gaXNSZWcoKSAm
JiByZWcoKS5pc0ZQUigpOyB9CisKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gcmVn
KCkuZ3ByKCk7IH0KKyAgICBGUFJSZWcgZnByKCkgY29uc3QgeyByZXR1cm4gcmVnKCkuZnByKCk7
IH0KKworICAgIGJvb2wgaXNTdGFjaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBTdGFjazsg
fQorCisgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbUZQKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1N0YWNrKCkpOworICAgICAgICByZXR1cm4gdS5vZmZzZXRGcm9tRlA7CisgICAgfQor
CisgICAgYm9vbCBpc1N0YWNrQXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gU3Rh
Y2tBcmd1bWVudDsgfQorCisgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc1N0YWNrQXJndW1lbnQoKSk7CisgICAgICAgIHJldHVybiB1Lm9m
ZnNldEZyb21TUDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB1bmlvbiBVIHsKKyAgICAgICAgUmVn
IHJlZzsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbUZQOworICAgICAgICBpbnRwdHJfdCBv
ZmZzZXRGcm9tU1A7CisKKyAgICAgICAgVSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbXNl
dChzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhpcykpOworICAgICAgICB9
CisgICAgfSB1OworICAgIEtpbmQgbV9raW5kOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
Oldhc20KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6S2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IDllNmE4
ZTI4ZjkxMi4uN2ZiZjI4NWNmNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCkBAIC05MSwxOSArOTEsMTkgQEAgdm9pZCBtYXJzaGFsbEpTUmVzdWx0KEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgQ2FsbEkK
ICAgICAgICAgRlBSUmVnIGZwclNjcmF0Y2ggPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5mcHJB
cmdzWzBdLmZwcigpOwogICAgICAgICBib29sIGhhc0k2NCA9IGZhbHNlOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgewotICAg
ICAgICAgICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tp
XTsKKyAgICAgICAgICAgIFZhbHVlTG9jYXRpb24gbG9jID0gd2FzbUZyYW1lQ29udmVudGlvbi5y
ZXN1bHRzW2ldOwogICAgICAgICAgICAgVHlwZSB0eXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGUo
aSk7CiAKICAgICAgICAgICAgIGhhc0k2NCB8PSB0eXBlID09IFdhc206Okk2NDsKLSAgICAgICAg
ICAgIGlmIChyZXAuaXNSZWcoKSkgeworICAgICAgICAgICAgaWYgKGxvYy5pc1JlZygpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2FzbTo6STY0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJveFdhc21SZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVwLnJlZygp
LCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoc2NyYXRjaCwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJh
bWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAgICAg
ICAgICAgICAgICAgICBib3hXYXNtUmVzdWx0KGppdCwgc2lnbmF0dXJlLnJldHVyblR5cGUoaSks
IGxvYy5yZWcoKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVl
KHNjcmF0Y2gsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5kKGxvYy5yZWcoKSktPm9mZnNldCgp
ICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
VmFsdWUoSlNWYWx1ZVJlZ3MgeyByZXAucmVnKCkuZ3ByKCkgfSwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0
ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRl
ckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAgICAgICAgICAgICAgICAgICBqaXQu
c3RvcmVWYWx1ZShKU1ZhbHVlUmVncyB7IGxvYy5yZWcoKS5ncHIoKSB9LCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1bHRS
ZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRpb24u
aGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFdhc206Okk2NCkgewotICAgICAgICAgICAg
ICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlcC5vZmZzZXRGcm9tU1AoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbG9jLm9mZnNldEZyb21TUCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgUmVnIHRtcCA9IHR5cGUgPT0gRjMyIHx8IHR5cGUgPT0gRjY0ID8gUmVnKGZw
clNjcmF0Y2gpIDogUmVnKHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQu
bG9hZDY0VG9SZWcobG9jYXRpb24sIHRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJveFdhc21S
ZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdG1wLCBzY3JhdGNoKTsKQEAgLTEy
OSw3ICsxMjksNyBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAvLyBUaGlzIGlz
IHJlcXVpcmVkIHRvIGNvbnZlcnQgdmFsdWVzIHRvIEJpZ0ludC4KICAgICAgICAgaWYgKGhhc0k2
NCkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1
cm5Db3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgcmVwID0gd2Fz
bUZyYW1lQ29udmVudGlvbi5yZXN1bHRzW2ldOworICAgICAgICAgICAgICAgIFZhbHVlTG9jYXRp
b24gbG9jID0gd2FzbUZyYW1lQ29udmVudGlvbi5yZXN1bHRzW2ldOwogICAgICAgICAgICAgICAg
IFR5cGUgdHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpOwogICAgICAgICAgICAgICAgIGlm
ICh0eXBlICE9IFdhc206Okk2NCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0x
NDEsMTggKzE0MSwxOCBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAgICAgICAg
ICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2Uod2FzbUNvbnRleHRJbnN0YW5jZUdQUik7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHJlcC5pc1JlZygpKQot
ICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5k
KHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1
bWVudFN0YWNrU2l6ZUluQnl0ZXMpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAg
ICAgICAgIGlmIChsb2MuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2F2ZWRSZXN1bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFt
ZUNvbnZlbnRpb24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCByZXAub2Zmc2V0RnJvbVNQKCkpOworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGxvYy5vZmZzZXRGcm9tU1AoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGppdC5sb2FkNjRUb1JlZyhsb2NhdGlvbiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNvbnZlcnRUb0JpZ0ludCk+KHdhc21Db250ZXh0SW5zdGFuY2VHUFIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGxPcGVyYXRp
b24oRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Db252ZXJ0VG9CaWdJbnQp
KTsKLSAgICAgICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkpCi0gICAgICAgICAgICAgICAgICAg
IGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgfSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJh
bWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAgICAg
ICAgICAgICAgIGlmIChsb2MuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
VmFsdWUoSlNWYWx1ZVJlZ3MgeyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9LCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1
bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRp
b24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgcmVwLm9mZnNldEZy
b21TUCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVscGVy
czo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBsb2Mub2Zmc2V0
RnJvbVNQKCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShKU1ZhbHVlUmVn
cyB7IEdQUkluZm86OnJldHVyblZhbHVlR1BSIH0sIGxvY2F0aW9uKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0tIAoyLjI5LjIKCg==
</data>
<flag name="commit-queue"
          id="435172"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417624</attachid>
            <date>2021-01-14 08:29:57 -0800</date>
            <delta_ts>2021-01-14 08:38:50 -0800</delta_ts>
            <desc>WasmValueLocation, v1</desc>
            <filename>0001-JSC-Implement-a-B3-ValueRep-replacement-for-wasm-lli.patch</filename>
            <type>text/plain</type>
            <size>27143</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA2MjU0YWJkOWIzMzE2ZmZhMzRkYWQ2MmYyNDA1N2NiMjJjOTQ0NDZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAxNTo1NzoxNiArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEltcGxlbWVudCBhIEIzOjpWYWx1ZVJlcCByZXBsYWNlbWVudCBmb3Igd2Fz
bS1sbGludAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMgoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGUgTExJbnQgY29kZSBpbiBXZWJBc3NlbWJs
eSB1c2VzIEIzOjpWYWx1ZVJlcCB0byBzdG9yZQppbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMuIFdlIHdpbGwKdXNlIGluc3RlYWQgYSBuZXcgY2xh
c3Mgd2l0aCBqdXN0IGVub3VnaCBmdW5jdGlvbmFsaXR5IGZvciB0aG9zZQpuZWVkcyAoYmFzaWNh
bGx5LCB3aGV0aGVyIGEgdmFsdWUgaW4gYSBmdW5jdGlvbiBjYWxsIHdpbGwgYmUgaW4gYQpyZWdp
c3RlciBvciB0aGUgc3RhY2spIGFuZCBjb252ZXJ0IHRvIEIzOjpWYWx1ZVJlcCB3aGVuCnRyYW5z
aXRpb25pbmcgaW50byBCMy9BaXIuIFRoaXMgaXMgcGFydCBvZiB0aGUgd29yayBuZWVkZWQgdG8K
YWxsb3cgV2ViQXNzZW1ibHkgdG8gd29yayB3aXRob3V0IEIzLCBhbmQgZXZlbnR1YWxseSBpbgpp
bnRlcnByZXRlZCBtb2RlIG9ubHkuCgoqIFNvdXJjZXMudHh0OiBhZGQgbmV3IHNvdXJjZXMuCiog
YjMvQjNWYWx1ZVJlcC5oOgooSlNDOjpCMzo6VmFsdWVSZXA6OlZhbHVlUmVwKTogaW5jbHVkZSBX
YXNtVmFsdWVMb2NhdGlvbi5oIGFuZCBhZGQKYSBtZXRob2QgdG8gY29udmVydCBCMzo6VmFsdWVS
ZXAgdG8gV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBhZGQgbmV3IHNvdXJjZXMuCiogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KTogY292
ZXJ0IGV4aXN0aW5nIFdhc206OlZhbHVlTG9jYXRpb24gaW50byBCMzo6VmFsdWVSZXAuCiogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CihKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNyZWF0
ZUNhbGxQYXRjaHBvaW50KTogZGl0dG8uCiogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoK
KEpTQzo6V2FzbTo6Q2FsbEluZm9ybWF0aW9uOjpjb21wdXRlUmVzdWx0c09mZnNldExpc3QpOiB1
c2UgV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKEpTQzo6
V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGl0dG8uCiogd2FzbS9XYXNtVmFsdWVM
b2NhdGlvbi5jcHA6IG5ldyBjbGFzcywgYmFzaWNhbGx5IEIzOjpWYWx1ZVJlcAp3aXRob3V0IGFs
bCB0aGUgc3R1ZmYgd2UgZG9uJ3QgbmVlZCBpbiBXYXNtTExJbnQuCihKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OmR1bXAgY29uc3QpOgooV1RGOjpwcmludEludGVybmFsKToKKiB3YXNtL1dhc21W
YWx1ZUxvY2F0aW9uLmg6IGRpdHRvLgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpWYWx1ZUxv
Y2F0aW9uKToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnKToKKEpTQzo6V2FzbTo6VmFs
dWVMb2NhdGlvbjo6c3RhY2spOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpzdGFja0FyZ3Vt
ZW50KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6a2luZCBjb25zdCk6CihKU0M6Oldhc206
OlZhbHVlTG9jYXRpb246OmlzUmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6
cmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNHUFIgY29uc3QpOgooSlND
OjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc0ZQUiBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9j
YXRpb246OmdwciBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmZwciBjb25zdCk6
CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3RhY2sgY29uc3QpOgooSlNDOjpXYXNtOjpW
YWx1ZUxvY2F0aW9uOjpvZmZzZXRGcm9tRlAgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0
aW9uOjppc1N0YWNrQXJndW1lbnQgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpv
ZmZzZXRGcm9tU1AgY29uc3QpOgoqIHdhc20vanMvSlNUb1dhc20uY3BwOgooSlNDOjpXYXNtOjpt
YXJzaGFsbEpTUmVzdWx0KTogdXNlIFdhc206OlZhbHVlTG9jYXRpb24uCi0tLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgIDUyICsrKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICB8ICAgNCArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCAgICAgICAgIHwgIDI1ICsrKysKIC4uLi93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAgOSArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIHwgICA5ICstCiAuLi4vd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgMTggKy0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgfCAgIDggKy0KIC4uLi9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNwcCB8ICA3MSArKysrKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmggICB8IDEzNSArKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCAgICB8
ICAyNiArKy0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAzMjQgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbHVlTG9jYXRpb24uY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVZhbHVlTG9jYXRpb24uaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDgxY2RhYzEzNDM5OS4uODM2MDE2YWUyYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NSBAQAorMjAyMS0wMS0xMiAgWGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IGEgQjM6OlZhbHVlUmVwIHJlcGxhY2VtZW50IGZvciB3
YXNtLWxsaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjA0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgTExJbnQgY29kZSBpbiBXZWJBc3NlbWJseSB1c2VzIEIzOjpWYWx1ZVJlcCB0byBzdG9y
ZQorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZvciBm
dW5jdGlvbnMuIFdlIHdpbGwKKyAgICAgICAgdXNlIGluc3RlYWQgYSBuZXcgY2xhc3Mgd2l0aCBq
dXN0IGVub3VnaCBmdW5jdGlvbmFsaXR5IGZvciB0aG9zZQorICAgICAgICBuZWVkcyAoYmFzaWNh
bGx5LCB3aGV0aGVyIGEgdmFsdWUgaW4gYSBmdW5jdGlvbiBjYWxsIHdpbGwgYmUgaW4gYQorICAg
ICAgICByZWdpc3RlciBvciB0aGUgc3RhY2spIGFuZCBjb252ZXJ0IHRvIEIzOjpWYWx1ZVJlcCB3
aGVuCisgICAgICAgIHRyYW5zaXRpb25pbmcgaW50byBCMy9BaXIuIFRoaXMgaXMgcGFydCBvZiB0
aGUgd29yayBuZWVkZWQgdG8KKyAgICAgICAgYWxsb3cgV2ViQXNzZW1ibHkgdG8gd29yayB3aXRo
b3V0IEIzLCBhbmQgZXZlbnR1YWxseSBpbgorICAgICAgICBpbnRlcnByZXRlZCBtb2RlIG9ubHku
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogYWRkIG5ldyBzb3VyY2VzLgorICAgICAgICAqIGIz
L0IzVmFsdWVSZXAuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjpWYWx1ZVJlcCk6IGlu
Y2x1ZGUgV2FzbVZhbHVlTG9jYXRpb24uaCBhbmQgYWRkCisgICAgICAgIGEgbWV0aG9kIHRvIGNv
bnZlcnQgQjM6OlZhbHVlUmVwIHRvIFdhc206OlZhbHVlTG9jYXRpb24uCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRkIG5ldyBzb3VyY2VzLgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDYWxsUGF0Y2hwb2ludCk6IGNvdmVydCBleGlzdGluZyBX
YXNtOjpWYWx1ZUxvY2F0aW9uIGludG8gQjM6OlZhbHVlUmVwLgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpj
cmVhdGVDYWxsUGF0Y2hwb2ludCk6IGRpdHRvLgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdD
b252ZW50aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxJbmZvcm1hdGlvbjo6Y29tcHV0
ZVJlc3VsdHNPZmZzZXRMaXN0KTogdXNlIFdhc206OlZhbHVlTG9jYXRpb24uCisgICAgICAgICog
d2FzbS9XYXNtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkpTQ19ERUZJTkVf
SklUX09QRVJBVElPTik6IGRpdHRvLgorICAgICAgICAqIHdhc20vV2FzbVZhbHVlTG9jYXRpb24u
Y3BwOiBuZXcgY2xhc3MsIGJhc2ljYWxseSBCMzo6VmFsdWVSZXAKKyAgICAgICAgd2l0aG91dCBh
bGwgdGhlIHN0dWZmIHdlIGRvbid0IG5lZWQgaW4gV2FzbUxMSW50LgorICAgICAgICAoSlNDOjpX
YXNtOjpWYWx1ZUxvY2F0aW9uOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5oOiBkaXR0by4KKyAgICAg
ICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6VmFsdWVMb2NhdGlvbik6CisgICAgICAgIChK
U0M6Oldhc206OlZhbHVlTG9jYXRpb246OnJlZyk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OnN0YWNrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6c3Rh
Y2tBcmd1bWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmtpbmQgY29u
c3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc1JlZyBjb25zdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OnJlZyBjb25zdCk6CisgICAgICAgIChK
U0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzR1BSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6VmFsdWVMb2NhdGlvbjo6aXNGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1
ZUxvY2F0aW9uOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9u
OjpmcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc1N0YWNr
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6b2Zmc2V0RnJvbUZQ
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNTdGFja0FyZ3Vt
ZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6b2Zmc2V0RnJv
bVNQIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6bWFyc2hhbGxKU1Jlc3VsdCk6IHVzZSBXYXNtOjpWYWx1ZUxvY2F0aW9uLgorCiAy
MDIxLTAxLTEzICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBS
ZW1vdmUgdGhlIHVudXNlZCBjb21waWxhdGlvbiBieXByb2R1Y3RzIGZyb20gdGhlIHdhc20gZW1i
ZWRkZXIgZW50cnlwb2ludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDkwOTJl
MzIwY2EuLmIzNjkzNjNlNmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NDcsNiArMTI0Nyw3IEBACiAJCTg2MTgxNjc3MUZCNzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTgx
Njc2MUZCNzkyMkYwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAg
LyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNB
QTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNGQkM1ODI1
QjA5M0I5MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9jYXRpb24uaCAqLzsgfTsgICAgICAgICAgICAg
ICAgCiAJCTg2NUEzMEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1QTMwRjAxMzUw
MDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8q
IEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi87IH07CiAJCTg2
NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIz
RDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLzsgfTsKQEAgLTY5MTcsNiArNjkxOCw4IEBA
CiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NjNGQkM1NzI1QjA5M0I4MDBGNkM5MzAgLyog
V2FzbVZhbHVlTG9jYXRpb24uY3BwICovLAorCQkJCTg2M0ZCQzU4MjVCMDkzQjkwMEY2QzkzMCAv
KiBXYXNtVmFsdWVMb2NhdGlvbi5oICovLAogCQkJCUFEMkZDQjhBMURCNTg0MDAwMEIzRTczNiAv
KiBqcyAqLywKIAkJCQk1Mjg0N0FEOTIxRkZCODYzMDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCAqLywKIAkJCQk1Mjg0N0FEQTIxRkZCODYzMDA2MUE5REIgLyogV2FzbUFpcklSR2Vu
ZXJhdG9yLmggKi8sCkBAIC05Njc3LDYgKzk2ODAsNyBAQAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAw
MDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1
MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg2M0ZCQzVBMjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjkxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTE9wZXJh
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzFDMTdENTFGMjIwMENBMkM0MCAvKiBG
VExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDIxZGM1MjFiYjg1YS4uNmI5NzhhMzkwZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xMDc3LDYgKzEwNzcsNyBAQCB3YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3Bw
CiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2FzbVRodW5rcy5jcHAKIHdhc20vV2FzbVRpZXJV
cENvdW50LmNwcAord2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5jcHAKIHdhc20vV2FzbVdvcmtsaXN0
LmNwcAogCiB3YXNtL2pzL0pTVG9XYXNtLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
UmVwLmgKaW5kZXggOWI3MTYwMTIwMmYyLi4xMWI3NWNjN2JkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVSZXAuaApAQCAtMzQsNiArMzQsOSBAQAogI2luY2x1ZGUgIlJlZ2lzdGVy
U2V0LmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtVmFsdWVMb2Nh
dGlvbi5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMjEsNiArMTI0LDI4IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gV2FybUFueSB8fCBraW5kID09IENvbGRB
bnkgfHwga2luZCA9PSBMYXRlQ29sZEFueSB8fCBraW5kID09IFNvbWVSZWdpc3RlciB8fCBraW5k
ID09IFNvbWVSZWdpc3RlcldpdGhDbG9iYmVyIHx8IGtpbmQgPT0gU29tZUVhcmx5UmVnaXN0ZXIg
fHwga2luZCA9PSBTb21lTGF0ZVJlZ2lzdGVyKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgVmFsdWVSZXAoV2FzbTo6VmFsdWVMb2NhdGlvbiBsb2NhdGlvbikKKyAgICB7
CisgICAgICAgIHN3aXRjaCAobG9jYXRpb24ua2luZCgpKSB7CisgICAgICAgIGNhc2UgV2FzbTo6
VmFsdWVMb2NhdGlvbjo6S2luZDo6UmVnaXN0ZXI6CisgICAgICAgICAgICBtX2tpbmQgPSBSZWdp
c3RlcjsKKyAgICAgICAgICAgIHUucmVnID0gbG9jYXRpb24ucmVnKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXYXNtOjpWYWx1ZUxvY2F0aW9uOjpLaW5kOjpTdGFjazoKKyAg
ICAgICAgICAgIG1fa2luZCA9IFN0YWNrOworICAgICAgICAgICAgdS5vZmZzZXRGcm9tRlAgPSBs
b2NhdGlvbi5vZmZzZXRGcm9tRlAoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdhc206OlZhbHVlTG9jYXRpb246OktpbmQ6OlN0YWNrQXJndW1lbnQ6CisgICAgICAgICAgICBt
X2tpbmQgPSBTdGFja0FyZ3VtZW50OworICAgICAgICAgICAgdS5vZmZzZXRGcm9tU1AgPSBsb2Nh
dGlvbi5vZmZzZXRGcm9tU1AoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cisj
ZW5kaWYKKwogICAgIHN0YXRpYyBWYWx1ZVJlcCByZWcoUmVnIHJlZykKICAgICB7CiAgICAgICAg
IHJldHVybiBWYWx1ZVJlcChyZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYjc0YWE2MjQ3ZDQ3Li5hOTdiYzc1MTcwYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIK
ICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5o
IgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQmlu
YXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKQEAgLTI5NjQsOCArMjk2NSwxMiBAQCBCMzo6UGF0Y2hw
b2ludFZhbHVlKiBBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sq
IGJsb2NrLCBjb25zdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsg
KytpKQogICAgICAgICBwYXRjaEFyZ3NbaSArIG9mZnNldF0gPSBDb25zdHJhaW5lZFRtcChhcmdz
W2ldLCBsb2NhdGlvbnMucGFyYW1zW2ldKTsKIAotICAgIGlmIChwYXRjaHBvaW50LT50eXBlKCkg
IT0gQjM6OlZvaWQpCi0gICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0gV1RG
TW92ZShsb2NhdGlvbnMucmVzdWx0cyk7CisgICAgaWYgKHBhdGNocG9pbnQtPnR5cGUoKSAhPSBC
Mzo6Vm9pZCkgeworICAgICAgICBWZWN0b3I8QjM6OlZhbHVlUmVwLCAxPiByZXN1bHRDb25zdHJh
aW50czsKKyAgICAgICAgZm9yIChhdXRvIHZhbHVlTG9jYXRpb24gOiBsb2NhdGlvbnMucmVzdWx0
cykKKyAgICAgICAgICAgIHJlc3VsdENvbnN0cmFpbnRzLmFwcGVuZChCMzo6VmFsdWVSZXAodmFs
dWVMb2NhdGlvbikpOworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IFdU
Rk1vdmUocmVzdWx0Q29uc3RyYWludHMpOworICAgIH0KICAgICBlbWl0UGF0Y2hwb2ludChibG9j
aywgcGF0Y2hwb2ludCwgcmVzdWx0cywgV1RGTW92ZShwYXRjaEFyZ3MpKTsKICAgICByZXR1cm4g
cGF0Y2hwb2ludDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAppbmRleCBiNTMyNGY0N2JlNWMuLmUyMGQwMWEzOGViZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQWlyQ29k
ZS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5j
bHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpA
QCAtMjE1MSw4ICsyMTUyLDEyIEBAIEIzOjpWYWx1ZSogQjNJUkdlbmVyYXRvcjo6Y3JlYXRlQ2Fs
bFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxvY2ssIE9yaWdpbiBvcmlnaW4sCiAgICAgcGF0Y2hw
b2ludEZ1bmN0b3IocGF0Y2hwb2ludCk7CiAgICAgcGF0Y2hwb2ludC0+YXBwZW5kVmVjdG9yKGNv
bnN0cmFpbmVkQXJndW1lbnRzKTsKIAotICAgIGlmIChyZXR1cm5UeXBlICE9IEIzOjpWb2lkKQot
ICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IFdURk1vdmUod2FzbUNhbGxJ
bmZvLnJlc3VsdHMpOworICAgIGlmIChyZXR1cm5UeXBlICE9IEIzOjpWb2lkKSB7CisgICAgICAg
IFZlY3RvcjxCMzo6VmFsdWVSZXAsIDE+IHJlc3VsdENvbnN0cmFpbnRzOworICAgICAgICBmb3Ig
KGF1dG8gdmFsdWVMb2NhdGlvbiA6IHdhc21DYWxsSW5mby5yZXN1bHRzKQorICAgICAgICAgICAg
cmVzdWx0Q29uc3RyYWludHMuYXBwZW5kKEIzOjpWYWx1ZVJlcCh2YWx1ZUxvY2F0aW9uKSk7Cisg
ICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0gV1RGTW92ZShyZXN1bHRDb25z
dHJhaW50cyk7CisgICAgfQogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCmluZGV4IGI0
MTg0ZjYzNmZiZS4uODhjYTJmNzAzMjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMjcsMjggKzI3LDIwIEBACiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAi
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCi0jaW5jbHVkZSAiQjNBcmd1bWVudFJl
Z1ZhbHVlLmgiCi0jaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNDb25zdDY0
VmFsdWUuaCIKLSNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIKLSNpbmNsdWRlICJCM01l
bW9yeVZhbHVlLmgiCi0jaW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKLSNpbmNsdWRlICJC
M1Byb2NlZHVyZS5oIgotI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNs
dWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZS5oIgorI2luY2x1ZGUg
Ildhc21WYWx1ZUxvY2F0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7
CiAKIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkxMSW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyA9
IDI7CiAKLXVzaW5nIEFyZ3VtZW50TG9jYXRpb24gPSBCMzo6VmFsdWVSZXA7Cit1c2luZyBBcmd1
bWVudExvY2F0aW9uID0gVmFsdWVMb2NhdGlvbjsKIGVudW0gY2xhc3MgQ2FsbFJvbGUgOiB1aW50
OF90IHsKICAgICBDYWxsZXIsCiAgICAgQ2FsbGVlLApAQCAtNjQsOSArNTYsOSBAQCBzdHJ1Y3Qg
Q2FsbEluZm9ybWF0aW9uIHsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCBjb21wdXRlUmVzdWx0
c09mZnNldExpc3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlc3VsdFJlZ2lz
dGVyczsKLSAgICAgICAgZm9yIChCMzo6VmFsdWVSZXAgcmVwIDogcmVzdWx0cykgewotICAgICAg
ICAgICAgaWYgKHJlcC5pc1JlZygpKQotICAgICAgICAgICAgICAgIHVzZWRSZXN1bHRSZWdpc3Rl
cnMuc2V0KHJlcC5yZWcoKSk7CisgICAgICAgIGZvciAoVmFsdWVMb2NhdGlvbiBsb2MgOiByZXN1
bHRzKSB7CisgICAgICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgdXNl
ZFJlc3VsdFJlZ2lzdGVycy5zZXQobG9jLnJlZygpKTsKICAgICAgICAgfQogCiAgICAgICAgIFJl
Z2lzdGVyQXRPZmZzZXRMaXN0IHNhdmVkUmVncyh1c2VkUmVzdWx0UmVnaXN0ZXJzLCBSZWdpc3Rl
ckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA4MmE5ZGNjMmI2MWQuLjFmMjY3OGI0OTBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcApAQCAtNjAz
LDEyICs2MDMsMTIgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkFsbG9jYXRl
UmVzdWx0c0FycmF5LCBKU0FycmF5KiwgKENhbGxGcmFtZSogY2EKIAogICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKEpTVmFsdWUpID09IHNpemVvZihDUFVSZWdpc3RlciksICJUaGUgY29kZSBiZWxv
dyByZWxpZXMgb24gdGhpcy4iKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0
dXJlLT5yZXR1cm5Db3VudCgpOyArK2kpIHsKLSAgICAgICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdh
c21DYWxsSW5mby5yZXN1bHRzW2ldOworICAgICAgICBWYWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21D
YWxsSW5mby5yZXN1bHRzW2ldOwogICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAgICBpZiAo
cmVwLmlzUmVnKCkpCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YWNrUG9pbnRlckZyb21DYWxsZWVb
KHJlZ2lzdGVyUmVzdWx0cy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUNhbGxJbmZv
LmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykgLyBzaXplb2YoSlNWYWx1ZSldOwor
ICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAgICAgICB2YWx1ZSA9IHN0YWNrUG9pbnRl
ckZyb21DYWxsZWVbKHJlZ2lzdGVyUmVzdWx0cy5maW5kKGxvYy5yZWcoKSktPm9mZnNldCgpICsg
d2FzbUNhbGxJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykgLyBzaXplb2Yo
SlNWYWx1ZSldOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9IHN0YWNrUG9pbnRl
ckZyb21DYWxsZWVbcmVwLm9mZnNldEZyb21TUCgpIC8gc2l6ZW9mKEpTVmFsdWUpXTsKKyAgICAg
ICAgICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNhbGxlZVtsb2Mub2Zmc2V0RnJvbVNQKCkg
LyBzaXplb2YoSlNWYWx1ZSldOwogICAgICAgICByZXN1bHQtPmluaXRpYWxpemVJbmRleChpbml0
aWFsaXphdGlvblNjb3BlLCBpLCB2YWx1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4xMzUyNDIyYWU5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5jcHAKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2FzbVZhbHVlTG9jYXRpb24uaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKKwordm9pZCBWYWx1ZUxvY2F0aW9uOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fa2luZCk7CisgICAg
c3dpdGNoIChtX2tpbmQpIHsKKyAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICBvdXQucHJpbnQo
IigiLCByZWcoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhY2s6CisgICAg
ICAgIG91dC5wcmludCgiKCIsIG9mZnNldEZyb21GUCgpLCAiKSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBTdGFja0FyZ3VtZW50OgorICAgICAgICBvdXQucHJpbnQoIigiLCBvZmZzZXRG
cm9tU1AoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQorCituYW1l
c3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzo6V2FzbTsKKwordm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFZhbHVlTG9jYXRpb246OktpbmQga2luZCkKK3sKKyAg
ICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFZhbHVlTG9jYXRpb246OlJlZ2lzdGVyOgorICAg
ICAgICBvdXQucHJpbnQoIlJlZ2lzdGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZh
bHVlTG9jYXRpb246OlN0YWNrOgorICAgICAgICBvdXQucHJpbnQoIlN0YWNrIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFZhbHVlTG9jYXRpb246OlN0YWNrQXJndW1lbnQ6CisgICAgICAg
IG91dC5wcmludCgiU3RhY2tBcmd1bWVudCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbHVlTG9jYXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNDNiOTg3ZDU0MGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5o
CkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1
ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBXYXNtIHsKKworY2xhc3MgVmFs
dWVMb2NhdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZW51bSBLaW5kIDogdWludDhfdCB7CisgICAgICAgIFJlZ2lzdGVyLAorICAgICAgICBTdGFjaywK
KyAgICAgICAgU3RhY2tBcmd1bWVudCwKKyAgICB9OworCisgICAgVmFsdWVMb2NhdGlvbigpCisg
ICAgICAgIDogbV9raW5kKFJlZ2lzdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBW
YWx1ZUxvY2F0aW9uKFJlZyByZWcpCisgICAgICAgIDogbV9raW5kKFJlZ2lzdGVyKQorICAgIHsK
KyAgICAgICAgdS5yZWcgPSByZWc7CisgICAgfQorCisgICAgVmFsdWVMb2NhdGlvbihjb25zdCBW
YWx1ZUxvY2F0aW9uJikgPSBkZWZhdWx0OworCisgICAgc3RhdGljIFZhbHVlTG9jYXRpb24gcmVn
KFJlZyByZWcpCisgICAgeworICAgICAgICByZXR1cm4gVmFsdWVMb2NhdGlvbihyZWcpOworICAg
IH0KKworICAgIHN0YXRpYyBWYWx1ZUxvY2F0aW9uIHN0YWNrKGludHB0cl90IG9mZnNldEZyb21G
UCkKKyAgICB7CisgICAgICAgIFZhbHVlTG9jYXRpb24gcmVzdWx0OworICAgICAgICByZXN1bHQu
bV9raW5kID0gU3RhY2s7CisgICAgICAgIHJlc3VsdC51Lm9mZnNldEZyb21GUCA9IG9mZnNldEZy
b21GUDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgVmFsdWVM
b2NhdGlvbiBzdGFja0FyZ3VtZW50KGludHB0cl90IG9mZnNldEZyb21TUCkKKyAgICB7CisgICAg
ICAgIFZhbHVlTG9jYXRpb24gcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3RhY2tB
cmd1bWVudDsKKyAgICAgICAgcmVzdWx0LnUub2Zmc2V0RnJvbVNQID0gb2Zmc2V0RnJvbVNQOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEtpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQorCisgICAgYm9vbCBpc1JlZygpIGNvbnN0IHsgcmV0dXJuIGtpbmQo
KSA9PSBSZWdpc3RlcjsgfQorCisgICAgUmVnIHJlZygpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaXNSZWcoKSk7CisgICAgICAgIHJldHVybiB1LnJlZzsKKyAgICB9CisKKyAgICBib29s
IGlzR1BSKCkgY29uc3QgeyByZXR1cm4gaXNSZWcoKSAmJiByZWcoKS5pc0dQUigpOyB9CisgICAg
Ym9vbCBpc0ZQUigpIGNvbnN0IHsgcmV0dXJuIGlzUmVnKCkgJiYgcmVnKCkuaXNGUFIoKTsgfQor
CisgICAgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmdwcigpOyB9CisgICAgRlBS
UmVnIGZwcigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmZwcigpOyB9CisKKyAgICBib29sIGlzU3Rh
Y2soKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gU3RhY2s7IH0KKworICAgIGludHB0cl90IG9m
ZnNldEZyb21GUCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGFjaygpKTsKKyAg
ICAgICAgcmV0dXJuIHUub2Zmc2V0RnJvbUZQOworICAgIH0KKworICAgIGJvb2wgaXNTdGFja0Fy
Z3VtZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFN0YWNrQXJndW1lbnQ7IH0KKworICAg
IGludHB0cl90IG9mZnNldEZyb21TUCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNT
dGFja0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4gdS5vZmZzZXRGcm9tU1A7CisgICAgfQor
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgdW5pb24gVSB7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIGludHB0
cl90IG9mZnNldEZyb21GUDsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQOworCisgICAg
ICAgIFUoKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+
KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgfQorICAgIH0gdTsKKyAgICBLaW5k
IG1fa2luZDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCisKK25hbWVzcGFjZSBX
VEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCA5ZTZhOGUyOGY5MTIuLjdmYmYyODVjZjZm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtOTEs
MTkgKzkxLDE5IEBAIHZvaWQgbWFyc2hhbGxKU1Jlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IENhbGxJCiAgICAgICAgIEZQUlJlZyBmcHJT
Y3JhdGNoID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuZnByQXJnc1swXS5mcHIoKTsKICAgICAg
ICAgYm9vbCBoYXNJNjQgPSBmYWxzZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgIEIzOjpWYWx1ZVJl
cCByZXAgPSB3YXNtRnJhbWVDb252ZW50aW9uLnJlc3VsdHNbaV07CisgICAgICAgICAgICBWYWx1
ZUxvY2F0aW9uIGxvYyA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKICAgICAgICAg
ICAgIFR5cGUgdHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpOwogCiAgICAgICAgICAgICBo
YXNJNjQgfD0gdHlwZSA9PSBXYXNtOjpJNjQ7Ci0gICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkp
IHsKKyAgICAgICAgICAgIGlmIChsb2MuaXNSZWcoKSkgewogICAgICAgICAgICAgICAgIGlmICh0
eXBlICE9IFdhc206Okk2NCkgewotICAgICAgICAgICAgICAgICAgICBib3hXYXNtUmVzdWx0KGpp
dCwgc2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHJlcC5yZWcoKSwgc2NyYXRjaCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKHNjcmF0Y2gsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVy
cy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJB
bmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpKTsKKyAgICAgICAgICAgICAgICAgICAgYm94V2Fz
bVJlc3VsdChqaXQsIHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCBsb2MucmVnKCksIHNjcmF0Y2gp
OworICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShzY3JhdGNoLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1
bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRp
b24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsg
cmVwLnJlZygpLmdwcigpIH0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5kKHJlcC5yZWcoKSkt
Pm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6
ZUluQnl0ZXMpKTsKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoSlNWYWx1ZVJl
Z3MgeyBsb2MucmVnKCkuZ3ByKCkgfSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9jLnJl
ZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3Rh
Y2tTaXplSW5CeXRlcykpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBp
ZiAodHlwZSAhPSBXYXNtOjpJNjQpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NhdGlv
biA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyLCByZXAub2Zmc2V0RnJvbVNQKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvY2F0
aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIGxvYy5vZmZzZXRGcm9tU1AoKSk7CiAgICAgICAgICAgICAgICAgICAgIFJlZyB0bXAg
PSB0eXBlID09IEYzMiB8fCB0eXBlID09IEY2NCA/IFJlZyhmcHJTY3JhdGNoKSA6IFJlZyhzY3Jh
dGNoLmdwcigpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NFRvUmVnKGxvY2F0aW9u
LCB0bXApOwogICAgICAgICAgICAgICAgICAgICBib3hXYXNtUmVzdWx0KGppdCwgc2lnbmF0dXJl
LnJldHVyblR5cGUoaSksIHRtcCwgc2NyYXRjaCk7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBt
YXJzaGFsbEpTUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgY29uc3QgQ2FsbEkKICAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byBjb252ZXJ0
IHZhbHVlcyB0byBCaWdJbnQuCiAgICAgICAgIGlmIChoYXNJNjQpIHsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVz
dWx0c1tpXTsKKyAgICAgICAgICAgICAgICBWYWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21GcmFtZUNv
bnZlbnRpb24ucmVzdWx0c1tpXTsKICAgICAgICAgICAgICAgICBUeXBlIHR5cGUgPSBzaWduYXR1
cmUucmV0dXJuVHlwZShpKTsKICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBXYXNtOjpJNjQp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQxLDE4ICsxNDEsMTggQEAgdm9p
ZCBtYXJzaGFsbEpTUmVzdWx0KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSwgY29uc3QgQ2FsbEkKICAgICAgICAgICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29u
dGV4dEluc3RhbmNlKHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIGlmIChyZXAuaXNSZWcoKSkKLSAgICAgICAgICAgICAgICAgICAg
aml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50
ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1bHRSZWdpc3RlcnMuZmluZChyZXAucmVnKCkpLT5vZmZzZXQo
KSArIHdhc21GcmFtZUNvbnZlbnRpb24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVz
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgICAgICBpZiAobG9jLmlzUmVn
KCkpCisgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJz
LmZpbmQobG9jLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRlckFu
ZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
cmVwLm9mZnNldEZyb21TUCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9
IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBsb2Mub2Zmc2V0RnJvbVNQKCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0VG9S
ZWcobG9jYXRpb24sIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Db252
ZXJ0VG9CaWdJbnQpPih3YXNtQ29udGV4dEluc3RhbmNlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgICAgICAgICAgICAgIGppdC5jYWxsT3BlcmF0aW9uKEZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uQ29udmVydFRvQmlnSW50KSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHJlcC5pc1JlZygpKQotICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShKU1Zh
bHVlUmVncyB7IEdQUkluZm86OnJldHVyblZhbHVlR1BSIH0sIENDYWxsSGVscGVyczo6QWRkcmVz
cyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVy
cy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJB
bmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpKTsKKyAgICAgICAgICAgICAgICBpZiAobG9jLmlz
UmVnKCkpCisgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgfSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9j
LnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50
U3RhY2tTaXplSW5CeXRlcykpOwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlcC5vZmZzZXRGcm9tU1AoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxw
ZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbG9jLm9mZnNldEZyb21TUCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoSlNWYWx1ZVJlZ3MgeyBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiB9LCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQot
LSAKMi4yOS4yCgo=
</data>
<flag name="commit-queue"
          id="435368"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417625</attachid>
            <date>2021-01-14 08:35:21 -0800</date>
            <delta_ts>2021-01-14 08:50:15 -0800</delta_ts>
            <desc>WasmValueLocation, v2</desc>
            <filename>0001-JSC-Implement-a-B3-ValueRep-replacement-for-wasm-lli.patch</filename>
            <type>text/plain</type>
            <size>28819</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA0N2ZlYmMzNWUwY2IzZjk1NzBmNmNmMjU0ZTQwNTk1OTg2YmNhM2IxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAxNTo1NzoxNiArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEltcGxlbWVudCBhIEIzOjpWYWx1ZVJlcCByZXBsYWNlbWVudCBmb3Igd2Fz
bS1sbGludAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMgoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGUgTExJbnQgY29kZSBpbiBXZWJBc3NlbWJs
eSB1c2VzIEIzOjpWYWx1ZVJlcCB0byBzdG9yZQppbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMuIFdlIHdpbGwKdXNlIGluc3RlYWQgYSBuZXcgY2xh
c3Mgd2l0aCBqdXN0IGVub3VnaCBmdW5jdGlvbmFsaXR5IGZvciB0aG9zZQpuZWVkcyAoYmFzaWNh
bGx5LCB3aGV0aGVyIGEgdmFsdWUgaW4gYSBmdW5jdGlvbiBjYWxsIHdpbGwgYmUgaW4gYQpyZWdp
c3RlciBvciB0aGUgc3RhY2spIGFuZCBjb252ZXJ0IHRvIEIzOjpWYWx1ZVJlcCB3aGVuCnRyYW5z
aXRpb25pbmcgaW50byBCMy9BaXIuIFRoaXMgaXMgcGFydCBvZiB0aGUgd29yayBuZWVkZWQgdG8K
YWxsb3cgV2ViQXNzZW1ibHkgdG8gd29yayB3aXRob3V0IEIzLCBhbmQgZXZlbnR1YWxseSBpbgpp
bnRlcnByZXRlZCBtb2RlIG9ubHkuCgoqIFNvdXJjZXMudHh0OiBhZGQgbmV3IHNvdXJjZXMuCiog
YjMvQjNWYWx1ZVJlcC5oOgooSlNDOjpCMzo6VmFsdWVSZXA6OlZhbHVlUmVwKTogaW5jbHVkZSBX
YXNtVmFsdWVMb2NhdGlvbi5oIGFuZCBhZGQKYSBtZXRob2QgdG8gY29udmVydCBCMzo6VmFsdWVS
ZXAgdG8gV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBhZGQgbmV3IHNvdXJjZXMuCiogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KTogY292
ZXJ0IGV4aXN0aW5nIFdhc206OlZhbHVlTG9jYXRpb24gaW50byBCMzo6VmFsdWVSZXAuCiogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CihKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNyZWF0
ZUNhbGxQYXRjaHBvaW50KTogZGl0dG8uCiogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoK
KEpTQzo6V2FzbTo6Q2FsbEluZm9ybWF0aW9uOjpjb21wdXRlUmVzdWx0c09mZnNldExpc3QpOiB1
c2UgV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKEpTQzo6
V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGl0dG8uCiogd2FzbS9XYXNtVmFsdWVM
b2NhdGlvbi5jcHA6IG5ldyBjbGFzcywgYmFzaWNhbGx5IEIzOjpWYWx1ZVJlcAp3aXRob3V0IGFs
bCB0aGUgc3R1ZmYgd2UgZG9uJ3QgbmVlZCBpbiBXYXNtTExJbnQuCihKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OmR1bXAgY29uc3QpOgooV1RGOjpwcmludEludGVybmFsKToKKiB3YXNtL1dhc21W
YWx1ZUxvY2F0aW9uLmg6IGRpdHRvLgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpWYWx1ZUxv
Y2F0aW9uKToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnKToKKEpTQzo6V2FzbTo6VmFs
dWVMb2NhdGlvbjo6c3RhY2spOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpzdGFja0FyZ3Vt
ZW50KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6a2luZCBjb25zdCk6CihKU0M6Oldhc206
OlZhbHVlTG9jYXRpb246OmlzUmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6
cmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNHUFIgY29uc3QpOgooSlND
OjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc0ZQUiBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9j
YXRpb246OmdwciBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmZwciBjb25zdCk6
CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3RhY2sgY29uc3QpOgooSlNDOjpXYXNtOjpW
YWx1ZUxvY2F0aW9uOjpvZmZzZXRGcm9tRlAgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0
aW9uOjppc1N0YWNrQXJndW1lbnQgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpv
ZmZzZXRGcm9tU1AgY29uc3QpOgoqIHdhc20vanMvSlNUb1dhc20uY3BwOgooSlNDOjpXYXNtOjpt
YXJzaGFsbEpTUmVzdWx0KTogdXNlIFdhc206OlZhbHVlTG9jYXRpb24uCi0tLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgIDUyICsrKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICB8ICAgNiArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCAgICAgICAgIHwgIDI1ICsrKysKIC4uLi93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAgOSArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIHwgICA5ICstCiAuLi4vd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgMTggKy0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgfCAgIDggKy0KIC4uLi9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNwcCB8ICA3MSArKysrKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmggICB8IDEzNSArKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCAgICB8
ICAyNiArKy0tCiAxMSBmaWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbHVlTG9jYXRpb24uY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVZhbHVlTG9jYXRpb24uaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDgxY2RhYzEzNDM5OS4uODM2MDE2YWUyYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NSBAQAorMjAyMS0wMS0xMiAgWGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IGEgQjM6OlZhbHVlUmVwIHJlcGxhY2VtZW50IGZvciB3
YXNtLWxsaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjA0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgTExJbnQgY29kZSBpbiBXZWJBc3NlbWJseSB1c2VzIEIzOjpWYWx1ZVJlcCB0byBzdG9y
ZQorICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZvciBm
dW5jdGlvbnMuIFdlIHdpbGwKKyAgICAgICAgdXNlIGluc3RlYWQgYSBuZXcgY2xhc3Mgd2l0aCBq
dXN0IGVub3VnaCBmdW5jdGlvbmFsaXR5IGZvciB0aG9zZQorICAgICAgICBuZWVkcyAoYmFzaWNh
bGx5LCB3aGV0aGVyIGEgdmFsdWUgaW4gYSBmdW5jdGlvbiBjYWxsIHdpbGwgYmUgaW4gYQorICAg
ICAgICByZWdpc3RlciBvciB0aGUgc3RhY2spIGFuZCBjb252ZXJ0IHRvIEIzOjpWYWx1ZVJlcCB3
aGVuCisgICAgICAgIHRyYW5zaXRpb25pbmcgaW50byBCMy9BaXIuIFRoaXMgaXMgcGFydCBvZiB0
aGUgd29yayBuZWVkZWQgdG8KKyAgICAgICAgYWxsb3cgV2ViQXNzZW1ibHkgdG8gd29yayB3aXRo
b3V0IEIzLCBhbmQgZXZlbnR1YWxseSBpbgorICAgICAgICBpbnRlcnByZXRlZCBtb2RlIG9ubHku
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogYWRkIG5ldyBzb3VyY2VzLgorICAgICAgICAqIGIz
L0IzVmFsdWVSZXAuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlUmVwOjpWYWx1ZVJlcCk6IGlu
Y2x1ZGUgV2FzbVZhbHVlTG9jYXRpb24uaCBhbmQgYWRkCisgICAgICAgIGEgbWV0aG9kIHRvIGNv
bnZlcnQgQjM6OlZhbHVlUmVwIHRvIFdhc206OlZhbHVlTG9jYXRpb24uCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogYWRkIG5ldyBzb3VyY2VzLgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmVtaXRDYWxsUGF0Y2hwb2ludCk6IGNvdmVydCBleGlzdGluZyBX
YXNtOjpWYWx1ZUxvY2F0aW9uIGludG8gQjM6OlZhbHVlUmVwLgorICAgICAgICAqIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpj
cmVhdGVDYWxsUGF0Y2hwb2ludCk6IGRpdHRvLgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdD
b252ZW50aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxJbmZvcm1hdGlvbjo6Y29tcHV0
ZVJlc3VsdHNPZmZzZXRMaXN0KTogdXNlIFdhc206OlZhbHVlTG9jYXRpb24uCisgICAgICAgICog
d2FzbS9XYXNtT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkpTQ19ERUZJTkVf
SklUX09QRVJBVElPTik6IGRpdHRvLgorICAgICAgICAqIHdhc20vV2FzbVZhbHVlTG9jYXRpb24u
Y3BwOiBuZXcgY2xhc3MsIGJhc2ljYWxseSBCMzo6VmFsdWVSZXAKKyAgICAgICAgd2l0aG91dCBh
bGwgdGhlIHN0dWZmIHdlIGRvbid0IG5lZWQgaW4gV2FzbUxMSW50LgorICAgICAgICAoSlNDOjpX
YXNtOjpWYWx1ZUxvY2F0aW9uOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5oOiBkaXR0by4KKyAgICAg
ICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6VmFsdWVMb2NhdGlvbik6CisgICAgICAgIChK
U0M6Oldhc206OlZhbHVlTG9jYXRpb246OnJlZyk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OnN0YWNrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6c3Rh
Y2tBcmd1bWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmtpbmQgY29u
c3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc1JlZyBjb25zdCk6Cisg
ICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OnJlZyBjb25zdCk6CisgICAgICAgIChK
U0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzR1BSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6VmFsdWVMb2NhdGlvbjo6aXNGUFIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1
ZUxvY2F0aW9uOjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9u
OjpmcHIgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc1N0YWNr
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6b2Zmc2V0RnJvbUZQ
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNTdGFja0FyZ3Vt
ZW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6b2Zmc2V0RnJv
bVNQIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6bWFyc2hhbGxKU1Jlc3VsdCk6IHVzZSBXYXNtOjpWYWx1ZUxvY2F0aW9uLgorCiAy
MDIxLTAxLTEzICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBS
ZW1vdmUgdGhlIHVudXNlZCBjb21waWxhdGlvbiBieXByb2R1Y3RzIGZyb20gdGhlIHdhc20gZW1i
ZWRkZXIgZW50cnlwb2ludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDkwOTJl
MzIwY2EuLmM5NTFhMGJmM2U0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEy
NDcsNiArMTI0Nyw3IEBACiAJCTg2MTgxNjc3MUZCNzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MTgx
Njc2MUZCNzkyMkYwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjI1NTNEMjE2MTM2RTFBMDA5RjE3RDAg
LyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYyNTUzQ0YxNjEzNkFBNTAwOUYxN0QwIC8qIEpTUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjNCMjNFMDBGQzYxMTg5MDA3MDNB
QTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjNGQkM1ODI1
QjA5M0I5MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9jYXRpb24uaCAqLzsgfTsgICAgICAgICAgICAg
ICAgCiAJCTg2NUEzMEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1QTMwRjAxMzUw
MDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8q
IEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NjczOUQwMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi87IH07CiAJCTg2
NjczOUQzMTNCRkRFNzEwMDIzRDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NjczOUQxMTNCRkRFNzEwMDIz
RDg3QyAvKiBVaW50MTZXaXRoRnJhY3Rpb24uaCAqLzsgfTsKQEAgLTQxNDgsNiArNDE0OSw4IEBA
CiAJCTg2M0M2RDk4MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyQ2Fub25pY2FsaXplVUNT
Mi5jcHA7IHBhdGggPSB5YXJyL1lhcnJDYW5vbmljYWxpemVVQ1MyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODYzQzZEOTkxNTIxMTExMjAwNTg1RTRFIC8qIFlhcnJDYW5vbmlj
YWxpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6
ZS5oOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg2M0M2RDlBMTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNT
Mi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFlhcnJDYW5vbmlj
YWxpemVVQ1MyLmpzOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5qczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYzRkJDNTcyNUIwOTNCODAwRjZDOTMwIC8qIFdhc21W
YWx1ZUxvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdh
c21WYWx1ZUxvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODYzRkJD
NTgyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21WYWx1ZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg2NDA5MjNCMTU2RUVEM0IwMDU2NkNCMiAvKiBBUk02NEFzc2VtYmxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUk02NEFzc2VtYmxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQzIgLyogQVJN
NjRSZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNNjRSZWdp
c3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY0MDkyM0MxNTZFRUQzQjAw
NTY2Q0IyIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjkxNyw2ICs2OTIwLDggQEAKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdh
c20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTg2M0ZC
QzU3MjVCMDkzQjgwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5jcHAgKi8sCisJCQkJODYz
RkJDNTgyNUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi8sCiAJCQkJQUQy
RkNCOEExREI1ODQwMDAwQjNFNzM2IC8qIGpzICovLAogCQkJCTUyODQ3QUQ5MjFGRkI4NjMwMDYx
QTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuY3BwICovLAogCQkJCTUyODQ3QURBMjFGRkI4NjMw
MDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCAqLywKQEAgLTk2NzcsNiArOTY4Miw3IEBA
CiAJCQkJMEZDRUZBRTAxODA3MzhDMDAwNDcyQ0U0IC8qIEZUTExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0IzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJl
ZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODYzRkJDNUEyNUIwOTNCOTAwRjZDOTMw
IC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGOTE5RDBC
QUMxMDBCMUQxQjUgLyogRlRMT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEz
MUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJERDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjFkYzUyMWJiODVhLi42Yjk3OGEzOTBlODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEwNzcsNiArMTA3Nyw3IEBAIHdhc20v
V2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKIHdhc20vV2FzbVRhYmxlLmNwcAogd2FzbS9XYXNtVGh1
bmtzLmNwcAogd2FzbS9XYXNtVGllclVwQ291bnQuY3BwCit3YXNtL1dhc21WYWx1ZUxvY2F0aW9u
LmNwcAogd2FzbS9XYXNtV29ya2xpc3QuY3BwCiAKIHdhc20vanMvSlNUb1dhc20uY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAppbmRleCA5YjcxNjAxMjAyZjIuLjExYjc1Y2M3
YmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCkBAIC0zNCw2ICszNCw5
IEBACiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5Lmgi
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQor
I2luY2x1ZGUgIldhc21WYWx1ZUxvY2F0aW9uLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTEyMSw2ICsxMjQsMjggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoa2luZCA9PSBX
YXJtQW55IHx8IGtpbmQgPT0gQ29sZEFueSB8fCBraW5kID09IExhdGVDb2xkQW55IHx8IGtpbmQg
PT0gU29tZVJlZ2lzdGVyIHx8IGtpbmQgPT0gU29tZVJlZ2lzdGVyV2l0aENsb2JiZXIgfHwga2lu
ZCA9PSBTb21lRWFybHlSZWdpc3RlciB8fCBraW5kID09IFNvbWVMYXRlUmVnaXN0ZXIpOwogICAg
IH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBWYWx1ZVJlcChXYXNtOjpWYWx1ZUxv
Y2F0aW9uIGxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChsb2NhdGlvbi5raW5kKCkp
IHsKKyAgICAgICAgY2FzZSBXYXNtOjpWYWx1ZUxvY2F0aW9uOjpLaW5kOjpSZWdpc3RlcjoKKyAg
ICAgICAgICAgIG1fa2luZCA9IFJlZ2lzdGVyOworICAgICAgICAgICAgdS5yZWcgPSBsb2NhdGlv
bi5yZWcoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdhc206OlZhbHVlTG9j
YXRpb246OktpbmQ6OlN0YWNrOgorICAgICAgICAgICAgbV9raW5kID0gU3RhY2s7CisgICAgICAg
ICAgICB1Lm9mZnNldEZyb21GUCA9IGxvY2F0aW9uLm9mZnNldEZyb21GUCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2FzbTo6VmFsdWVMb2NhdGlvbjo6S2luZDo6U3RhY2tB
cmd1bWVudDoKKyAgICAgICAgICAgIG1fa2luZCA9IFN0YWNrQXJndW1lbnQ7CisgICAgICAgICAg
ICB1Lm9mZnNldEZyb21TUCA9IGxvY2F0aW9uLm9mZnNldEZyb21TUCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgc3RhdGljIFZhbHVlUmVwIHJlZyhS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgcmV0dXJuIFZhbHVlUmVwKHJlZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBiNzRh
YTYyNDdkNDcuLmE5N2JjNzUxNzBjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
QjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVk
ZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMuaCIKICNpbmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgpAQCAtMjk2NCw4
ICsyOTY1LDEyIEBAIEIzOjpQYXRjaHBvaW50VmFsdWUqIEFpcklSR2VuZXJhdG9yOjplbWl0Q2Fs
bFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCiAgICAgICAgIHBhdGNoQXJnc1tpICsgb2Zmc2V0
XSA9IENvbnN0cmFpbmVkVG1wKGFyZ3NbaV0sIGxvY2F0aW9ucy5wYXJhbXNbaV0pOwogCi0gICAg
aWYgKHBhdGNocG9pbnQtPnR5cGUoKSAhPSBCMzo6Vm9pZCkKLSAgICAgICAgcGF0Y2hwb2ludC0+
cmVzdWx0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxvY2F0aW9ucy5yZXN1bHRzKTsKKyAgICBpZiAo
cGF0Y2hwb2ludC0+dHlwZSgpICE9IEIzOjpWb2lkKSB7CisgICAgICAgIFZlY3RvcjxCMzo6VmFs
dWVSZXAsIDE+IHJlc3VsdENvbnN0cmFpbnRzOworICAgICAgICBmb3IgKGF1dG8gdmFsdWVMb2Nh
dGlvbiA6IGxvY2F0aW9ucy5yZXN1bHRzKQorICAgICAgICAgICAgcmVzdWx0Q29uc3RyYWludHMu
YXBwZW5kKEIzOjpWYWx1ZVJlcCh2YWx1ZUxvY2F0aW9uKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PnJlc3VsdENvbnN0cmFpbnRzID0gV1RGTW92ZShyZXN1bHRDb25zdHJhaW50cyk7CisgICAgfQog
ICAgIGVtaXRQYXRjaHBvaW50KGJsb2NrLCBwYXRjaHBvaW50LCByZXN1bHRzLCBXVEZNb3ZlKHBh
dGNoQXJncykpOwogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGI1MzI0ZjQ3YmU1Yy4u
ZTIwZDAxYTM4ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAKKyNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlSWYuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNDQ2FsbFZhbHVlLmgiCkBAIC0yMTUxLDggKzIxNTIsMTIgQEAgQjM6OlZhbHVlKiBC
M0lSR2VuZXJhdG9yOjpjcmVhdGVDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBibG9jaywgT3Jp
Z2luIG9yaWdpbiwKICAgICBwYXRjaHBvaW50RnVuY3RvcihwYXRjaHBvaW50KTsKICAgICBwYXRj
aHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMpOwogCi0gICAgaWYgKHJl
dHVyblR5cGUgIT0gQjM6OlZvaWQpCi0gICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFp
bnRzID0gV1RGTW92ZSh3YXNtQ2FsbEluZm8ucmVzdWx0cyk7CisgICAgaWYgKHJldHVyblR5cGUg
IT0gQjM6OlZvaWQpIHsKKyAgICAgICAgVmVjdG9yPEIzOjpWYWx1ZVJlcCwgMT4gcmVzdWx0Q29u
c3RyYWludHM7CisgICAgICAgIGZvciAoYXV0byB2YWx1ZUxvY2F0aW9uIDogd2FzbUNhbGxJbmZv
LnJlc3VsdHMpCisgICAgICAgICAgICByZXN1bHRDb25zdHJhaW50cy5hcHBlbmQoQjM6OlZhbHVl
UmVwKHZhbHVlTG9jYXRpb24pKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWlu
dHMgPSBXVEZNb3ZlKHJlc3VsdENvbnN0cmFpbnRzKTsKKyAgICB9CiAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
YWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgKaW5kZXggYjQxODRmNjM2ZmJlLi44OGNhMmY3MDMyOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oCkBA
IC0yNywyOCArMjcsMjAgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUg
IkFpckNvZGUuaCIKICNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIK
LSNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2su
aCIKLSNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgotI2luY2x1ZGUgIkIzQ29uc3RyYWluZWRW
YWx1ZS5oIgotI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKLSNpbmNsdWRlICJCM1BhdGNocG9p
bnRWYWx1ZS5oIgotI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCi0jaW5jbHVkZSAiQjNTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJM
aW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRl
ICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNt
U2lnbmF0dXJlLmgiCisjaW5jbHVkZSAiV2FzbVZhbHVlTG9jYXRpb24uaCIKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mTExJ
bnRDYWxsZWVTYXZlUmVnaXN0ZXJzID0gMjsKIAotdXNpbmcgQXJndW1lbnRMb2NhdGlvbiA9IEIz
OjpWYWx1ZVJlcDsKK3VzaW5nIEFyZ3VtZW50TG9jYXRpb24gPSBWYWx1ZUxvY2F0aW9uOwogZW51
bSBjbGFzcyBDYWxsUm9sZSA6IHVpbnQ4X3QgewogICAgIENhbGxlciwKICAgICBDYWxsZWUsCkBA
IC02NCw5ICs1Niw5IEBAIHN0cnVjdCBDYWxsSW5mb3JtYXRpb24gewogICAgIFJlZ2lzdGVyQXRP
ZmZzZXRMaXN0IGNvbXB1dGVSZXN1bHRzT2Zmc2V0TGlzdCgpCiAgICAgewogICAgICAgICBSZWdp
c3RlclNldCB1c2VkUmVzdWx0UmVnaXN0ZXJzOwotICAgICAgICBmb3IgKEIzOjpWYWx1ZVJlcCBy
ZXAgOiByZXN1bHRzKSB7Ci0gICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkpCi0gICAgICAgICAg
ICAgICAgdXNlZFJlc3VsdFJlZ2lzdGVycy5zZXQocmVwLnJlZygpKTsKKyAgICAgICAgZm9yIChW
YWx1ZUxvY2F0aW9uIGxvYyA6IHJlc3VsdHMpIHsKKyAgICAgICAgICAgIGlmIChsb2MuaXNSZWco
KSkKKyAgICAgICAgICAgICAgICB1c2VkUmVzdWx0UmVnaXN0ZXJzLnNldChsb2MucmVnKCkpOwog
ICAgICAgICB9CiAKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Qgc2F2ZWRSZWdzKHVzZWRS
ZXN1bHRSZWdpc3RlcnMsIFJlZ2lzdGVyQXRPZmZzZXRMaXN0OjpaZXJvQmFzZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCmluZGV4IDgyYTlkY2My
YjYxZC4uMWYyNjc4YjQ5MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9wZXJhdGlvbnMuY3BwCkBAIC02MDMsMTIgKzYwMywxMiBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uQWxsb2NhdGVSZXN1bHRzQXJyYXksIEpTQXJyYXkqLCAoQ2FsbEZyYW1l
KiBjYQogCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoSlNWYWx1ZSkgPT0gc2l6ZW9mKENQVVJl
Z2lzdGVyKSwgIlRoZSBjb2RlIGJlbG93IHJlbGllcyBvbiB0aGlzLiIpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUtPnJldHVybkNvdW50KCk7ICsraSkgewotICAgICAg
ICBCMzo6VmFsdWVSZXAgcmVwID0gd2FzbUNhbGxJbmZvLnJlc3VsdHNbaV07CisgICAgICAgIFZh
bHVlTG9jYXRpb24gbG9jID0gd2FzbUNhbGxJbmZvLnJlc3VsdHNbaV07CiAgICAgICAgIEpTVmFs
dWUgdmFsdWU7Ci0gICAgICAgIGlmIChyZXAuaXNSZWcoKSkKLSAgICAgICAgICAgIHZhbHVlID0g
c3RhY2tQb2ludGVyRnJvbUNhbGxlZVsocmVnaXN0ZXJSZXN1bHRzLmZpbmQocmVwLnJlZygpKS0+
b2Zmc2V0KCkgKyB3YXNtQ2FsbEluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVz
KSAvIHNpemVvZihKU1ZhbHVlKV07CisgICAgICAgIGlmIChsb2MuaXNSZWcoKSkKKyAgICAgICAg
ICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNhbGxlZVsocmVnaXN0ZXJSZXN1bHRzLmZpbmQo
bG9jLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtQ2FsbEluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFj
a1NpemVJbkJ5dGVzKSAvIHNpemVvZihKU1ZhbHVlKV07CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNhbGxlZVtyZXAub2Zmc2V0RnJvbVNQKCkgLyBz
aXplb2YoSlNWYWx1ZSldOworICAgICAgICAgICAgdmFsdWUgPSBzdGFja1BvaW50ZXJGcm9tQ2Fs
bGVlW2xvYy5vZmZzZXRGcm9tU1AoKSAvIHNpemVvZihKU1ZhbHVlKV07CiAgICAgICAgIHJlc3Vs
dC0+aW5pdGlhbGl6ZUluZGV4KGluaXRpYWxpemF0aW9uU2NvcGUsIGksIHZhbHVlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzNTI0MjJhZTkyMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWx1ZUxv
Y2F0aW9uLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXYXNt
VmFsdWVMb2NhdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20geworCit2
b2lkIFZhbHVlTG9jYXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQobV9raW5kKTsKKyAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIGNhc2UgUmVnaXN0
ZXI6CisgICAgICAgIG91dC5wcmludCgiKCIsIHJlZygpLCAiKSIpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBTdGFjazoKKyAgICAgICAgb3V0LnByaW50KCIoIiwgb2Zmc2V0RnJvbUZQKCks
ICIpIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0YWNrQXJndW1lbnQ6CisgICAgICAg
IG91dC5wcmludCgiKCIsIG9mZnNldEZyb21TUCgpLCAiKSIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlND
OjpXYXNtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVmFsdWVMb2Nh
dGlvbjo6S2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVmFsdWVM
b2NhdGlvbjo6UmVnaXN0ZXI6CisgICAgICAgIG91dC5wcmludCgiUmVnaXN0ZXIiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVMb2NhdGlvbjo6U3RhY2s6CisgICAgICAgIG91dC5w
cmludCgiU3RhY2siKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgVmFsdWVMb2NhdGlvbjo6
U3RhY2tBcmd1bWVudDoKKyAgICAgICAgb3V0LnByaW50KCJTdGFja0FyZ3VtZW50Iik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVZhbHVlTG9jYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmM0M2I5ODdkNTQwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJGUFJJbmZvLmgiCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZy5oIgor
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNw
YWNlIFdhc20geworCitjbGFzcyBWYWx1ZUxvY2F0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIEtpbmQgOiB1aW50OF90IHsKKyAgICAgICAgUmVn
aXN0ZXIsCisgICAgICAgIFN0YWNrLAorICAgICAgICBTdGFja0FyZ3VtZW50LAorICAgIH07CisK
KyAgICBWYWx1ZUxvY2F0aW9uKCkKKyAgICAgICAgOiBtX2tpbmQoUmVnaXN0ZXIpCisgICAgewor
ICAgIH0KKworICAgIGV4cGxpY2l0IFZhbHVlTG9jYXRpb24oUmVnIHJlZykKKyAgICAgICAgOiBt
X2tpbmQoUmVnaXN0ZXIpCisgICAgeworICAgICAgICB1LnJlZyA9IHJlZzsKKyAgICB9CisKKyAg
ICBWYWx1ZUxvY2F0aW9uKGNvbnN0IFZhbHVlTG9jYXRpb24mKSA9IGRlZmF1bHQ7CisKKyAgICBz
dGF0aWMgVmFsdWVMb2NhdGlvbiByZWcoUmVnIHJlZykKKyAgICB7CisgICAgICAgIHJldHVybiBW
YWx1ZUxvY2F0aW9uKHJlZyk7CisgICAgfQorCisgICAgc3RhdGljIFZhbHVlTG9jYXRpb24gc3Rh
Y2soaW50cHRyX3Qgb2Zmc2V0RnJvbUZQKQorICAgIHsKKyAgICAgICAgVmFsdWVMb2NhdGlvbiBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2tpbmQgPSBTdGFjazsKKyAgICAgICAgcmVzdWx0LnUu
b2Zmc2V0RnJvbUZQID0gb2Zmc2V0RnJvbUZQOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIHN0YXRpYyBWYWx1ZUxvY2F0aW9uIHN0YWNrQXJndW1lbnQoaW50cHRyX3Qgb2Zm
c2V0RnJvbVNQKQorICAgIHsKKyAgICAgICAgVmFsdWVMb2NhdGlvbiByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5tX2tpbmQgPSBTdGFja0FyZ3VtZW50OworICAgICAgICByZXN1bHQudS5vZmZzZXRG
cm9tU1AgPSBvZmZzZXRGcm9tU1A7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisKKyAgICBib29sIGlzUmVn
KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFJlZ2lzdGVyOyB9CisKKyAgICBSZWcgcmVnKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1JlZygpKTsKKyAgICAgICAgcmV0dXJuIHUu
cmVnOworICAgIH0KKworICAgIGJvb2wgaXNHUFIoKSBjb25zdCB7IHJldHVybiBpc1JlZygpICYm
IHJlZygpLmlzR1BSKCk7IH0KKyAgICBib29sIGlzRlBSKCkgY29uc3QgeyByZXR1cm4gaXNSZWco
KSAmJiByZWcoKS5pc0ZQUigpOyB9CisKKyAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4g
cmVnKCkuZ3ByKCk7IH0KKyAgICBGUFJSZWcgZnByKCkgY29uc3QgeyByZXR1cm4gcmVnKCkuZnBy
KCk7IH0KKworICAgIGJvb2wgaXNTdGFjaygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBTdGFj
azsgfQorCisgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbUZQKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc1N0YWNrKCkpOworICAgICAgICByZXR1cm4gdS5vZmZzZXRGcm9tRlA7CisgICAg
fQorCisgICAgYm9vbCBpc1N0YWNrQXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0g
U3RhY2tBcmd1bWVudDsgfQorCisgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1N0YWNrQXJndW1lbnQoKSk7CisgICAgICAgIHJldHVybiB1
Lm9mZnNldEZyb21TUDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICB1bmlvbiBVIHsKKyAgICAgICAg
UmVnIHJlZzsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbUZQOworICAgICAgICBpbnRwdHJf
dCBvZmZzZXRGcm9tU1A7CisKKyAgICAgICAgVSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1l
bXNldChzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhpcykpOworICAgICAg
ICB9CisgICAgfSB1OworICAgIEtpbmQgbV9raW5kOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6Oldhc20KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYsIEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6S2luZCk7CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IDll
NmE4ZTI4ZjkxMi4uN2ZiZjI4NWNmNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNUb1dhc20uY3BwCkBAIC05MSwxOSArOTEsMTkgQEAgdm9pZCBtYXJzaGFsbEpTUmVzdWx0
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgQ2Fs
bEkKICAgICAgICAgRlBSUmVnIGZwclNjcmF0Y2ggPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5m
cHJBcmdzWzBdLmZwcigpOwogICAgICAgICBib29sIGhhc0k2NCA9IGZhbHNlOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsraSkgewot
ICAgICAgICAgICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0
c1tpXTsKKyAgICAgICAgICAgIFZhbHVlTG9jYXRpb24gbG9jID0gd2FzbUZyYW1lQ29udmVudGlv
bi5yZXN1bHRzW2ldOwogICAgICAgICAgICAgVHlwZSB0eXBlID0gc2lnbmF0dXJlLnJldHVyblR5
cGUoaSk7CiAKICAgICAgICAgICAgIGhhc0k2NCB8PSB0eXBlID09IFdhc206Okk2NDsKLSAgICAg
ICAgICAgIGlmIChyZXAuaXNSZWcoKSkgeworICAgICAgICAgICAgaWYgKGxvYy5pc1JlZygpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2FzbTo6STY0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGJveFdhc21SZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVwLnJl
ZygpLCBzY3JhdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoc2NyYXRj
aCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNt
RnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAg
ICAgICAgICAgICAgICAgICBib3hXYXNtUmVzdWx0KGppdCwgc2lnbmF0dXJlLnJldHVyblR5cGUo
aSksIGxvYy5yZWcoKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZVZh
bHVlKHNjcmF0Y2gsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5kKGxvYy5yZWcoKSktPm9mZnNl
dCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0
ZXMpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlVmFsdWUoSlNWYWx1ZVJlZ3MgeyByZXAucmVnKCkuZ3ByKCkgfSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVn
aXN0ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVDb252ZW50aW9uLmhl
YWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAgICAgICAgICAgICAgICAgICBq
aXQuc3RvcmVWYWx1ZShKU1ZhbHVlUmVncyB7IGxvYy5yZWcoKS5ncHIoKSB9LCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1
bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRp
b24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFdhc206Okk2NCkgewotICAgICAgICAg
ICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlcC5vZmZzZXRGcm9tU1AoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgbG9jLm9mZnNldEZyb21TUCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgUmVnIHRtcCA9IHR5cGUgPT0gRjMyIHx8IHR5cGUgPT0gRjY0ID8gUmVn
KGZwclNjcmF0Y2gpIDogUmVnKHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBq
aXQubG9hZDY0VG9SZWcobG9jYXRpb24sIHRtcCk7CiAgICAgICAgICAgICAgICAgICAgIGJveFdh
c21SZXN1bHQoaml0LCBzaWduYXR1cmUucmV0dXJuVHlwZShpKSwgdG1wLCBzY3JhdGNoKTsKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAvLyBUaGlz
IGlzIHJlcXVpcmVkIHRvIGNvbnZlcnQgdmFsdWVzIHRvIEJpZ0ludC4KICAgICAgICAgaWYgKGhh
c0k2NCkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgcmVwID0g
d2FzbUZyYW1lQ29udmVudGlvbi5yZXN1bHRzW2ldOworICAgICAgICAgICAgICAgIFZhbHVlTG9j
YXRpb24gbG9jID0gd2FzbUZyYW1lQ29udmVudGlvbi5yZXN1bHRzW2ldOwogICAgICAgICAgICAg
ICAgIFR5cGUgdHlwZSA9IHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpOwogICAgICAgICAgICAgICAg
IGlmICh0eXBlICE9IFdhc206Okk2NCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBA
IC0xNDEsMTggKzE0MSwxOCBAQCB2b2lkIG1hcnNoYWxsSlNSZXN1bHQoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBDYWxsSQogICAgICAgICAgICAg
ICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2Uod2FzbUNvbnRleHRJbnN0YW5jZUdQ
Uik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHJlcC5pc1JlZygp
KQotICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyhD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5m
aW5kKHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRB
cmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICAgICAgICAgIGlmIChsb2MuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2
NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
ciwgc2F2ZWRSZXN1bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21G
cmFtZUNvbnZlbnRpb24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZXAub2Zmc2V0RnJvbVNQKCkpOworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGxvYy5vZmZzZXRGcm9tU1AoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5sb2FkNjRUb1JlZyhsb2NhdGlvbiwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkNvbnZlcnRUb0JpZ0ludCk+KHdhc21Db250ZXh0SW5zdGFuY2VH
UFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGxPcGVy
YXRpb24oRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Db252ZXJ0VG9CaWdJ
bnQpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIg
fSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQocmVwLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNt
RnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOworICAg
ICAgICAgICAgICAgIGlmIChsb2MuaXNSZWcoKSkKKyAgICAgICAgICAgICAgICAgICAgaml0LnN0
b3JlVmFsdWUoSlNWYWx1ZVJlZ3MgeyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9LCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRS
ZXN1bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZl
bnRpb24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgcmVwLm9mZnNl
dEZyb21TUCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBsb2Mub2Zm
c2V0RnJvbVNQKCkpOwogICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShKU1ZhbHVl
UmVncyB7IEdQUkluZm86OnJldHVyblZhbHVlR1BSIH0sIGxvY2F0aW9uKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0tIAoyLjI5LjIKCg==
</data>
<flag name="commit-queue"
          id="435372"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417626</attachid>
            <date>2021-01-14 08:41:35 -0800</date>
            <delta_ts>2021-01-14 14:48:48 -0800</delta_ts>
            <desc>WasmValueLocation, v3</desc>
            <filename>0001-JSC-Implement-a-B3-ValueRep-replacement-for-wasm-lli.patch</filename>
            <type>text/plain</type>
            <size>28940</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAwYThmOGE1Yzk1ZGEyM2QwZDU1ZDg2MmE4ZTdkMzFiNjc3OTM0N2E3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAxNTo1NzoxNiArMDEwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEltcGxlbWVudCBhIEIzOjpWYWx1ZVJlcCByZXBsYWNlbWVudCBmb3Igd2Fz
bS1sbGludAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQxMgoK
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGUgTExJbnQgY29kZSBpbiBXZWJBc3NlbWJs
eSB1c2VzIEIzOjpWYWx1ZVJlcCB0byBzdG9yZQppbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGlu
ZyBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMuIFdlIHdpbGwKdXNlIGluc3RlYWQgYSBuZXcgY2xh
c3Mgd2l0aCBqdXN0IGVub3VnaCBmdW5jdGlvbmFsaXR5IGZvciB0aG9zZQpuZWVkcyAoYmFzaWNh
bGx5LCB3aGV0aGVyIGEgdmFsdWUgaW4gYSBmdW5jdGlvbiBjYWxsIHdpbGwgYmUgaW4gYQpyZWdp
c3RlciBvciB0aGUgc3RhY2spIGFuZCBjb252ZXJ0IHRvIEIzOjpWYWx1ZVJlcCB3aGVuCnRyYW5z
aXRpb25pbmcgaW50byBCMy9BaXIuIFRoaXMgaXMgcGFydCBvZiB0aGUgd29yayBuZWVkZWQgdG8K
YWxsb3cgV2ViQXNzZW1ibHkgdG8gd29yayB3aXRob3V0IEIzLCBhbmQgZXZlbnR1YWxseSBpbgpp
bnRlcnByZXRlZCBtb2RlIG9ubHkuCgoqIFNvdXJjZXMudHh0OiBhZGQgbmV3IHNvdXJjZXMuCiog
YjMvQjNWYWx1ZVJlcC5oOgooSlNDOjpCMzo6VmFsdWVSZXA6OlZhbHVlUmVwKTogaW5jbHVkZSBX
YXNtVmFsdWVMb2NhdGlvbi5oIGFuZCBhZGQKYSBtZXRob2QgdG8gY29udmVydCBCMzo6VmFsdWVS
ZXAgdG8gV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBhZGQgbmV3IHNvdXJjZXMuCiogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwOgooSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENhbGxQYXRjaHBvaW50KTogY292
ZXJ0IGV4aXN0aW5nIFdhc206OlZhbHVlTG9jYXRpb24gaW50byBCMzo6VmFsdWVSZXAuCiogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CihKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNyZWF0
ZUNhbGxQYXRjaHBvaW50KTogZGl0dG8uCiogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoK
KEpTQzo6V2FzbTo6Q2FsbEluZm9ybWF0aW9uOjpjb21wdXRlUmVzdWx0c09mZnNldExpc3QpOiB1
c2UgV2FzbTo6VmFsdWVMb2NhdGlvbi4KKiB3YXNtL1dhc21PcGVyYXRpb25zLmNwcDoKKEpTQzo6
V2FzbTo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGl0dG8uCiogd2FzbS9XYXNtVmFsdWVM
b2NhdGlvbi5jcHA6IG5ldyBjbGFzcywgYmFzaWNhbGx5IEIzOjpWYWx1ZVJlcAp3aXRob3V0IGFs
bCB0aGUgc3R1ZmYgd2UgZG9uJ3QgbmVlZCBpbiBXYXNtTExJbnQuCihKU0M6Oldhc206OlZhbHVl
TG9jYXRpb246OmR1bXAgY29uc3QpOgooV1RGOjpwcmludEludGVybmFsKToKKiB3YXNtL1dhc21W
YWx1ZUxvY2F0aW9uLmg6IGRpdHRvLgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpWYWx1ZUxv
Y2F0aW9uKToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6cmVnKToKKEpTQzo6V2FzbTo6VmFs
dWVMb2NhdGlvbjo6c3RhY2spOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpzdGFja0FyZ3Vt
ZW50KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6a2luZCBjb25zdCk6CihKU0M6Oldhc206
OlZhbHVlTG9jYXRpb246OmlzUmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6
cmVnIGNvbnN0KToKKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNHUFIgY29uc3QpOgooSlND
OjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc0ZQUiBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9j
YXRpb246OmdwciBjb25zdCk6CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmZwciBjb25zdCk6
CihKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3RhY2sgY29uc3QpOgooSlNDOjpXYXNtOjpW
YWx1ZUxvY2F0aW9uOjpvZmZzZXRGcm9tRlAgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0
aW9uOjppc1N0YWNrQXJndW1lbnQgY29uc3QpOgooSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpv
ZmZzZXRGcm9tU1AgY29uc3QpOgoqIHdhc20vanMvSlNUb1dhc20uY3BwOgooSlNDOjpXYXNtOjpt
YXJzaGFsbEpTUmVzdWx0KTogdXNlIFdhc206OlZhbHVlTG9jYXRpb24uCi0tLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgIHwgIDUyICsrKysrKysKIC4uLi9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICB8ICAgNiArCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCAgICAgICAgIHwgIDI1ICsrKysKIC4uLi93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAgICAgICAgICAgICAgICB8ICAgOSArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIHwgICA5ICstCiAuLi4vd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAgICAgICAgICAgICAgfCAgMTggKy0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHAgfCAgIDggKy0KIC4uLi9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmNwcCB8ICA3NSArKysrKysrKysrCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5oICAgfCAxMzkgKysrKysrKysr
KysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgICAg
fCAgMjYgKystLQogMTEgZmlsZXMgY2hhbmdlZCwgMzM0IGluc2VydGlvbnMoKyksIDM0IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWx1ZUxvY2F0aW9uLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWx1ZUxvY2F0aW9uLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCA4MWNkYWMxMzQzOTkuLjgzNjAxNmFlMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMjEtMDEtMTIgIFhhbiBMb3BleiAgPHhhbkBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIEltcGxlbWVudCBhIEIzOjpWYWx1ZVJlcCByZXBsYWNlbWVudCBmb3Ig
d2FzbS1sbGludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIwNDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIExMSW50IGNvZGUgaW4gV2ViQXNzZW1ibHkgdXNlcyBCMzo6VmFsdWVSZXAgdG8gc3Rv
cmUKKyAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmb3Ig
ZnVuY3Rpb25zLiBXZSB3aWxsCisgICAgICAgIHVzZSBpbnN0ZWFkIGEgbmV3IGNsYXNzIHdpdGgg
anVzdCBlbm91Z2ggZnVuY3Rpb25hbGl0eSBmb3IgdGhvc2UKKyAgICAgICAgbmVlZHMgKGJhc2lj
YWxseSwgd2hldGhlciBhIHZhbHVlIGluIGEgZnVuY3Rpb24gY2FsbCB3aWxsIGJlIGluIGEKKyAg
ICAgICAgcmVnaXN0ZXIgb3IgdGhlIHN0YWNrKSBhbmQgY29udmVydCB0byBCMzo6VmFsdWVSZXAg
d2hlbgorICAgICAgICB0cmFuc2l0aW9uaW5nIGludG8gQjMvQWlyLiBUaGlzIGlzIHBhcnQgb2Yg
dGhlIHdvcmsgbmVlZGVkIHRvCisgICAgICAgIGFsbG93IFdlYkFzc2VtYmx5IHRvIHdvcmsgd2l0
aG91dCBCMywgYW5kIGV2ZW50dWFsbHkgaW4KKyAgICAgICAgaW50ZXJwcmV0ZWQgbW9kZSBvbmx5
LgorCisgICAgICAgICogU291cmNlcy50eHQ6IGFkZCBuZXcgc291cmNlcy4KKyAgICAgICAgKiBi
My9CM1ZhbHVlUmVwLmg6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZVJlcDo6VmFsdWVSZXApOiBp
bmNsdWRlIFdhc21WYWx1ZUxvY2F0aW9uLmggYW5kIGFkZAorICAgICAgICBhIG1ldGhvZCB0byBj
b252ZXJ0IEIzOjpWYWx1ZVJlcCB0byBXYXNtOjpWYWx1ZUxvY2F0aW9uLgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGFkZCBuZXcgc291cmNlcy4K
KyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkFpcklSR2VuZXJhdG9yOjplbWl0Q2FsbFBhdGNocG9pbnQpOiBjb3ZlcnQgZXhpc3Rpbmcg
V2FzbTo6VmFsdWVMb2NhdGlvbiBpbnRvIEIzOjpWYWx1ZVJlcC4KKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6
Y3JlYXRlQ2FsbFBhdGNocG9pbnQpOiBkaXR0by4KKyAgICAgICAgKiB3YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpDYWxsSW5mb3JtYXRpb246OmNvbXB1
dGVSZXN1bHRzT2Zmc2V0TGlzdCk6IHVzZSBXYXNtOjpWYWx1ZUxvY2F0aW9uLgorICAgICAgICAq
IHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOiBkaXR0by4KKyAgICAgICAgKiB3YXNtL1dhc21WYWx1ZUxvY2F0aW9u
LmNwcDogbmV3IGNsYXNzLCBiYXNpY2FsbHkgQjM6OlZhbHVlUmVwCisgICAgICAgIHdpdGhvdXQg
YWxsIHRoZSBzdHVmZiB3ZSBkb24ndCBuZWVkIGluIFdhc21MTEludC4KKyAgICAgICAgKEpTQzo6
V2FzbTo6VmFsdWVMb2NhdGlvbjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIHdhc20vV2FzbVZhbHVlTG9jYXRpb24uaDogZGl0dG8uCisgICAg
ICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OlZhbHVlTG9jYXRpb24pOgorICAgICAgICAo
SlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpyZWcpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1
ZUxvY2F0aW9uOjpzdGFjayk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OnN0
YWNrQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpraW5kIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNSZWcgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjpyZWcgY29uc3QpOgorICAgICAgICAo
SlNDOjpXYXNtOjpWYWx1ZUxvY2F0aW9uOjppc0dQUiBjb25zdCk6CisgICAgICAgIChKU0M6Oldh
c206OlZhbHVlTG9jYXRpb246OmlzRlBSIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFs
dWVMb2NhdGlvbjo6Z3ByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlv
bjo6ZnByIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsdWVMb2NhdGlvbjo6aXNTdGFj
ayBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246Om9mZnNldEZyb21G
UCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246OmlzU3RhY2tBcmd1
bWVudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlZhbHVlTG9jYXRpb246Om9mZnNldEZy
b21TUCBjb25zdCk6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChK
U0M6Oldhc206Om1hcnNoYWxsSlNSZXN1bHQpOiB1c2UgV2FzbTo6VmFsdWVMb2NhdGlvbi4KKwog
MjAyMS0wMS0xMyAgWGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10g
UmVtb3ZlIHRoZSB1bnVzZWQgY29tcGlsYXRpb24gYnlwcm9kdWN0cyBmcm9tIHRoZSB3YXNtIGVt
YmVkZGVyIGVudHJ5cG9pbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmQ5MDky
ZTMyMGNhLi5jOTUxYTBiZjNlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjQ3LDYgKzEyNDcsNyBAQAogCQk4NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjE4
MTY3NjFGQjc5MjJGMDBFQ0M0RUMgLyogQmlnSW50T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYyNTUzRDIxNjEzNkUxQTAwOUYxN0Qw
IC8qIEpTUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2MjU1M0NGMTYxMzZBQTUwMDlGMTdEMCAvKiBKU1Byb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYzQjIzRTAwRkM2MTE4OTAwNzAz
QUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYzQjIzREYwRkM2MEU2MjAwNzAzQUE0IC8qIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTg2M0ZCQzVBMjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYzRkJDNTgy
NUIwOTNCOTAwRjZDOTMwIC8qIFdhc21WYWx1ZUxvY2F0aW9uLmggKi87IH07ICAgICAgICAgICAg
ICAgIAogCQk4NjVBMzBGMTEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NUEzMEYwMTM1
MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAv
KiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjY3MzlEMDEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdlci5oICovOyB9OwogCQk4
NjY3MzlEMzEzQkZERTcxMDAyM0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjY3MzlEMTEzQkZERTcxMDAy
M0Q4N0MgLyogVWludDE2V2l0aEZyYWN0aW9uLmggKi87IH07CkBAIC00MTQ4LDYgKzQxNDksOCBA
QAogCQk4NjNDNkQ5ODE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVDUzIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckNhbm9uaWNhbGl6ZVVD
UzIuY3BwOyBwYXRoID0geWFyci9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2M0M2RDk5MTUyMTExMTIwMDU4NUU0RSAvKiBZYXJyQ2Fub25p
Y2FsaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJDYW5vbmljYWxp
emUuaDsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjNDNkQ5QTE1MjExMTEyMDA1ODVFNEUgLyogWWFyckNhbm9uaWNhbGl6ZVVD
UzIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBZYXJyQ2Fub25p
Y2FsaXplVUNTMi5qczsgcGF0aCA9IHlhcnIvWWFyckNhbm9uaWNhbGl6ZVVDUzIuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0ZCQzU3MjVCMDkzQjgwMEY2QzkzMCAvKiBXYXNt
VmFsdWVMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtVmFsdWVMb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2M0ZC
QzU4MjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtVmFsdWVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NjQwOTIzQjE1NkVFRDNCMDA1NjZDQjIgLyogQVJNNjRBc3NlbWJsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJNNjRBc3NlbWJsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY0MDkyM0IxNTZFRUQzQjAwNTY2Q0MyIC8qIEFS
TTY0UmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTTY0UmVn
aXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NDA5MjNDMTU2RUVEM0Iw
MDU2NkNCMiAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyQVJNNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY5MTcsNiArNjkyMCw4IEBACiAJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3
YXNtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NjNG
QkM1NzI1QjA5M0I4MDBGNkM5MzAgLyogV2FzbVZhbHVlTG9jYXRpb24uY3BwICovLAorCQkJCTg2
M0ZCQzU4MjVCMDkzQjkwMEY2QzkzMCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5oICovLAogCQkJCUFE
MkZDQjhBMURCNTg0MDAwMEIzRTczNiAvKiBqcyAqLywKIAkJCQk1Mjg0N0FEOTIxRkZCODYzMDA2
MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCAqLywKIAkJCQk1Mjg0N0FEQTIxRkZCODYz
MDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmggKi8sCkBAIC05Njc3LDYgKzk2ODIsNyBA
QAogCQkJCTBGQ0VGQUUwMTgwNzM4QzAwMDQ3MkNFNCAvKiBGVExMb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9CMy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2Vy
ZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2M0ZCQzVBMjVCMDkzQjkwMEY2Qzkz
MCAvKiBXYXNtVmFsdWVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjkxOUQw
QkFDMTAwQjFEMUI1IC8qIEZUTE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzFDMTdENTFGMjIwMENBMkM0MCAvKiBGVExPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMzVCREQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIxZGM1MjFiYjg1YS4uNmI5NzhhMzkwZTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDc3LDYgKzEwNzcsNyBAQCB3YXNt
L1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCiB3YXNtL1dhc21UYWJsZS5jcHAKIHdhc20vV2FzbVRo
dW5rcy5jcHAKIHdhc20vV2FzbVRpZXJVcENvdW50LmNwcAord2FzbS9XYXNtVmFsdWVMb2NhdGlv
bi5jcHAKIHdhc20vV2FzbVdvcmtsaXN0LmNwcAogCiB3YXNtL2pzL0pTVG9XYXNtLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgKaW5kZXggOWI3MTYwMTIwMmYyLi4xMWI3NWNj
N2JkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaApAQCAtMzQsNiArMzQs
OSBAQAogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5o
IgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
KyNpbmNsdWRlICJXYXNtVmFsdWVMb2NhdGlvbi5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC0xMjEsNiArMTI0LDI4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQgPT0g
V2FybUFueSB8fCBraW5kID09IENvbGRBbnkgfHwga2luZCA9PSBMYXRlQ29sZEFueSB8fCBraW5k
ID09IFNvbWVSZWdpc3RlciB8fCBraW5kID09IFNvbWVSZWdpc3RlcldpdGhDbG9iYmVyIHx8IGtp
bmQgPT0gU29tZUVhcmx5UmVnaXN0ZXIgfHwga2luZCA9PSBTb21lTGF0ZVJlZ2lzdGVyKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgVmFsdWVSZXAoV2FzbTo6VmFsdWVM
b2NhdGlvbiBsb2NhdGlvbikKKyAgICB7CisgICAgICAgIHN3aXRjaCAobG9jYXRpb24ua2luZCgp
KSB7CisgICAgICAgIGNhc2UgV2FzbTo6VmFsdWVMb2NhdGlvbjo6S2luZDo6UmVnaXN0ZXI6Cisg
ICAgICAgICAgICBtX2tpbmQgPSBSZWdpc3RlcjsKKyAgICAgICAgICAgIHUucmVnID0gbG9jYXRp
b24ucmVnKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXYXNtOjpWYWx1ZUxv
Y2F0aW9uOjpLaW5kOjpTdGFjazoKKyAgICAgICAgICAgIG1fa2luZCA9IFN0YWNrOworICAgICAg
ICAgICAgdS5vZmZzZXRGcm9tRlAgPSBsb2NhdGlvbi5vZmZzZXRGcm9tRlAoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFdhc206OlZhbHVlTG9jYXRpb246OktpbmQ6OlN0YWNr
QXJndW1lbnQ6CisgICAgICAgICAgICBtX2tpbmQgPSBTdGFja0FyZ3VtZW50OworICAgICAgICAg
ICAgdS5vZmZzZXRGcm9tU1AgPSBsb2NhdGlvbi5vZmZzZXRGcm9tU1AoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIHN0YXRpYyBWYWx1ZVJlcCByZWco
UmVnIHJlZykKICAgICB7CiAgICAgICAgIHJldHVybiBWYWx1ZVJlcChyZWcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggYjc0
YWE2MjQ3ZDQ3Li5hOTdiYzc1MTcwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1
ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKQEAgLTI5NjQs
OCArMjk2NSwxMiBAQCBCMzo6UGF0Y2hwb2ludFZhbHVlKiBBaXJJUkdlbmVyYXRvcjo6ZW1pdENh
bGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQogICAgICAgICBwYXRjaEFyZ3NbaSArIG9mZnNl
dF0gPSBDb25zdHJhaW5lZFRtcChhcmdzW2ldLCBsb2NhdGlvbnMucGFyYW1zW2ldKTsKIAotICAg
IGlmIChwYXRjaHBvaW50LT50eXBlKCkgIT0gQjM6OlZvaWQpCi0gICAgICAgIHBhdGNocG9pbnQt
PnJlc3VsdENvbnN0cmFpbnRzID0gV1RGTW92ZShsb2NhdGlvbnMucmVzdWx0cyk7CisgICAgaWYg
KHBhdGNocG9pbnQtPnR5cGUoKSAhPSBCMzo6Vm9pZCkgeworICAgICAgICBWZWN0b3I8QjM6OlZh
bHVlUmVwLCAxPiByZXN1bHRDb25zdHJhaW50czsKKyAgICAgICAgZm9yIChhdXRvIHZhbHVlTG9j
YXRpb24gOiBsb2NhdGlvbnMucmVzdWx0cykKKyAgICAgICAgICAgIHJlc3VsdENvbnN0cmFpbnRz
LmFwcGVuZChCMzo6VmFsdWVSZXAodmFsdWVMb2NhdGlvbikpOworICAgICAgICBwYXRjaHBvaW50
LT5yZXN1bHRDb25zdHJhaW50cyA9IFdURk1vdmUocmVzdWx0Q29uc3RyYWludHMpOworICAgIH0K
ICAgICBlbWl0UGF0Y2hwb2ludChibG9jaywgcGF0Y2hwb2ludCwgcmVzdWx0cywgV1RGTW92ZShw
YXRjaEFyZ3MpKTsKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBiNTMyNGY0N2JlNWMu
LmUyMGQwMWEzOGViZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCisjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgpAQCAtMjE1MSw4ICsyMTUyLDEyIEBAIEIzOjpWYWx1ZSog
QjNJUkdlbmVyYXRvcjo6Y3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxvY2ssIE9y
aWdpbiBvcmlnaW4sCiAgICAgcGF0Y2hwb2ludEZ1bmN0b3IocGF0Y2hwb2ludCk7CiAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kVmVjdG9yKGNvbnN0cmFpbmVkQXJndW1lbnRzKTsKIAotICAgIGlmIChy
ZXR1cm5UeXBlICE9IEIzOjpWb2lkKQotICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50cyA9IFdURk1vdmUod2FzbUNhbGxJbmZvLnJlc3VsdHMpOworICAgIGlmIChyZXR1cm5UeXBl
ICE9IEIzOjpWb2lkKSB7CisgICAgICAgIFZlY3RvcjxCMzo6VmFsdWVSZXAsIDE+IHJlc3VsdENv
bnN0cmFpbnRzOworICAgICAgICBmb3IgKGF1dG8gdmFsdWVMb2NhdGlvbiA6IHdhc21DYWxsSW5m
by5yZXN1bHRzKQorICAgICAgICAgICAgcmVzdWx0Q29uc3RyYWludHMuYXBwZW5kKEIzOjpWYWx1
ZVJlcCh2YWx1ZUxvY2F0aW9uKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFp
bnRzID0gV1RGTW92ZShyZXN1bHRDb25zdHJhaW50cyk7CisgICAgfQogICAgIHJldHVybiBwYXRj
aHBvaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxs
aW5nQ29udmVudGlvbi5oCmluZGV4IGI0MTg0ZjYzNmZiZS4uODhjYTJmNzAzMjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApA
QCAtMjcsMjggKzI3LDIwIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRl
ICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgi
Ci0jaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCi0jaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
LmgiCi0jaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKLSNpbmNsdWRlICJCM0NvbnN0cmFpbmVk
VmFsdWUuaCIKLSNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCi0jaW5jbHVkZSAiQjNQYXRjaHBv
aW50VmFsdWUuaCIKLSNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgotI2luY2x1ZGUgIkIzU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2Fz
bVNpZ25hdHVyZS5oIgorI2luY2x1ZGUgIldhc21WYWx1ZUxvY2F0aW9uLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkxM
SW50Q2FsbGVlU2F2ZVJlZ2lzdGVycyA9IDI7CiAKLXVzaW5nIEFyZ3VtZW50TG9jYXRpb24gPSBC
Mzo6VmFsdWVSZXA7Cit1c2luZyBBcmd1bWVudExvY2F0aW9uID0gVmFsdWVMb2NhdGlvbjsKIGVu
dW0gY2xhc3MgQ2FsbFJvbGUgOiB1aW50OF90IHsKICAgICBDYWxsZXIsCiAgICAgQ2FsbGVlLApA
QCAtNjQsOSArNTYsOSBAQCBzdHJ1Y3QgQ2FsbEluZm9ybWF0aW9uIHsKICAgICBSZWdpc3RlckF0
T2Zmc2V0TGlzdCBjb21wdXRlUmVzdWx0c09mZnNldExpc3QoKQogICAgIHsKICAgICAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlc3VsdFJlZ2lzdGVyczsKLSAgICAgICAgZm9yIChCMzo6VmFsdWVSZXAg
cmVwIDogcmVzdWx0cykgewotICAgICAgICAgICAgaWYgKHJlcC5pc1JlZygpKQotICAgICAgICAg
ICAgICAgIHVzZWRSZXN1bHRSZWdpc3RlcnMuc2V0KHJlcC5yZWcoKSk7CisgICAgICAgIGZvciAo
VmFsdWVMb2NhdGlvbiBsb2MgOiByZXN1bHRzKSB7CisgICAgICAgICAgICBpZiAobG9jLmlzUmVn
KCkpCisgICAgICAgICAgICAgICAgdXNlZFJlc3VsdFJlZ2lzdGVycy5zZXQobG9jLnJlZygpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIFJlZ2lzdGVyQXRPZmZzZXRMaXN0IHNhdmVkUmVncyh1c2Vk
UmVzdWx0UmVnaXN0ZXJzLCBSZWdpc3RlckF0T2Zmc2V0TGlzdDo6WmVyb0Jhc2VkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAppbmRleCA4MmE5ZGNj
MmI2MWQuLjFmMjY3OGI0OTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PcGVyYXRpb25zLmNwcApAQCAtNjAzLDEyICs2MDMsMTIgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkFsbG9jYXRlUmVzdWx0c0FycmF5LCBKU0FycmF5KiwgKENhbGxGcmFt
ZSogY2EKIAogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTVmFsdWUpID09IHNpemVvZihDUFVS
ZWdpc3RlciksICJUaGUgY29kZSBiZWxvdyByZWxpZXMgb24gdGhpcy4iKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLT5yZXR1cm5Db3VudCgpOyArK2kpIHsKLSAgICAg
ICAgQjM6OlZhbHVlUmVwIHJlcCA9IHdhc21DYWxsSW5mby5yZXN1bHRzW2ldOworICAgICAgICBW
YWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21DYWxsSW5mby5yZXN1bHRzW2ldOwogICAgICAgICBKU1Zh
bHVlIHZhbHVlOwotICAgICAgICBpZiAocmVwLmlzUmVnKCkpCi0gICAgICAgICAgICB2YWx1ZSA9
IHN0YWNrUG9pbnRlckZyb21DYWxsZWVbKHJlZ2lzdGVyUmVzdWx0cy5maW5kKHJlcC5yZWcoKSkt
Pm9mZnNldCgpICsgd2FzbUNhbGxJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRl
cykgLyBzaXplb2YoSlNWYWx1ZSldOworICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IHN0YWNrUG9pbnRlckZyb21DYWxsZWVbKHJlZ2lzdGVyUmVzdWx0cy5maW5k
KGxvYy5yZWcoKSktPm9mZnNldCgpICsgd2FzbUNhbGxJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3Rh
Y2tTaXplSW5CeXRlcykgLyBzaXplb2YoSlNWYWx1ZSldOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB2YWx1ZSA9IHN0YWNrUG9pbnRlckZyb21DYWxsZWVbcmVwLm9mZnNldEZyb21TUCgpIC8g
c2l6ZW9mKEpTVmFsdWUpXTsKKyAgICAgICAgICAgIHZhbHVlID0gc3RhY2tQb2ludGVyRnJvbUNh
bGxlZVtsb2Mub2Zmc2V0RnJvbVNQKCkgLyBzaXplb2YoSlNWYWx1ZSldOwogICAgICAgICByZXN1
bHQtPmluaXRpYWxpemVJbmRleChpbml0aWFsaXphdGlvblNjb3BlLCBpLCB2YWx1ZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2Nh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MjIzZjNhYjRlNDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsdWVM
b2NhdGlvbi5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Fz
bVZhbHVlTG9jYXRpb24uaCIKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKKwordm9pZCBWYWx1ZUxvY2F0aW9uOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fa2luZCk7CisgICAgc3dpdGNo
IChtX2tpbmQpIHsKKyAgICBjYXNlIFJlZ2lzdGVyOgorICAgICAgICBvdXQucHJpbnQoIigiLCBy
ZWcoKSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RhY2s6CisgICAgICAgIG91
dC5wcmludCgiKCIsIG9mZnNldEZyb21GUCgpLCAiKSIpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBTdGFja0FyZ3VtZW50OgorICAgICAgICBvdXQucHJpbnQoIigiLCBvZmZzZXRGcm9tU1Ao
KSwgIikiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQorCituYW1lc3BhY2Ug
V1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzo6V2FzbTsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIFZhbHVlTG9jYXRpb246OktpbmQga2luZCkKK3sKKyAgICBzd2l0
Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFZhbHVlTG9jYXRpb246OlJlZ2lzdGVyOgorICAgICAgICBv
dXQucHJpbnQoIlJlZ2lzdGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFZhbHVlTG9j
YXRpb246OlN0YWNrOgorICAgICAgICBvdXQucHJpbnQoIlN0YWNrIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFZhbHVlTG9jYXRpb246OlN0YWNrQXJndW1lbnQ6CisgICAgICAgIG91dC5w
cmludCgiU3RhY2tBcmd1bWVudCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVZhbHVlTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWx1ZUxvY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4xNjhhM2YzM2MzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtVmFsdWVMb2NhdGlvbi5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUg
IkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWcuaCIKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBXYXNtIHsKKworY2xhc3MgVmFsdWVM
b2NhdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51
bSBLaW5kIDogdWludDhfdCB7CisgICAgICAgIFJlZ2lzdGVyLAorICAgICAgICBTdGFjaywKKyAg
ICAgICAgU3RhY2tBcmd1bWVudCwKKyAgICB9OworCisgICAgVmFsdWVMb2NhdGlvbigpCisgICAg
ICAgIDogbV9raW5kKFJlZ2lzdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBWYWx1
ZUxvY2F0aW9uKFJlZyByZWcpCisgICAgICAgIDogbV9raW5kKFJlZ2lzdGVyKQorICAgIHsKKyAg
ICAgICAgdS5yZWcgPSByZWc7CisgICAgfQorCisgICAgVmFsdWVMb2NhdGlvbihjb25zdCBWYWx1
ZUxvY2F0aW9uJikgPSBkZWZhdWx0OworCisgICAgc3RhdGljIFZhbHVlTG9jYXRpb24gcmVnKFJl
ZyByZWcpCisgICAgeworICAgICAgICByZXR1cm4gVmFsdWVMb2NhdGlvbihyZWcpOworICAgIH0K
KworICAgIHN0YXRpYyBWYWx1ZUxvY2F0aW9uIHN0YWNrKGludHB0cl90IG9mZnNldEZyb21GUCkK
KyAgICB7CisgICAgICAgIFZhbHVlTG9jYXRpb24gcmVzdWx0OworICAgICAgICByZXN1bHQubV9r
aW5kID0gU3RhY2s7CisgICAgICAgIHJlc3VsdC51Lm9mZnNldEZyb21GUCA9IG9mZnNldEZyb21G
UDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgVmFsdWVMb2Nh
dGlvbiBzdGFja0FyZ3VtZW50KGludHB0cl90IG9mZnNldEZyb21TUCkKKyAgICB7CisgICAgICAg
IFZhbHVlTG9jYXRpb24gcmVzdWx0OworICAgICAgICByZXN1bHQubV9raW5kID0gU3RhY2tBcmd1
bWVudDsKKyAgICAgICAgcmVzdWx0LnUub2Zmc2V0RnJvbVNQID0gb2Zmc2V0RnJvbVNQOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fa2luZDsgfQorCisgICAgYm9vbCBpc1JlZygpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9
PSBSZWdpc3RlcjsgfQorCisgICAgUmVnIHJlZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNSZWcoKSk7CisgICAgICAgIHJldHVybiB1LnJlZzsKKyAgICB9CisKKyAgICBib29sIGlz
R1BSKCkgY29uc3QgeyByZXR1cm4gaXNSZWcoKSAmJiByZWcoKS5pc0dQUigpOyB9CisgICAgYm9v
bCBpc0ZQUigpIGNvbnN0IHsgcmV0dXJuIGlzUmVnKCkgJiYgcmVnKCkuaXNGUFIoKTsgfQorCisg
ICAgR1BSUmVnIGdwcigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmdwcigpOyB9CisgICAgRlBSUmVn
IGZwcigpIGNvbnN0IHsgcmV0dXJuIHJlZygpLmZwcigpOyB9CisKKyAgICBib29sIGlzU3RhY2so
KSBjb25zdCB7IHJldHVybiBraW5kKCkgPT0gU3RhY2s7IH0KKworICAgIGludHB0cl90IG9mZnNl
dEZyb21GUCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGFjaygpKTsKKyAgICAg
ICAgcmV0dXJuIHUub2Zmc2V0RnJvbUZQOworICAgIH0KKworICAgIGJvb2wgaXNTdGFja0FyZ3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFN0YWNrQXJndW1lbnQ7IH0KKworICAgIGlu
dHB0cl90IG9mZnNldEZyb21TUCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNTdGFj
a0FyZ3VtZW50KCkpOworICAgICAgICByZXR1cm4gdS5vZmZzZXRGcm9tU1A7CisgICAgfQorCisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3By
aXZhdGU6CisgICAgdW5pb24gVSB7CisgICAgICAgIFJlZyByZWc7CisgICAgICAgIGludHB0cl90
IG9mZnNldEZyb21GUDsKKyAgICAgICAgaW50cHRyX3Qgb2Zmc2V0RnJvbVNQOworCisgICAgICAg
IFUoKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRo
aXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKyAgICAgICAgfQorICAgIH0gdTsKKyAgICBLaW5kIG1f
a2luZDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCisKK25hbWVzcGFjZSBXVEYg
eworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6Oldhc206OlZhbHVlTG9j
YXRpb246OktpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
VG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApp
bmRleCA5ZTZhOGUyOGY5MTIuLjdmYmYyODVjZjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtOTEsMTkgKzkxLDE5IEBAIHZvaWQgbWFyc2hhbGxK
U1Jlc3VsdChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNv
bnN0IENhbGxJCiAgICAgICAgIEZQUlJlZyBmcHJTY3JhdGNoID0gd2FzbUNhbGxpbmdDb252ZW50
aW9uKCkuZnByQXJnc1swXS5mcHIoKTsKICAgICAgICAgYm9vbCBoYXNJNjQgPSBmYWxzZTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyAr
K2kpIHsKLSAgICAgICAgICAgIEIzOjpWYWx1ZVJlcCByZXAgPSB3YXNtRnJhbWVDb252ZW50aW9u
LnJlc3VsdHNbaV07CisgICAgICAgICAgICBWYWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21GcmFtZUNv
bnZlbnRpb24ucmVzdWx0c1tpXTsKICAgICAgICAgICAgIFR5cGUgdHlwZSA9IHNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpOwogCiAgICAgICAgICAgICBoYXNJNjQgfD0gdHlwZSA9PSBXYXNtOjpJNjQ7
Ci0gICAgICAgICAgICBpZiAocmVwLmlzUmVnKCkpIHsKKyAgICAgICAgICAgIGlmIChsb2MuaXNS
ZWcoKSkgewogICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFdhc206Okk2NCkgewotICAgICAg
ICAgICAgICAgICAgICBib3hXYXNtUmVzdWx0KGppdCwgc2lnbmF0dXJlLnJldHVyblR5cGUoaSks
IHJlcC5yZWcoKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVl
KHNjcmF0Y2gsIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgp
ICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMp
KTsKKyAgICAgICAgICAgICAgICAgICAgYm94V2FzbVJlc3VsdChqaXQsIHNpZ25hdHVyZS5yZXR1
cm5UeXBlKGkpLCBsb2MucmVnKCksIHNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICBqaXQu
c3RvcmVWYWx1ZShzY3JhdGNoLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1bHRSZWdpc3RlcnMuZmluZChsb2MucmVnKCkp
LT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRpb24uaGVhZGVyQW5kQXJndW1lbnRTdGFja1Np
emVJbkJ5dGVzKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsgcmVwLnJlZygpLmdwcigpIH0sIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzYXZlZFJl
c3VsdFJlZ2lzdGVycy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgpICsgd2FzbUZyYW1lQ29udmVu
dGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaml0LnN0b3JlVmFsdWUoSlNWYWx1ZVJlZ3MgeyBsb2MucmVnKCkuZ3ByKCkgfSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNh
dmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9jLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJhbWVD
b252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBXYXNtOjpJNjQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCByZXAub2Zmc2V0RnJvbVNQKCkpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGxvYy5vZmZzZXRGcm9tU1AoKSk7
CiAgICAgICAgICAgICAgICAgICAgIFJlZyB0bXAgPSB0eXBlID09IEYzMiB8fCB0eXBlID09IEY2
NCA/IFJlZyhmcHJTY3JhdGNoKSA6IFJlZyhzY3JhdGNoLmdwcigpKTsKICAgICAgICAgICAgICAg
ICAgICAgaml0LmxvYWQ2NFRvUmVnKGxvY2F0aW9uLCB0bXApOwogICAgICAgICAgICAgICAgICAg
ICBib3hXYXNtUmVzdWx0KGppdCwgc2lnbmF0dXJlLnJldHVyblR5cGUoaSksIHRtcCwgc2NyYXRj
aCk7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBtYXJzaGFsbEpTUmVzdWx0KENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgQ2FsbEkKICAgICAgICAg
Ly8gVGhpcyBpcyByZXF1aXJlZCB0byBjb252ZXJ0IHZhbHVlcyB0byBCaWdJbnQuCiAgICAgICAg
IGlmIChoYXNJNjQpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWdu
YXR1cmUucmV0dXJuQ291bnQoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQjM6OlZhbHVlUmVw
IHJlcCA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKKyAgICAgICAgICAgICAgICBW
YWx1ZUxvY2F0aW9uIGxvYyA9IHdhc21GcmFtZUNvbnZlbnRpb24ucmVzdWx0c1tpXTsKICAgICAg
ICAgICAgICAgICBUeXBlIHR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZShpKTsKICAgICAgICAg
ICAgICAgICBpZiAodHlwZSAhPSBXYXNtOjpJNjQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTQxLDE4ICsxNDEsMTggQEAgdm9pZCBtYXJzaGFsbEpTUmVzdWx0KENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgQ2FsbEkKICAgICAg
ICAgICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKHdhc21Db250ZXh0SW5z
dGFuY2VHUFIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChyZXAu
aXNSZWcoKSkKLSAgICAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2F2ZWRSZXN1bHRSZWdp
c3RlcnMuZmluZChyZXAucmVnKCkpLT5vZmZzZXQoKSArIHdhc21GcmFtZUNvbnZlbnRpb24uaGVh
ZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICAgICAgICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAgIGpp
dC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIsIHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9jLnJlZygpKS0+b2Zmc2V0KCkg
KyB3YXNtRnJhbWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgcmVwLm9mZnNldEZyb21TUCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBsb2Mub2Zmc2V0RnJvbVNQKCkpOwogICAg
ICAgICAgICAgICAgICAgICBqaXQubG9hZDY0VG9SZWcobG9jYXRpb24sIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Db252ZXJ0VG9CaWdJbnQpPih3YXNtQ29udGV4dElu
c3RhbmNlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICAgICAgICAgIGppdC5j
YWxsT3BlcmF0aW9uKEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uQ29udmVy
dFRvQmlnSW50KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcC5pc1JlZygpKQotICAgICAgICAg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZShKU1ZhbHVlUmVncyB7IEdQUkluZm86OnJldHVyblZh
bHVlR1BSIH0sIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzYXZlZFJlc3VsdFJlZ2lzdGVycy5maW5kKHJlcC5yZWcoKSktPm9mZnNldCgp
ICsgd2FzbUZyYW1lQ29udmVudGlvbi5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMp
KTsKKyAgICAgICAgICAgICAgICBpZiAobG9jLmlzUmVnKCkpCisgICAgICAgICAgICAgICAgICAg
IGppdC5zdG9yZVZhbHVlKEpTVmFsdWVSZWdzIHsgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgfSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNhdmVkUmVzdWx0UmVnaXN0ZXJzLmZpbmQobG9jLnJlZygpKS0+b2Zmc2V0KCkgKyB3YXNtRnJh
bWVDb252ZW50aW9uLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcykpOwogICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJl
cC5vZmZzZXRGcm9tU1AoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
bG9jLm9mZnNldEZyb21TUCgpKTsKICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUo
SlNWYWx1ZVJlZ3MgeyBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiB9LCBsb2NhdGlvbik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotLSAKMi4yOS4yCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>