<?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>226151</bug_id>
          
          <creation_ts>2021-05-22 21:32:51 -0700</creation_ts>
          <short_desc>Enhance Link Buffer stats to have more fine grain profiles, and to collect count information.</short_desc>
          <delta_ts>2021-05-22 23:07:37 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762884</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-22 21:32:51 -0700</bug_when>
    <thetext>And also add a total of the sizes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762885</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-22 21:33:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/78359436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762887</commentid>
    <comment_count>2</comment_count>
      <attachid>429453</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-22 21:37:29 -0700</bug_when>
    <thetext>Created attachment 429453
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762890</commentid>
    <comment_count>3</comment_count>
      <attachid>429456</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-22 21:47:47 -0700</bug_when>
    <thetext>Created attachment 429456
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762892</commentid>
    <comment_count>4</comment_count>
      <attachid>429456</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-22 22:28:37 -0700</bug_when>
    <thetext>Comment on attachment 429456
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762896</commentid>
    <comment_count>5</comment_count>
      <attachid>429456</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-22 22:58:09 -0700</bug_when>
    <thetext>Comment on attachment 429456
proposed patch.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762898</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-22 23:07:37 -0700</bug_when>
    <thetext>Landed in r277928: &lt;http://trac.webkit.org/r277928&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429453</attachid>
            <date>2021-05-22 21:37:29 -0700</date>
            <delta_ts>2021-05-22 21:38:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-226151.patch</filename>
            <type>text/plain</type>
            <size>37141</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBA
QAorMjAyMS0wNS0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBMaW5rIEJ1ZmZlciBzdGF0cyB0byBoYXZlIG1vcmUgZmluZSBncmFpbiBwcm9maWxl
cywgYW5kIHRvIGNvbGxlY3QgY291bnQgaW5mb3JtYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNTEKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNzgzNTk0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbmQgYWxzbyBhZGQgYSB0b3RhbCBvZiB0aGUgc2l6ZXMuCisKKyAgICAgICAgSGVyZSdz
IGFuIGV4YW1wbGUgb2YgdGhhdCB0aGUgbmV3IHN0YXRzIGxvb2sgbGlrZToKKworICAgICAgICAg
ICAgQ3VtbXVsYXRpdmUgTGlua0J1ZmZlciBwcm9maWxlIHNpemVzOgorICAgICAgICAgICAgICAg
ICAgICAgICBCYXNlbGluZUpJVDogNjEwOTIwMzIgKDU4LjI2MTkwMiBNQikgY291bnQgMTE2MjEg
YXZnIHNpemUgNTI1NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERGRzogMzUzODc5
MDQgKDMzLjc0ODUzNSBNQikgY291bnQgMTExNDMgYXZnIHNpemUgMzE3NQorICAgICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVDYWNoZTogMTk2MzkxNTUgKDE4LjcyOTM1OCBNQikgY291bnQgMjgz
ODkwIGF2ZyBzaXplIDY5CisgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFRodW5rOiAxNDI1
NjgwMCAoMTMuNTk2MzQ0IE1CKSBjb3VudCA0MzkwMCBhdmcgc2l6ZSAzMjQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIERGR09TUkV4aXQ6IDc2MzY3MzYgKDcuMjgyOTU5IE1CKSBjb3VudCA1MjM1
IGF2ZyBzaXplIDE0NTgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGVEw6IDQ5Mjc2
MTYgKDQuNjk5MzQxIE1CKSBjb3VudCA1MjY5IGF2ZyBzaXplIDkzNQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2FzbTogMjEzNDY4OCAoMi4wMzU3OTcgTUIpIGNvdW50IDg0NyBhdmcg
c2l6ZSAyNTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICBZYXJySklUOiAxMzIwOTI4ICgx
LjI1OTczNSBNQikgY291bnQgMjA3NSBhdmcgc2l6ZSA2MzYKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEZUTE9TUkV4aXQ6IDEwODQwOTYgKDEuMDMzODc1IE1CKSBjb3VudCA0MTcgYXZnIHNpemUg
MjU5OQorICAgICAgICAgICAgICAgICAgICAgICAgIFdhc21UaHVuazogNDE0MDggKDQwLjQzNzUw
MCBLQikgY291bnQgMjUyIGF2ZyBzaXplIDE2NAorICAgICAgICAgICAgICAgICAgICAgICAgICBG
VExUaHVuazogMjUwODggKDI0LjUwMDAwMCBLQikgY291bnQgNDI2IGF2ZyBzaXplIDU4CisgICAg
ICAgICAgICAgICAgICAgICBFeHRyYUNUSVRodW5rOiA1OTg0ICg1Ljg0Mzc1MCBLQikgY291bnQg
OTUgYXZnIHNpemUgNjIKKyAgICAgICAgICAgICAgICAgIFNwZWNpYWxpemVkVGh1bms6IDM0NTYg
KDMuMzc1MDAwIEtCKSBjb3VudCAxOSBhdmcgc2l6ZSAxODEKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGh1bms6IDE3NjAgKDEuNzE4NzUwIEtCKSBjb3VudCAxMCBhdmcgc2l6ZSAxNzYK
KyAgICAgICAgICAgICAgICBCb3VuZEZ1bmN0aW9uVGh1bms6IDg2NCBjb3VudCAzIGF2ZyBzaXpl
IDI4OAorICAgICAgICAgICAgICAgICAgICAgICAgTExJbnRUaHVuazogNjA4IGNvdW50IDE4IGF2
ZyBzaXplIDMzCisgICAgICAgICAgICAgICAgICAgICAgICAgIERGR1RodW5rOiA2MDggY291bnQg
MSBhdmcgc2l6ZSA2MDgKKyAgICAgICAgICAgICAgICAgICAgICAgREZHT1NSRW50cnk6IDE2MCBj
b3VudCAxIGF2ZyBzaXplIDE2MAorICAgICAgICAgICAgICAgICAgICAgICAgSnVtcElzbGFuZDog
MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU0pJVDogMAorICAgICAgICAgICAgICAg
ICAgICAgVW5jYXRlZ29yaXplZDogMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3Rh
bDogMTQ3NTU5ODkxICgxNDAuNzI0MDc4IE1CKQorCisgICAgICAgICogYXNzZW1ibGVyL0xpbmtC
dWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9u
KToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6Y2xlYXJQcm9maWxlU3RhdGlzdGljcyk6Cisg
ICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmR1bXBQcm9maWxlU3RhdGlzdGljcyk6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6c2xvd1BhdGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6b3BfcmV0X2hhbmRsZXJHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpKSVQ6Om9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9w
X2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX2NoZWNrX3Ry
YXBzX2hhbmRsZXJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9wcml2YXRlX25hbWVfcHJl
cGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X2J5X3Zh
bF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRf
cHJpdmF0ZV9uYW1lX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpz
bG93X29wX2RlbF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJ
VDo6c2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6SklUOjpzbG93X29wX2dldF9ieV9pZF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6c2xvd19vcF9nZXRfYnlfaWRfd2l0aF90aGlzX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbEdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3Ip
OgorICAgICAgICAqIGppdC9TbG93UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVRTbG93
UGF0aENhbGw6OmdlbmVyYXRlVGh1bmspOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5r
SklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToKKyAg
ICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhj
ZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6aGFuZGxlRXhjZXB0aW9uV2l0aENhbGxG
cmFtZVJvbGxiYWNrR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6cG9wVGh1bmtTdGFja1ByZXNl
cnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAg
ICAgKEpTQzo6Ym91bmRGdW5jdGlvbkNhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xM
SW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9n
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJl
dHVyblBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVhdGVKU0dhdGVUaHVuayk6CisgICAgICAg
IChKU0M6OkxMSW50OjpjcmVhdGVXYXNtR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmNyZWF0ZVRhaWxDYWxsR2F0ZSk6CisgICAgICAgIChKU0M6OkxMSW50Ojpsb29wT1NSRW50cnlH
YXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1JFbnRyeUdhdGVUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtT1NSRW50cnlHYXRlVGh1bmspOgorICAgICAgICAo
SlNDOjpMTEludDo6ZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxM
SW50OjpyZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dGFn
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnVudGFnR2F0ZVRodW5rKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmppdENhZ2VQdHJUaHVuayk6CisgICAgICAgICogd2FzbS9XYXNtQmlu
ZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub1dhc20pOgorICAgICAgICAqIHdh
c20vV2FzbVRodW5rcy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRocm93RXhjZXB0aW9uRnJv
bVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OnRocm93U3RhY2tPdmVy
Zmxvd0Zyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmlnZ2Vy
T01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9K
Uy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pTKToKKwogMjAyMS0wNS0yMiAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBF
cmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24g
Mjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHNp
emVfdCBMaW5rQnVmZmVyOjpzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZFNpemVzW0xpbmtCdWZm
ZXI6Om51bWJlck9mUHJvZmlsZXNdOworc2l6ZV90IExpbmtCdWZmZXI6OnNfcHJvZmlsZUN1bW11
bGF0aXZlTGlua2VkQ291bnRzW0xpbmtCdWZmZXI6Om51bWJlck9mUHJvZmlsZXNdOwogCiBib29s
IHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKQEAgLTQ4
Miw2ICs0ODMsNyBAQCB2b2lkIExpbmtCdWZmZXI6OnBlcmZvcm1GaW5hbGl6YXRpb24oKQogI2Vu
ZGlmCiAgICAgCiAgICAgc19wcm9maWxlQ3VtbXVsYXRpdmVMaW5rZWRTaXplc1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9wcm9maWxlKV0gKz0gbV9zaXplOworICAgIHNfcHJvZmlsZUN1bW11bGF0
aXZlTGlua2VkQ291bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Byb2ZpbGUpXSsrOwogICAg
IE1hY3JvQXNzZW1ibGVyOjpjYWNoZUZsdXNoKGNvZGUoKSwgbV9zaXplKTsKIH0KIApAQCAtNTMy
LDExICs1MzQsMjAgQEAgdm9pZCBMaW5rQnVmZmVyOjpkdW1wQ29kZSh2b2lkKiBjb2RlLCBzaQog
fQogI2VuZGlmCiAKK3ZvaWQgTGlua0J1ZmZlcjo6Y2xlYXJQcm9maWxlU3RhdGlzdGljcygpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mUHJvZmlsZXM7ICsraSkgewor
ICAgICAgICBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZFNpemVzW2ldID0gMDsKKyAgICAgICAg
c19wcm9maWxlQ3VtbXVsYXRpdmVMaW5rZWRDb3VudHNbaV0gPSAwOworICAgIH0KK30KKwogdm9p
ZCBMaW5rQnVmZmVyOjpkdW1wUHJvZmlsZVN0YXRpc3RpY3MoT3B0aW9uYWw8UHJpbnRTdHJlYW0q
PiBvdXRTdHJlYW0pCiB7CiAgICAgc3RydWN0IFN0YXQgewogICAgICAgICBQcm9maWxlIHByb2Zp
bGU7CiAgICAgICAgIHNpemVfdCBzaXplOworICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgfTsK
IAogICAgIFN0YXQgc29ydGVkU3RhdHNbbnVtYmVyT2ZQcm9maWxlc107CkBAIC01NTEsNiArNTYy
LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpkdW1wUHJvZmlsZVN0YXRpc3RpY3MoTwogICAgIH07CiAj
dW5kZWYgUkVUVVJOX0xJTktCVUZGRVJfUFJPRklMRV9OQU1FCiAKKyAgICBzaXplX3QgdG90YWxP
ZkFsbFByb2ZpbGVzU2l6ZSA9IDA7CiAgICAgYXV0byBkdW1wU3RhdCA9IFsmXSAoY29uc3QgU3Rh
dCYgc3RhdCkgewogICAgICAgICBjaGFyIGZvcm1hdHRlZE5hbWVbMjFdOwogICAgICAgICBzbnBy
aW50Zihmb3JtYXR0ZWROYW1lLCAyMSwgIiUyMHMiLCBuYW1lKHN0YXQucHJvZmlsZSkpOwpAQCAt
NTY2LDE2ICs1NzgsMjQgQEAgdm9pZCBMaW5rQnVmZmVyOjpkdW1wUHJvZmlsZVN0YXRpc3RpY3Mo
TwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGxhcmdlclVuaXQpCi0gICAgICAgICAgICBvdXQu
cHJpbnRsbigiICAiLCBmb3JtYXR0ZWROYW1lLCAiOiAiLCBzdGF0LnNpemUsICIgKCIsIHNpemVJ
bkxhcmdlclVuaXQsICIgIiwgbGFyZ2VyVW5pdCwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiICAiLCBmb3JtYXR0ZWROYW1lLCAiOiAiLCBzdGF0LnNpemUsICIgKCIsIHNpemVJbkxhcmdl
clVuaXQsICIgIiwgbGFyZ2VyVW5pdCwgIikiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
b3V0LnByaW50KCIgICIsIGZvcm1hdHRlZE5hbWUsICI6ICIsIHN0YXQuc2l6ZSk7CisKKyAgICAg
ICAgaWYgKCFzdGF0LmNvdW50KQorICAgICAgICAgICAgb3V0LnByaW50bG4oKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgIiwgZm9ybWF0dGVkTmFtZSwgIjogIiwg
c3RhdC5zaXplKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCIgY291bnQgIiwgc3RhdC5jb3Vu
dCwgIiBhdmcgc2l6ZSAiLCAoc3RhdC5zaXplIC8gc3RhdC5jb3VudCkpOwogICAgIH07CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQcm9maWxlczsgKytpKSB7CiAgICAg
ICAgIHNvcnRlZFN0YXRzW2ldLnByb2ZpbGUgPSBzdGF0aWNfY2FzdDxQcm9maWxlPihpKTsKICAg
ICAgICAgc29ydGVkU3RhdHNbaV0uc2l6ZSA9IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkU2l6
ZXNbaV07CisgICAgICAgIHNvcnRlZFN0YXRzW2ldLmNvdW50ID0gc19wcm9maWxlQ3VtbXVsYXRp
dmVMaW5rZWRDb3VudHNbaV07CisgICAgICAgIHRvdGFsT2ZBbGxQcm9maWxlc1NpemUgKz0gc19w
cm9maWxlQ3VtbXVsYXRpdmVMaW5rZWRTaXplc1tpXTsKICAgICB9Ci0gICAgc3RkOjpzb3J0KCZz
b3J0ZWRTdGF0c1swXSwgJnNvcnRlZFN0YXRzW251bWJlck9mUHJvZmlsZXNdLAorICAgIHNvcnRl
ZFN0YXRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9maWxlOjpUb3RhbCldLnNpemUgPSB0b3Rh
bE9mQWxsUHJvZmlsZXNTaXplOworICAgIHN0ZDo6c29ydCgmc29ydGVkU3RhdHNbMF0sICZzb3J0
ZWRTdGF0c1tudW1iZXJPZlByb2ZpbGVzRXhjbHVkaW5nVG90YWxdLAogICAgICAgICBbXSAoU3Rh
dCYgYSwgU3RhdCYgYikgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gYS5zaXplID4gYi5z
aXplOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTIgKzg5LDI1
IEBAIHB1YmxpYzoKICAgICB2KEJhc2VsaW5lSklUKSBcCiAgICAgdihERkcpIFwKICAgICB2KEZU
TCkgXAorICAgIHYoREZHT1NSRW50cnkpIFwKKyAgICB2KERGR09TUkV4aXQpIFwKKyAgICB2KEZU
TE9TUkV4aXQpIFwKICAgICB2KElubGluZUNhY2hlKSBcCisgICAgdihKdW1wSXNsYW5kKSBcCiAg
ICAgdihUaHVuaykgXAorICAgIHYoTExJbnRUaHVuaykgXAorICAgIHYoREZHVGh1bmspIFwKKyAg
ICB2KEZUTFRodW5rKSBcCisgICAgdihCb3VuZEZ1bmN0aW9uVGh1bmspIFwKKyAgICB2KFNwZWNp
YWxpemVkVGh1bmspIFwKKyAgICB2KFZpcnR1YWxUaHVuaykgXAorICAgIHYoV2FzbVRodW5rKSBc
CisgICAgdihFeHRyYUNUSVRodW5rKSBcCiAgICAgdihXYXNtKSBcCiAgICAgdihZYXJySklUKSBc
CiAgICAgdihDU1NKSVQpIFwKLSAgICB2KFVuY2F0ZWdvcml6ZWQpCisgICAgdihVbmNhdGVnb3Jp
emVkKSBcCisgICAgdihUb3RhbCkgXAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS0JVRkZFUl9QUk9G
SUxFKG5hbWUpIG5hbWUsCiAgICAgZW51bSBjbGFzcyBQcm9maWxlIHsKQEAgLTEwNSw2ICsxMTgs
NyBAQCBwdWJsaWM6CiAjZGVmaW5lIENPVU5UX0xJTktCVUZGRVJfUFJPRklMRShuYW1lKSArIDEK
ICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUHJvZmlsZXMgPSBGT1JfRUFD
SF9MSU5LQlVGRkVSX1BST0ZJTEUoQ09VTlRfTElOS0JVRkZFUl9QUk9GSUxFKTsKICN1bmRlZiBD
T1VOVF9MSU5LQlVGRkVSX1BST0ZJTEUKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51
bWJlck9mUHJvZmlsZXNFeGNsdWRpbmdUb3RhbCA9IG51bWJlck9mUHJvZmlsZXMgLSAxOwogCiAg
ICAgTGlua0J1ZmZlcihNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVy
VUlELCBQcm9maWxlIHByb2ZpbGUgPSBQcm9maWxlOjpVbmNhdGVnb3JpemVkLCBKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQgPSBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKQogICAgICAgICA6
IG1fc2l6ZSgwKQpAQCAtMzIzLDYgKzMzNyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdhc0FscmVh
ZHlEaXNhc3NlbWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FscmVhZHlEaXNhc3NlbWJsZWQ7IH0K
ICAgICB2b2lkIGRpZEFscmVhZHlEaXNhc3NlbWJsZSgpIHsgbV9hbHJlYWR5RGlzYXNzZW1ibGVk
ID0gdHJ1ZTsgfQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2xlYXJQcm9m
aWxlU3RhdGlzdGljcygpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBQ
cm9maWxlU3RhdGlzdGljcyhPcHRpb25hbDxQcmludFN0cmVhbSo+ID0gV1RGOjpudWxsb3B0KTsK
IAogcHJpdmF0ZToKQEAgLTQwNiw2ICs0MjEsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkVGFzazx2b2lkKExpbmtCdWZmZXImKT4+PiBtX2xhdGVMaW5rVGFza3M7CiAKICAg
ICBzdGF0aWMgc2l6ZV90IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkU2l6ZXNbbnVtYmVyT2ZQ
cm9maWxlc107CisgICAgc3RhdGljIHNpemVfdCBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZENv
dW50c1tudW1iZXJPZlByb2ZpbGVzXTsKIH07CiAKICNpZiBPUyhMSU5VWCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21w
aWwKIAogICAgICAgICBPU1JFeGl0Ojpjb21waWxlRXhpdChqaXQsIHZtLCBleGl0LCBvcGVyYW5k
cywgcmVjb3ZlcnkpOwogCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2Rl
QmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6REZHT1NSRXhp
dCk7CiAgICAgICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgICAg
IHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRp
b25zOjp2ZXJib3NlREZHT1NSRXhpdCgpLAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsIE9TUkV4
aXRQdHJUYWcsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCShy
ZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvcwogCiAgICAgaml0LmZhckp1bXAoTWFjcm9Bc3NlbWJsZXI6OkFi
c29sdXRlQWRkcmVzcygmdm0ub3NyRXhpdEp1bXBEZXN0aW5hdGlvbiksIE9TUkV4aXRQdHJUYWcp
OwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkRGR1RodW5rKTsKICAgICAK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1bmN0aW9uQ2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25Db21waWxlT1NSRXhpdCkpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcwogCiAgICAgaml0LmZhckp1
bXAoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIAotICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpERkdPU1JFbnRyeSk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBlbnRyeSB0
aHVuayIpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNiw3
ICs1MDYsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkCiAgICAg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOwogICAgIGFkanVzdEFuZEp1bXBUb1Rh
cmdldCh2bSwgaml0LCBleGl0KTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgY29kZUJsb2NrLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jaywgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RlRMT1NS
RXhpdCk7CiAgICAgZXhpdC5tX2NvZGUgPSBGSU5BTElaRV9DT0RFX0lGKAogICAgICAgICBzaG91
bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6
dmVyYm9zZUZUTE9TUkV4aXQoKSwKICAgICAgICAgcGF0Y2hCdWZmZXIsIE9TUkV4aXRQdHJUYWcs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCShyZXZpc2lvbiAy
Nzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyCiAjZW5kaWYKICAgICBqaXQucmV0KCk7CiAgICAgCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGZ1
bmN0aW9uQ2FsbCwgZ2VuZXJhdGlvbkZ1bmN0aW9uLnJldGFnZ2VkPE9wZXJhdGlvblB0clRhZz4o
KSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiJXMiLCBuYW1lKTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsCiAgICAgCiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTFRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KGNhbGwsIGtleS5jYWxsVGFyZ2V0KCkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkZUTCBzbG93IHBhdGggY2FsbCB0aHVuayBmb3IgJXMi
LCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyIGppdDsKICAgICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVt
cCgpOwotICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4oY3VycmVudElzbGFuZCksIGlzbGFuZFNpemVJbkJ5dGVz
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwg
ZmFsc2UpOworICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4oY3VycmVudElzbGFuZCksIGlzbGFuZFNpemVJbkJ5
dGVzLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpKdW1wSXNsYW5kLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZl
ci5pc1ZhbGlkKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIHRoaXMgdG8gYXBwZWFz
ZSB0aGUgYXNzZXJ0aW9uIHRoYXQgd2UncmUgbm90IGZpbmFsaXppbmcgb24gYSBjb21waWxlciB0
aHJlYWQuIEluIHRoaXMgc2l0dWF0aW9uLCBpdCdzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0LmVt
aXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1
bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF9yZXRfaGFuZGxl
ciIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtNjQxLDcgKzY0
MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICBDYWxs
IG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgaml0Lmp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0pOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRocm93KSk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IG9wX3Rocm93
X2hhbmRsZXIiKTsKIH0KQEAgLTExOTcsNyArMTE5Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSkkKICNlbmRpZgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKG9wZXJhdGlvbldyaXRlQmFycmllckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpKTsKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICBpZiAoT3B0aW9uczo6dXNlREZHSklUKCkpCkBAIC0xNDU3LDcgKzE0NTcsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAjZW5kaWYKICAgICBqaXQu
cmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4ob3BlcmF0aW9uSGFuZGxlVHJhcHMpKTsKICAgICBhdXRvIGhhbmRsZXIgPSB2bS5q
aXRTdHVicy0+ZXhpc3RpbmdDVElTdHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVF
eGNlcHRpb25HZW5lcmF0b3IsIE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgcGF0Y2hCdWZmZXIu
bGluayhleGNlcHRpb25DaGVjaywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENv
ZGU8Tm9QdHJUYWc+KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYx
LDcgKzE2MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAg
ICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgogICAgIGppdC5yZXQo
KTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJC
YXNlbGluZTogc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0yNjcsNyArMjY3LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUg
Y2xpZW50IHRvIGNhbGwgaXQuCiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmsp
OworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RF
KHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX3h4eF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKQEAgLTY3OSw3ICs2NzksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4K
ICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3h4eF9wcmVwYXJlQ2FsbCIpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtNzgzLDcgKzc4Myw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9wdXRfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbCIpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShFWFRSQV9DVElfVEhVTktTKQpAQCAtOTM5LDcgKzkzOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVu
dCB0byBjYWxsIGl0LgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfaWRfcHJl
cGFyZUNhbGwiKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTEw
NDksNyArMTA0OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkK
ICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgogICAgIGppdC5y
ZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogc2xvd19vcF9kZWxfYnlfdmFsX3ByZXBhcmVDYWxsIik7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJuaW5nIHRv
IHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpU
aHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0
X2J5X2lkX3ByZXBhcmVDYWxsIik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4K
ICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19wcmVwYXJl
Q2FsbCIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTUwNCw3
ICsxNTA0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCiAgICAgaml0LnJldCgp
OwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF9ieV9pZF9wcmVwYXJlQ2FsbCIpOwogfQogI2VuZGlmIC8vIEVO
QUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogI2VuZGlmCiAgICAgaml0LnJldCgpOwogCi0g
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBh
dGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
ZXJhdGlvbkdldEZyb21TY29wZSkpOwogICAgIGF1dG8gaGFuZGxlciA9IHZtLmppdFN0dWJzLT5l
eGlzdGluZ0NUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvciwgTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOwpAQCAtMjEyNCw3ICsyMTI0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBKSQogI2VuZGlmCiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1
bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmso
b3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFRvU2Nv
cGUpKTsKICAgICBhdXRvIGhhbmRsZXIgPSB2bS5qaXRTdHVicy0+ZXhpc3RpbmdDVElTdHViKHBv
cFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IsIE5vTG9ja2lu
Z05lY2Vzc2FyeSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29kZUxv
Y2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAJKHJldmlzaW9uIDI3Nzky
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJCiAKICAgICBhdXRvIGhhbmRsZXIgPSB2bS5qaXRTdHVicy0+ZXhpc3RpbmdDVElT
dHViKHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IsIE5v
TG9ja2luZ05lY2Vzc2FyeSk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KGV4Y2VwdGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxO
b1B0clRhZz4oKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIlNsb3dQYXRoQ2FsbCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTUsNyArMTU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZpbmFsaXplKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gZmFsbGJhY2ssIGNvbnN0IGNoYXIqIHRodW5r
S2luZCkKICAgICAgICAgewotICAgICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdGhp
cywgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgICAg
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp0aGlzLCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlNwZWNpYWxpemVkVGh1bmspOwogICAgICAgICAgICAgcGF0Y2hCdWZm
ZXIubGluayhtX2ZhaWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4oZmFs
bGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNp
emUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5m
aXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGEKIAog
ICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAotICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5r
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9w
ZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiaGFuZGxlRXhjZXB0aW9uIik7CiB9CkBAIC03Miw3ICs3Miw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGEKICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgb3BlcmF0aW9uID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKICAgICBqaXQuanVt
cFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxl
ckZyb21DYWxsZXJGcmFtZSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFjayIp
OwogfQpAQCAtODksNyArODksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHBvCiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgY29udGludWF0aW9uID0gaml0Lmp1bXAo
KTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExp
bmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsK
ICAgICBhdXRvIGhhbmRsZXIgPSB2bS5qaXRTdHVicy0+ZXhpc3RpbmdDVElTdHViKGhhbmRsZUV4
Y2VwdGlvbkdlbmVyYXRvciwgTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICBSRUxFQVNFX0FTU0VS
VChoYW5kbGVyKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNvbnRpbnVhdGlvbiwgQ29kZUxvY2F0
aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKQEAgLTEzMSw3ICsx
MzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoCiAgICAgfQog
I2VuZGlmCiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVu
ayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhoYW5kbGVFeGNlcHRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKHZtLmppdFN0dWJzLT5leGlzdGluZ0NUSVN0dWIoaGFuZGxlckdlbmVyYXRvciwgTm9Mb2Nr
aW5nTmVjZXNzYXJ5KS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJDaGVja0V4Y2VwdGlvbiIp
OwogfQpAQCAtMzMzLDcgKzMzMyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91
dGluZVB0clQKICAgICAvLyBIZXJlIHdlIGRvbid0IGtub3cgYW55dGhpbmcsIHNvIHJldmVydCB0
byB0aGUgZnVsbCBzbG93IHBhdGguCiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9u
VmlydHVhbENhbGwpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlZpcnR1
YWxUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVy
LCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgIlZpcnR1YWwgJXMgc2xvdyBwYXRoIHRo
dW5rIiwKQEAgLTEzNzIsNyArMTM3Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gYm8KICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICBqaXQucmV0
KCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpCb3VuZEZ1bmN0aW9u
VGh1bmspOwogICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFRodW5rUHRyVGFnPih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRU
YWdzKHZtKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAgICBsaW5rQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBj
YWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4
OCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmEKICAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBzY3JhdGNoKTsKICAg
ICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVuayIsIHRodW5rS2luZCk7CiB9CiAK
QEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2Vu
ZXJhCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwg
c2NyYXRjaCk7CiAgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAot
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKICAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMganVtcCB0byBwcm9s
b2d1ZSB0aHVuayIsIHRodW5rS2luZCk7CiB9CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CiAgICAg
aml0LmZhckp1bXAoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlv
blB0clRhZyk7Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBy
ZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldAogICAgICAgICBqaXQuZW1p
dEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgaml0LnJldCgpOwogCi0gICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpTRW50cnlQdHJUYWcsICJM
TEludDo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSB0aHVuayIpKTsKICAgICB9KTsKICAgICByZXR1
cm4gY29kZVJlZjsKQEAgLTM1Nyw3ICszNTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVn
VDMsIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6TExJbnRUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOwog
fQogCkBAIC0zNjksNyArMzY5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0cgogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIxKTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjp3
YXNtU2NyYXRjaEdQUjEsIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20gY2FsbCBnYXRl
IHRodW5rIiwgbmFtZSk7CiB9CiAKQEAgLTM4MSw3ICszODEsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0LnZhbGlkYXRlVW50YWdnZWRQdHIoQVJN
NjRSZWdpc3RlcnM6OmxyLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5mYXJKdW1w
KEdQUkluZm86OnJlZ1QwLCB0YWcpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OkxMSW50VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOwogfQog
CkBAIC0zOTQsNyArMzk0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0cgogCiAgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNFbnRy
eVB0clRhZyk7CiAKLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpM
TEludFRodW5rKTsKICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAibG9vcCBPU1IgZW50cnkgdGh1bmsiKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CkBAIC00MTAsNyArNDEwLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgICAgICBqaXQudW50YWdSZXR1
cm5BZGRyZXNzKCk7CiAgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
SlNFbnRyeVB0clRhZyk7CiAKLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgICAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpMTEludFRodW5rKTsKICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZW50cnkgT1NSIGVudHJ5IHRo
dW5rIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwpAQCAtNDI2LDcgKzQyNiw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICAgICAgaml0LnVu
dGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2Ny
YXRjaEdQUjAsIFdhc21FbnRyeVB0clRhZyk7CiAKLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5r
QnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3Qo
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAid2FzbSBP
U1IgZW50cnkgdGh1bmsiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CkBAIC00NDEs
NyArNDQxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogCiAg
ICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
KTsKIAotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1
bmspOwogICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJleGNlcHRpb24gaGFuZGxlciB0aHVuayIpKTsKICAg
ICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAKICAgICAgICAgaml0LnJldCgpOwogCi0g
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgInJldHVybkZyb21MTEludCB0aHVuayIpKTsKICAgICB9KTsKICAg
ICByZXR1cm4gY29kZVJlZjsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6TExJbnRUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInRhZyB0aHVuayIpOwogfQogCkBAIC00ODcsNyAr
NDg3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVn
VDMpOwogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOwog
Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwogICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ1
bnRhZyB0aHVuayIpOwogfQogCkBAIC01MDIsNyArNTAyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0cgogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CiAgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CiAgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxF
X0lNUEwoaml0KTsKLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpM
TEludFRodW5rKTsKICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiaml0Q2FnZVB0ciB0aHVuayIpKTsKICAg
ICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQmluZGluZy5jcHAJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcs
NyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAgaml0Lmxv
YWRQdHIoc2NyYXRjaCwgc2NyYXRjaCk7CiAgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgV2FzbUVu
dHJ5UHRyVGFnKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6Oldhc21UaHVuaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBp
ZiAoVU5MSUtFTFkocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnkpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAkocmV2aXNpb24gMjc3
OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiB0aAogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBFeGNl
cHRpb25IYW5kbGVyUHRyVGFnKTsKICAgICBqaXQuYnJlYWtwb2ludCgpOyAvLyBXZSBzaG91bGQg
bm90IHJlYWNoIHRoaXMuCiAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIGxp
bmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6Oldhc21U
aHVuayk7CiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BlcmF0aW9uV2FzbVRvSlNFeGNlcHRpb24pKTsKICAgICByZXR1cm4gRklOQUxJWkVf
V0FTTV9DT0RFKGxpbmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZy
b20gV2FzbSIpOwogfQpAQCAtNjcsNyArNjcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHRoCiAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Migtc3RhY2tTcGFjZSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihFeGNlcHRpb25UeXBlOjpTdGFja092ZXJm
bG93KSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgYXV0byBqdW1wVG9FeGNlcHRpb25I
YW5kbGVyID0gaml0Lmp1bXAoKTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVy
IGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6Oldh
c21UaHVuayk7CiAgICAgbGlua0J1ZmZlci5saW5rKGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPihUaHVua3M6OnNpbmdsZXRvbigpLnN0dWIo
bG9ja2VyLCB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwog
ICAgIHJldHVybiBGSU5BTElaRV9XQVNNX0NPREUobGlua0J1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJUaHJvdyBzdGFjayBvdmVyZmxvdyBmcm9tIFdhc20iKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0cgogCiAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwotICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwor
ICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6V2FzbVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfV0FTTV9DT0RFKGxp
bmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiVHJpZ2dlciBPTUcgZW50cnkgdGllciB1cCIpOwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
YXNtVG9KUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBFeHBlY3RlZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAgICAgIH0pOwogICAgIH0KIAotICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OlRodW5rLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6Oldh
c21UaHVuaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAoVU5MSUtFTFkocGF0Y2hC
dWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429456</attachid>
            <date>2021-05-22 21:47:47 -0700</date>
            <delta_ts>2021-05-22 22:58:52 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-226151.patch</filename>
            <type>text/plain</type>
            <size>39077</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBA
QAorMjAyMS0wNS0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBMaW5rIEJ1ZmZlciBzdGF0cyB0byBoYXZlIG1vcmUgZmluZSBncmFpbiBwcm9maWxl
cywgYW5kIHRvIGNvbGxlY3QgY291bnQgaW5mb3JtYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNTEKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNzgzNTk0MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbmQgYWxzbyBhZGQgYSB0b3RhbCBvZiB0aGUgc2l6ZXMuCisgICAgICAgIEFsc28gYWRk
ZWQgJHZtLmNsZWFyTGlua0J1ZmZlclN0YXRzKCkgd2hpY2ggcmVzZXRzIGFsbCB0aGUgc3RhdHMg
dG8gMC4KKworICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiB0aGF0IHRoZSBuZXcgc3RhdHMg
bG9vayBsaWtlOgorCisgICAgICAgICAgICBDdW1tdWxhdGl2ZSBMaW5rQnVmZmVyIHByb2ZpbGUg
c2l6ZXM6CisgICAgICAgICAgICAgICAgICAgICAgIEJhc2VsaW5lSklUOiA2MTA5MjAzMiAoNTgu
MjYxOTAyIE1CKSBjb3VudCAxMTYyMSBhdmcgc2l6ZSA1MjU3CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgREZHOiAzNTM4NzkwNCAoMzMuNzQ4NTM1IE1CKSBjb3VudCAxMTE0MyBhdmcg
c2l6ZSAzMTc1CisgICAgICAgICAgICAgICAgICAgICAgIElubGluZUNhY2hlOiAxOTYzOTE1NSAo
MTguNzI5MzU4IE1CKSBjb3VudCAyODM4OTAgYXZnIHNpemUgNjkKKyAgICAgICAgICAgICAgICAg
ICAgICBWaXJ0dWFsVGh1bms6IDE0MjU2ODAwICgxMy41OTYzNDQgTUIpIGNvdW50IDQzOTAwIGF2
ZyBzaXplIDMyNAorICAgICAgICAgICAgICAgICAgICAgICAgREZHT1NSRXhpdDogNzYzNjczNiAo
Ny4yODI5NTkgTUIpIGNvdW50IDUyMzUgYXZnIHNpemUgMTQ1OAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZUTDogNDkyNzYxNiAoNC42OTkzNDEgTUIpIGNvdW50IDUyNjkgYXZnIHNp
emUgOTM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXNtOiAyMTM0Njg4ICgyLjAz
NTc5NyBNQikgY291bnQgODQ3IGF2ZyBzaXplIDI1MjAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFlhcnJKSVQ6IDEzMjA5MjggKDEuMjU5NzM1IE1CKSBjb3VudCAyMDc1IGF2ZyBzaXplIDYz
NgorICAgICAgICAgICAgICAgICAgICAgICAgRlRMT1NSRXhpdDogMTA4NDA5NiAoMS4wMzM4NzUg
TUIpIGNvdW50IDQxNyBhdmcgc2l6ZSAyNTk5CisgICAgICAgICAgICAgICAgICAgICAgICAgV2Fz
bVRodW5rOiA0MTQwOCAoNDAuNDM3NTAwIEtCKSBjb3VudCAyNTIgYXZnIHNpemUgMTY0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZUTFRodW5rOiAyNTA4OCAoMjQuNTAwMDAwIEtCKSBjb3Vu
dCA0MjYgYXZnIHNpemUgNTgKKyAgICAgICAgICAgICAgICAgICAgIEV4dHJhQ1RJVGh1bms6IDU5
ODQgKDUuODQzNzUwIEtCKSBjb3VudCA5NSBhdmcgc2l6ZSA2MgorICAgICAgICAgICAgICAgICAg
U3BlY2lhbGl6ZWRUaHVuazogMzQ1NiAoMy4zNzUwMDAgS0IpIGNvdW50IDE5IGF2ZyBzaXplIDE4
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVuazogMTc2MCAoMS43MTg3NTAgS0Ip
IGNvdW50IDEwIGF2ZyBzaXplIDE3NgorICAgICAgICAgICAgICAgIEJvdW5kRnVuY3Rpb25UaHVu
azogODY0IGNvdW50IDMgYXZnIHNpemUgMjg4CisgICAgICAgICAgICAgICAgICAgICAgICBMTElu
dFRodW5rOiA2MDggY291bnQgMTggYXZnIHNpemUgMzMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgREZHVGh1bms6IDYwOCBjb3VudCAxIGF2ZyBzaXplIDYwOAorICAgICAgICAgICAgICAgICAg
ICAgICBERkdPU1JFbnRyeTogMTYwIGNvdW50IDEgYXZnIHNpemUgMTYwCisgICAgICAgICAgICAg
ICAgICAgICAgICBKdW1wSXNsYW5kOiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
SklUOiAwCisgICAgICAgICAgICAgICAgICAgICBVbmNhdGVnb3JpemVkOiAwCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRvdGFsOiAxNDc1NTk4OTEgKDE0MC43MjQwNzggTUIpCisKKyAg
ICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZm
ZXI6OnBlcmZvcm1GaW5hbGl6YXRpb24pOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpjbGVh
clByb2ZpbGVTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZHVtcFByb2Zp
bGVTdGF0aXN0aWNzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpERkc6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpE
Rkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBm
dGwvRlRMVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5lcmljR2VuZXJhdGlvblRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpzbG93UGF0aENhbGxUaHVua0dlbmVy
YXRvcik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpvcF9yZXRfaGFuZGxlckdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6b3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcik6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dl
dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2FsbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNhbGxHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2RlbF9ieV92YWxfcHJlcGFyZUNhbGxH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3ByZXBhcmVD
YWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29wX2dldF9ieV9pZF93aXRo
X3RoaXNfcHJlcGFyZUNhbGxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3Bf
cHV0X2J5X2lkX3ByZXBhcmVDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93
X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpzbG93X29w
X3B1dF90b19zY29wZUdlbmVyYXRvcik6CisgICAgICAgICogaml0L1Nsb3dQYXRoQ2FsbC5jcHA6
CisgICAgICAgIChKU0M6OkpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayk6CisgICAgICAg
ICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRU
aHVua0pJVDo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgor
ICAgICAgICAoSlNDOjpoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpo
YW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Y2hlY2tFeGNlcHRpb25HZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp2
aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRv
cik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0
ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmsp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpl
bnRyeU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRy
eUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRo
dW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6Cisg
ICAgICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
dW50YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToK
KyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJW
TTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjp3YXNtVG9XYXNtKToKKyAgICAgICAgKiB3YXNtL1dhc21UaHVua3Mu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjp0aHJvd1N0YWNrT3ZlcmZsb3dGcm9tV2FzbVRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6dHJpZ2dlck9NR0VudHJ5VGllclVw
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisKIDIwMjEtMDUtMjIgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFN1cHBvcnQgRXJnb25vbWljIEJyYW5k
IENoZWNrcyBwcm9wb3NhbCAoYCN4IGluIG9iamApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBzaXplX3QgTGlua0J1ZmZl
cjo6c19wcm9maWxlQ3VtbXVsYXRpdmVMaW5rZWRTaXplc1tMaW5rQnVmZmVyOjpudW1iZXJPZlBy
b2ZpbGVzXTsKK3NpemVfdCBMaW5rQnVmZmVyOjpzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZENv
dW50c1tMaW5rQnVmZmVyOjpudW1iZXJPZlByb2ZpbGVzXTsKIAogYm9vbCBzaG91bGREdW1wRGlz
YXNzZW1ibHlGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CkBAIC00ODIsNiArNDgzLDcgQEAg
dm9pZCBMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICNlbmRpZgogICAgIAogICAg
IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkU2l6ZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
cHJvZmlsZSldICs9IG1fc2l6ZTsKKyAgICBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZENvdW50
c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wcm9maWxlKV0rKzsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6Y2FjaGVGbHVzaChjb2RlKCksIG1fc2l6ZSk7CiB9CiAKQEAgLTUzMiwxMSArNTM0LDIwIEBA
IHZvaWQgTGlua0J1ZmZlcjo6ZHVtcENvZGUodm9pZCogY29kZSwgc2kKIH0KICNlbmRpZgogCit2
b2lkIExpbmtCdWZmZXI6OmNsZWFyUHJvZmlsZVN0YXRpc3RpY3MoKQoreworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlByb2ZpbGVzOyArK2kpIHsKKyAgICAgICAgc19wcm9m
aWxlQ3VtbXVsYXRpdmVMaW5rZWRTaXplc1tpXSA9IDA7CisgICAgICAgIHNfcHJvZmlsZUN1bW11
bGF0aXZlTGlua2VkQ291bnRzW2ldID0gMDsKKyAgICB9Cit9CisKIHZvaWQgTGlua0J1ZmZlcjo6
ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE9wdGlvbmFsPFByaW50U3RyZWFtKj4gb3V0U3RyZWFtKQog
ewogICAgIHN0cnVjdCBTdGF0IHsKICAgICAgICAgUHJvZmlsZSBwcm9maWxlOwogICAgICAgICBz
aXplX3Qgc2l6ZTsKKyAgICAgICAgc2l6ZV90IGNvdW50OwogICAgIH07CiAKICAgICBTdGF0IHNv
cnRlZFN0YXRzW251bWJlck9mUHJvZmlsZXNdOwpAQCAtNTUxLDYgKzU2Miw3IEBAIHZvaWQgTGlu
a0J1ZmZlcjo6ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE8KICAgICB9OwogI3VuZGVmIFJFVFVSTl9M
SU5LQlVGRkVSX1BST0ZJTEVfTkFNRQogCisgICAgc2l6ZV90IHRvdGFsT2ZBbGxQcm9maWxlc1Np
emUgPSAwOwogICAgIGF1dG8gZHVtcFN0YXQgPSBbJl0gKGNvbnN0IFN0YXQmIHN0YXQpIHsKICAg
ICAgICAgY2hhciBmb3JtYXR0ZWROYW1lWzIxXTsKICAgICAgICAgc25wcmludGYoZm9ybWF0dGVk
TmFtZSwgMjEsICIlMjBzIiwgbmFtZShzdGF0LnByb2ZpbGUpKTsKQEAgLTU2NiwxNiArNTc4LDI0
IEBAIHZvaWQgTGlua0J1ZmZlcjo6ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE8KICAgICAgICAgfQog
CiAgICAgICAgIGlmIChsYXJnZXJVbml0KQotICAgICAgICAgICAgb3V0LnByaW50bG4oIiAgIiwg
Zm9ybWF0dGVkTmFtZSwgIjogIiwgc3RhdC5zaXplLCAiICgiLCBzaXplSW5MYXJnZXJVbml0LCAi
ICIsIGxhcmdlclVuaXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgIiwgZm9ybWF0
dGVkTmFtZSwgIjogIiwgc3RhdC5zaXplLCAiICgiLCBzaXplSW5MYXJnZXJVbml0LCAiICIsIGxh
cmdlclVuaXQsICIpIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludCgiICAi
LCBmb3JtYXR0ZWROYW1lLCAiOiAiLCBzdGF0LnNpemUpOworCisgICAgICAgIGlmICghc3RhdC5j
b3VudCkKKyAgICAgICAgICAgIG91dC5wcmludGxuKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG91dC5wcmludGxuKCIgICIsIGZvcm1hdHRlZE5hbWUsICI6ICIsIHN0YXQuc2l6ZSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnRsbigiIGNvdW50ICIsIHN0YXQuY291bnQsICIgYXZnIHNpemUg
IiwgKHN0YXQuc2l6ZSAvIHN0YXQuY291bnQpKTsKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mUHJvZmlsZXM7ICsraSkgewogICAgICAgICBzb3J0ZWRTdGF0
c1tpXS5wcm9maWxlID0gc3RhdGljX2Nhc3Q8UHJvZmlsZT4oaSk7CiAgICAgICAgIHNvcnRlZFN0
YXRzW2ldLnNpemUgPSBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZFNpemVzW2ldOworICAgICAg
ICBzb3J0ZWRTdGF0c1tpXS5jb3VudCA9IHNfcHJvZmlsZUN1bW11bGF0aXZlTGlua2VkQ291bnRz
W2ldOworICAgICAgICB0b3RhbE9mQWxsUHJvZmlsZXNTaXplICs9IHNfcHJvZmlsZUN1bW11bGF0
aXZlTGlua2VkU2l6ZXNbaV07CiAgICAgfQotICAgIHN0ZDo6c29ydCgmc29ydGVkU3RhdHNbMF0s
ICZzb3J0ZWRTdGF0c1tudW1iZXJPZlByb2ZpbGVzXSwKKyAgICBzb3J0ZWRTdGF0c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvZmlsZTo6VG90YWwpXS5zaXplID0gdG90YWxPZkFsbFByb2ZpbGVz
U2l6ZTsKKyAgICBzdGQ6OnNvcnQoJnNvcnRlZFN0YXRzWzBdLCAmc29ydGVkU3RhdHNbbnVtYmVy
T2ZQcm9maWxlc0V4Y2x1ZGluZ1RvdGFsXSwKICAgICAgICAgW10gKFN0YXQmIGEsIFN0YXQmIGIp
IC0+IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuIGEuc2l6ZSA+IGIuc2l6ZTsKICAgICAgICAg
fSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEyICs4OSwyNSBAQCBwdWJsaWM6CiAg
ICAgdihCYXNlbGluZUpJVCkgXAogICAgIHYoREZHKSBcCiAgICAgdihGVEwpIFwKKyAgICB2KERG
R09TUkVudHJ5KSBcCisgICAgdihERkdPU1JFeGl0KSBcCisgICAgdihGVExPU1JFeGl0KSBcCiAg
ICAgdihJbmxpbmVDYWNoZSkgXAorICAgIHYoSnVtcElzbGFuZCkgXAogICAgIHYoVGh1bmspIFwK
KyAgICB2KExMSW50VGh1bmspIFwKKyAgICB2KERGR1RodW5rKSBcCisgICAgdihGVExUaHVuaykg
XAorICAgIHYoQm91bmRGdW5jdGlvblRodW5rKSBcCisgICAgdihTcGVjaWFsaXplZFRodW5rKSBc
CisgICAgdihWaXJ0dWFsVGh1bmspIFwKKyAgICB2KFdhc21UaHVuaykgXAorICAgIHYoRXh0cmFD
VElUaHVuaykgXAogICAgIHYoV2FzbSkgXAogICAgIHYoWWFyckpJVCkgXAogICAgIHYoQ1NTSklU
KSBcCi0gICAgdihVbmNhdGVnb3JpemVkKQorICAgIHYoVW5jYXRlZ29yaXplZCkgXAorICAgIHYo
VG90YWwpIFwKIAogI2RlZmluZSBERUNMQVJFX0xJTktCVUZGRVJfUFJPRklMRShuYW1lKSBuYW1l
LAogICAgIGVudW0gY2xhc3MgUHJvZmlsZSB7CkBAIC0xMDUsNiArMTE4LDcgQEAgcHVibGljOgog
I2RlZmluZSBDT1VOVF9MSU5LQlVGRkVSX1BST0ZJTEUobmFtZSkgKyAxCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlByb2ZpbGVzID0gRk9SX0VBQ0hfTElOS0JVRkZFUl9Q
Uk9GSUxFKENPVU5UX0xJTktCVUZGRVJfUFJPRklMRSk7CiAjdW5kZWYgQ09VTlRfTElOS0JVRkZF
Ul9QUk9GSUxFCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlByb2ZpbGVz
RXhjbHVkaW5nVG90YWwgPSBudW1iZXJPZlByb2ZpbGVzIC0gMTsKIAogICAgIExpbmtCdWZmZXIo
TWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgUHJvZmlsZSBw
cm9maWxlID0gUHJvZmlsZTo6VW5jYXRlZ29yaXplZCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZm
b3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkKICAgICAgICAgOiBtX3NpemUoMCkKQEAg
LTMyMyw2ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YXNBbHJlYWR5RGlzYXNzZW1ibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9hbHJlYWR5RGlzYXNzZW1ibGVkOyB9CiAgICAgdm9pZCBkaWRB
bHJlYWR5RGlzYXNzZW1ibGUoKSB7IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0KIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUHJvZmlsZVN0YXRpc3RpY3Mo
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3Rp
Y3MoT3B0aW9uYWw8UHJpbnRTdHJlYW0qPiA9IFdURjo6bnVsbG9wdCk7CiAKIHByaXZhdGU6CkBA
IC00MDYsNiArNDIxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZFRhc2s8
dm9pZChMaW5rQnVmZmVyJik+Pj4gbV9sYXRlTGlua1Rhc2tzOwogCiAgICAgc3RhdGljIHNpemVf
dCBzX3Byb2ZpbGVDdW1tdWxhdGl2ZUxpbmtlZFNpemVzW251bWJlck9mUHJvZmlsZXNdOworICAg
IHN0YXRpYyBzaXplX3Qgc19wcm9maWxlQ3VtbXVsYXRpdmVMaW5rZWRDb3VudHNbbnVtYmVyT2ZQ
cm9maWxlc107CiB9OwogCiAjaWYgT1MoTElOVVgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29tcGlsCiAKICAgICAgICAg
T1NSRXhpdDo6Y29tcGlsZUV4aXQoaml0LCB2bSwgZXhpdCwgb3BlcmFuZHMsIHJlY292ZXJ5KTsK
IAotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgY29kZUJsb2NrLCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OkRGR09TUkV4aXQpOwogICAgICAgICBl
eGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgICAgICBzaG91bGREdW1wRGlz
YXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZURG
R09TUkV4aXQoKSwKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLCBPU1JFeGl0UHRyVGFnLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjc3OTI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OSw3ICs4OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gb3MKIAogICAgIGppdC5mYXJKdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3Mo
JnZtLm9zckV4aXRKdW1wRGVzdGluYXRpb24pLCBPU1JFeGl0UHRyVGFnKTsKIAotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpERkdUaHVuayk7CiAgICAgCiAgICAgcGF0Y2hCdWZm
ZXIubGluayhmdW5jdGlvbkNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uQ29tcGlsZU9TUkV4aXQpKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3MKIAogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJl
Z1QxLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1
ZmZlcjo6UHJvZmlsZTo6REZHT1NSRW50cnkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkRGRyBPU1IgZW50cnkgdGh1bmsiKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDYsNyArNTA2LDcgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoaml0LCBleGl0KTsKICAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQodm0sIGppdCwg
ZXhpdCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNvZGVCbG9jaywg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBjb2RlQmxvY2ssIExpbmtCdWZmZXI6OlByb2ZpbGU6OkZUTE9TUkV4aXQpOwogICAgIGV4
aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgc2hvdWxkRHVtcERpc2Fzc2Vt
Ymx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6OnZlcmJvc2VGVExPU1JF
eGl0KCksCiAgICAgICAgIHBhdGNoQnVmZmVyLCBPU1JFeGl0UHRyVGFnLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgog
I2VuZGlmCiAgICAgaml0LnJldCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpGVExUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIGdl
bmVyYXRpb25GdW5jdGlvbi5yZXRhZ2dlZDxPcGVyYXRpb25QdHJUYWc+KCkpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIiVzIiwgbmFtZSk7
CiB9CkBAIC0yMzEsNyArMjMxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbAogICAgIAogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVy
OjpQcm9maWxlOjpGVExUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBrZXkuY2Fs
bFRhcmdldCgpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJGVEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtl
eSkuZGF0YSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQ0LDcgKzY0NCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
ciBqaXQ7CiAgICAgICAgICAgICAgICAgYXV0byBqdW1wID0gaml0Lmp1bXAoKTsKLSAgICAgICAg
ICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
Tm9QdHJUYWc+KGN1cnJlbnRJc2xhbmQpLCBpc2xhbmRTaXplSW5CeXRlcywgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8Tm9QdHJUYWc+KGN1cnJlbnRJc2xhbmQpLCBpc2xhbmRTaXplSW5CeXRlcywgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6SnVtcElzbGFuZCwgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCwgZmFsc2Up
OwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsK
IAogICAgICAgICAgICAgICAgIC8vIFdlIHVzZSB0aGlzIHRvIGFwcGVhc2UgdGhlIGFzc2VydGlv
biB0aGF0IHdlJ3JlIG5vdCBmaW5hbGl6aW5nIG9uIGEgY29tcGlsZXIgdGhyZWFkLiBJbiB0aGlz
IHNpdHVhdGlvbiwgaXQncwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODAsNyArMzgwLDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOwogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogb3BfcmV0X2hhbmRsZXIiKTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTY0MSw3ICs2NDEsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgQ2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVy
KHZtKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5r
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGVyYXRpb25UaHJvdykpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBvcF90aHJvd19oYW5kbGVyIik7CiB9
CkBAIC0xMTk3LDcgKzExOTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJCiAjZW5kaWYKICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Cisg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRp
b25Xcml0ZUJhcnJpZXJDYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlv
bldyaXRlQmFycmllclNsb3dQYXRoKSk7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKE9w
dGlvbnM6OnVzZURGR0pJVCgpKQpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogI2VuZGlmCiAgICAgaml0LnJldCgpOwogCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNo
QnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvbkhhbmRsZVRyYXBzKSk7CiAgICAgYXV0byBoYW5kbGVyID0gdm0uaml0U3R1YnMtPmV4aXN0
aW5nQ1RJU3R1Yihwb3BUaHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJh
dG9yLCBOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9u
Q2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJu
aW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3df
b3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9D
VElfVEhVTktTKQpAQCAtMjY3LDcgKzI2Nyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSkkKICAgICAvLyBvZiByZXR1cm5pbmcgdG8gdGhlIGNsaWVudCB0byBjYWxs
IGl0LgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
SklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19vcF94eHhfcHJpdmF0ZV9uYW1lX3ByZXBh
cmVDYWxsIik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC02Nzks
NyArNjc5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCiAgICAgaml0LnJldCgp
OwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX3B1dF94eHhfcHJlcGFyZUNhbGwiKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTc4Myw3ICs3ODMsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGll
bnQgdG8gY2FsbCBpdC4KICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Cisg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZl
cjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfcHV0X3B1dF9wcml2
YXRlX25hbWVfcHJlcGFyZUNhbGwiKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RI
VU5LUykKQEAgLTkzOSw3ICs5MzksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4K
ICAgICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0
cmFDVElUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRo
dW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNsb3dfb3BfZGVsX2J5X2lkX3ByZXBhcmVDYWxsIik7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCkBAIC0xMDQ5LDcgKzEwNDksNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgLy8gb2YgcmV0
dXJuaW5nIHRvIHRoZSBjbGllbnQgdG8gY2FsbCBpdC4KICAgICBqaXQucmV0KCk7CiAKLSAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQmFzZWxpbmU6IHNs
b3dfb3BfZGVsX2J5X3ZhbF9wcmVwYXJlQ2FsbCIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSQogICAgIC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRv
IGNhbGwgaXQuCiAgICAgaml0LnJldCgpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlBy
b2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkJhc2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF9wcmVwYXJl
Q2FsbCIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQpAQCAtMTM5Niw3
ICsxMzk2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAg
IC8vIG9mIHJldHVybmluZyB0byB0aGUgY2xpZW50IHRvIGNhbGwgaXQuCiAgICAgaml0LnJldCgp
OwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlu
a0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkJh
c2VsaW5lOiBzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfcHJlcGFyZUNhbGwiKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKQEAgLTE1MDQsNyArMTUwNCw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkKICAgICAvLyBvZiByZXR1cm5p
bmcgdG8gdGhlIGNsaWVudCB0byBjYWxsIGl0LgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2Zp
bGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTogc2xvd19v
cF9wdXRfYnlfaWRfcHJlcGFyZUNhbGwiKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJ
X1RIVU5LUykKQEAgLTE5MDMsNyArMTkwMyw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gSkkKICNlbmRpZgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRo
dW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBM
aW5rQnVmZmVyOjpQcm9maWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5r
KG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25HZXRGcm9t
U2NvcGUpKTsKICAgICBhdXRvIGhhbmRsZXIgPSB2bS5qaXRTdHVicy0+ZXhpc3RpbmdDVElTdHVi
KHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IsIE5vTG9j
a2luZ05lY2Vzc2FyeSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVjaywgQ29k
ZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSkkK
ICNlbmRpZgogICAgIGppdC5yZXQoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpFeHRyYUNUSVRodW5rKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25QdXRUb1Njb3BlKSk7CiAgICAgYXV0
byBoYW5kbGVyID0gdm0uaml0U3R1YnMtPmV4aXN0aW5nQ1RJU3R1Yihwb3BUaHVua1N0YWNrUHJl
c2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yLCBOb0xvY2tpbmdOZWNlc3NhcnkpOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoZXhjZXB0aW9uQ2hlY2ssIENvZGVMb2NhdGlvbkxhYmVsKGhh
bmRsZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TbG93UGF0aENhbGwuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDcgKzg2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSQogCiAg
ICAgYXV0byBoYW5kbGVyID0gdm0uaml0U3R1YnMtPmV4aXN0aW5nQ1RJU3R1Yihwb3BUaHVua1N0
YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yLCBOb0xvY2tpbmdOZWNlc3Nh
cnkpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmsp
OwogICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihzbG93UGF0aEZ1bmN0aW9uKSk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhleGNlcHRpb25DaGVj
aywgQ29kZUxvY2F0aW9uTGFiZWwoaGFuZGxlci5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJT
bG93UGF0aENhbGwiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcg
KzE1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmaW5hbGl6ZShNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SklUVGh1bmtQdHJUYWc+IGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnRoaXMsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgICAgICAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdGhpcywgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpTcGVjaWFsaXplZFRodW5rKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWls
dXJlcywgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KGZhbGxiYWNrKSk7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7IGkrKykKICAg
ICAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3QsIG1fY2FsbHNb
aV0uc2Vjb25kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAJKHJldmlzaW9uIDI3NzkyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhCiAKICAgICBqaXQuanVtcFRv
RXhjZXB0aW9uSGFuZGxlcih2bSk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6RXh0cmFDVElUaHVuayk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb24sIEZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcikp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywg
ImhhbmRsZUV4Y2VwdGlvbiIpOwogfQpAQCAtNzIsNyArNzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhCiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlv
biA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0pOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJ
VGh1bmspOwogICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uLCBGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXJGcm9tQ2FsbGVyRnJh
bWUpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2siKTsKIH0KQEAgLTg5LDcg
Kzg5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwbwogCiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIGNvbnRpbnVhdGlvbiA9IGppdC5qdW1wKCk7CiAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6RXh0cmFDVElUaHVuayk7CiAgICAgYXV0byBoYW5k
bGVyID0gdm0uaml0U3R1YnMtPmV4aXN0aW5nQ1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0
b3IsIE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaGFuZGxlcik7CiAg
ICAgcGF0Y2hCdWZmZXIubGluayhjb250aW51YXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKGhhbmRs
ZXIucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaAogICAgIH0KICNlbmRpZgogCi0gICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkV4dHJhQ1RJVGh1bmspOwogICAgIHBhdGNo
QnVmZmVyLmxpbmsoaGFuZGxlRXhjZXB0aW9uLCBDb2RlTG9jYXRpb25MYWJlbCh2bS5qaXRTdHVi
cy0+ZXhpc3RpbmdDVElTdHViKGhhbmRsZXJHZW5lcmF0b3IsIE5vTG9ja2luZ05lY2Vzc2FyeSku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiQ2hlY2tFeGNlcHRpb24iKTsKIH0KQEAgLTMzMyw3
ICszMzMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUCiAgICAg
Ly8gSGVyZSB3ZSBkb24ndCBrbm93IGFueXRoaW5nLCBzbyByZXZlcnQgdG8gdGhlIGZ1bGwgc2xv
dyBwYXRoLgogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvblZpcnR1YWxDYWxsKTsK
IAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpWaXJ0dWFsVGh1bmspOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRp
bmVQdHJUYWcsCiAgICAgICAgICJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCkBAIC0xMzcy
LDcgKzEzNzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvCiAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogICAgIAotICAg
IExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6Qm91bmRGdW5jdGlvblRodW5rKTsKICAgICBs
aW5rQnVmZmVyLmxpbmsobm9Db2RlLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4o
dm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncyh2bSkpKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERSgKICAgICAgICAgbGlua0J1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJTcGVjaWFsaXplZCB0aHVuayBmb3IgYm91bmQgZnVuY3Rpb24gY2FsbHMgd2l0aCBubyBh
cmd1bWVudHMiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7CiAgICAgaml0LmZhckp1bXAo
c2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpMTEludFRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgdGFnLCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCkBAIC0xMTUsNyArMTE1
LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYQogICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOwogICAg
IGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKLSAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpU
aHVuayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwg
TGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJvbG9ndWUgdGh1bmsiLCB0
aHVua0tpbmQpOwogfQogCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjx0YWc+IGdlbmVyYQogICAgIEpTSW50ZXJmYWNlSklUIGppdDsKICAgICBhc3NlcnRJ
c1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOwogICAgIGppdC5mYXJKdW1wKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRpb25QdHJUYWcpOwotICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKICAgICByZXR1cm4g
RklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcmV0dXJuIHBvaW50IHRo
dW5rIiwgdGh1bmtLaW5kKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXQKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7CiAgICAgICAgIGppdC5yZXQoKTsKIAotICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7Cisg
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwogICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLCAiTExJbnQ6OmdldEhvc3RD
YWxsUmV0dXJuVmFsdWUgdGh1bmsiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CkBA
IC0zNTcsNyArMzU3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
cgogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BS
SW5mbzo6cmVnVDMpOwogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25Q
dHJUYWcpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmsp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKIH0KIApAQCAtMzY5LDcg
KzM2OSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86Ondh
c21TY3JhdGNoR1BSMSk7CiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIx
LCBPcGVyYXRpb25QdHJUYWcpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OkxMSW50VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUp
OwogfQogCkBAIC0zODEsNyArMzgxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0cgogICAgIGppdC52YWxpZGF0ZVVudGFnZ2VkUHRyKEFSTTY0UmVnaXN0ZXJzOjps
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdU
MCwgdGFnKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5r
KTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnLCAiTExJbnQgdGFpbCBjYWxsIGdhdGUgdGh1bmsiKTsKIH0KIApAQCAtMzk0LDcgKzM5
NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKIAogICAgICAg
ICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOwogCi0g
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5IHRodW5rIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwpAQCAtNDEwLDcgKzQxMCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwog
ICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcp
OwogCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQs
IExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVu
ayk7CiAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImVudHJ5IE9TUiBlbnRyeSB0aHVuayIpKTsKICAgICB9
KTsKICAgICByZXR1cm4gY29kZVJlZjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJl
c3MoKTsKICAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNt
RW50cnlQdHJUYWcpOwogCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1
ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmls
ZTo6TExJbnRUaHVuayk7CiAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIndhc20gT1NSIGVudHJ5IHRodW5r
IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKIAogICAgICAgICBqaXQuZmFy
SnVtcChHUFJJbmZvOjpyZWdUMCwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAKLSAgICAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6
UHJvZmlsZTo6VGh1bmspOworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CkBAIC00NTYsNyArNDU2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0cgogCiAgICAgICAgIGppdC5yZXQoKTsKIAotICAgICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxl
OjpUaHVuayk7CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50VGh1bmspOwogICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJyZXR1cm5Gcm9tTExJbnQgdGh1bmsiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVS
ZWY7CkBAIC00NzIsNyArNDcyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0cgogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVy
YXRpb25QdHJUYWcpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OkxMSW50
VGh1bmspOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsiKTsKIH0KIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHIKICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQu
ZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKIAotICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6
OlRodW5rKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpMTEludFRodW5rKTsKICAgICByZXR1cm4gRklOQUxJWkVf
Q09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsK
IH0KIApAQCAtNTAyLDcgKzUwMiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHIKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewogICAgICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogICAgICAgICBKU0NfSklUX0NBR0VfQ09NUElMRV9JTVBMKGppdCk7Ci0g
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtC
dWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6TExJbnRUaHVuayk7CiAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgImppdENhZ2VQdHIgdGh1bmsiKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTcsNiArMTkxNyw3IEBAIHN0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW8KIHN0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRHVtcENlbGwpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25JbmRleGluZ01vZGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25JbmxpbmVDYXBhY2l0eSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihmdW5jdGlvbkNsZWFyTGlua0J1ZmZlclN0YXRzKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTGlua0J1ZmZlclN0YXRzKTsKIHN0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVmFsdWUpOwogc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25HZXRQSUQpOwpAQCAtMjUxOCw2ICsyNTE5LDE3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbklubGluZUMKICAgICByZXR1cm4gZW5jb2Rl
ZEpTVW5kZWZpbmVkKCk7CiB9CiAKKy8vIENsZWFycyB0aGUgTGlua0J1ZmZlciBwcm9maWxlIHN0
YXRpc3RpY3MuCisvLyBVc2FnZTogJHZtLmNsZWFyTGlua0J1ZmZlclN0YXRzKCkKK0pTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNsZWFyTGlua0J1ZmZlclN0YXRzLCAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKSkKK3sKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNj
b3BlOworI2lmIEVOQUJMRShBU1NFTUJMRVIpCisgICAgTGlua0J1ZmZlcjo6Y2xlYXJQcm9maWxl
U3RhdGlzdGljcygpOworI2VuZGlmCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKK30KKwogLy8gRHVtcHMgdGhlIExpbmtCdWZmZXIgcHJvZmlsZSBzdGF0aXN0aWNz
IGFzIGEgc3RyaW5nLgogLy8gVXNhZ2U6ICR2bS5wcmludCgkdm0ubGlua0J1ZmZlclN0YXRzKCkp
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25MaW5rQnVmZmVyU3RhdHMsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKQEAgLTM2MzYsNiArMzY0OCw3
IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiAgICAgYWRkRnVu
Y3Rpb24odm0sICJpbmRleGluZ01vZGUiLCBmdW5jdGlvbkluZGV4aW5nTW9kZSwgMSk7CiAgICAg
YWRkRnVuY3Rpb24odm0sICJpbmxpbmVDYXBhY2l0eSIsIGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHks
IDEpOworICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2xlYXJMaW5rQnVmZmVyU3RhdHMiLCBmdW5jdGlv
bkNsZWFyTGlua0J1ZmZlclN0YXRzLCAwKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImxpbmtCdWZm
ZXJTdGF0cyIsIGZ1bmN0aW9uTGlua0J1ZmZlclN0YXRzLCAwKTsKICAgICBhZGRGdW5jdGlvbih2
bSwgInZhbHVlIiwgZnVuY3Rpb25WYWx1ZSwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJnZXRw
aWQiLCBmdW5jdGlvbkdldFBJRCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyNzc5MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeQogICAgIGppdC5sb2Fk
UHRyKHNjcmF0Y2gsIHNjcmF0Y2gpOwogICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIFdhc21FbnRy
eVB0clRhZyk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpXYXNtVGh1bmssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYg
KFVOTElLRUxZKHBhdGNoQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoQmluZGluZ0ZhaWx1cmU6Ok91dE9mTWVtb3J5KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJKHJldmlzaW9uIDI3Nzky
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gdGgKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRXhjZXB0
aW9uSGFuZGxlclB0clRhZyk7CiAgICAgaml0LmJyZWFrcG9pbnQoKTsgLy8gV2Ugc2hvdWxkIG5v
dCByZWFjaCB0aGlzLgogCi0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpXYXNtVGh1
bmspOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKSk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX1dB
U01fQ09ERShsaW5rQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlRocm93IGV4Y2VwdGlvbiBmcm9t
IFdhc20iKTsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiB0aAogICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
LXN0YWNrU3BhY2UpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oRXhjZXB0aW9uVHlwZTo6U3RhY2tPdmVyZmxv
dykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgIGF1dG8ganVtcFRvRXhjZXB0aW9uSGFu
ZGxlciA9IGppdC5qdW1wKCk7Ci0gICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpXYXNt
VGh1bmspOwogICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9FeGNlcHRpb25IYW5kbGVyLCBDb2Rl
TG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4oVGh1bmtzOjpzaW5nbGV0b24oKS5zdHViKGxv
Y2tlciwgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAg
ICByZXR1cm4gRklOQUxJWkVfV0FTTV9DT0RFKGxpbmtCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAi
VGhyb3cgc3RhY2sgb3ZlcmZsb3cgZnJvbSBXYXNtIik7CiB9CkBAIC05Myw3ICs5Myw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHIKIAogICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwogICAgIGppdC5yZXQoKTsKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAg
ICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6Oldhc21UaHVuayk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX1dBU01fQ09ERShsaW5r
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlRyaWdnZXIgT01HIGVudHJ5IHRpZXIgdXAiKTsKIH0K
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cAkocmV2aXNpb24gMjc3OTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyArNDE2LDcgQEAgRXhwZWN0ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeQogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpUaHVuaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpXYXNt
VGh1bmssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKFVOTElLRUxZKHBhdGNoQnVm
ZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
QmluZGluZ0ZhaWx1cmU6Ok91dE9mTWVtb3J5KTsKIAo=
</data>
<flag name="review"
          id="450646"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>