<?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>183159</bug_id>
          
          <creation_ts>2018-02-26 22:40:02 -0800</creation_ts>
          <short_desc>Modernize FINALIZE_CODE and peer macros to use __VA_ARGS__ arguments.</short_desc>
          <delta_ts>2018-02-27 10:10:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1402281</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-26 22:40:02 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402282</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-26 22:40:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/37930837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402286</commentid>
    <comment_count>2</comment_count>
      <attachid>334674</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-26 22:59:17 -0800</bug_when>
    <thetext>Created attachment 334674
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402287</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-26 23:02:14 -0800</bug_when>
    <thetext>Attachment 334674 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:313:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:318:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:322:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:337:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:340:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 5 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402288</commentid>
    <comment_count>4</comment_count>
      <attachid>334674</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-02-26 23:05:24 -0800</bug_when>
    <thetext>Comment on attachment 334674
proposed patch.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402357</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-27 10:10:07 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r229054:&lt;https://trac.webkit.org/r229054&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334674</attachid>
            <date>2018-02-26 22:59:17 -0800</date>
            <delta_ts>2018-02-26 23:05:24 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-183159.patch</filename>
            <type>text/plain</type>
            <size>52558</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE4LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b2Rlcm5pemUgRklOQUxJWkVfQ09ERSBhbmQgcGVlciBtYWNyb3MgdG8gdXNlIF9fVkFfQVJHU19f
IGFyZ3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzE1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc5MzA4Mzc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1
ZmZlci5oOgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6
OmNvbXBpbGUpOgorICAgICAgICAqIGIzL0IzQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojpjb21waWxlKToKKyAgICAgICAgKiBiMy9haXIvdGVzdGFpci5jcHA6CisgICAgICAgICogYjMv
dGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RFbnRyeVN3aXRjaFNpbXBsZSk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0RW50cnlTd2l0Y2hOb0VudHJ5U3dpdGNoKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RFbnRyeVN3aXRjaFdpdGhDb21tb25QYXRocyk6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHNBbmROb25Ucml2aWFsRW50cnlwb2lu
dCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0RW50cnlTd2l0Y2hMb29wKToKKyAgICAgICAgKiBi
eXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpsaW5rQ29kZUlubGluZSk6
CisgICAgICAgIChKU0M6OklubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR0pJVEZpbmFsaXplci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SklURmluYWxpemVyOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZU9T
UkV4aXQpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6
Om9zckV4aXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5hbGl6ZUNvbW1vbik6CisgICAgICAgICogZnRsL0ZU
TExhenlTbG93UGF0aC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TGF6eVNsb3dQYXRoOjpnZW5l
cmF0ZSk6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpGVEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHA6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAo
SlNDOjppc1Byb2ZpbGVFbXB0eSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0
dWJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRTdHViUm91dGluZS5oOgorICAgICAgICAq
IGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6Cisg
ICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lh
bGl6ZWRUaHVua0pJVDo6ZmluYWxpemUpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6bGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6dmly
dHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6YXJpdHlGaXh1cEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OnVucmVhY2hhYmxl
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgICogd2FzbS9XYXNtQkJR
UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBsZXRlKToKKyAgICAg
ICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvV2Fz
bSk6CisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ok9NR1BsYW46OndvcmspOgorICAgICAgICAqIHdhc20vV2FzbVRodW5rcy5jcHA6CisgICAgICAg
IChKU0M6Oldhc206OnRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6Oldhc206OnRocm93U3RhY2tPdmVyZmxvd0Zyb21XYXNtVGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpXYXNtOjp0cmlnZ2VyT01HVGllclVwVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpoYW5k
bGVCYWRJNjRVc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6CisgICAgICAgICog
eWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29t
cGlsZSk6CisKIDIwMTgtMDItMjYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgdmFsaWRhdGVTdGFja0FjY2VzcyBzaG91bGQgbm90IHZhbGlkYXRlIGlmIHRoZSBv
ZmZzZXQgaXMgd2l0aGluIHRoZSBzdGFjayBib3VuZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMwNywxOSArMzA3LDE5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRU
YXNrPHZvaWQoTGlua0J1ZmZlciYpPj4+IG1fbGlua1Rhc2tzOwogfTsKIAotI2RlZmluZSBGSU5B
TElaRV9DT0RFX0lGKGNvbmRpdGlvbiwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1
bWVudHNGb3JIZWFkaW5nKSAgXAorI2RlZmluZSBGSU5BTElaRV9DT0RFX0lGKGNvbmRpdGlvbiwg
bGlua0J1ZmZlclJlZmVyZW5jZSwgLi4uKSAgXAogICAgIChVTkxJS0VMWSgoY29uZGl0aW9uKSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICA/ICgo
bGlua0J1ZmZlclJlZmVyZW5jZSkuZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5IGRhdGFMb2dG
QXJndW1lbnRzRm9ySGVhZGluZykgXAotICAgICA6IChsaW5rQnVmZmVyUmVmZXJlbmNlKS5maW5h
bGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKSkKKyAgICAgICAgPyAobGlua0J1ZmZlclJlZmVy
ZW5jZSkuZmluYWxpemVDb2RlV2l0aERpc2Fzc2VtYmx5KF9fVkFfQVJHU19fKSBcCisgICAgICAg
IDogKGxpbmtCdWZmZXJSZWZlcmVuY2UpLmZpbmFsaXplQ29kZVdpdGhvdXREaXNhc3NlbWJseSgp
KQogCiBib29sIHNob3VsZER1bXBEaXNhc3NlbWJseUZvcihDb2RlQmxvY2sqKTsKIAotI2RlZmlu
ZSBGSU5BTElaRV9DT0RFX0ZPUihjb2RlQmxvY2ssIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFM
b2dGQXJndW1lbnRzRm9ySGVhZGluZykgIFwKLSAgICBGSU5BTElaRV9DT0RFX0lGKHNob3VsZER1
bXBEaXNhc3NlbWJseUZvcihjb2RlQmxvY2spIHx8IE9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHko
KSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1bWVudHNGb3JIZWFkaW5nKQorI2Rl
ZmluZSBGSU5BTElaRV9DT0RFX0ZPUihjb2RlQmxvY2ssIGxpbmtCdWZmZXJSZWZlcmVuY2UsIC4u
LikgIFwKKyAgICBGSU5BTElaRV9DT0RFX0lGKChzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY29k
ZUJsb2NrKSB8fCBPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkpLCBsaW5rQnVmZmVyUmVmZXJl
bmNlLCBfX1ZBX0FSR1NfXykKIAogLy8gVXNlIHRoaXMgdG8gZmluYWxpemUgY29kZSwgbGlrZSBz
bzoKIC8vCi0vLyBDb2RlUmVmIGNvZGUgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgibXkg
c3VwZXIgdGhpbmd5IG51bWJlciAlZCIsIG51bWJlcikpOworLy8gQ29kZVJlZiBjb2RlID0gRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCAibXkgc3VwZXIgdGhpbmd5IG51bWJlciAlZCIsIG51bWJl
cik7CiAvLwogLy8gV2hpY2gsIGluIGRpc2Fzc2VtYmx5IG1vZGUsIHdpbGwgcHJpbnQ6CiAvLwpA
QCAtMzMwLDE0ICszMzAsMTQgQEAgYm9vbCBzaG91bGREdW1wRGlzYXNzZW1ibHlGb3IoQ29kZUJs
b2NrKgogLy8KIC8vIC4uLiBhbmQgc28gb24uCiAvLwotLy8gTm90ZSB0aGF0IHRoZSBkYXRhTG9n
RkFyZ3VtZW50c0ZvckhlYWRpbmcgYXJlIG9ubHkgZXZhbHVhdGVkIHdoZW4gZHVtcERpc2Fzc2Vt
Ymx5CisvLyBOb3RlIHRoYXQgdGhlIGZvcm1hdCBzdHJpbmcgYW5kIHByaW50IGFyZ3VtZW50cyBh
cmUgb25seSBldmFsdWF0ZWQgd2hlbiBkdW1wRGlzYXNzZW1ibHkKIC8vIGlzIHRydWUsIHNvIHlv
dSBjYW4gaGlkZSBleHBlbnNpdmUgZGlzYXNzZW1ibHktb25seSBjb21wdXRhdGlvbnMgaW5zaWRl
IHRoZXJlLgogCi0jZGVmaW5lIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0
YUxvZ0ZBcmd1bWVudHNGb3JIZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoSlNDOjpP
cHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkgfHwgSlNDOjpPcHRpb25zOjpkdW1wRGlzYXNzZW1i
bHkoKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1bWVudHNGb3JIZWFkaW5nKQor
I2RlZmluZSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXJSZWZlcmVuY2UsIC4uLikgIFwKKyAgICBG
SU5BTElaRV9DT0RFX0lGKChKU0M6Ok9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSB8fCBKU0M6
Ok9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgX19WQV9B
UkdTX18pCiAKLSNkZWZpbmUgRklOQUxJWkVfREZHX0NPREUobGlua0J1ZmZlclJlZmVyZW5jZSwg
ZGF0YUxvZ0ZBcmd1bWVudHNGb3JIZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoSlND
OjpPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkgfHwgSlNDOjpPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wREZHRGlzYXNzZW1ibHkoKSwgbGlua0J1ZmZlclJlZmVy
ZW5jZSwgZGF0YUxvZ0ZBcmd1bWVudHNGb3JIZWFkaW5nKQorI2RlZmluZSBGSU5BTElaRV9ERkdf
Q09ERShsaW5rQnVmZmVyUmVmZXJlbmNlLCAuLi4pICBcCisgICAgRklOQUxJWkVfQ09ERV9JRigo
SlNDOjpPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5KCkgfHwgSlNDOjpPcHRpb25zOjpkdW1wRGlz
YXNzZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wREZHRGlzYXNzZW1ibHkoKSksIGxpbmtCdWZmZXJS
ZWZlcmVuY2UsIF9fVkFfQVJHU19fKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHJldmlzaW9uIDIy
OTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE0OCw3ICsxNDgsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29tcGls
ZShHZW5lcmF0b3ImCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICBnZW5lcmF0ZShqaXQpOwog
ICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwotICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsICgidGVzdG1hc20gY29tcGlsYXRpb24iKSk7CisgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgInRlc3RtYXNtIGNvbXBpbGF0aW9uIik7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbXBpbGUuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OCw3
ICs0OCw3IEBAIENvbXBpbGF0aW9uIGNvbXBpbGUoUHJvY2VkdXJlJiBwcm9jKQogICAgIGdlbmVy
YXRlKHByb2MsIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgbnVsbHB0cik7
CiAKLSAgICByZXR1cm4gQ29tcGlsYXRpb24oRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIkIz
OjpDb21waWxhdGlvbiIpKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKKyAgICByZXR1cm4g
Q29tcGlsYXRpb24oRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAiQjM6OkNvbXBpbGF0aW9uIiks
IHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
MwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIyOTA1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzI5NCw3ICsxMzI5NCw3IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoU2ltcGxlKCkKICAgICBD
b2RlTG9jYXRpb25MYWJlbCBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9jLmVu
dHJ5cG9pbnRMYWJlbCgxKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWxUaHJlZSA9IGxp
bmtCdWZmZXIubG9jYXRpb25PZihwcm9jLmVudHJ5cG9pbnRMYWJlbCgyKSk7CiAgICAgCi0gICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
ICgidGVzdGIzIGNvbXBpbGF0aW9uIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2Rl
UmVmID0gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAidGVzdGIzIGNvbXBpbGF0aW9uIik7CiAg
ICAgCiAgICAgQ0hFQ0soaW52b2tlPGludD4obGFiZWxPbmUsIDEsIDIpID09IDMpOwogICAgIENI
RUNLKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxLCAyKSA9PSAtMSk7CkBAIC0xMzMyNyw3ICsxMzMy
Nyw3IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoTm9FbnRyeVN3aXRjaCgpCiAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgbGFiZWxUd28gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvYy5lbnRyeXBvaW50
TGFiZWwoMSkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsVGhyZWUgPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2YocHJvYy5lbnRyeXBvaW50TGFiZWwoMikpOwogICAgIAotICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoInRlc3Ri
MyBjb21waWxhdGlvbiIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiA9IEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgInRlc3RiMyBjb21waWxhdGlvbiIpOwogICAgIAogICAg
IENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsT25lLCAxLCAyKSwgMyk7CiAgICAgQ0hFQ0tfRVEo
aW52b2tlPGludD4obGFiZWxUd28sIDEsIDIpLCAzKTsKQEAgLTEzNDE0LDcgKzEzNDE0LDcgQEAg
dm9pZCB0ZXN0RW50cnlTd2l0Y2hXaXRoQ29tbW9uUGF0aHMoKQogICAgIENvZGVMb2NhdGlvbkxh
YmVsIGxhYmVsVHdvID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKHByb2MuZW50cnlwb2ludExhYmVs
KDEpKTsKICAgICBDb2RlTG9jYXRpb25MYWJlbCBsYWJlbFRocmVlID0gbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKHByb2MuZW50cnlwb2ludExhYmVsKDIpKTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJ0ZXN0YjMgY29t
cGlsYXRpb24iKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTEla
RV9DT0RFKGxpbmtCdWZmZXIsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKICAgICAKICAgICBDSEVD
S19FUShpbnZva2U8aW50PihsYWJlbE9uZSwgMSwgMiwgMTApLCAzKTsKICAgICBDSEVDS19FUShp
bnZva2U8aW50PihsYWJlbFR3bywgMSwgMiwgMTApLCAtMSk7CkBAIC0xMzUzMSw3ICsxMzUzMSw3
IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoV2l0aENvbW1vblBhdGhzQW5kTm8KICAgICBDb2RlTG9j
YXRpb25MYWJlbCBsYWJlbFR3byA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihwcm9jLmVudHJ5cG9p
bnRMYWJlbCgxKSk7CiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgbGFiZWxUaHJlZSA9IGxpbmtCdWZm
ZXIubG9jYXRpb25PZihwcm9jLmVudHJ5cG9pbnRMYWJlbCgyKSk7CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGNvZGVSZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgidGVz
dGIzIGNvbXBpbGF0aW9uIikpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmID0g
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAidGVzdGIzIGNvbXBpbGF0aW9uIik7CiAgICAgCiAg
ICAgQ0hFQ0tfRVEoaW52b2tlPGludD4obGFiZWxPbmUsIDEsIDIsIDEwLCBmYWxzZSksIDMpOwog
ICAgIENIRUNLX0VRKGludm9rZTxpbnQ+KGxhYmVsVHdvLCAxLCAyLCAxMCwgZmFsc2UpLCAtMSk7
CkBAIC0xMzYwOCw3ICsxMzYwOCw3IEBAIHZvaWQgdGVzdEVudHJ5U3dpdGNoTG9vcCgpCiAgICAg
Q29kZUxvY2F0aW9uTGFiZWwgbGFiZWxPbmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YocHJvYy5l
bnRyeXBvaW50TGFiZWwoMCkpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsIGxhYmVsVHdvID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKHByb2MuZW50cnlwb2ludExhYmVsKDEpKTsKICAgICAKLSAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZiA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwg
KCJ0ZXN0YjMgY29tcGlsYXRpb24iKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVS
ZWYgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICJ0ZXN0YjMgY29tcGlsYXRpb24iKTsKIAog
ICAgIENIRUNLKGludm9rZTxpbnQ+KGxhYmVsT25lLCAwKSA9PSAxKTsKICAgICBDSEVDSyhpbnZv
a2U8aW50PihsYWJlbE9uZSwgNDIpID09IDQzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvdGVzdGFpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci90ZXN0YWlyLmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDcgKzkwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZQogICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkNvbXBpbGF0aW9uPigKLSAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAo
InRlc3RhaXIgY29tcGlsYXRpb24iKSksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7CisgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgInRlc3RhaXIgY29tcGlsYXRpb24iKSwgcHJv
Yy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lubGluZUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNSw3ICsx
MzUsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGxpbmtDb2RlSW5saW5lCiAgICAgICAg
IExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIHN0dWJJbmZvLnBhdGNoLnN0YXJ0LmRhdGFMb2Nh
dGlvbigpLCBzdHViSW5mby5wYXRjaC5pbmxpbmVTaXplLCBKSVRDb21waWxhdGlvbk11c3RTdWNj
ZWVkLCBuZWVkc0JyYW5jaENvbXBhY3Rpb24pOwogICAgICAgICBBU1NFUlQobGlua0J1ZmZlci5p
c1ZhbGlkKCkpOwogICAgICAgICBmdW5jdGlvbihsaW5rQnVmZmVyKTsKLSAgICAgICAgRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCAoIklubGluZUFjY2Vzc1R5cGU6ICclcyciLCBuYW1lKSk7Cisg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgIklubGluZUFjY2Vzc1R5cGU6ICclcyci
LCBuYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yOTAsNyArMjkwLDcg
QEAgdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoU3RydQogICAgIFJFTEVBU0Vf
QVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwg
dGFyZ2V0KTsKIAotICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJJbmxpbmVBY2Nlc3M6
IGxpbmtpbmcgY29uc3RhbnQganVtcCIpKTsKKyAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIs
ICJJbmxpbmVBY2Nlc3M6IGxpbmtpbmcgY29uc3RhbnQganVtcCIpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU2OSw3ICs1NjksNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNj
ZXNzCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZSA9IEZJTkFMSVpFX0NPREVfRk9S
KAogICAgICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsCi0gICAgICAgICgiJXMiLCB0b0NTdHJp
bmcoIkFjY2VzcyBzdHViIGZvciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmln
aW4sICIgd2l0aCByZXR1cm4gcG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChj
YXNlcykpLmRhdGEoKSkpOworICAgICAgICAiJXMiLCB0b0NTdHJpbmcoIkFjY2VzcyBzdHViIGZv
ciAiLCAqY29kZUJsb2NrLCAiICIsIHN0dWJJbmZvLmNvZGVPcmlnaW4sICIgd2l0aCByZXR1cm4g
cG9pbnQgIiwgc3VjY2Vzc0xhYmVsLCAiOiAiLCBsaXN0RHVtcChjYXNlcykpLmRhdGEoKSk7CiAK
ICAgICBib29sIGRvZXNDYWxscyA9IGZhbHNlOwogICAgIFZlY3RvcjxKU0NlbGwqPiBjZWxsc1Rv
TWFyazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBzaXplX3Qg
SklURmluYWxpemVyOjpjb2RlU2l6ZSgpCiBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQog
ewogICAgIG1faml0Q29kZS0+aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAgIEZJTkFMSVpFX0RG
R19DT0RFKCptX2xpbmtCdWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhD
b2RlQmxvY2tXaXRoSklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5k
YXRhKCkpKSwKKyAgICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgIkRGRyBK
SVQgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFuLmNv
ZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSkuZGF0YSgpKSwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCkpOwogICAgIAogICAgIG1fcGxhbi5jb2RlQmxvY2stPnNldEpJVENvZGUobV9q
aXRDb2RlLmNvcHlSZWYoKSk7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgSklURmluYWxpemVyOjpm
aW5hbGl6ZUZ1bmN0aW9uKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJpdHlDaGVj
ay5pc0VtcHR5VmFsdWUoKSk7CiAgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJlZigKLSAg
ICAgICAgRklOQUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9y
ICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJ
VENvZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAorICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgqbV9s
aW5rQnVmZmVyLCAiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRo
SklUVHlwZShtX3BsYW4uY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpLAogICAg
ICAgICBtX3dpdGhBcml0eUNoZWNrKTsKICAgICBtX3BsYW4uY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KG1faml0Q29kZS5jb3B5UmVmKCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA2OSwxMCArMTA2
OSwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6Y29tcGlsZU9TUkV4CiAgICAgICAg
IGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgICAgIHNob3VsZER1bXBE
aXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25zOjp2ZXJib3Nl
REZHT1NSRXhpdCgpLAogICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkRG
RyBPU1IgZXhpdCAjJXUgKCVzLCAlcykgZnJvbSAlcywgd2l0aCBvcGVyYW5kcyA9ICVzIiwKKyAg
ICAgICAgICAgICJERkcgT1NSIGV4aXQgIyV1ICglcywgJXMpIGZyb20gJXMsIHdpdGggb3BlcmFu
ZHMgPSAlcyIsCiAgICAgICAgICAgICAgICAgZXhpdEluZGV4LCB0b0NTdHJpbmcoZXhpdC5tX2Nv
ZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAgICAgICBleGl0S2luZFRvU3RyaW5nKGV4aXQu
bV9raW5kKSwgdG9DU3RyaW5nKCpjb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAgICAgICAgICB0
b0NTdHJpbmcoaWdub3JpbmdDb250ZXh0PER1bXBDb250ZXh0PihvcGVyYW5kcykpLmRhdGEoKSkp
OworICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhpZ25vcmluZ0NvbnRleHQ8RHVtcENvbnRleHQ+
KG9wZXJhbmRzKSkuZGF0YSgpKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoZXhpdC5jb2RlTG9jYXRpb25Gb3JSZXBhdGNoKGNvZGVCbG9jayksIENvZGVMb2NhdGlv
bkxhYmVsKGV4aXQubV9jb2RlLmNvZGUoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdFRodW5rR2VuZXJhCiAgICAgTWFjcm9Bc3NlbWJs
ZXIgaml0OwogICAgIGppdC5wcm9iZShPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCwgdm0pOwogICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkRGRyBPU1IgZXhpdCB0aHVuayIpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgIkRGRyBPU1IgZXhpdCB0aHVuayIp
OwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVua0dlbmVy
YXRvcihWTSogdm0pCkBAIC0xMDUsNyArMTA1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9z
ckV4aXRHZW5lcmF0aW9uVAogICAgIAogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxs
LCBPU1JFeGl0Ojpjb21waWxlT1NSRXhpdCk7CiAgICAgCi0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgiREZHIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CisgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICJERkcgT1NSIGV4aXQgZ2VuZXJhdGlv
biB0aHVuayIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRW50cnlUaHVua0dlbmVy
YXRvcihWTSogdm0pCkBAIC0xNDYsNyArMTQ2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG9z
ckVudHJ5VGh1bmtHZW5lcgogICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAiREZHIE9TUiBlbnRyeSB0aHVu
ayIpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03NiwxMyArNzYsMTMgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplQ29t
bW9uKCkKICAgICBqaXRDb2RlLT5pbml0aWFsaXplQjNDb2RlKAogICAgICAgICBGSU5BTElaRV9D
T0RFX0lGKAogICAgICAgICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqYjNDb2RlTGlua0J1ZmZlciwK
LSAgICAgICAgICAgICgiRlRMIEIzIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dp
dGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpKTsK
KyAgICAgICAgICAgICJGVEwgQjMgY29kZSBmb3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0
aEpJVFR5cGUobV9wbGFuLmNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpKSk7CiAK
ICAgICBpZiAoZW50cnlwb2ludExpbmtCdWZmZXIpIHsKICAgICAgICAgaml0Q29kZS0+aW5pdGlh
bGl6ZUFyaXR5Q2hlY2tFbnRyeXBvaW50KAogICAgICAgICAgICAgRklOQUxJWkVfQ09ERV9JRigK
ICAgICAgICAgICAgICAgICBkdW1wRGlzYXNzZW1ibHksICplbnRyeXBvaW50TGlua0J1ZmZlciwK
LSAgICAgICAgICAgICAgICAoIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdl
bmVyYXRlZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxh
bi5jb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKSk7CisgICAg
ICAgICAgICAgICAgIkZUTCBlbnRyeXBvaW50IHRodW5rIGZvciAlcyB3aXRoIEIzIGdlbmVyYXRl
ZCBjb2RlIGF0ICVwIiwgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2Rl
QmxvY2ssIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSwgZnVuY3Rpb24pKTsKICAgICB9CiAgICAg
CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSgqaml0Q29kZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMYXp5U2xvd1BhdGguY3BwCShyZXZpc2lvbiAy
MjkwNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExhenlTbG93UGF0aC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIExhenlTbG93UGF0aDo6Z2VuZXJhdGUo
Q29kZUJsb2NrKiBjCiAgICAgbGlua0J1ZmZlci5saW5rKHBhcmFtcy5kb25lSnVtcHMsIG1fZG9u
ZSk7CiAgICAgaWYgKG1fZXhjZXB0aW9uVGFyZ2V0KQogICAgICAgICBsaW5rQnVmZmVyLmxpbmso
ZXhjZXB0aW9uSnVtcHMsIG1fZXhjZXB0aW9uVGFyZ2V0KTsKLSAgICBtX3N0dWIgPSBGSU5BTEla
RV9DT0RFX0ZPUihjb2RlQmxvY2ssIGxpbmtCdWZmZXIsICgiTGF6eSBzbG93IHBhdGggY2FsbCBz
dHViIikpOworICAgIG1fc3R1YiA9IEZJTkFMSVpFX0NPREVfRk9SKGNvZGVCbG9jaywgbGlua0J1
ZmZlciwgIkxhenkgc2xvdyBwYXRoIGNhbGwgc3R1YiIpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJlcGF0Y2hKdW1wKG1fcGF0Y2hhYmxlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWwobV9zdHViLmNv
ZGUoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NS
RXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDk1LDEw
ICs0OTUsMTAgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgZXhpdC5tX2NvZGUgPSBG
SU5BTElaRV9DT0RFX0lGKAogICAgICAgICBzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRp
b25zOjp2ZXJib3NlT1NSKCkgfHwgT3B0aW9uczo6dmVyYm9zZUZUTE9TUkV4aXQoKSwKICAgICAg
ICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICgiRlRMIE9TUiBleGl0ICMldSAoJXMsICVzKSBmcm9t
ICVzLCB3aXRoIG9wZXJhbmRzID0gJXMiLAorICAgICAgICAiRlRMIE9TUiBleGl0ICMldSAoJXMs
ICVzKSBmcm9tICVzLCB3aXRoIG9wZXJhbmRzID0gJXMiLAogICAgICAgICAgICAgZXhpdElELCB0
b0NTdHJpbmcoZXhpdC5tX2NvZGVPcmlnaW4pLmRhdGEoKSwKICAgICAgICAgICAgIGV4aXRLaW5k
VG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0b0NTdHJpbmcoKmNvZGVCbG9jaykuZGF0YSgpLAotICAg
ICAgICAgICAgdG9DU3RyaW5nKGlnbm9yaW5nQ29udGV4dDxEdW1wQ29udGV4dD4oZXhpdC5tX2Rl
c2NyaXB0b3ItPm1fdmFsdWVzKSkuZGF0YSgpKQorICAgICAgICAgICAgdG9DU3RyaW5nKGlnbm9y
aW5nQ29udGV4dDxEdW1wQ29udGV4dD4oZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVzKSkuZGF0
YSgpCiAgICAgICAgICk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRo
dW5rcy5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyaWNHZW5lCiAgICAgCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcGF0Y2hCdWZmZXIubGluayhm
dW5jdGlvbkNhbGwsIGdlbmVyYXRpb25GdW5jdGlvbik7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsICgiJXMiLCBuYW1lKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsICIlcyIsIG5hbWUpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSogdm0pCkBAIC0yMjQsNyArMjI0LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHNsb3dQYXRoQ2FsbFRodW5rRwogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhjYWxsLCBGdW5jdGlvblB0cihrZXkuY2FsbFRhcmdldCgpKSk7Ci0gICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsICgiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIs
IHRvQ1N0cmluZyhrZXkpLmRhdGEoKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAiRlRMIHNsb3cgcGF0aCBjYWxsIHRodW5rIGZvciAlcyIsIHRvQ1N0cmluZyhrZXkp
LmRhdGEoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAkocmV2aXNp
b24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAwOSwgMjAxNSwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcwLDcgKzg3MCw3IEBAIENvbXBpbGF0aW9u
UmVzdWx0IEpJVDo6bGluaygpCiAgICAgCiAgICAgQ29kZVJlZiByZXN1bHQgPSBGSU5BTElaRV9D
T0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJCYXNlbGluZSBKSVQgY29kZSBm
b3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENv
ZGU6OkJhc2VsaW5lSklUKSkuZGF0YSgpKSk7CisgICAgICAgICJCYXNlbGluZSBKSVQgY29kZSBm
b3IgJXMiLCB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENv
ZGU6OkJhc2VsaW5lSklUKSkuZGF0YSgpKTsKICAgICAKICAgICBtX3ZtLT5tYWNoaW5lQ29kZUJ5
dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQtPmFkZCgKICAgICAgICAgc3RhdGljX2Nh
c3Q8ZG91YmxlPihyZXN1bHQuc2l6ZSgpKSAvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE1hdGhJQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTWF0aElDLmgJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUTWF0aElDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBtX2lubGluZVN0YXJ0LmRh
dGFMb2NhdGlvbigpLCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCwgbmVlZHNCcmFuY2hDb21wYWN0aW9uKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKICAgICAgICAgICAgIGxpbmtC
dWZmZXIubGluayhqdW1wLCBDb2RlTG9jYXRpb25MYWJlbChtX2NvZGUuY29kZSgpKSk7Ci0gICAg
ICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiSklUTWF0aElDOiBsaW5raW5nIGNv
bnN0YW50IGp1bXAgdG8gb3V0IG9mIGxpbmUgc3R1YiIpKTsKKyAgICAgICAgICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgIkpJVE1hdGhJQzogbGlua2luZyBjb25zdGFudCBqdW1wIHRvIG91
dCBvZiBsaW5lIHN0dWIiKTsKICAgICAgICAgfTsKIAogICAgICAgICBhdXRvIHJlcGxhY2VDYWxs
ID0gWyZdICgpIHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCdWZmZXIubGluayhqdW1wVG9Eb25lLCBkb25lTG9jYXRpb24oKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgbV9jb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb2RlQmxvY2ssIGxpbmtCdWZmZXIsICgiSklUTWF0aElDOiBnZW5lcmF0aW5n
IG91dCBvZiBsaW5lIGZhc3QgSUMgc25pcHBldCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVCbG9jaywgbGlua0J1ZmZlciwgIkpJVE1hdGhJQzogZ2VuZXJhdGluZyBvdXQgb2YgbGlu
ZSBmYXN0IElDIHNuaXBwZXQiKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoIWdlbmVyYXRp
b25TdGF0ZS5zaG91bGRTbG93UGF0aFJlcGF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIHdvbid0IG5lZWQgdG8gcmVnZW5lcmF0ZSwgc28gd2UgY2FuIHdpcmUgdGhlIHNsb3cg
cGF0aCBjYWxsCkBAIC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKHNsb3dQYXRoSnVtcExpc3QsIHNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKIAog
ICAgICAgICAgICAgbV9jb2RlID0gRklOQUxJWkVfQ09ERV9GT1IoCi0gICAgICAgICAgICAgICAg
Y29kZUJsb2NrLCBsaW5rQnVmZmVyLCAoIkpJVE1hdGhJQzogZ2VuZXJhdGluZyBvdXQgb2YgbGlu
ZSBJQyBzbmlwcGV0IikpOworICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgbGlua0J1ZmZlciwg
IkpJVE1hdGhJQzogZ2VuZXJhdGluZyBvdXQgb2YgbGluZSBJQyBzbmlwcGV0Iik7CiAgICAgICAg
IH0KIAogICAgICAgICBsaW5rSnVtcFRvT3V0T2ZMaW5lU25pcHBldCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjI5
MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
SGFzSW5kZXhlZFByb3BlcgogICAgIAogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5B
TElaRV9DT0RFX0ZPUl9TVFVCKAogICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsCi0g
ICAgICAgICgiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVy
biBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSk7CisgICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHVi
IGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgp
LCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBh
dGNoSnVtcChieVZhbEluZm8tPmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChieVZhbElu
Zm8tPnN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKHJldHVybkFk
ZHJlc3MpKSwgRnVuY3Rpb25QdHIob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lv
biAyMjkwNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVIYXNJbmRleGVkUHJvcGVyCiAgICAgCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJ
TkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwK
LSAgICAgICAgKCJCYXNlbGluZSBoYXNfaW5kZXhlZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0
dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpKTsKKyAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0
dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRh
KCksIHJldHVybkFkZHJlc3MudmFsdWUoKSk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFs
SW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbChNYWNyb0Fzc2VtYmxlckNvZGVQdHIocmV0dXJu
QWRkcmVzcykpLCBGdW5jdGlvblB0cihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmlj
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NzgsNyArMTc4LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQog
ICAgIGppdC5yZXQoKTsKICAgICAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJT
dHJpbmcgZ2V0X2J5X3ZhbCBzdHViIikpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCAiU3RyaW5nIGdldF9ieV92YWwgc3R1YiIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNp
b24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6
c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogICAgIGppdC5yZXQoKTsKICAgICAKICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTdHJpbmcgZ2V0X2J5X3ZhbCBzdHViIikpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAiU3RyaW5nIGdldF9ieV92YWwgc3R1YiIp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVHZXRCeVZhbChCeVZhbEluCiAgICAgCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJ
TkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwK
LSAgICAgICAgKCJCYXNlbGluZSBnZXRfYnlfdmFsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQg
JXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUo
KSkpOworICAgICAgICAiQmFzZWxpbmUgZ2V0X2J5X3ZhbCBzdHViIGZvciAlcywgcmV0dXJuIHBv
aW50ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZh
bHVlKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2Nh
dGlvbkNhbGwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25Q
dHIob3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKSk7CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeVZhbFdpdGhDYWNoCiAKICAgICBieVZhbEluZm8tPnN0
dWJSb3V0aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgbV9jb2RlQmxvY2ss
IHBhdGNoQnVmZmVyLAotICAgICAgICAoIkJhc2VsaW5lIGdldF9ieV92YWwgd2l0aCBjYWNoZWQg
cHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCBwcm9wZXJ0
eU5hbWUuaW1wbCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRh
KCksIHJldHVybkFkZHJlc3MudmFsdWUoKSkpOworICAgICAgICAiQmFzZWxpbmUgZ2V0X2J5X3Zh
bCB3aXRoIGNhY2hlZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCIsIHByb3BlcnR5TmFtZS5pbXBsKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9j
b2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbEluZm8t
PnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRj
aEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFsSW5m
by0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKQEAgLTEzNDksMTIgKzEzNDksMTIgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoQnlWYWxJbgogICAgIGlmICghaXNEaXJl
Y3QpIHsKICAgICAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9S
X1NUVUIoCiAgICAgICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAg
ICAoIkJhc2VsaW5lIHB1dF9ieV92YWwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5X3ZhbCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50
ICVwIiwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVl
KCkpOwogICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICBieVZhbEluZm8tPnN0dWJSb3V0
aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBw
YXRjaEJ1ZmZlciwKLSAgICAgICAgICAgICgiQmFzZWxpbmUgcHV0X2J5X3ZhbF9kaXJlY3Qgc3R1
YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEo
KSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7CisgICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5
X3ZhbF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9j
b2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICB9CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFsSW5mby0+YmFkVHlwZUp1bXAsIENvZGVMb2Nh
dGlvbkxhYmVsKGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbChNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIocmV0dXJuQWRkcmVzcykpLCBGdW5jdGlvblB0cihpc0RpcmVjdCA/IG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOwpAQCAt
MTM4NCw3ICsxMzg0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWxXaXRoQ2Fj
aAogCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIo
CiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwKLSAgICAgICAgKCJCYXNlbGluZSBw
dXRfYnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCBy
ZXR1cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHBy
b3BlcnR5TmFtZS5pbXBsKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2sp
LmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7CisgICAgICAgICJCYXNlbGluZSBwdXRf
YnlfdmFsJXMgd2l0aCBjYWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1
cm4gcG9pbnQgJXAiLCAocHV0S2luZCA9PSBEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3Bl
cnR5TmFtZS5pbXBsKCktPnV0ZjgoKS5kYXRhKCksIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRh
dGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0g
Z2VuLnN0dWJJbmZvKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJ
bmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKGJ5VmFsSW5mby0+c3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsOCArMTE0LDgg
QEAgcHJvdGVjdGVkOgogfTsKIAogLy8gSGVscGVyIGZvciB0aGUgY3JlYXRpb24gb2Ygc2ltcGxl
IHN0dWIgcm91dGluZXMgdGhhdCBuZWVkIG5vIGhlbHAgZnJvbSB0aGUgR0MuCi0jZGVmaW5lIEZJ
TkFMSVpFX0NPREVfRk9SX1NUVUIoY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgZGF0YUxvZ0ZBcmd1
bWVudHMpIFwKLSAgICAoYWRvcHRSZWYobmV3IEpJVFN0dWJSb3V0aW5lKEZJTkFMSVpFX0NPREVf
Rk9SKChjb2RlQmxvY2spLCAocGF0Y2hCdWZmZXIpLCBkYXRhTG9nRkFyZ3VtZW50cykpKSkKKyNk
ZWZpbmUgRklOQUxJWkVfQ09ERV9GT1JfU1RVQihjb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCAuLi4p
IFwKKyAgICAoYWRvcHRSZWYobmV3IEpJVFN0dWJSb3V0aW5lKEZJTkFMSVpFX0NPREVfRk9SKChj
b2RlQmxvY2spLCAocGF0Y2hCdWZmZXIpLCBfX1ZBX0FSR1NfXykpKSkKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEwNzksOSArMTA3OSw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2Fs
bCgKICAgICBhdXRvIHN0dWJSb3V0aW5lID0gYWRvcHRSZWYoKm5ldyBQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAgICAgICBjYWxs
ZXJDb2RlQmxvY2ssIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJQb2x5bW9ycGhpYyBjYWxs
IHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldHMgJXMiLAorICAgICAgICAgICAg
IlBvbHltb3JwaGljIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0cyAl
cyIsCiAgICAgICAgICAgICAgICAgaXNXZWJBc3NlbWJseSA/ICJXZWJBc3NlbWJseSIgOiB0b0NT
dHJpbmcoKmNhbGxlckNvZGVCbG9jaykuZGF0YSgpLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxv
Y2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAg
ICAgICAgIHRvQ1N0cmluZyhsaXN0RHVtcChjYWxsQ2FzZXMpKS5kYXRhKCkpKSwKKyAgICAgICAg
ICAgICAgICB0b0NTdHJpbmcobGlzdER1bXAoY2FsbENhc2VzKSkuZGF0YSgpKSwKICAgICAgICAg
dm0sIG93bmVyLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBjYWxsTGlua0luZm8sIGNhbGxDYXNlcywK
ICAgICAgICAgV1RGTW92ZShmYXN0Q291bnRzKSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDIyOTA1
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTcwLDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2ZhaWx1cmVzLCBDb2RlTG9jYXRpb25MYWJlbChmYWxs
YmFjaykpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FsbHMuc2l6
ZSgpOyBpKyspCiAgICAgICAgICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2NhbGxzW2ldLmZp
cnN0LCBtX2NhbGxzW2ldLnNlY29uZCk7Ci0gICAgICAgICAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgKCJTcGVjaWFsaXplZCB0aHVuayBmb3IgJXMiLCB0aHVua0tpbmQpKTsK
KyAgICAgICAgICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAiU3BlY2lhbGl6
ZWQgdGh1bmsgZm9yICVzIiwgdGh1bmtLaW5kKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFz
c3VtZXMgdGhhdCB0aGUgdGFyZ2V0IGZ1bmN0aW9uIHVzZXMgZnBSZWdpc3RlcjAgYXMgdGhlIGZp
cnN0IGFyZ3VtZW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbQogICAgIGppdC5qdW1wVG9F
eGNlcHRpb25IYW5kbGVyKCp2bSk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
KCJUaHJvdyBleGNlcHRpb24gZnJvbSBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwg
c2xvdyBwYXRoIHRodW5rIik7CiB9CiAKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKApAQCAtMTQx
LDcgKzE0MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXIKICAg
ICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2FsbCk7CiAgICAgCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsK
KyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgIkxpbmsgY2FsbCBzbG93IHBh
dGggdGh1bmsiKTsKIH0KIAogLy8gRm9yIGNsb3N1cmUgb3B0aW1pemF0aW9ucywgd2Ugb25seSBp
bmNsdWRlIGNhbGxzLCBzaW5jZSBpZiB5b3UncmUgdXNpbmcgY2xvc3VyZXMgZm9yCkBAIC0xNTMs
NyArMTUzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtQb2x5bW9ycGhpY0NhbAogICAg
IHNsb3dQYXRoRm9yKGppdCwgdm0sIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGwpOwogICAg
IAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgcG9seW1vcnBoaWMgY2Fs
bCBzbG93IHBhdGggdGh1bmsiKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsICJMaW5rIHBvbHltb3JwaGljIGNhbGwgc2xvdyBwYXRoIHRodW5rIik7CiB9CiAKIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1lZ2Ftb3JwaGljIHZpcnR1YWwg
Y2FsbCB2cy4gYSBzbG93CkBAIC0yNDIsOCArMjQyLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxUaHVua0ZvcihWTQogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1
ZmZlciwKLSAgICAgICAgKCJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCi0gICAgICAgIGNh
bGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpSZWd1bGFyID8gImNhbGwiIDogY2Fs
bExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyAidGFpbCBjYWxsIiA6ICJj
b25zdHJ1Y3QiKSk7CisgICAgICAgICJWaXJ0dWFsICVzIHNsb3cgcGF0aCB0aHVuayIsCisgICAg
ICAgIGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpSZWd1bGFyID8gImNhbGwi
IDogY2FsbExpbmtJbmZvLmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyAidGFpbCBjYWxs
IiA6ICJjb25zdHJ1Y3QiKTsKIH0KIAogZW51bSBUaHVua0VudHJ5VHlwZSB7IEVudGVyVmlhQ2Fs
bCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncywgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFn
cyB9OwpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0
aXZlRm9yR2UKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigqdm0pOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiJXMgJXMlcyB0cmFtcG9saW5lIiwgdGh1bmtGdW5j
dGlvblR5cGUgPT0gVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVuY3Rpb24gPyAibmF0aXZlIiA6ICJp
bnRlcm5hbCIsIGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXBXaXRoU2F2ZWRUYWdzID8gIlRhaWwg
V2l0aCBTYXZlZCBUYWdzICIgOiBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVk
VGFncyA/ICJUYWlsIFdpdGhvdXQgU2F2ZWQgVGFncyAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5k
YXRhKCkpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgIiVzICVzJXMg
dHJhbXBvbGluZSIsIHRodW5rRnVuY3Rpb25UeXBlID09IFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1
bmN0aW9uID8gIm5hdGl2ZSIgOiAiaW50ZXJuYWwiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1w
V2l0aFNhdmVkVGFncyA/ICJUYWlsIFdpdGggU2F2ZWQgVGFncyAiIDogZW50cnlUeXBlID09IEVu
dGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MgPyAiVGFpbCBXaXRob3V0IFNhdmVkIFRhZ3MgIiA6
ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IG5hdGl2ZUNhbGxHZW5lcmF0b3IoVk0qIHZtKQpAQCAtNTg0LDcgKzU4NCw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwR2VuZXJhdG8KICNlbmRpZgogCiAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICgiZml4dXAgYXJpdHkiKSk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsICJmaXh1cCBhcml0eSIpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdW5yZWFjaGFibGVHZW5lcmF0b3IoVk0qIHZtKQpAQCAtNTk0LDcgKzU5NCw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiB1bnJlYWNoYWJsZUdlbmVyYXQKICAgICBqaXQuYnJlYWtwb2lu
dCgpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgidW5yZWFjaGFibGUgdGh1
bmsiKSk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICJ1bnJlYWNoYWJs
ZSB0aHVuayIpOwogfQogCiBzdGF0aWMgdm9pZCBzdHJpbmdDaGFyTG9hZChTcGVjaWFsaXplZFRo
dW5rSklUJiBqaXQsIFZNKiB2bSkKQEAgLTExOTAsNyArMTE5MCw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBib3VuZFRoaXNOb0FyZ3NGdW4KICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2Nh
dGlvbkxhYmVsKHZtLT5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdz
KHZtKSkpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAotICAgICAgICBsaW5rQnVmZmVyLCAo
IlNwZWNpYWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3Vt
ZW50cyIpKTsKKyAgICAgICAgbGlua0J1ZmZlciwgIlNwZWNpYWxpemVkIHRodW5rIGZvciBib3Vu
ZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklU
OjpyZWdUMCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTExJbnQg
JXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgQkJR
UGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2MKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50
cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigK
LSAgICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIldlYkFzc2Vt
Ymx5IGZ1bmN0aW9uWyVpXSAlcyIsIGZ1bmN0aW9uSW5kZXgsIFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlSW5kZXgpLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKSwKKyAgICAg
ICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAiV2ViQXNzZW1ibHkgZnVu
Y3Rpb25bJWldICVzIiwgZnVuY3Rpb25JbmRleCwgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChz
aWduYXR1cmVJbmRleCkudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAg
ICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAg
ICAgICAgIH0KIApAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29u
c3QgQWJzdHJhY3RMb2MKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBlbWJl
ZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCi0gICAgICAgICAgICAgICAgICAgIEZJTkFM
SVpFX0NPREUobGlua0J1ZmZlciwgKCJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFsl
aV0gJXMiLCBmdW5jdGlvbkluZGV4LCBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZUluZGV4KS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKSksCisgICAgICAgICAgICAgICAgICAg
IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgIkVtYmVkZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBv
aW50WyVpXSAlcyIsIGZ1bmN0aW9uSW5kZXgsIFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2ln
bmF0dXJlSW5kZXgpLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAg
ICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miw3ICs4Miw3IEBA
IEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwgQmluZGluZ0YKICAgICBpZiAoVU5MSUtF
TFkocGF0Y2hCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnkpOwogCi0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiV2ViQXNzZW1ibHktPldlYkFzc2VtYmx5IGltcG9y
dFslaV0iLCBpbXBvcnRJbmRleCkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAiV2ViQXNzZW1ibHktPldlYkFzc2VtYmx5IGltcG9ydFslaV0iLCBpbXBvcnRJbmRleCk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgfQogCiAg
ICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBp
bGF0aW9uPigKLSAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIldlYkFzc2VtYmx5
IE9NRyBmdW5jdGlvblslaV0gJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpKSwKKyAg
ICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0aW9u
WyVpXSAlcyIsIG1fZnVuY3Rpb25JbmRleCwgU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWdu
YXR1cmVJbmRleCkudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1vdmUo
Y29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIAogICAgIG9tZ0VudHJ5cG9pbnQu
Y2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFdURk1vdmUocGFyc2VBbmRDb21waWxlUmVzdWx0LnZhbHVl
KCktPmVudHJ5cG9pbnQuY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGh1bmtzLmNwcAkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNyAr
NTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tCiAgICAgUkVM
RUFTRV9BU1NFUlQodGhyb3dXYXNtRXhjZXB0aW9uKTsKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5j
dGlvblB0cih0aHJvd1dhc21FeGNlcHRpb24pKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShs
aW5rQnVmZmVyLCAoIlRocm93IGV4Y2VwdGlvbiBmcm9tIFdhc20iKSk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgIlRocm93IGV4Y2VwdGlvbiBmcm9tIFdhc20iKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93U3RhY2tPdmVyZmxvd0Zyb21XYXNtVGh1bmtH
ZW5lcmF0b3IoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKQEAgLTczLDcgKzczLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93U3RhY2tPdmVyZmxvdwogICAgIGF1dG8ganVtcFRv
RXhjZXB0aW9uSGFuZGxlciA9IGppdC5qdW1wKCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcFRvRXhjZXB0
aW9uSGFuZGxlciwgQ29kZUxvY2F0aW9uTGFiZWwoVGh1bmtzOjpzaW5nbGV0b24oKS5zdHViKGxv
Y2tlciwgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKLSAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIlRocm93IHN0YWNrIG92ZXJmbG93
IGZyb20gV2FzbSIpKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAiVGhy
b3cgc3RhY2sgb3ZlcmZsb3cgZnJvbSBXYXNtIik7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB0cmlnZ2VyT01HVGllclVwVGh1bmtHZW5lcmF0b3IoY29uc3QgQWJzdHJhY3RMb2NrZXImKQpA
QCAtOTksNyArOTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdHJpZ2dlck9NR1RpZXJVcFRo
CiAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgaml0LnJldCgpOwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJUcmlnZ2VyIE9NRyB0aWVyIHVwIikpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICJUcmlnZ2VyIE9NRyB0aWVyIHVwIik7CiB9
CiAKIHN0YXRpYyBUaHVua3MqIHRodW5rczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzEx
Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWYsIEIKICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnkpOwog
CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCB0aHJvd0JhZEk2NCk7Ci0gICAgICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICgiV2ViQXNzZW1ibHktPkphdmFTY3JpcHQg
aW52YWxpZCBpNjQgdXNlIGluIGltcG9ydFslaV0iLCBpbXBvcnRJbmRleCkpOworICAgICAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAiV2ViQXNzZW1ibHktPkphdmFTY3JpcHQg
aW52YWxpZCBpNjQgdXNlIGluIGltcG9ydFslaV0iLCBpbXBvcnRJbmRleCk7CiAgICAgfQogICAg
IAogICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoKTsKQEAgLTM0Miw3ICszNDIsNyBA
QCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWYsIEJpbmRpbmdGCiAgICAgICAgIGxpbmtC
dWZmZXIubGluayhjYWxsLCBjYWxsRnVuYyk7CiAgICAgICAgIGxpbmtCdWZmZXIubGluayhleGNl
cHRpb25DYWxsLCBkb1Vud2luZGluZyk7CiAKLSAgICAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgKCJXZWJBc3NlbWJseS0+SmF2YVNjcmlwdCBpbXBvcnRbJWldICVzIiwgaW1w
b3J0SW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKSk7CisgICAgICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICJXZWJBc3NlbWJseS0+SmF2YVNjcmlw
dCBpbXBvcnRbJWldICVzIiwgaW1wb3J0SW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICAvLyBOb3RlOiBXZSBkb24ndCBuZWVkIHRvIHBlcmZv
cm0gYSBzdGFjayBjaGVjayBoZXJlIHNpbmNlIFdhc21CM0lSR2VuZXJhdG9yCkBAIC02NTQsNyAr
NjU0LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCaW5kaW5nRgogICAgIENv
ZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhPdGhlciA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2ZO
ZWFyQ2FsbChmYXN0Q2FsbCk7CiAgICAgY2FsbExpbmtJbmZvLT5zZXRDYWxsTG9jYXRpb25zKGNh
bGxSZXR1cm5Mb2NhdGlvbiwgaG90UGF0aEJlZ2luLCBob3RQYXRoT3RoZXIpOwogCi0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiV2ViQXNzZW1ibHktPkphdmFTY3JpcHQg
aW1wb3J0WyVpXSAlcyIsIGltcG9ydEluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAiV2ViQXNz
ZW1ibHktPkphdmFTY3JpcHQgaW1wb3J0WyVpXSAlcyIsIGltcG9ydEluZGV4LCBzaWduYXR1cmUu
dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiB9CiAKIHZvaWQqIHdhc21Ub0pTRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBJbnN0YW5jZSogd2Fz
bUluc3RhbmNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAJKHJl
dmlzaW9uIDIyOTA1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQ4OCwxNCArMzQ4OCwxNCBAQCBwdWJsaWM6CiAKICAgICAg
ICAgaWYgKGNvbXBpbGVNb2RlID09IE1hdGNoT25seSkgewogICAgICAgICAgICAgaWYgKG1fY2hh
clNpemUgPT0gQ2hhcjgpCi0gICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDhCaXRDb2RlTWF0
Y2hPbmx5KEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJNYXRjaC1vbmx5IDgtYml0IHJlZ3Vs
YXIgZXhwcmVzc2lvbiIpKSk7CisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNldDhCaXRDb2Rl
TWF0Y2hPbmx5KEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgIk1hdGNoLW9ubHkgOC1iaXQgcmVn
dWxhciBleHByZXNzaW9uIikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGpp
dE9iamVjdC5zZXQxNkJpdENvZGVNYXRjaE9ubHkoRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAo
Ik1hdGNoLW9ubHkgMTYtYml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKSk7CisgICAgICAgICAgICAg
ICAgaml0T2JqZWN0LnNldDE2Qml0Q29kZU1hdGNoT25seShGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsICJNYXRjaC1vbmx5IDE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkKLSAgICAgICAgICAg
ICAgICBqaXRPYmplY3Quc2V0OEJpdENvZGUoRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIjgt
Yml0IHJlZ3VsYXIgZXhwcmVzc2lvbiIpKSk7CisgICAgICAgICAgICAgICAgaml0T2JqZWN0LnNl
dDhCaXRDb2RlKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgIjgtYml0IHJlZ3VsYXIgZXhwcmVz
c2lvbiIpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0
MTZCaXRDb2RlKEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCIxNi1iaXQgcmVndWxhciBleHBy
ZXNzaW9uIikpKTsKKyAgICAgICAgICAgICAgICBqaXRPYmplY3Quc2V0MTZCaXRDb2RlKEZJTkFM
SVpFX0NPREUobGlua0J1ZmZlciwgIjE2LWJpdCByZWd1bGFyIGV4cHJlc3Npb24iKSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG1fZmFpbHVyZVJlYXNvbikKICAgICAgICAgICAgIGppdE9iamVj
dC5zZXRGYWxsQmFja1dpdGhGYWlsdXJlUmVhc29uKCptX2ZhaWx1cmVSZWFzb24pOwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjI5MDUyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDItMjYgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBGSU5BTElaRV9DT0RFIGFuZCBw
ZWVyIG1hY3JvcyB0byB1c2UgX19WQV9BUkdTX18gYXJndW1lbnRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMTU5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNzkzMDgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkIGJlY2F1c2UgdGhpcyBpcyBqdXN0IGEgcmVm
YWN0b3JpbmcgcGF0Y2guCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmNvbXBpbGUpOgorCiAyMDE4LTAyLTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlZCByZWZlcmVuY2VzIHRvIGZpbGVzIHRoYXQgd2VyZSByZW1v
dmVkIGluIHIyMjg5MTIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAyMjkwNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2Vs
ZWN0b3JDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDE0IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEyMzgsNyArMTIzOCw3IEBAIGlubGluZSBTZWxl
Y3RvckNvbXBpbGF0aW9uU3RhdHVzIFNlbGVjdG8KICNpZiBDU1NfU0VMRUNUT1JfSklUX0RFQlVH
R0lORwogICAgIGNvZGVSZWYgPSBsaW5rQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhEaXNhc3NlbWJs
eSgiQ1NTIFNlbGVjdG9yIEpJVCBmb3IgXCIlc1wiIiwgbV9vcmlnaW5hbFNlbGVjdG9yLT5zZWxl
Y3RvclRleHQoKS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCi0gICAgY29kZVJlZiA9IEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgKCJDU1MgU2VsZWN0b3IgSklUIikpOworICAgIGNvZGVSZWYgPSBG
SU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsICJDU1MgU2VsZWN0b3IgSklUIik7CiAjZW5kaWYKIAog
ICAgIGlmIChtX2Z1bmN0aW9uVHlwZSA9PSBGdW5jdGlvblR5cGU6OlNpbXBsZVNlbGVjdG9yQ2hl
Y2tlciB8fCBtX2Z1bmN0aW9uVHlwZSA9PSBGdW5jdGlvblR5cGU6OkNhbm5vdE1hdGNoQW55dGhp
bmcpCg==
</data>
<flag name="review"
          id="353402"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>