<?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>90146</bug_id>
          
          <creation_ts>2012-06-28 01:36:53 -0700</creation_ts>
          <short_desc>DFG recompilation heuristics should be based on count, not rate</short_desc>
          <delta_ts>2012-07-10 02:20:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659327</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 01:36:53 -0700</bug_when>
    <thetext>Patch forthcoming.

It should be noted that this bug is basically an experiment.  This patch will require a fair amount of testing before I&apos;m convinced that it&apos;s a good idea to replace the current heuristics with these ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659329</commentid>
    <comment_count>1</comment_count>
      <attachid>149901</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 01:41:05 -0700</bug_when>
    <thetext>Created attachment 149901
work in progress

Just putting up for EWS.  Not ready for review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659901</commentid>
    <comment_count>2</comment_count>
      <attachid>150032</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 15:51:40 -0700</bug_when>
    <thetext>Created attachment 150032
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660074</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 19:40:36 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/121511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665402</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-09 18:51:16 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/122182
It made in-browser V8v7 10% slower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665592</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-10 02:20:22 -0700</bug_when>
    <thetext>Relanded in http://trac.webkit.org/changeset/122206</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149901</attachid>
            <date>2012-06-28 01:41:05 -0700</date>
            <delta_ts>2012-06-28 15:51:40 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>countrecomp_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22243</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEyLTA2LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHJlY29tcGlsYXRpb24gaGV1cmlzdGljcyBzaG91bGQgYmUgYmFzZWQgb24gY291bnQsIG5v
dCByYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpvc3JFeGl0Q291bnRl
cik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bnRPU1JFeGl0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRyZXNzT2ZPU1JFeGl0Q291bnRlcik6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb24pOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVOb3cpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RXhl
Y3V0aW9uQ291bnRlcjo6c2V0VGhyZXNob2xkKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRp
b25Db3VudGVyLmg6CisgICAgICAgIChFeGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6
RXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9sZCk6CisgICAgICAgICogZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUJv
ZHkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3cpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRD
b21waWxlcjo6aGFuZGxlRXhpdENvdW50cyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9T
VFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
T3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemVPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlvbnMpOgorCiAyMDEyLTA2
LTI3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5d
IGpzY29yZS10ZXN0cyBmbGFrZXkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5NSw5ICsx
NTk1LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogICAgICwg
bV9mdW5jdGlvbkRlY2xzKG90aGVyLm1fZnVuY3Rpb25EZWNscykKICAgICAsIG1fZnVuY3Rpb25F
eHBycyhvdGhlci5tX2Z1bmN0aW9uRXhwcnMpCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bVRhYikK
LSAgICAsIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigwKQotICAgICwgbV9zcGVjdWxhdGl2
ZUZhaWxDb3VudGVyKDApCi0gICAgLCBtX2ZvcmNlZE9TUkV4aXRDb3VudGVyKDApCisgICAgLCBt
X29zckV4aXRDb3VudGVyKDApCiAgICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQog
ICAgICwgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigwKQogICAgICwgbV9saW5lSW5mbyhv
dGhlci5tX2xpbmVJbmZvKQpAQCAtMTY0OSw4ICsxNjQ3LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soU2NyaXB0RXhlY3V0YWJsZSogbwogI2VuZGlmCiAgICAgLCBtX3N5bWJvbFRhYmxlKHN5bVRh
YikKICAgICAsIG1fYWx0ZXJuYXRpdmUoYWx0ZXJuYXRpdmUpCi0gICAgLCBtX3NwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXIoMCkKLSAgICAsIG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcigwKQorICAg
ICwgbV9vc3JFeGl0Q291bnRlcigwKQogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIo
MCkKICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEyMTM5OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTA0Miw1OSArMTA0MiwzMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IG1faml0RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKE9wdGlvbnM6OnRocmVzaG9sZEZv
ck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCB0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gVGhlIHNwZWN1bGF0aXZlIEpJVCB0cmFja3Mg
aXRzIHN1Y2Nlc3MgcmF0ZSwgc28gdGhhdCB3ZSBjYW4KLSAgICAgICAgLy8gZGVjaWRlIHdoZW4g
dG8gcmVvcHRpbWl6ZS4gSXQncyBpbnRlcmVzdGluZyB0byBub3RlIHRoYXQgdGhlc2UKLSAgICAg
ICAgLy8gY291bnRlcnMgbWF5IG92ZXJmbG93IHdpdGhvdXQgYW55IHByb3RlY3Rpb24uIFRoZSBz
dWNjZXNzCi0gICAgICAgIC8vIGNvdW50ZXIgd2lsbCBvdmVyZmxvdyBiZWZvcmUgdGhlIGZhaWwg
b25lIGRvZXMsIGJlY3Vhc2UgdGhlCi0gICAgICAgIC8vIGZhaWwgb25lIGlzIHVzZWQgYXMgYSB0
cmlnZ2VyIHRvIHJlb3B0aW1pemUuIFNvIHRoZSB3b3JzdCBjYXNlCi0gICAgICAgIC8vIGlzIHRo
YXQgdGhlIHN1Y2Nlc3MgY291bnRlciBvdmVyZmxvd3MgYW5kIHdlIHJlb3B0aW1pemUgd2l0aG91
dAotICAgICAgICAvLyBuZWVkaW5nIHRvLiBCdXQgdGhpcyBpcyBoYXJtbGVzcy4gSWYgYSBtZXRo
b2QgcmVhbGx5IGRpZAotICAgICAgICAvLyBleGVjdXRlIDJeMzIgdGltZXMgdGhlbiBjb21waWxp
bmcgaXQgYWdhaW4gcHJvYmFibHkgd29uJ3QgaHVydAotICAgICAgICAvLyBhbnlvbmUuCisgICAg
ICAgIHVpbnQzMl90IG9zckV4aXRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9vc3JFeGl0Q291
bnRlcjsgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBjb3VudFNwZWN1bGF0aW9uU3VjY2Vzcygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcisrOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIGNvdW50U3BlY3VsYXRpb25GYWlsdXJl
KCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKys7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHVpbnQzMl90IHNwZWN1bGF0aXZlU3VjY2Vzc0Nv
dW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7IH0KLSAg
ICAgICAgdWludDMyX3Qgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3BlY3VsYXRpdmVGYWlsQ291bnRlcjsgfQotICAgICAgICB1aW50MzJfdCBmb3JjZWRPU1JFeGl0
Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VkT1NSRXhpdENvdW50ZXI7IH0KKyAgICAg
ICAgdm9pZCBjb3VudE9TUkV4aXQoKSB7IG1fb3NyRXhpdENvdW50ZXIrKzsgfQogICAgICAgICAK
LSAgICAgICAgdWludDMyX3QqIGFkZHJlc3NPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSB7
IHJldHVybiAmbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOyB9Ci0gICAgICAgIHVpbnQzMl90
KiBhZGRyZXNzT2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgeyByZXR1cm4gJm1fc3BlY3VsYXRp
dmVGYWlsQ291bnRlcjsgfQotICAgICAgICB1aW50MzJfdCogYWRkcmVzc09mRm9yY2VkT1NSRXhp
dENvdW50ZXIoKSB7IHJldHVybiAmbV9mb3JjZWRPU1JFeGl0Q291bnRlcjsgfQorICAgICAgICB1
aW50MzJfdCogYWRkcmVzc09mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiAmbV9vc3JFeGl0Q291
bnRlcjsgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2Nr
LCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKENvZGVCbG9jaywgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKTsgfQotICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRm9yY2VkT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ZvcmNlZE9TUkV4aXRDb3VudGVyKTsgfQorICAgICAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX29zckV4aXRDb3VudGVyKTsgfQogCiAjaWYgRU5BQkxF
KEpJVCkKLSAgICAgICAgLy8gVGhlIG51bWJlciBvZiBmYWlsdXJlcyB0aGF0IHRyaWdnZXJzIHRo
ZSB1c2Ugb2YgdGhlIHJhdGlvLgotICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZSA8PCBi
YXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQotICAgICAg
ICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSB7IHJldHVybiBPcHRp
b25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wIDw8IGJhc2VsaW5lVmVyc2lv
bigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9Ci0KLSAgICAgICAgYm9vbCBzaG91
bGRSZW9wdGltaXplTm93KCkKKyAgICAgICAgdWludDMyX3QgZXhpdENvdW50VGhyZXNob2xkRm9y
UmVvcHRpbWl6YXRpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKE9wdGlvbnM6
OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKgotICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IHNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKQotICAgICAgICAgICAgICAgICAgICAmJiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0g
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkKLSAgICAgICAgICAgICAgICB8fCBmb3JjZWRPU1JF
eGl0Q291bnRlcigpID49Ci0gICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OmZvcmNlZE9T
UkV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uOworICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGlzIHRo
ZSBsYW1lIHdheSBzbyB3ZSBkb24ndCBzYXR1cmF0ZS4gVGhpcyBpcyBjYWxsZWQgaW5mcmVxdWVu
dGx5CisgICAgICAgICAgICAvLyBlbm91Z2ggdGhhdCB0aGlzIGxvb3Agd29uJ3QgaHVydCB1cy4K
KyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IE9wdGlvbnM6Om9zckV4aXRDb3VudEZvclJl
b3B0aW1pemF0aW9uOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuID0gYmFzZWxpbmVWZXJz
aW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IG4tLTspIHsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBuZXdSZXN1bHQgPSByZXN1bHQgPDwgMTsKKyAgICAgICAgICAgICAgICBp
ZiAobmV3UmVzdWx0IDwgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG5ld1Jlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIHNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZl
U3VjY2Vzc0ZhaWxSYXRpbyAqCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGl2ZUZh
aWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpCi0gICAgICAgICAgICAg
ICAgICAgICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZEZvckxvb3AoKSkKLSAgICAgICAgICAgICAgICB8fCBmb3JjZWRPU1JFeGl0Q291bnRlcigp
ID49Ci0gICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnM6OmZvcmNlZE9TUkV4aXRDb3VudEZv
clJlb3B0aW1pemF0aW9uOworICAgICAgICBib29sIHNob3VsZFJlb3B0aW1pemVOb3coKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gb3NyRXhpdENvdW50ZXIoKSA+PSBleGl0Q291bnRU
aHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbigpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTI5
NSw5ICsxMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBFeGVjdXRp
b25Db3VudGVyIG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIGludDMyX3QgbV90b3RhbEpJ
VEV4ZWN1dGlvbnM7Ci0gICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cjsKLSAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwotICAgICAgICB1
aW50MzJfdCBtX2ZvcmNlZE9TUkV4aXRDb3VudGVyOworICAgICAgICB1aW50MzJfdCBtX29zckV4
aXRDb3VudGVyOwogICAgICAgICB1aW50MTZfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsK
ICAgICAgICAgdWludDE2X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVy
LmNwcAkocmV2aXNpb24gMTIxMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4ZWN1dGlvbkNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTMgKzE0NCw3IEBA
IGJvb2wgRXhlY3V0aW9uQ291bnRlcjo6c2V0VGhyZXNob2xkKENvZGUKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaW50MzJfdCBtYXhUaHJlc2hvbGQ7Ci0gICAgaWYgKE9wdGlv
bnM6OnJhbmRvbWl6ZUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50cykKLSAgICAgICAg
bWF4VGhyZXNob2xkID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbUludGVn
ZXIoKSAlIE9wdGlvbnM6Om1heGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHM7
Ci0gICAgZWxzZQotICAgICAgICBtYXhUaHJlc2hvbGQgPSBPcHRpb25zOjptYXhpbXVtRXhlY3V0
aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzOwotICAgIGlmICh0aHJlc2hvbGQgPiBtYXhUaHJl
c2hvbGQpCi0gICAgICAgIHRocmVzaG9sZCA9IG1heFRocmVzaG9sZDsKKyAgICB0aHJlc2hvbGQg
PSBjbGlwcGVkVGhyZXNob2xkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHRocmVzaG9sZCk7
CiAgICAgCiAgICAgbV9jb3VudGVyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oLXRocmVzaG9sZCk7
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlv
bkNvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0aW9uQ291bnRlci5oCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaWZuZGVmIEV4ZWN1dGlvbkNvdW50ZXJfaAogI2RlZmluZSBFeGVjdXRpb25D
b3VudGVyX2gKIAorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTQyLDYgKzQ0LDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBzdGF0dXMoKSBjb25zdDsK
ICAgICBzdGF0aWMgZG91YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMyX3QgdmFs
dWUsIENvZGVCbG9jayopOwogICAgIHN0YXRpYyBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVy
aXN0aWNzQW5kQ29udmVydFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIFQgY2xpcHBlZFRocmVzaG9sZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIGludDMy
X3QgbWF4VGhyZXNob2xkOworICAgICAgICBpZiAoT3B0aW9uczo6cmFuZG9taXplRXhlY3V0aW9u
Q291bnRzQmV0d2VlbkNoZWNrcG9pbnRzKQorICAgICAgICAgICAgbWF4VGhyZXNob2xkID0gZ2xv
YmFsT2JqZWN0LT53ZWFrUmFuZG9tSW50ZWdlcigpICUgT3B0aW9uczo6bWF4aW11bUV4ZWN1dGlv
bkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWF4
VGhyZXNob2xkID0gT3B0aW9uczo6bWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3Bv
aW50czsKKyAgICAgICAgaWYgKHRocmVzaG9sZCA+IG1heFRocmVzaG9sZCkKKyAgICAgICAgICAg
IHRocmVzaG9sZCA9IG1heFRocmVzaG9sZDsKKyAgICAgICAgcmV0dXJuIHRocmVzaG9sZDsKKyAg
ICB9CiAKICAgICBzdGF0aWMgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbENvdW50KGZsb2F0IHZhbHVl
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsNiBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlQm9keShTcGVjdWxhdGl2CiAgICAgYnJlYWtwb2ludCgpOwogI2Vu
ZGlmCiAgICAgCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGNv
ZGVCbG9jaygpLT5hZGRyZXNzT2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkpKTsKLQogICAg
IGJvb2wgY29tcGlsZWRTcGVjdWxhdGl2ZSA9IHNwZWN1bGF0aXZlLmNvbXBpbGUoKTsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3BlY3VsYXRpdmUpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lv
biAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgT1NSRXhpdDo6ZHVtcChGSUxFKiBv
dXQpIGNvbnN0CiAKIGJvb2wgT1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNp
dGVTbG93KENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJs
b2NrKQogewotICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fY291bnQpIC8gZGZnQ29kZUJs
b2NrLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPD0gT3B0aW9uczo6b3NyRXhpdFByb21pbmVu
Y2VGb3JGcmVxdWVudEV4aXRTaXRlKQorICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fY291
bnQpIC8gZGZnQ29kZUJsb2NrLT5vc3JFeGl0Q291bnRlcigpIDw9IE9wdGlvbnM6Om9zckV4aXRQ
cm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIEZyZXF1ZW50RXhpdFNpdGUgZXhpdFNpdGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjEzOTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNCw0MiArMTA0LDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpo
YW5kbGVFeGl0Q291bnRzKGMKICAgICAKICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAK
LSAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IHRvb0Zld0ZhaWxzOworICAgIEFzc2VtYmx5
SGVscGVyczo6SnVtcCB0b29GZXdGYWlsczsKICAgICAKLSAgICBpZiAoZXhpdC5tX2tpbmQgPT0g
SW5hZGVxdWF0ZUNvdmVyYWdlKSB7Ci0gICAgICAgIC8vIFByb2NlZWQgYmFzZWQgb24gdGhlIGFz
c3VtcHRpb24gdGhhdCB3ZSBjYW4gcHJvZml0YWJseSBvcHRpbWl6ZSB0aGlzIGNvZGUgb25jZQot
ICAgICAgICAvLyBpdCBoYXMgZXhlY3V0ZWQgZW5vdWdoIHRpbWVzLgotICAgICAgICAKLSAgICAg
ICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwg
Q29kZUJsb2NrOjpvZmZzZXRPZkZvcmNlZE9TUkV4aXRDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdU
Mik7Ci0gICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkp
LCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIG1faml0LmFkZDMyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAg
ICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZGb3JjZWRPU1JFeGl0Q291bnRlcigp
KSk7Ci0gICAgICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXIoKSkpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUklu
Zm86OnJlZ1QwKTsKLQotICAgICAgICB0b29GZXdGYWlscy5hcHBlbmQobV9qaXQuYnJhbmNoMzIo
QXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihPcHRpb25zOjpmb3JjZWRPU1JFeGl0Q291bnRGb3JSZW9wdGlt
aXphdGlvbikpKTsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFByb2NlZWQgYmFzZWQgb24g
dGhlIGFzc3VtcHRpb24gdGhhdCB3ZSBjYW4gaGFuZGxlIHRoZXNlIGV4aXRzIHNvIGxvbmcgYXMg
dGhleQotICAgICAgICAvLyBkb24ndCBnZXQgdG9vIGZyZXF1ZW50LgotICAgICAgICAKLSAgICAg
ICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwg
Q29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSksIEdQUkluZm86OnJl
Z1QyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIo
KSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgbV9qaXQuYWRkMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLTEpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAg
ICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50
ZXIoKSkpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxh
dGl2ZVN1Y2Nlc3NDb3VudGVyKCkpKTsKLSAgICAKLSAgICAgICAgbV9qaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUklu
Zm86OnJlZ1QwKTsKKyAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSksIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MigxKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIs
IEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZk9TUkV4aXRDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDAp
OworICAgIHRvb0Zld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxv
d09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMiht
X2ppdC5jb2RlQmxvY2soKS0+ZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb24oKSkp
OwogICAgIAotICAgICAgICB0b29GZXdGYWlscy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQXNzZW1i
bHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQo
KSkpKTsKLSAgICAgICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
T3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJl
Z1QyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgCi0gICAgICAgIHRvb0Zld0ZhaWxzLmFwcGVuZCht
X2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVn
VDIsIEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgfQotCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29u
IGFzIHBvc3NpYmxlLgogI2lmICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCiAgICAgbV9q
aXQucG9rZShHUFJJbmZvOjpyZWdUMCk7CkBAIC0xNTksNiArMTMxLDcgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmhhbmRsZUV4aXRDb3VudHMoYwogICAgICAgICAgICAgbV9qaXQuYmFzZWxpbmVD
b2RlQmxvY2soKS0+Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSwKICAg
ICAgICAgICAgIG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpOwogICAgIG1faml0LnN0b3JlMzIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXRhcmdldFZhbHVlKSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0
ZUNvdW50ZXIoKSkpOworICAgIHRhcmdldFZhbHVlID0gRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBl
ZFRocmVzaG9sZChtX2ppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCksIHRhcmdldFZhbHVl
KTsKICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRhcmdl
dFZhbHVlKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSklURXhlY3V0aW9uQWN0aXZlVGhyZXNob2xkKCkpKTsKICAgICBtX2ppdC5z
dG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEV4ZWN1dGlvbkNvdW50ZXI6OmZv
cm1hdHRlZFRvdGFsQ291bnQodGFyZ2V0VmFsdWUpKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0aW9uVG90YWxDb3Vu
dCgpKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDEyMTM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTAsMTUgKzEyNTAsMTMgQEAg
dm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIENvZGVCbG9jayog
YWx0ZXJuYXRpdmUgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7CiAgICAgZGF0YUxvZygiU3Bl
Y3VsYXRpb24gZmFpbHVyZSBpbiAlcCBhdCBAJXUgd2l0aCBleGVjdXRlQ291bnRlciA9ICVzLCAi
CiAgICAgICAgICAgICAicmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyID0gJXUsICIKLSAgICAgICAgICAgICJzdWNjZXNzL2ZhaWwgJXUvKCV1
KyV1KVxuIiwKKyAgICAgICAgICAgICJvc3JFeGl0Q291bnRlciA9ICV1XG4iLAogICAgICAgICAg
ICAgY29kZUJsb2NrLAogICAgICAgICAgICAgZGVidWdJbmZvLT5ub2RlSW5kZXgsCiAgICAgICAg
ICAgICBhbHRlcm5hdGl2ZSA/IGFsdGVybmF0aXZlLT5qaXRFeGVjdXRlQ291bnRlcigpLnN0YXR1
cygpIDogMCwKICAgICAgICAgICAgIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyKCkgOiAwLAogICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPyBhbHRl
cm5hdGl2ZS0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkgOiAwLAotICAgICAgICAgICAgY29k
ZUJsb2NrLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCksCi0gICAgICAgICAgICBjb2RlQmxv
Y2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9y
Y2VkT1NSRXhpdENvdW50ZXIoKSk7CisgICAgICAgICAgICBjb2RlQmxvY2stPm9zckV4aXRDb3Vu
dGVyKCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyOCw3ICsxOTI4LDEyIEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgg
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCi0gICAgZGF0YUxvZygiJXA6IEVudGVyZWQgb3B0aW1pemUgd2l0aCBieXRlY29kZUluZGV4
ID0gJXUsIGV4ZWN1dGVDb3VudGVyID0gJXMsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0g
JXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGJ5dGVjb2Rl
SW5kZXgsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5zdGF0dXMoKSwgY29kZUJsb2Nr
LT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCBvcHRpbWl6ZSB3aXRoIGJ5
dGVjb2RlSW5kZXggPSAldSwgZXhlY3V0ZUNvdW50ZXIgPSAlcywgcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXUsIGV4aXRDb3VudGVy
ID0gIiwgY29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3Vu
dGVyKCkuc3RhdHVzKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwg
Y29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgaWYgKGNvZGVCbG9j
ay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkKKyAgICAgICAgZGF0YUxvZygiJXUiLCBjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCktPm9zckV4aXRDb3VudGVyKCkpOworICAgIGVsc2UKKyAgICAg
ICAgZGF0YUxvZygiTi9BIik7CisgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogCiAgICAgaWYg
KCFjb2RlQmxvY2stPmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpIHsKQEAg
LTE5MzgsOSArMTk0Myw5IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQog
CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIE9TUiBp
bnRvICVwKCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJs
b2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyKCkpOworICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBPU1IgaW50byAlcCgl
cCkuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSk7CiAjZW5kaWYKLSAg
ICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVvcHRpbWl6ZUZyb21M
b29wTm93KCkpIHsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxk
UmVvcHRpbWl6ZU5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKICAgICAgICAg
ICAgIGRhdGFMb2coIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiBsb29w
KS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKICNlbmRpZgpAQCAt
MTk4NSw3ICsxOTkwLDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAj
ZW5kaWYKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwotICAgICAgICBvcHRp
bWl6ZWRDb2RlQmxvY2stPmNvdW50U3BlY3VsYXRpb25TdWNjZXNzKCk7CiAgICAgICAgIFNUVUJf
U0VUX1JFVFVSTl9BRERSRVNTKGFkZHJlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTk5NiwxMCArMjAwMCwxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkK
IAogICAgIC8vIENvdW50IHRoZSBPU1IgZmFpbHVyZSBhcyBhIHNwZWN1bGF0aW9uIGZhaWx1cmUu
IElmIHRoaXMgaGFwcGVucyBhIGxvdCwgdGhlbgogICAgIC8vIHJlb3B0aW1pemUuCi0gICAgb3B0
aW1pemVkQ29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uRmFpbHVyZSgpOworICAgIG9wdGltaXpl
ZENvZGVCbG9jay0+Y291bnRPU1JFeGl0KCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKLSAgICBkYXRhTG9nKCJFbmNvdW50ZXJlZCBPU1IgZmFpbHVyZSBpbnRvICVwKCVwKSB3
aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkp
OworICAgIGRhdGFMb2coIkVuY291bnRlcmVkIE9TUiBmYWlsdXJlIGludG8gJXAoJXApLlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwogI2VuZGlmCiAKICAgICAvLyBX
ZSBhcmUgYSBsb3QgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQgdHJpZ2dlcmluZyByZW9wdGltaXph
dGlvbiBhZnRlciBPU1IgZmFpbHVyZSB0aGFuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxMzk4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDE4ICs3MCwx
MyBAQCBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1CiBib29sIHJhbmRv
bWl6ZUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKIGludDMyX3QgbWF4aW11bUV4
ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKIAotdW5zaWduZWQgZGVzaXJlZFNwZWN1
bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQogZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhy
ZXNob2xkOwogZG91YmxlIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogdW5zaWduZWQgbGlr
ZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CiB1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2Fz
ZU1pbmltdW1Db3VudDsKIAogZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0
U2l0ZTsKLQotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQg
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLXVuc2lnbmVkIGZvcmNlZE9TUkV4
aXRDb3VudEZvclJlb3B0aW1pemF0aW9uOwordW5zaWduZWQgb3NyRXhpdENvdW50Rm9yUmVvcHRp
bWl6YXRpb247CiAKIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwogdW5z
aWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwOwpAQCAtMTk0LDE4ICsxODksMTMg
QEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgU0VUKHJhbmRvbWl6ZUV4ZWN1dGlvbkNv
dW50c0JldHdlZW5DaGVja3BvaW50cywgZmFsc2UpOwogICAgIFNFVChtYXhpbXVtRXhlY3V0aW9u
Q291bnRzQmV0d2VlbkNoZWNrcG9pbnRzLCAxMDAwKTsKIAotICAgIFNFVChkZXNpcmVkU3BlY3Vs
YXRpdmVTdWNjZXNzRmFpbFJhdGlvLCA2KTsKLSAgICAKICAgICBTRVQobGlrZWx5VG9UYWtlU2xv
d0Nhc2VUaHJlc2hvbGQsICAgIDAuMTUpOwogICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZVRocmVz
aG9sZCwgICAgICAgMC4wNSk7IC8vIFNob3VsZG4ndCBiZSB6ZXJvIGJlY2F1c2Ugc29tZSBvcHMg
d2lsbCBzcHVyaW91c2x5IHRha2Ugc2xvdyBjYXNlLCBmb3IgZXhhbXBsZSBmb3IgbGlua2luZyBv
ciBjYWNoaW5nLgogICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCwgMTAw
KTsKICAgICBTRVQoY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQsICAgIDEwKTsKICAgICAK
ICAgICBTRVQob3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlLCAwLjMpOwotCi0g
ICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZSwgICAgICAgICAyMCk7Ci0gICAgU0VU
KGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3AsICAxKTsKLSAgICBTRVQoZm9yY2Vk
T1NSRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb24sIDI1MCk7CisgICAgU0VUKG9zckV4aXRDb3Vu
dEZvclJlb3B0aW1pemF0aW9uLCAgICAgICAgMTAwKTsKIAogICAgIFNFVChyZW9wdGltaXphdGlv
blJldHJ5Q291bnRlclN0ZXAsIDEpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE4ICs1NiwxMyBAQCBleHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50CiBleHRlcm4gYm9vbCByYW5kb21p
emVFeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHM7CiBleHRlcm4gaW50MzJfdCBtYXhp
bXVtRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzOwogCi1leHRlcm4gdW5zaWduZWQg
ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQogZXh0ZXJuIGRvdWJsZSBsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKIGV4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nh
c2VUaHJlc2hvbGQ7CiBleHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVt
Q291bnQ7CiBleHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CiAK
IGV4dGVybiBkb3VibGUgb3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOwotCi1l
eHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotZXh0ZXJuIHVuc2ln
bmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7Ci1leHRlcm4gdW5zaWduZWQg
Zm9yY2VkT1NSRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb247CitleHRlcm4gdW5zaWduZWQgb3Ny
RXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb247CiAKIGV4dGVybiB1bnNpZ25lZCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlck1heDsKIGV4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlclN0ZXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150032</attachid>
            <date>2012-06-28 15:51:40 -0700</date>
            <delta_ts>2012-06-28 15:56:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>countrecomp_patch_2.diff</filename>
            <type>text/plain</type>
            <size>24630</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxNDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDEyLTA2LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHJlY29tcGlsYXRpb24gaGV1cmlzdGljcyBzaG91bGQgYmUgYmFzZWQgb24gY291bnQsIG5v
dCByYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhpcyByZW1vdmVzIGEgYnVuY2ggb2YgY29kZSB0aGF0IHdhcyBwcmV2aW91c2x5IHRy
eWluZyB0byBwcmV2ZW50IHNwdXJpb3VzCisgICAgICAgIHJlb3B0aW1pemF0aW9ucyBpZiBhIGxh
cmdlIGVub3VnaCBtYWpvcml0eSBvZiBleGVjdXRpb25zIG9mIGEgY29kZSBibG9jayBkaWQKKyAg
ICAgICAgbm90IHJlc3VsdCBpbiBPU1IgZXhpdC4gSXQgdHVybnMgb3V0IHRoYXQgdGhpcyBjb2Rl
IHdhcyBwdXJlbHkgaGFybWZ1bC4gVGhpcworICAgICAgICBwYXRjaCByZW1vdmVzIGFsbCBvZiB0
aGF0IGxvZ2ljIGFuZCByZXBsYWNlcyBpdCB3aXRoIGEgZGVhZC1zaW1wbGUKKyAgICAgICAgaGV1
cmlzdGljOiBpZiB5b3UgZXhpdCBtb3JlIHRoYW4gTiB0aW1lcyAod2hlcmUgTiBpcyBhbiBleHBv
bmVudGlhbCBmdW5jdGlvbgorICAgICAgICBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBjb2Rl
IGJsb2NrIGhhcyBhbHJlYWR5IGJlZW4gcmVjb21waWxlZCkgdGhlbiB3ZQorICAgICAgICB3aWxs
IHJlY29tcGlsZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBhIGJyb2Fk
IH4xJSB3aW4gb24gbWFueSBiZW5jaG1hcmtzIGxhcmdlIGFuZCBzbWFsbC4KKworICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJs
b2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpvc3JFeGl0Q291bnRlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bnRP
U1JFeGl0KToKKyAgICAgICAgKENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
YWRkcmVzc09mT1NSRXhpdENvdW50ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNl
dE9mT1NSRXhpdENvdW50ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkanVzdGVkRXhp
dENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpleGl0Q291bnRUaHJl
c2hvbGRGb3JSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhpdENv
dW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6c2hvdWxkUmVvcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRp
b25Db3VudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RXhlY3V0aW9uQ291bnRlcjo6c2V0VGhyZXNo
b2xkKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmg6CisgICAgICAgIChF
eGVjdXRpb25Db3VudGVyKToKKyAgICAgICAgKEpTQzo6RXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBl
ZFRocmVzaG9sZCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0Fz
RnJlcXVlbnRFeGl0U2l0ZVNsb3cpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6aGFuZGxlRXhpdENvdW50
cyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAg
KiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6
Ok9wdGlvbnM6OmluaXRpYWxpemVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
aDoKKyAgICAgICAgKE9wdGlvbnMpOgorCiAyMDEyLTA2LTI4ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgMzJiaXQgREZHIGluY29ycmVjdGx5IGNsYWltcyBhbiBm
cHIgaXMgZmlsbGFibGUgZXZlbiBpZiBpdCBoYXMgbm90IGJlZW4gcHJvdmVuIGRvdWJsZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEyMTM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk1LDkgKzE1OTUsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiAgICAgLCBtX2Z1bmN0aW9uRGVjbHMob3RoZXIubV9m
dW5jdGlvbkRlY2xzKQogICAgICwgbV9mdW5jdGlvbkV4cHJzKG90aGVyLm1fZnVuY3Rpb25FeHBy
cykKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltVGFiKQotICAgICwgbV9zcGVjdWxhdGl2ZVN1Y2Nl
c3NDb3VudGVyKDApCi0gICAgLCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXIoMCkKLSAgICAsIG1f
Zm9yY2VkT1NSRXhpdENvdW50ZXIoMCkKKyAgICAsIG1fb3NyRXhpdENvdW50ZXIoMCkKICAgICAs
IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKDApCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyKDApCiAgICAgLCBtX2xpbmVJbmZvKG90aGVyLm1fbGluZUluZm8pCkBAIC0xNjQ5
LDggKzE2NDcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAj
ZW5kaWYKICAgICAsIG1fc3ltYm9sVGFibGUoc3ltVGFiKQogICAgICwgbV9hbHRlcm5hdGl2ZShh
bHRlcm5hdGl2ZSkKLSAgICAsIG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigwKQotICAgICwg
bV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKDApCisgICAgLCBtX29zckV4aXRDb3VudGVyKDApCiAg
ICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQogICAgICwgbV9yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigwKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTIxMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQyLDU5ICsxMDQyLDQ4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9qaXRFeGVjdXRlQ291bnRlci5zZXRO
ZXdUaHJlc2hvbGQoT3B0aW9uczo6dGhyZXNob2xkRm9yT3B0aW1pemVTb29uIDw8IHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyKCksIHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICAvLyBUaGUgc3BlY3VsYXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0aGF0
IHdlIGNhbgotICAgICAgICAvLyBkZWNpZGUgd2hlbiB0byByZW9wdGltaXplLiBJdCdzIGludGVy
ZXN0aW5nIHRvIG5vdGUgdGhhdCB0aGVzZQotICAgICAgICAvLyBjb3VudGVycyBtYXkgb3ZlcmZs
b3cgd2l0aG91dCBhbnkgcHJvdGVjdGlvbi4gVGhlIHN1Y2Nlc3MKLSAgICAgICAgLy8gY291bnRl
ciB3aWxsIG92ZXJmbG93IGJlZm9yZSB0aGUgZmFpbCBvbmUgZG9lcywgYmVjdWFzZSB0aGUKLSAg
ICAgICAgLy8gZmFpbCBvbmUgaXMgdXNlZCBhcyBhIHRyaWdnZXIgdG8gcmVvcHRpbWl6ZS4gU28g
dGhlIHdvcnN0IGNhc2UKLSAgICAgICAgLy8gaXMgdGhhdCB0aGUgc3VjY2VzcyBjb3VudGVyIG92
ZXJmbG93cyBhbmQgd2UgcmVvcHRpbWl6ZSB3aXRob3V0Ci0gICAgICAgIC8vIG5lZWRpbmcgdG8u
IEJ1dCB0aGlzIGlzIGhhcm1sZXNzLiBJZiBhIG1ldGhvZCByZWFsbHkgZGlkCi0gICAgICAgIC8v
IGV4ZWN1dGUgMl4zMiB0aW1lcyB0aGVuIGNvbXBpbGluZyBpdCBhZ2FpbiBwcm9iYWJseSB3b24n
dCBodXJ0Ci0gICAgICAgIC8vIGFueW9uZS4KKyAgICAgICAgdWludDMyX3Qgb3NyRXhpdENvdW50
ZXIoKSBjb25zdCB7IHJldHVybiBtX29zckV4aXRDb3VudGVyOyB9CiAgICAgICAgIAotICAgICAg
ICB2b2lkIGNvdW50U3BlY3VsYXRpb25TdWNjZXNzKCkKKyAgICAgICAgdm9pZCBjb3VudE9TUkV4
aXQoKSB7IG1fb3NyRXhpdENvdW50ZXIrKzsgfQorICAgICAgICAKKyAgICAgICAgdWludDMyX3Qq
IGFkZHJlc3NPZk9TUkV4aXRDb3VudGVyKCkgeyByZXR1cm4gJm1fb3NyRXhpdENvdW50ZXI7IH0K
KyAgICAgICAgCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZPU1JFeGl0Q291bnRl
cigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1fb3NyRXhpdENvdW50ZXIp
OyB9CisKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICB1aW50MzJfdCBhZGp1c3RlZEV4aXRDb3Vu
dFRocmVzaG9sZCh1aW50MzJfdCBkZXNpcmVkVGhyZXNob2xkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIrKzsKKyAgICAgICAgICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICAgICAgICAgIC8vIENvbXB1dGUg
dGhpcyB0aGUgbGFtZSB3YXkgc28gd2UgZG9uJ3Qgc2F0dXJhdGUuIFRoaXMgaXMgY2FsbGVkIGlu
ZnJlcXVlbnRseQorICAgICAgICAgICAgLy8gZW5vdWdoIHRoYXQgdGhpcyBsb29wIHdvbid0IGh1
cnQgdXMuCisgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBkZXNpcmVkVGhyZXNob2xkOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuID0gYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyKCk7IG4tLTspIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBu
ZXdSZXN1bHQgPSByZXN1bHQgPDwgMTsKKyAgICAgICAgICAgICAgICBpZiAobmV3UmVzdWx0IDwg
cmVzdWx0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ld1Jlc3VsdDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIHZvaWQgY291bnRTcGVjdWxhdGlvbkZhaWx1cmUoKQorICAgICAgICB1aW50
MzJfdCBleGl0Q291bnRUaHJlc2hvbGRGb3JSZW9wdGltaXphdGlvbigpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcisrOworICAgICAgICAgICAgcmV0dXJu
IGFkanVzdGVkRXhpdENvdW50VGhyZXNob2xkKE9wdGlvbnM6Om9zckV4aXRDb3VudEZvclJlb3B0
aW1pemF0aW9uKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdWludDMyX3Qgc3BlY3Vs
YXRpdmVTdWNjZXNzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcjsgfQotICAgICAgICB1aW50MzJfdCBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOyB9Ci0gICAgICAgIHVpbnQzMl90
IGZvcmNlZE9TUkV4aXRDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZWRPU1JFeGl0Q291
bnRlcjsgfQotICAgICAgICAKLSAgICAgICAgdWludDMyX3QqIGFkZHJlc3NPZlNwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXIoKSB7IHJldHVybiAmbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOyB9
Ci0gICAgICAgIHVpbnQzMl90KiBhZGRyZXNzT2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgeyBy
ZXR1cm4gJm1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsgfQotICAgICAgICB1aW50MzJfdCogYWRk
cmVzc09mRm9yY2VkT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiAmbV9mb3JjZWRPU1JFeGl0Q291
bnRlcjsgfQotICAgICAgICAKLSAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2Nr
LCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIpOyB9Ci0gICAgICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKENvZGVCbG9jaywgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKTsgfQotICAgICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mRm9yY2VkT1NSRXhpdENvdW50ZXIoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ZvcmNlZE9TUkV4aXRDb3VudGVyKTsgfQotCi0jaWYg
RU5BQkxFKEpJVCkKLSAgICAgICAgLy8gVGhlIG51bWJlciBvZiBmYWlsdXJlcyB0aGF0IHRyaWdn
ZXJzIHRoZSB1c2Ugb2YgdGhlIHJhdGlvLgotICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3Vu
dFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFz
ZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQot
ICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSB7IHJldHVy
biBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wIDw8IGJhc2VsaW5l
VmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9CisgICAgICAgIHVpbnQz
Ml90IGV4aXRDb3VudFRocmVzaG9sZEZvclJlb3B0aW1pemF0aW9uRnJvbUxvb3AoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRFeGl0Q291bnRUaHJlc2hvbGQoT3B0aW9u
czo6b3NyRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb25Gcm9tTG9vcCk7CisgICAgICAgIH0KIAog
ICAgICAgICBib29sIHNob3VsZFJlb3B0aW1pemVOb3coKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gKE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKgot
ICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IHNwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKQotICAgICAgICAgICAgICAgICAgICAmJiBzcGVjdWxhdGl2
ZUZhaWxDb3VudGVyKCkgPj0gbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkKLSAgICAgICAgICAg
ICAgICB8fCBmb3JjZWRPU1JFeGl0Q291bnRlcigpID49Ci0gICAgICAgICAgICAgICAgICAgICAg
IE9wdGlvbnM6OmZvcmNlZE9TUkV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uOworICAgICAgICAg
ICAgcmV0dXJuIG9zckV4aXRDb3VudGVyKCkgPj0gZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRp
bWl6YXRpb24oKTsKICAgICAgICAgfQotCisgICAgICAgIAogICAgICAgICBib29sIHNob3VsZFJl
b3B0aW1pemVGcm9tTG9vcE5vdygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoT3B0
aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqCi0gICAgICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcigpCi0gICAgICAgICAgICAgICAgICAgICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIo
KSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSkKLSAgICAgICAgICAgICAgICB8
fCBmb3JjZWRPU1JFeGl0Q291bnRlcigpID49Ci0gICAgICAgICAgICAgICAgICAgICAgIE9wdGlv
bnM6OmZvcmNlZE9TUkV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIG9zckV4aXRDb3VudGVyKCkgPj0gZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRp
b25Gcm9tTG9vcCgpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTI5NSw5ICsxMjg0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBFeGVjdXRpb25Db3VudGVyIG1faml0
RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIGludDMyX3QgbV90b3RhbEpJVEV4ZWN1dGlvbnM7Ci0g
ICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKLSAgICAgICAgdWlu
dDMyX3QgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwotICAgICAgICB1aW50MzJfdCBtX2ZvcmNl
ZE9TUkV4aXRDb3VudGVyOworICAgICAgICB1aW50MzJfdCBtX29zckV4aXRDb3VudGVyOwogICAg
ICAgICB1aW50MTZfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDE2
X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmNwcAkocmV2aXNpb24g
MTIxMzk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTMgKzE0NCw3IEBAIGJvb2wgRXhlY3V0aW9u
Q291bnRlcjo6c2V0VGhyZXNob2xkKENvZGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgaW50MzJfdCBtYXhUaHJlc2hvbGQ7Ci0gICAgaWYgKE9wdGlvbnM6OnJhbmRvbWl6ZUV4
ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50cykKLSAgICAgICAgbWF4VGhyZXNob2xkID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbUludGVnZXIoKSAlIE9wdGlvbnM6
Om1heGltdW1FeGVjdXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHM7Ci0gICAgZWxzZQotICAg
ICAgICBtYXhUaHJlc2hvbGQgPSBPcHRpb25zOjptYXhpbXVtRXhlY3V0aW9uQ291bnRzQmV0d2Vl
bkNoZWNrcG9pbnRzOwotICAgIGlmICh0aHJlc2hvbGQgPiBtYXhUaHJlc2hvbGQpCi0gICAgICAg
IHRocmVzaG9sZCA9IG1heFRocmVzaG9sZDsKKyAgICB0aHJlc2hvbGQgPSBjbGlwcGVkVGhyZXNo
b2xkKGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIHRocmVzaG9sZCk7CiAgICAgCiAgICAgbV9j
b3VudGVyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oLXRocmVzaG9sZCk7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRl
ci5oCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhlY3V0aW9uQ291bnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZu
ZGVmIEV4ZWN1dGlvbkNvdW50ZXJfaAogI2RlZmluZSBFeGVjdXRpb25Db3VudGVyX2gKIAorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
PHd0Zi9TaW1wbGVTdGF0cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDYgKzQ0LDE4IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBzdGF0dXMoKSBjb25zdDsKICAgICBzdGF0aWMgZG91
YmxlIGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzKGludDMyX3QgdmFsdWUsIENvZGVCbG9jayop
OwogICAgIHN0YXRpYyBpbnQzMl90IGFwcGx5TWVtb3J5VXNhZ2VIZXVyaXN0aWNzQW5kQ29udmVy
dFRvSW50KGludDMyX3QgdmFsdWUsIENvZGVCbG9jayopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgc3RhdGljIFQgY2xpcHBlZFRocmVzaG9sZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIGludDMyX3QgbWF4VGhyZXNob2xk
OworICAgICAgICBpZiAoT3B0aW9uczo6cmFuZG9taXplRXhlY3V0aW9uQ291bnRzQmV0d2VlbkNo
ZWNrcG9pbnRzKQorICAgICAgICAgICAgbWF4VGhyZXNob2xkID0gZ2xvYmFsT2JqZWN0LT53ZWFr
UmFuZG9tSW50ZWdlcigpICUgT3B0aW9uczo6bWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5D
aGVja3BvaW50czsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWF4VGhyZXNob2xkID0gT3B0
aW9uczo6bWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKKyAgICAgICAg
aWYgKHRocmVzaG9sZCA+IG1heFRocmVzaG9sZCkKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IG1h
eFRocmVzaG9sZDsKKyAgICAgICAgcmV0dXJuIHRocmVzaG9sZDsKKyAgICB9CiAKICAgICBzdGF0
aWMgaW50MzJfdCBmb3JtYXR0ZWRUb3RhbENvdW50KGZsb2F0IHZhbHVlKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsNiBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlQm9keShTcGVjdWxhdGl2CiAgICAgYnJlYWtwb2ludCgpOwogI2VuZGlmCiAgICAgCi0gICAg
YWRkUHRyKFRydXN0ZWRJbW0zMigxKSwgQWJzb2x1dGVBZGRyZXNzKGNvZGVCbG9jaygpLT5hZGRy
ZXNzT2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkpKTsKLQogICAgIGJvb2wgY29tcGlsZWRT
cGVjdWxhdGl2ZSA9IHNwZWN1bGF0aXZlLmNvbXBpbGUoKTsKICAgICBBU1NFUlRfVU5VU0VEKGNv
bXBpbGVkU3BlY3VsYXRpdmUsIGNvbXBpbGVkU3BlY3VsYXRpdmUpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMjEzOTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgT1NSRXhpdDo6ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiAKIGJv
b2wgT1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KENvZGVCbG9j
ayogZGZnQ29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrKQogewotICAgIGlm
IChzdGF0aWNfY2FzdDxkb3VibGU+KG1fY291bnQpIC8gZGZnQ29kZUJsb2NrLT5zcGVjdWxhdGl2
ZUZhaWxDb3VudGVyKCkgPD0gT3B0aW9uczo6b3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4
aXRTaXRlKQorICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fY291bnQpIC8gZGZnQ29kZUJs
b2NrLT5vc3JFeGl0Q291bnRlcigpIDw9IE9wdGlvbnM6Om9zckV4aXRQcm9taW5lbmNlRm9yRnJl
cXVlbnRFeGl0U2l0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEZyZXF1ZW50
RXhpdFNpdGUgZXhpdFNpdGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw0MiArMTA0LDE0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpoYW5kbGVFeGl0Q291bnRz
KGMKICAgICAKICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X2ppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAKLSAgICBBc3NlbWJseUhl
bHBlcnM6Okp1bXBMaXN0IHRvb0Zld0ZhaWxzOworICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCB0
b29GZXdGYWlsczsKICAgICAKLSAgICBpZiAoZXhpdC5tX2tpbmQgPT0gSW5hZGVxdWF0ZUNvdmVy
YWdlKSB7Ci0gICAgICAgIC8vIFByb2NlZWQgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCB3
ZSBjYW4gcHJvZml0YWJseSBvcHRpbWl6ZSB0aGlzIGNvZGUgb25jZQotICAgICAgICAvLyBpdCBo
YXMgZXhlY3V0ZWQgZW5vdWdoIHRpbWVzLgotICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZkZvcmNlZE9TUkV4aXRDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIG1f
aml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdU
MSk7Ci0gICAgICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgICAgIG1faml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKC0xKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICBtX2ppdC5zdG9yZTMy
KEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAs
IENvZGVCbG9jazo6b2Zmc2V0T2ZGb3JjZWRPU1JFeGl0Q291bnRlcigpKSk7Ci0gICAgICAgIG1f
aml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIo
KSkpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKLQot
ICAgICAgICB0b29GZXdGYWlscy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJz
OjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihPcHRpb25zOjpmb3JjZWRPU1JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlvbikpKTsKLQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFByb2NlZWQgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24g
dGhhdCB3ZSBjYW4gaGFuZGxlIHRoZXNlIGV4aXRzIHNvIGxvbmcgYXMgdGhleQotICAgICAgICAv
LyBkb24ndCBnZXQgdG9vIGZyZXF1ZW50LgotICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAg
bV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSksIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MSksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgbV9qaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoLTEpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1faml0LnN0b3Jl
MzIoR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MCwgQ29kZUJsb2NrOjpvZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSkpOwotICAgICAg
ICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyKCkpKTsKLSAgICAKLSAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBD
b2RlQmxvY2s6Om9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QyKTsKKyAg
ICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6
cmVnVDIpOworICAgIG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk9TUkV4aXRDb3Vu
dGVyKCkpKTsKKyAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOworICAgIHRvb0Zld0Zh
aWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUklu
Zm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5jb2RlQmxvY2so
KS0+ZXhpdENvdW50VGhyZXNob2xkRm9yUmVvcHRpbWl6YXRpb24oKSkpOwogICAgIAotICAgICAg
ICB0b29GZXdGYWlscy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxv
d09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMiht
X2ppdC5jb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkpKTsKLSAgICAgICAg
bV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoT3B0aW9uczo6ZGVzaXJl
ZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpy
ZWdUMik7Ci0gICAgCi0gICAgICAgIHRvb0Zld0ZhaWxzLmFwcGVuZChtX2ppdC5icmFuY2gzMihB
c3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJl
Z1QxKSk7Ci0gICAgfQotCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgog
I2lmICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCiAgICAgbV9qaXQucG9rZShHUFJJbmZv
OjpyZWdUMCk7CkBAIC0xNTksNiArMTMxLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmhhbmRs
ZUV4aXRDb3VudHMoYwogICAgICAgICAgICAgbV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Y291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKSwKICAgICAgICAgICAgIG1faml0
LmJhc2VsaW5lQ29kZUJsb2NrKCkpOwogICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoLXRhcmdldFZhbHVlKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkpOwor
ICAgIHRhcmdldFZhbHVlID0gRXhlY3V0aW9uQ291bnRlcjo6Y2xpcHBlZFRocmVzaG9sZChtX2pp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCksIHRhcmdldFZhbHVlKTsKICAgICBtX2ppdC5z
dG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRhcmdldFZhbHVlKSwgQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklU
RXhlY3V0aW9uQWN0aXZlVGhyZXNob2xkKCkpKTsKICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKEV4ZWN1dGlvbkNvdW50ZXI6OmZvcm1hdHRlZFRvdGFsQ291
bnQodGFyZ2V0VmFsdWUpKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Qw
LCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0aW9uVG90YWxDb3VudCgpKSk7CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDEyMTM5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTAsMTUgKzEyNTAsMTMgQEAgdm9pZCBERkdfT1BFUkFU
SU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogICAgIENvZGVCbG9jayogYWx0ZXJuYXRpdmUgPSBj
b2RlQmxvY2stPmFsdGVybmF0aXZlKCk7CiAgICAgZGF0YUxvZygiU3BlY3VsYXRpb24gZmFpbHVy
ZSBpbiAlcCBhdCBAJXUgd2l0aCBleGVjdXRlQ291bnRlciA9ICVzLCAiCiAgICAgICAgICAgICAi
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID0gJXUsICIKLSAgICAgICAgICAgICJzdWNjZXNzL2ZhaWwgJXUvKCV1KyV1KVxuIiwKKyAgICAg
ICAgICAgICJvc3JFeGl0Q291bnRlciA9ICV1XG4iLAogICAgICAgICAgICAgY29kZUJsb2NrLAog
ICAgICAgICAgICAgZGVidWdJbmZvLT5ub2RlSW5kZXgsCiAgICAgICAgICAgICBhbHRlcm5hdGl2
ZSA/IGFsdGVybmF0aXZlLT5qaXRFeGVjdXRlQ291bnRlcigpLnN0YXR1cygpIDogMCwKICAgICAg
ICAgICAgIGFsdGVybmF0aXZlID8gYWx0ZXJuYXRpdmUtPnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKCkgOiAwLAogICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPyBhbHRlcm5hdGl2ZS0+b3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKCkgOiAwLAotICAgICAgICAgICAgY29kZUJsb2NrLT5zcGVjdWxh
dGl2ZVN1Y2Nlc3NDb3VudGVyKCksCi0gICAgICAgICAgICBjb2RlQmxvY2stPnNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSwKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9yY2VkT1NSRXhpdENvdW50
ZXIoKSk7CisgICAgICAgICAgICBjb2RlQmxvY2stPm9zckV4aXRDb3VudGVyKCkpOwogfQogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyOCw3ICsxOTI4LDEyIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplKQogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFy
Z3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxv
ZygiJXA6IEVudGVyZWQgb3B0aW1pemUgd2l0aCBieXRlY29kZUluZGV4ID0gJXUsIGV4ZWN1dGVD
b3VudGVyID0gJXMsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlv
bkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGNvZGVCbG9j
ay0+aml0RXhlY3V0ZUNvdW50ZXIoKS5zdGF0dXMoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
KyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCBvcHRpbWl6ZSB3aXRoIGJ5dGVjb2RlSW5kZXggPSAl
dSwgZXhlY3V0ZUNvdW50ZXIgPSAlcywgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXUsIGV4aXRDb3VudGVyID0gIiwgY29kZUJsb2Nr
LCBieXRlY29kZUluZGV4LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCkuc3RhdHVzKCks
IGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRp
bWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVk
UmVwbGFjZW1lbnQoKSkKKyAgICAgICAgZGF0YUxvZygiJXUiLCBjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCktPm9zckV4aXRDb3VudGVyKCkpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZygiTi9B
Iik7CisgICAgZGF0YUxvZygiXG4iKTsKICNlbmRpZgogCiAgICAgaWYgKCFjb2RlQmxvY2stPmNo
ZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpIHsKQEAgLTE5MzgsOCArMTk0Mywy
MSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKIAogICAgIGlmIChjb2Rl
QmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQotICAgICAgICBkYXRhTG9nKCJDb25zaWRlcmluZyBPU1IgaW50byAlcCglcCkgd2l0
aCBzdWNjZXNzL2ZhaWwgJXUvJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVy
KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpKTsK
KyAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgT1NSIGludG8gJXAoJXApLlxuIiwgY29kZUJs
b2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwogI2VuZGlmCisgICAgICAgIC8vIElmIHdl
IGhhdmUgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LCB0aGVuIGl0IG11c3QgYmUgdGhlIGNhc2Ug
dGhhdCB3ZSBlbnRlcmVkCisgICAgICAgIC8vIGN0aV9vcHRpbWl6ZSBmcm9tIGEgbG9vcC4gVGhh
dCdzIGJlY2F1c2UgaXMgdGhlcmUncyBhbiBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQsCisgICAgICAg
IC8vIHRoZW4gYWxsIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZWxpbmtlZCB0byB0
aGUgcmVwbGFjZW1lbnQgYW5kIHNvCisgICAgICAgIC8vIHRoZSBwcm9sb2d1ZSBPU1Igd2lsbCBu
ZXZlciBmaXJlLgorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpcyBhbiBpbnRlcmVzdGluZyB0
aHJlc2hvbGQgY2hlY2suIENvbnNpZGVyIHRoYXQgYSBmdW5jdGlvbiBPU1IgZXhpdHMKKyAgICAg
ICAgLy8gaW4gdGhlIG1pZGRsZSBvZiBhIGxvb3AsIHdoaWxlIGhhdmluZyBhIHJlbGF0aXZlbHkg
bG93IGV4aXQgY291bnQuIFRoZSBleGl0CisgICAgICAgIC8vIHdpbGwgcmVzZXQgdGhlIGV4ZWN1
dGlvbiBjb3VudGVyIHRvIHNvbWUgdGFyZ2V0IHRocmVzaG9sZCwgbWVhbmluZyB0aGF0IHRoaXMK
KyAgICAgICAgLy8gY29kZSB3b24ndCBiZSByZWFjaGVkIHVudGlsIHRoYXQgbG9vcCBoZWF0cyB1
cCBmb3IgPj0xMDAwIGV4ZWN1dGlvbnMuIEJ1dCB0aGVuCisgICAgICAgIC8vIHdlIGRvIGEgc2Vj
b25kIGNoZWNrIGhlcmUsIHRvIHNlZSBpZiB3ZSBzaG91bGQgZWl0aGVyIHJlb3B0aW1pemUsIG9y
IGp1c3QKKyAgICAgICAgLy8gYXR0ZW1wdCBPU1IgZW50cnkuIEhlbmNlIGl0IG1pZ2h0IGV2ZW4g
YmUgY29ycmVjdCBmb3IKKyAgICAgICAgLy8gc2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkg
dG8gYWx3YXlzIHJldHVybiB0cnVlLiBCdXQgd2UgbWFrZSBpdCBkbyBzb21lCisgICAgICAgIC8v
IGFkZGl0aW9uYWwgY2hlY2tpbmcgYW55d2F5LCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiByZWNv
bXBpbGF0aW9uIHRocmFzaGluZy4KICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQo
KS0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQogICAgICAgICAgICAgZGF0YUxvZygiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBv
ZiAlcCglcCkgKGluIGxvb3ApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCkpOwpAQCAtMTk4NSw3ICsyMDAzLDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0
aW1pemUpCiAjZW5kaWYKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwotICAg
ICAgICBvcHRpbWl6ZWRDb2RlQmxvY2stPmNvdW50U3BlY3VsYXRpb25TdWNjZXNzKCk7CiAgICAg
ICAgIFNUVUJfU0VUX1JFVFVSTl9BRERSRVNTKGFkZHJlc3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTk5NiwxMCArMjAxMywxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cHRpbWl6ZSkKIAogICAgIC8vIENvdW50IHRoZSBPU1IgZmFpbHVyZSBhcyBhIHNwZWN1bGF0aW9u
IGZhaWx1cmUuIElmIHRoaXMgaGFwcGVucyBhIGxvdCwgdGhlbgogICAgIC8vIHJlb3B0aW1pemUu
Ci0gICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uRmFpbHVyZSgpOworICAg
IG9wdGltaXplZENvZGVCbG9jay0+Y291bnRPU1JFeGl0KCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nKCJFbmNvdW50ZXJlZCBPU1IgZmFpbHVyZSBpbnRv
ICVwKCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2Nr
LT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3Vj
Y2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxD
b3VudGVyKCkpOworICAgIGRhdGFMb2coIkVuY291bnRlcmVkIE9TUiBmYWlsdXJlIGludG8gJXAo
JXApLlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwogI2VuZGlmCiAK
ICAgICAvLyBXZSBhcmUgYSBsb3QgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQgdHJpZ2dlcmluZyBy
ZW9wdGltaXphdGlvbiBhZnRlciBPU1IgZmFpbHVyZSB0aGFuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTIxMzk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDE4ICs3MCwxNCBAQCBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1CiBi
b29sIHJhbmRvbWl6ZUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKIGludDMyX3Qg
bWF4aW11bUV4ZWN1dGlvbkNvdW50c0JldHdlZW5DaGVja3BvaW50czsKIAotdW5zaWduZWQgZGVz
aXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQogZG91YmxlIGxpa2VseVRvVGFrZVNs
b3dDYXNlVGhyZXNob2xkOwogZG91YmxlIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogdW5z
aWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CiB1bnNpZ25lZCBjb3VsZFRh
a2VTbG93Q2FzZU1pbmltdW1Db3VudDsKIAogZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJl
cXVlbnRFeGl0U2l0ZTsKLQotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwot
dW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLXVuc2lnbmVkIGZv
cmNlZE9TUkV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uOwordW5zaWduZWQgb3NyRXhpdENvdW50
Rm9yUmVvcHRpbWl6YXRpb247Cit1bnNpZ25lZCBvc3JFeGl0Q291bnRGb3JSZW9wdGltaXphdGlv
bkZyb21Mb29wOwogCiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKIHVu
c2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKQEAgLTE5NCwxOCArMTkwLDE0
IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIFNFVChyYW5kb21pemVFeGVjdXRpb25D
b3VudHNCZXR3ZWVuQ2hlY2twb2ludHMsIGZhbHNlKTsKICAgICBTRVQobWF4aW11bUV4ZWN1dGlv
bkNvdW50c0JldHdlZW5DaGVja3BvaW50cywgMTAwMCk7CiAKLSAgICBTRVQoZGVzaXJlZFNwZWN1
bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbywgNik7Ci0gICAgCiAgICAgU0VUKGxpa2VseVRvVGFrZVNs
b3dDYXNlVGhyZXNob2xkLCAgICAwLjE1KTsKICAgICBTRVQoY291bGRUYWtlU2xvd0Nhc2VUaHJl
c2hvbGQsICAgICAgIDAuMDUpOyAvLyBTaG91bGRuJ3QgYmUgemVybyBiZWNhdXNlIHNvbWUgb3Bz
IHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9yIGxpbmtpbmcg
b3IgY2FjaGluZy4KICAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQsIDEw
MCk7CiAgICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50LCAgICAxMCk7CiAgICAg
Ci0gICAgU0VUKG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSwgMC4zKTsKLQot
ICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAgICAgMjApOwotICAgIFNF
VChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wLCAgMSk7Ci0gICAgU0VUKGZvcmNl
ZE9TUkV4aXRDb3VudEZvclJlb3B0aW1pemF0aW9uLCAyNTApOworICAgIFNFVChvc3JFeGl0UHJv
bWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGUsICAwLjMpOworICAgIFNFVChvc3JFeGl0Q291bnRG
b3JSZW9wdGltaXphdGlvbiwgICAgICAgICAxMDApOworICAgIFNFVChvc3JFeGl0Q291bnRGb3JS
ZW9wdGltaXphdGlvbkZyb21Mb29wLCA1KTsKIAogICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5
Q291bnRlclN0ZXAsIDEpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCShyZXZpc2lvbiAxMjEzOTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE4ICs1NiwxNCBAQCBleHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50CiBleHRlcm4gYm9vbCByYW5kb21pemVFeGVj
dXRpb25Db3VudHNCZXR3ZWVuQ2hlY2twb2ludHM7CiBleHRlcm4gaW50MzJfdCBtYXhpbXVtRXhl
Y3V0aW9uQ291bnRzQmV0d2VlbkNoZWNrcG9pbnRzOwogCi1leHRlcm4gdW5zaWduZWQgZGVzaXJl
ZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQogZXh0ZXJuIGRvdWJsZSBsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKIGV4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJl
c2hvbGQ7CiBleHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7
CiBleHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CiAKIGV4dGVy
biBkb3VibGUgb3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOwotCi1leHRlcm4g
dW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotZXh0ZXJuIHVuc2lnbmVkIGxh
cmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7Ci1leHRlcm4gdW5zaWduZWQgZm9yY2Vk
T1NSRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb247CitleHRlcm4gdW5zaWduZWQgb3NyRXhpdENv
dW50Rm9yUmVvcHRpbWl6YXRpb247CitleHRlcm4gdW5zaWduZWQgb3NyRXhpdENvdW50Rm9yUmVv
cHRpbWl6YXRpb25Gcm9tTG9vcDsKIAogZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyTWF4OwogZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
U3RlcDsK
</data>
<flag name="review"
          id="158196"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>