<?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>79469</bug_id>
          
          <creation_ts>2012-02-24 03:13:53 -0800</creation_ts>
          <short_desc>DFG should be able to handle variables getting captured</short_desc>
          <delta_ts>2012-02-24 13:32:05 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>564155</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-24 03:13:53 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564156</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-24 03:14:06 -0800</bug_when>
    <thetext>This is a prerequisite to supporting activations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564159</commentid>
    <comment_count>2</comment_count>
      <attachid>128699</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-24 03:19:43 -0800</bug_when>
    <thetext>Created attachment 128699
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564162</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 03:21:40 -0800</bug_when>
    <thetext>Attachment 128699 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGGraph.h:317:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 14 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>564528</commentid>
    <comment_count>4</comment_count>
      <attachid>128699</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-24 11:48:19 -0800</bug_when>
    <thetext>Comment on attachment 128699
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564594</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-24 13:32:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/108842</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128699</attachid>
            <date>2012-02-24 03:19:43 -0800</date>
            <delta_ts>2012-02-24 11:48:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>capturedvars_patch_1.diff</filename>
            <type>text/plain</type>
            <size>49888</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4NzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEyLTAyLTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB2YXJpYWJsZXMgZ2V0dGluZyBjYXB0dXJlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk0NjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1h
ZGUgY2FwdHVyZWQgdmFyaWFibGVzIHdvcmsgYnkgcGxhY2luZyBhIEZsdXNoIG9uIHRoZSBTZXRM
b2NhbCBhbmQKKyAgICAgICAgZm9yY2luZyB0aGUgZW1pc3Npb24gb2YgdGhlIEdldExvY2FsIGV2
ZW4gaWYgY29weSBwcm9wYWdhdGlvbiB0ZWxscyB1cworICAgICAgICB3aG8gaGFzIHRoZSB2YWx1
ZS4KKyAgICAgICAgCisgICAgICAgIENoYW5nZWQgdGhlIENGQSBhbmQgdmFyaW91cyBwcmVkaWN0
aW9uIGNvZGVzIHRvIHVuZGVyc3RhbmQgdGhhdCB3ZSBjYW4ndAorICAgICAgICByZWFsbHkgcHJv
dmUgYW55dGhpbmcgYWJvdXQgY2FwdHVyZWQgdmFyaWFibGVzLiBXZWxsLCB3ZSBjb3VsZCBpbiB0
aGUKKyAgICAgICAgZnV0dXJlIGJ5IGp1c3QgbG9va2luZyBhdCB3aGF0IHNpZGUgZWZmZWN0cyBh
cmUgaGFwcGVuaW5nLCBidXQgaW4gdGhpcworICAgICAgICBmaXJzdCBjdXQgd2UganVzdCBhc3N1
bWUgdGhhdCB3ZSBjYW4ndCByZWFzb24gYWJvdXQgY2FwdHVyZWQgdmFyaWFibGVzLgorICAgICAg
ICAKKyAgICAgICAgQWxzbyBhZGRlZCBhIG1vZGUgd2hlcmUgdGhlIERGRyBwcmV0ZW5kcyB0aGF0
IGFsbCB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50cworICAgICAgICBnb3QgY2FwdHVyZWQuIFVzZWQg
dGhpcyBtb2RlIHRvIGhhcmRlbiB0aGUgY29kZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMg
cGVyZm9ybWFuY2UgbmV1dHJhbC4gQ2FwdHVyaW5nIGFsbCB2YXJpYWJsZXMgaXMgYSBzbG93biBk
b3duLCBidXQKKyAgICAgICAgbm90IHRvbyBiaWcgb2Ygb25lLiBUaGlzIHNlZW1zIHRvIHByZWRp
Y3QgdGhhdCB3aGVuIHdlIGFkZCBhY3RpdmF0aW9uCisgICAgICAgIHN1cHBvcnQsIHRoZSBhbW91
bnQgb2Ygc3BlZWQgYmVuZWZpdCB3ZSdsbCBnZXQgZnJvbSBpbmNyZWFzZWQgY292ZXJhZ2UKKyAg
ICAgICAgd2lsbCBmYXIgb3V0d2VpZ2ggdGhlIHBlc3NpbWlzbSB0aGF0IHdlJ2xsIGhhdmUgdG8g
ZW5kdXJlIGZvciBjYXB0dXJlZAorICAgICAgICB2YXJpYWJsZXMuCisKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlVHlwZS5oOgorICAgICAgICAoSlNDOjpjb2RlVHlwZVRvU3RyaW5nKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6
ZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6bWVyZ2UpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpnZXRMb2NhbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnNldExvY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJndW1l
bnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXRBcmd1bWVudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoQXJndW1lbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnByb2Nlc3NQaGlTdGFjayk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAg
ICogZGZnL0RGR0NvbW1vbi5oOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjpuZWVkc0FjdGl2YXRpb24pOgorICAgICAgICAoR3JhcGgpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjphcmd1bWVudElzQ2FwdHVyZWQpOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjpsb2NhbElzQ2FwdHVyZWQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
Ojppc0NhcHR1cmVkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OnNob3VsZEdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlZh
bHVlU291cmNlOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChWYWx1
ZVNvdXJjZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25Q
aGFzZTo6cnVuKToKKwogMjAxMi0wMi0yNCAgSGFuIEhvam9uZyAgPGhvam9uZy5oYW5Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVzZWxlc3MganVtcCBpbnN0cnVjdGlvbnMgZm9yIHNo
b3J0IGNpcmN1aXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlw
ZS5oCShyZXZpc2lvbiAxMDg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDI4IEBACiAjaWZuZGVmIENv
ZGVUeXBlX2gKICNkZWZpbmUgQ29kZVR5cGVfaAogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENv
ZGUsIEZ1bmN0aW9uQ29kZSB9OwogCitpbmxpbmUgY29uc3QgY2hhciogY29kZVR5cGVUb1N0cmlu
ZyhDb2RlVHlwZSBjb2RlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGNvZGVUeXBlKSB7CisgICAgY2Fz
ZSBHbG9iYWxDb2RlOgorICAgICAgICByZXR1cm4gIkdsb2JhbENvZGUiOworICAgIGNhc2UgRXZh
bENvZGU6CisgICAgICAgIHJldHVybiAiRXZhbENvZGUiOworICAgIGNhc2UgRnVuY3Rpb25Db2Rl
OgorICAgICAgICByZXR1cm4gIkZ1bmN0aW9uQ29kZSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAorfSAv
LyBuYW1lc3BhY2UgSlNDCisKICNlbmRpZiAvLyBDb2RlVHlwZV9oCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTA4
NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMSBAQCB2b2lkIEFic3RyYWN0U3RhdGU6Omlu
aXRpYWxpemUoR3JhcGgmIGdyCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgaWYgKGdyYXBoLmFyZ3VtZW50SXNDYXB0dXJlZChpKSkgeworICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VUb3AoKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24gPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCk7CiAg
ICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJv
b3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTE0Myw2
ICsxNDgsMTEgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFr
ZVRvcCgpOwogICAgIH0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgaWYgKCFncmFwaC5sb2NhbElz
Q2FwdHVyZWQoaSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmxvY2FsKGkpLm1ha2VUb3AoKTsKKyAgICB9CiB9CiAKIGJvb2wgQWJzdHJhY3RTdGF0
ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU1vZGUgbWVyZ2VNb2RlKQpAQCAtMTY0LDE0ICsxNzQsMjgg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogI2lmIERGR19FTkFC
TEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
ICAgTWVyZ2luZyBzdGF0ZSBmb3IgYXJndW1lbnQgJXp1LlxuIiwgYXJndW1lbnQpOwogI2VuZGlm
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwoYmxvY2stPnZhbHVlc0F0
VGFpbC5hcmd1bWVudChhcmd1bWVudCksIG1fdmFyaWFibGVzLmFyZ3VtZW50KGFyZ3VtZW50KSwg
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBibG9jay0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50
KGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmFyZ3VtZW50SXNDYXB0dXJlZChh
cmd1bWVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzVG9wKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZVRvcCgpOworICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlU3RhdGVBdFRhaWwoZGVzdGlu
YXRpb24sIG1fdmFyaWFibGVzLmFyZ3VtZW50KGFyZ3VtZW50KSwgYmxvY2stPnZhcmlhYmxlc0F0
VGFpbC5hcmd1bWVudChhcmd1bWVudCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBm
b3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1i
ZXJPZkxvY2FscygpOyArK2xvY2FsKSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQogICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBNZXJnaW5nIHN0YXRlIGZv
ciBsb2NhbCAlenUuXG4iLCBsb2NhbCk7CiAjZW5kaWYKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VTdGF0ZUF0VGFpbChibG9jay0+dmFsdWVzQXRUYWlsLmxvY2FsKGxvY2FsKSwgbV92YXJp
YWJsZXMubG9jYWwobG9jYWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7
CisgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGJsb2NrLT52YWx1ZXNB
dFRhaWwubG9jYWwobG9jYWwpOworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubG9jYWxJc0NhcHR1
cmVkKGxvY2FsKSkgeworICAgICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNUb3AoKSkg
eworICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5tYWtlVG9wKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VTdGF0ZUF0VGFpbChkZXN0
aW5hdGlvbiwgbV92YXJpYWJsZXMubG9jYWwobG9jYWwpLCBibG9jay0+dmFyaWFibGVzQXRUYWls
LmxvY2FsKGxvY2FsKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0yMTYsMTEgKzI0MCwx
NyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vCiAgICAgfQogICAg
ICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkgPSBtX3ZhcmlhYmxlcy5vcGVyYW5kKG5vZGUubG9jYWwoKSk7CisgICAgICAgIGlmIChtX2dy
YXBoLmlzQ2FwdHVyZWQobm9kZS5sb2NhbCgpKSkKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5tYWtlVG9wKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KSA9IG1fdmFyaWFibGVzLm9wZXJhbmQobm9kZS5sb2NhbCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFNldExvY2FsOiB7CisgICAgICAgIGlmIChtX2dy
YXBoLmlzQ2FwdHVyZWQobm9kZS5sb2NhbCgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAKICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJs
ZUZvcm1hdCgpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQobm9kZS5sb2Nh
bCgpKS5zZXQoUHJlZGljdERvdWJsZSk7CkBAIC0xMDE2LDExICsxMDQ2LDI5IEBAIGlubGluZSBi
b29sIEFic3RyYWN0U3RhdGU6Om1lcmdlKEJhc2ljQmwKICAgICAKICAgICBib29sIGNoYW5nZWQg
PSBmYWxzZTsKICAgICAKLSAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwg
ZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpCi0g
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3ModG8tPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChhcmd1bWVudCksIGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChhcmd1
bWVudCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52YXJp
YWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICBmb3IgKHNpemVfdCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRz
KCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSB0
by0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKKyAgICAgICAgaWYgKG1fZ3JhcGgu
YXJndW1lbnRJc0NhcHR1cmVkKGFyZ3VtZW50KSkgeworICAgICAgICAgICAgaWYgKGRlc3RpbmF0
aW9uLmlzVG9wKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBkZXN0
aW5hdGlvbi5tYWtlVG9wKCk7CisgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VWYXJpYWJs
ZUJldHdlZW5CbG9ja3MoZGVzdGluYXRpb24sIGZyb20tPnZhbHVlc0F0VGFpbC5hcmd1bWVudChh
cmd1bWVudCksIHRvLT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpLCBmcm9tLT52
YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICB9CiAgICAgCi0gICAgZm9y
IChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkxvY2FscygpOyArK2xvY2FsKQotICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3
ZWVuQmxvY2tzKHRvLT52YWx1ZXNBdEhlYWQubG9jYWwobG9jYWwpLCBmcm9tLT52YWx1ZXNBdFRh
aWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKSwgZnJvbS0+
dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgZm9yIChzaXplX3QgbG9jYWwgPSAw
OyBsb2NhbCA8IGZyb20tPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyArK2xvY2Fs
KSB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gdG8tPnZhbHVlc0F0SGVh
ZC5sb2NhbChsb2NhbCk7CisgICAgICAgIGlmIChtX2dyYXBoLmxvY2FsSXNDYXB0dXJlZChsb2Nh
bCkpIHsKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5pc1RvcCgpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZVRvcCgpOworICAgICAg
ICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlVmFyaWFibGVCZXR3ZWVuQmxvY2tzKGRlc3RpbmF0aW9u
LCBmcm9tLT52YWx1ZXNBdFRhaWwubG9jYWwobG9jYWwpLCB0by0+dmFyaWFibGVzQXRIZWFkLmxv
Y2FsKGxvY2FsKSwgZnJvbS0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKSk7CisgICAgfQog
CiAgICAgaWYgKCF0by0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgY2hhbmdlZCA9IHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2
aXNpb24gMTA4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MywxMyArMTYzLDEzIEBAIHB1YmxpYzoKICAgICAv
LyB0aGF0IGJsb2NrIG11c3QgYmUgYWJzdHJhY3RseSBpbnRlcnByZXRlZCBhZ2Fpbi4gVGhpcyBh
bHNvIHNldHMKICAgICAvLyB0by0+Y2ZhU2hvdWxkUmV2aXNpdCB0byB0cnVlLCBpZiBpdCByZXR1
cm5zIHRydWUsIG9yIGlmIHRvIGhhcyBub3QgYmVlbgogICAgIC8vIHZpc2l0ZWQgeWV0LgotICAg
IHN0YXRpYyBib29sIG1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKTsKKyAg
ICBib29sIG1lcmdlKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKTsKICAgICAKICAg
ICAvLyBNZXJnZSB0aGUgYWJzdHJhY3Qgc3RhdGUgc3RvcmVkIGF0IHRoZSBibG9jaydzIHRhaWwg
aW50byBhbGwgb2YgaXRzCiAgICAgLy8gc3VjY2Vzc29ycy4gUmV0dXJucyB0cnVlIGlmIGFueSBv
ZiB0aGUgc3VjY2Vzc29ycycgc3RhdGVzIGNoYW5nZWQuIE5vdGUKICAgICAvLyB0aGF0IHRoaXMg
aXMgYXV0b21hdGljYWxseSBjYWxsZWQgaW4gZW5kQmFzaWNCbG9jaygpIGlmIE1lcmdlTW9kZSBp
cwogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgotICAgIHN0YXRpYyBib29sIG1lcmdlVG9TdWNj
ZXNzb3JzKEdyYXBoJiwgQmFzaWNCbG9jayopOworICAgIGJvb2wgbWVyZ2VUb1N1Y2Nlc3NvcnMo
R3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKEZJ
TEUqIG91dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NSwxNiArMTg1
LDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgLy8gVHdvIHBvc3NpYmlsaXRpZXM6IGVp
dGhlciB0aGUgYmxvY2sgd2FudHMgdGhlIGxvY2FsIHRvIGJlIGxpdmUKICAgICAgICAgICAgICAg
ICAvLyBidXQgaGFzIG5vdCBsb2FkZWQgaXRzIHZhbHVlLCBvciBpdCBoYXMgbG9hZGVkIGl0cyB2
YWx1ZSwgaW4KICAgICAgICAgICAgICAgICAvLyB3aGljaCBjYXNlIHdlJ3JlIGRvbmUuCi0gICAg
ICAgICAgICAgICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1fZ3JhcGhbbm9kZVB0ci0+Y2hpbGQxKCld
OworICAgICAgICAgICAgICAgIG5vZGVJbmRleCA9IG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCk7
CisgICAgICAgICAgICAgICAgTm9kZSYgZmx1c2hDaGlsZCA9IG1fZ3JhcGhbbm9kZUluZGV4XTsK
ICAgICAgICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCA9PSBQaGkpIHsKICAgICAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBmbHVzaENo
aWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgg
PSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZv
KHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVQdHItPmNoaWxkMSgpLmluZGV4KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFk
ZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBub2RlSW5kZXgp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5s
b2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5v
ZGVJbmRleDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbm9kZVB0ciA9ICZm
bHVzaENoaWxkOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NF
UlQoJm1fZ3JhcGhbbm9kZUluZGV4XSA9PSBub2RlUHRyKTsKICAgICAgICAgICAgIEFTU0VSVChu
b2RlUHRyLT5vcCAhPSBGbHVzaCk7CisKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmxvY2FsSXND
YXB0dXJlZChvcGVyYW5kKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHdpc2ggdG8gdXNlIHRo
ZSBzYW1lIHZhcmlhYmxlIGFjY2VzcyBkYXRhIGFzIHRoZSBwcmV2aW91cyBhY2Nlc3MsCisgICAg
ICAgICAgICAgICAgLy8gYnV0IGZvciBhbGwgb3RoZXIgcHVycG9zZXMgd2Ugd2FudCB0byBpc3N1
ZSBhIGxvYWQgc2luY2UgZm9yIGFsbCB3ZQorICAgICAgICAgICAgICAgIC8vIGtub3csIGF0IHRo
aXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24sIHRoZSBsb2NhbCBoYXMgYmVlbiBjbG9iYmVyZWQuCisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGxpbmsgdG8g
dGhlIFBoaSBub2RlLCBub3QgdG8gdGhlIEdldExvY2FsLgorICAgICAgICAgICAgICAgIGlmIChu
b2RlUHRyLT5vcCA9PSBHZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0g
bm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaW5qZWN0TGF6eU9wZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9j
YWwsIE9wSW5mbyhub2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3Ag
PT0gR2V0TG9jYWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAg
ICAgIEFTU0VSVChub2RlUHRyLT5vcCA9PSBTZXRMb2NhbCk7CkBAIC0yMTgsNyArMjM0LDExIEBA
IHByaXZhdGU6CiAgICAgfQogICAgIHZvaWQgc2V0TG9jYWwodW5zaWduZWQgb3BlcmFuZCwgTm9k
ZUluZGV4IHZhbHVlKQogICAgIHsKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0
VGFpbC5sb2NhbChvcGVyYW5kKSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyhuZXdWYXJp
YWJsZUFjY2Vzc0RhdGEob3BlcmFuZCkpLCB2YWx1ZSk7CisgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQp
OworICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChTZXRMb2NhbCwgT3BJ
bmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHZhbHVlKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2st
PnZhcmlhYmxlc0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKKyAgICAgICAgaWYg
KG1fZ3JhcGgubG9jYWxJc0NhcHR1cmVkKG9wZXJhbmQpKQorICAgICAgICAgICAgYWRkVG9HcmFw
aChGbHVzaCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCk7CiAgICAgfQog
CiAgICAgLy8gVXNlZCBpbiBpbXBsZW1lbnRpbmcgZ2V0L3NldCwgYWJvdmUsIHdoZXJlIHRoZSBv
cGVyYW5kIGlzIGFuIGFyZ3VtZW50LgpAQCAtMjI2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudCA9IG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQp
OwogICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7Ci0KKyAgICAgICAg
CiAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVz
QXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KTsKIAogICAgICAgICBpZiAobm9kZUluZGV4ICE9IE5v
Tm9kZSkgewpAQCAtMjM1LDE2ICsyNTUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAv
LyBUd28gcG9zc2liaWxpdGllczogZWl0aGVyIHRoZSBibG9jayB3YW50cyB0aGUgbG9jYWwgdG8g
YmUgbGl2ZQogICAgICAgICAgICAgICAgIC8vIGJ1dCBoYXMgbm90IGxvYWRlZCBpdHMgdmFsdWUs
IG9yIGl0IGhhcyBsb2FkZWQgaXRzIHZhbHVlLCBpbgogICAgICAgICAgICAgICAgIC8vIHdoaWNo
IGNhc2Ugd2UncmUgZG9uZS4KLSAgICAgICAgICAgICAgICBOb2RlJiBmbHVzaENoaWxkID0gbV9n
cmFwaFtub2RlUHRyLT5jaGlsZDEoKV07CisgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9k
ZVB0ci0+Y2hpbGQxKCkuaW5kZXgoKTsKKyAgICAgICAgICAgICAgICBOb2RlJiBmbHVzaENoaWxk
ID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChmbHVzaENoaWxkLm9w
ID09IFBoaSkgewogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kUHJlZGljdGlvbihhZGRU
b0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSwgbm9kZVB0ci0+Y2hp
bGQxKCkuaW5kZXgoKSkpOworICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RM
YXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxl
QWNjZXNzRGF0YSksIG5vZGVJbmRleCkpOwogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQpID0gbm9kZUluZGV4OwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBub2RlUHRyID0gJmZsdXNoQ2hpbGQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFTU0VSVCgmbV9ncmFwaFtub2RlSW5kZXhdID09IG5vZGVQdHIp
OwogICAgICAgICAgICAgQVNTRVJUKG5vZGVQdHItPm9wICE9IEZsdXNoKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IFNldEFyZ3VtZW50KSB7CkBAIC0yNTYs
NiArMjc4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZ3JhcGguYXJn
dW1lbnRJc0NhcHR1cmVkKGFyZ3VtZW50KSkgeworICAgICAgICAgICAgICAgIGlmIChub2RlUHRy
LT5vcCA9PSBHZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0
ci0+Y2hpbGQxKCkuaW5kZXgoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5qZWN0TGF6eU9w
ZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gR2V0TG9jYWwpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgIApAQCAtMjc4LDExICszMDYsMTUg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50ID0gb3BlcmFuZFRv
QXJndW1lbnQob3BlcmFuZCk7CiAgICAgICAgIEFTU0VSVChhcmd1bWVudCA8IG1fbnVtQXJndW1l
bnRzKTsKLQotICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50
KGFyZ3VtZW50KSA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9wSW5mbyhuZXdWYXJpYWJsZUFjY2Vz
c0RhdGEob3BlcmFuZCkpLCB2YWx1ZSk7CisgICAgICAgIAorICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5k
KTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgoU2V0TG9jYWwsIE9w
SW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CisgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZUluZGV4OworICAgICAg
ICBpZiAobV9ncmFwaC5hcmd1bWVudElzQ2FwdHVyZWQoYXJndW1lbnQpKQorICAgICAgICAgICAg
YWRkVG9HcmFwaChGbHVzaCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgZmx1c2goaW50IG9wZXJhbmQpCisgICAgdm9pZCBmbHVz
aEFyZ3VtZW50KGludCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGNoZWNrIGlmIHRoZSBzYW1lIG9wZXJhbmQgaGFkIGFscmVhZHkgYmVlbiBmbHVzaGVkIHRv
CiAgICAgICAgIC8vIHNvbWUgb3RoZXIgbG9jYWwgdmFyaWFibGUuCkBAIC0zMDgsNyArMzQwLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZS5jaGlsZDEoKS5p
bmRleCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlSW5k
ZXhdLm9wICE9IEZsdXNoKTsKLSAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IEVtaXQgYSBGbHVzaCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgd2UgYWxyZWFkeSBmbHVzaGVkIGl0
LgorICAgICAgICAgICAgLy8gVGhpcyBnaXZlcyB1cyBndWlkYW5jZSB0byBzZWUgdGhhdCB0aGUg
dmFyaWFibGUgYWxzbyBuZWVkcyB0byBiZSBmbHVzaGVkCisgICAgICAgICAgICAvLyBmb3IgYXJn
dW1lbnRzLCBldmVuIGlmIGl0IGFscmVhZHkgaGFkIHRvIGJlIGZsdXNoZWQgZm9yIG90aGVyIHJl
YXNvbnMuCiAgICAgICAgICAgICBhZGRUb0dyYXBoKEZsdXNoLCBPcEluZm8obm9kZS52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTEwNjYsNyArMTEwMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKGJvb2wKICAgICAvLyBGSVhNRTogRG9uJ3QgZmx1c2ggY29uc3RhbnRzIQogICAgIAogICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKLSAg
ICAgICAgZmx1c2gocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZChpKSk7CisgICAg
ICAgIGZsdXNoQXJndW1lbnQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZChpKSk7
CiAgICAgCiAgICAgaW50IGlubGluZUNhbGxGcmFtZVN0YXJ0ID0gbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKHJlZ2lzdGVyT2Zmc2V0KSAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZTsKICAgICAKQEAgLTIyNTUsNyArMjI5MCwxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
Ojpwcm9jZXNzUGhpU3RhY2soKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIEZvdW5k
IEAldS5cbiIsIHZhbHVlSW5QcmVkZWNlc3Nvcik7CiAjZW5kaWYKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3ZhbHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gU2V0TG9j
YWwgfHwgbV9ncmFwaFt2YWx1ZUluUHJlZGVjZXNzb3JdLm9wID09IFBoaSB8fCBtX2dyYXBoW3Zh
bHVlSW5QcmVkZWNlc3Nvcl0ub3AgPT0gRmx1c2ggfHwgKG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vz
c29yXS5vcCA9PSBTZXRBcmd1bWVudCAmJiBzdGFja1R5cGUgPT0gQXJndW1lbnRQaGlTdGFjaykp
OworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29yXS5vcCA9PSBT
ZXRMb2NhbAorICAgICAgICAgICAgICAgICAgIHx8IG1fZ3JhcGhbdmFsdWVJblByZWRlY2Vzc29y
XS5vcCA9PSBQaGkKKyAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoW3ZhbHVlSW5QcmVkZWNl
c3Nvcl0ub3AgPT0gRmx1c2gKKyAgICAgICAgICAgICAgICAgICB8fCAobV9ncmFwaFt2YWx1ZUlu
UHJlZGVjZXNzb3JdLm9wID09IFNldEFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICYm
IHN0YWNrVHlwZSA9PSBBcmd1bWVudFBoaVN0YWNrKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YUZvclByZWRlY2Vzc29yID0gbV9ncmFwaFt2YWx1
ZUluUHJlZGVjZXNzb3JdLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgCkBAIC0y
NTI3LDYgKzI1NjYsMTYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQog
ewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2s7CiAgICAgCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgIGRhdGFMb2coIlBh
cnNpbmcgY29kZSBibG9jayAlcC4gY29kZVR5cGUgPSAlcywgbnVtQ2FwdHVyZWRWYXJzID0gJXUs
IG5lZWRzRnVsbFNjb3BlQ2hhaW4gPSAlcywgbmVlZHNBY3RpdmF0aW9uID0gJXMsIGlzU3RyaWN0
TW9kZSA9ICVzXG4iLAorICAgICAgICAgICAgY29kZUJsb2NrLAorICAgICAgICAgICAgY29kZVR5
cGVUb1N0cmluZyhjb2RlQmxvY2stPmNvZGVUeXBlKCkpLAorICAgICAgICAgICAgY29kZUJsb2Nr
LT5tX251bUNhcHR1cmVkVmFycywKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpPyJ0cnVlIjoiZmFsc2UiLAorICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCk/InRydWUiOiJmYWxzZSIsCisgICAgICAgICAg
ICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKT8idHJ1ZSI6ImZh
bHNlIik7CisjZW5kaWYKKyAgICAKICAgICBmb3IgKHVuc2lnbmVkIGp1bXBUYXJnZXRJbmRleCA9
IDA7IGp1bXBUYXJnZXRJbmRleCA8PSBjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKTsg
KytqdW1wVGFyZ2V0SW5kZXgpIHsKICAgICAgICAgLy8gVGhlIG1heGltdW0gYnl0ZWNvZGUgb2Zm
c2V0IHRvIGdvIGludG8gdGhlIGN1cnJlbnQgYmFzaWNibG9jayBpcyBlaXRoZXIgdGhlIG5leHQg
anVtcCB0YXJnZXQsIG9yIHRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9ucy4KICAgICAgICAgdW5z
aWduZWQgbGltaXQgPSBqdW1wVGFyZ2V0SW5kZXggPCBjb2RlQmxvY2stPm51bWJlck9mSnVtcFRh
cmdldHMoKSA/IGNvZGVCbG9jay0+anVtcFRhcmdldChqdW1wVGFyZ2V0SW5kZXgpIDogY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CkBAIC0yNjAwLDYgKzI2NDksMTQgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgIC8vIFNldCBkdXJpbmcgY29uc3RydWN0aW9uLgog
ICAgIEFTU0VSVCghbV9jdXJyZW50SW5kZXgpOwogICAgIAorI2lmIERGR19FTkFCTEUoQUxMX1ZB
UklBQkxFU19DQVBUVVJFRCkKKyAgICAvLyBXZSBzaG91bGQgYmUgcHJldGVuZGluZyB0aGF0IHRo
ZSBjb2RlIGhhcyBhbiBhY3RpdmF0aW9uLgorICAgIEFTU0VSVChtX2dyYXBoLm5lZWRzQWN0aXZh
dGlvbigpKTsKKyNlbHNlCisgICAgLy8gRm9yIG5vdyB3ZSBzaG91bGQgbmV2ZXIgc2VlIGNvZGUg
dGhhdCBuZWVkcyBhY3RpdmF0aW9ucy4KKyAgICBBU1NFUlQoIW1fZ3JhcGgubmVlZHNBY3RpdmF0
aW9uKCkpOworI2VuZGlmCisgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0Vu
dHJ5KHRoaXMsIG1fY29kZUJsb2NrLCBtX3Byb2ZpbGVkQmxvY2ssIE5vQmxvY2ssIEludmFsaWRW
aXJ0dWFsUmVnaXN0ZXIsIDAsIEludmFsaWRWaXJ0dWFsUmVnaXN0ZXIsIEludmFsaWRWaXJ0dWFs
UmVnaXN0ZXIsIENvZGVGb3JDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lv
biAxMDg3NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NywxMSArNTcsMTMgQEAgaW5saW5lIGJvb2wgbWlnaHRDb21w
aWxlRnVuY3Rpb25Gb3JDb25zdAogCiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9y
Q2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50CisgICAgICAgICYmICFjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5uZWVkc0FjdGl2YXRpb24oKTsKIH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNv
bnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNv
bnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQKKyAgICAgICAgJiYgIWNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpOwogfQogCiAvLyBPcGNv
ZGUgY2hlY2tpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJl
dmlzaW9uIDEwODc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAKICNkZWZpbmUgREZHX0VOQUJMRV9DT05T
SVNURU5DWV9DSEVDSyAwCiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBoZWFkIG9mIGV2
ZXJ5IGdlbmVyYXRlZCBmdW5jdGlvbiwgdG8gYWlkIGRlYnVnZ2luZyBpbiBHREIuCiAjZGVmaW5l
IERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VWRVJZX0ZVTkNUSU9OIDAKLS8vIEVtaXQgYSBicmVh
a3BvaW50IGludG8gdGhlIGhlYWQgb2YgZXZlcnkgZ2VuZXJhdGVkIG5vZGUsIHRvIGFpZCBkZWJ1
Z2dpbmcgaW4gR0RCLgorLy8gRW1pdCBhIGJyZWFrcG9pbnQgaW50byB0aGUgaGVhZCBvZiBldmVy
eSBnZW5lcmF0ZWQgYmxvY2ssIHRvIGFpZCBkZWJ1Z2dpbmcgaW4gR0RCLgogI2RlZmluZSBERkdf
RU5BQkxFX0pJVF9CUkVBS19PTl9FVkVSWV9CTE9DSyAwCiAvLyBFbWl0IGEgYnJlYWtwb2ludCBp
bnRvIHRoZSBoZWFkIG9mIGV2ZXJ5IGdlbmVyYXRlZCBub2RlLCB0byBhaWQgZGVidWdnaW5nIGlu
IEdEQi4KICNkZWZpbmUgREZHX0VOQUJMRV9KSVRfQlJFQUtfT05fRVZFUllfTk9ERSAwCkBAIC03
Myw2ICs3Myw5IEBACiAjZGVmaW5lIERGR19FTkFCTEVfUkVTVFJJQ1RJT05TIDEKIC8vIEVuYWJs
ZSB2ZXJpZmljYXRpb24gdGhhdCB0aGUgREZHIGlzIGFibGUgdG8gaW5zZXJ0IGNvZGUgZm9yIGNv
bnRyb2wgZmxvdyBlZGdlcy4KICNkZWZpbmUgREZHX0VOQUJMRV9FREdFX0NPREVfVkVSSUZJQ0FU
SU9OIDAKKy8vIFByZXRlbmQgdGhhdCBhbGwgdmFyaWFibGVzIGluIHRoZSB0b3AtbGV2ZWwgY29k
ZSBibG9jayBnb3QgY2FwdHVyZWQuIEdyZWF0CisvLyBmb3IgdGVzdGluZyBjb2RlIGdlbiBmb3Ig
YWN0aXZhdGlvbnMuCisjZGVmaW5lIERGR19FTkFCTEVfQUxMX1ZBUklBQkxFU19DQVBUVVJFRCAw
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTA4NzU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1LDQxIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUodmFs
dWVQcm9maWxlRm9yKG5vZGVJbmRleCkpOwogICAgIH0KICAgICAKKyAgICBib29sIG5lZWRzQWN0
aXZhdGlvbigpIGNvbnN0CisgICAgeworI2lmIERGR19FTkFCTEUoQUxMX1ZBUklBQkxFU19DQVBU
VVJFRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgICAgICByZXR1cm4gbV9jb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5uZWVkc0FjdGl2YXRpb24oKSAmJiBtX2NvZGVCbG9j
ay0+Y29kZVR5cGUoKSAhPSBHbG9iYWxDb2RlOworI2VuZGlmCisgICAgfQorICAgIAorICAgIC8v
IFBhc3MgYW4gYXJndW1lbnQgaW5kZXguICBDdXJyZW50bHkgaXQncyBpZ25vcmVkLCBidXQgdGhh
dCdzIHNvbWV3aGF0CisgICAgLy8gb2YgYSBidWcuCisgICAgYm9vbCBhcmd1bWVudElzQ2FwdHVy
ZWQoaW50KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5lZWRzQWN0aXZhdGlvbigpOwor
ICAgIH0KKyAgICBib29sIGxvY2FsSXNDYXB0dXJlZChpbnQgb3BlcmFuZCkgY29uc3QKKyAgICB7
CisjaWYgREZHX0VOQUJMRShBTExfVkFSSUFCTEVTX0NBUFRVUkVEKQorICAgICAgICByZXR1cm4g
b3BlcmFuZCA8IG1fY29kZUJsb2NrLT5tX251bVZhcnM7CisjZWxzZQorICAgICAgICByZXR1cm4g
b3BlcmFuZCA8IG1fY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFyczsKKyNlbmRpZgorICAgIH0K
KyAgICAKKyAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAgICAgICByZXR1cm4g
YXJndW1lbnRJc0NhcHR1cmVkKG9wZXJhbmRUb0FyZ3VtZW50KG9wZXJhbmQpKTsKKyAgICAgICAg
cmV0dXJuIGxvY2FsSXNDYXB0dXJlZChvcGVyYW5kKTsKKyAgICB9CisgICAgYm9vbCBpc0NhcHR1
cmVkKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaXNDYXB0dXJlZChzdGF0aWNfY2FzdDxpbnQ+KHZpcnR1YWxSZWdpc3RlcikpOwor
ICAgIH0KKyAgICAKICAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKICAgICBDb2RlQmxv
Y2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEwODc1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTksNyAr
Nzk5LDcgQEAgc3RydWN0IE5vZGUgewogCiAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9yZWZDb3VudCAmJiBvcCAhPSBQaGkgJiYgb3AgIT0gRmx1c2g7
CisgICAgICAgIHJldHVybiBtX3JlZkNvdW50OwogICAgIH0KIAogICAgIHVuc2lnbmVkIHJlZkNv
dW50KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMDg3NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaDoKKyAgICAg
ICAgICAgIGJyZWFrOworCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAvLyBUaGVzZSBnZXQgaWdu
b3JlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgcmV0dXJuIGFueXRoaW5nLgogICAgICAgICBjYXNlIFB1
dFNjb3BlZFZhcjoKQEAgLTQyNCw3ICs0MjcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAgICBjYXNlIFBoaToK
LSAgICAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgY2FzZSBUaHJvdzoKICAgICAgICAgY2FzZSBU
aHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKQEAgLTU4Niw4
ICs1ODgsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5t
X3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1fY2hhbmdlZCB8
PSBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ldLmZpbmQoKS0+dGFsbHlWb3Rlc0ZvclNo
b3VsZFVzZURvdWJsZUZvcm1hdCgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBtX2dyYXBoLm1fdmFyaWFi
bGVBY2Nlc3NEYXRhW2ldLmZpbmQoKTsKKyAgICAgICAgICAgIGlmIChvcGVyYW5kSXNBcmd1bWVu
dCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpCisgICAgICAgICAgICAgICAgfHwgbV9ncmFw
aC5pc0NhcHR1cmVkKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRh
LT50YWxseVZvdGVzRm9yU2hvdWxkVXNlRG91YmxlRm9ybWF0KCk7CisgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgdm9pZCBmaXh1cE5vZGUoTm9kZSYgbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMTA4NzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1NCw1NCArMTY1NCw1OSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gYmxvY2soKS0+dmFsdWVzQXRIZWFkLm9wZXJhbmQobm9kZS5sb2NhbCgpKTsK
IAogICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIHByZWRpY3Rpb24gZm9yIHRoaXMgbG9jYWwsIHRo
ZW4gZG9uJ3QgYXR0ZW1wdCB0byBjb21waWxlLgotICAgICAgICBpZiAocHJlZGljdGlvbiA9PSBQ
cmVkaWN0Tm9uZSkgeworICAgICAgICBpZiAocHJlZGljdGlvbiA9PSBQcmVkaWN0Tm9uZSB8fCB2
YWx1ZS5pc0NsZWFyKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChub2RlLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkgewotICAgICAgICAgICAgRlBSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3Rlcigp
OwotICAgICAgICAgICAgbV9mcHJzLnJldGFpbihyZXN1bHQuZnByKCksIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckRvdWJsZSk7Ci0gICAgICAgICAgICBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1
YWxSZWdpc3Rlcl0uaW5pdERvdWJsZShtX2NvbXBpbGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCBy
ZXN1bHQuZnByKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFtX2ppdC5ncmFwaCgpLmlzQ2FwdHVyZWQobm9kZS5sb2NhbCgpKSkgeworICAgICAgICAgICAg
aWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7
CisgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwo
KSksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICAgICAgbV9m
cHJzLnJldGFpbihyZXN1bHQuZnByKCksIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJs
ZSk7CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmlu
aXREb3VibGUobV9jb21waWxlSW5kZXgsIG5vZGUucmVmQ291bnQoKSwgcmVzdWx0LmZwcigpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7Ci0KLSAgICAgICAgICAgIC8v
IExpa2UgaW50ZWdlclJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3VyIGNoaWxkcmVu
IGFyZSBwaGkgbm9kZXMsCi0gICAgICAgICAgICAvLyBhbmQgZG9uJ3QgcmVwcmVzZW50IHZhbHVl
cyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwgcmVnaXN0ZXJzLgotICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVy
KCk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVySW50ZWdlcik7Ci0gICAgICAgICAgICBtX2dlbmVyYXRpb25JbmZvW3Zp
cnR1YWxSZWdpc3Rlcl0uaW5pdEludGVnZXIobV9jb21waWxlSW5kZXgsIG5vZGUucmVmQ291bnQo
KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pIHx8IGlzQnl0ZUFycmF5UHJlZGlj
dGlvbihwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7Ci0KLSAgICAgICAgICAg
IC8vIExpa2UgY2VsbFJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3VyIGNoaWxkcmVu
IGFyZSBwaGkgbm9kZXMsCi0gICAgICAgICAgICAvLyBhbmQgZG9uJ3QgcmVwcmVzZW50IHZhbHVl
cyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwgcmVnaXN0ZXJzLgotICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVy
KCk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lz
dGVyLCBTcGlsbE9yZGVyQ2VsbCk7Ci0gICAgICAgICAgICBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1
YWxSZWdpc3Rlcl0uaW5pdENlbGwobV9jb21waWxlSW5kZXgsIG5vZGUucmVmQ291bnQoKSwgcmVz
dWx0LmdwcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworCisgICAg
ICAgICAgICAgICAgLy8gTGlrZSBpbnRlZ2VyUmVzdWx0LCBidXQgZG9uJ3QgdXNlQ2hpbGRyZW4g
LSBvdXIgY2hpbGRyZW4gYXJlIHBoaSBub2RlcywKKyAgICAgICAgICAgICAgICAvLyBhbmQgZG9u
J3QgcmVwcmVzZW50IHZhbHVlcyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwgcmVn
aXN0ZXJzLgorICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIg
PSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4o
cmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2VyKTsKKyAgICAg
ICAgICAgICAgICBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl0uaW5pdEludGVnZXIo
bV9jb21waWxlSW5kZXgsIG5vZGUucmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNCb29sZWFuUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAg
ICBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikgfHwgaXNCeXRlQXJyYXlQcmVkaWN0
aW9uKHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3Iobm9kZS5sb2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKKworICAgICAgICAgICAgICAgIC8vIExp
a2UgY2VsbFJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3VyIGNoaWxkcmVuIGFyZSBw
aGkgbm9kZXMsCisgICAgICAgICAgICAgICAgLy8gYW5kIGRvbid0IHJlcHJlc2VudCB2YWx1ZXMg
d2l0aGluIHRoaXMgZGF0YWZsb3cgd2l0aCB2aXJ0dWFsIHJlZ2lzdGVycy4KKyAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0
ZXIoKTsKKyAgICAgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVh
bFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ2VsbCk7CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0aW9u
SW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmluaXRDZWxsKG1fY29tcGlsZUluZGV4LCBub2RlLnJlZkNv
dW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIC8vIExpa2UgYm9vbGVhblJlc3VsdCwgYnV0IGRvbid0IHVzZUNo
aWxkcmVuIC0gb3VyIGNoaWxkcmVuIGFyZSBwaGkgbm9kZXMsCi0gICAgICAgICAgICAvLyBhbmQg
ZG9uJ3QgcmVwcmVzZW50IHZhbHVlcyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwg
cmVnaXN0ZXJzLgotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9
IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3Vs
dC5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQm9vbGVhbik7Ci0gICAgICAgICAg
ICBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl0uaW5pdEJvb2xlYW4obV9jb21waWxl
SW5kZXgsIG5vZGUucmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpLCByZXN1
bHQuZ3ByKCkpOworCisgICAgICAgICAgICAgICAgLy8gTGlrZSBib29sZWFuUmVzdWx0LCBidXQg
ZG9uJ3QgdXNlQ2hpbGRyZW4gLSBvdXIgY2hpbGRyZW4gYXJlIHBoaSBub2RlcywKKyAgICAgICAg
ICAgICAgICAvLyBhbmQgZG9uJ3QgcmVwcmVzZW50IHZhbHVlcyB3aXRoaW4gdGhpcyBkYXRhZmxv
dyB3aXRoIHZpcnR1YWwgcmVnaXN0ZXJzLgorICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOworICAgICAgICAgICAg
ICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3Jk
ZXJCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdp
c3Rlcl0uaW5pdEJvb2xlYW4obV9jb21waWxlSW5kZXgsIG5vZGUucmVmQ291bnQoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogCisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSB0YWcodGhpcyk7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcihub2RlLmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnRhZ0Zvcihub2RlLmxvY2FsKCkpLCB0YWcuZ3ByKCkpOwpAQCAtMTcxMiw3
ICsxNzE3LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgbV9ncHJzLnJldGFpbihyZXN1bHQuZ3ByKCksIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxP
cmRlckpTKTsKICAgICAgICAgbV9ncHJzLnJldGFpbih0YWcuZ3ByKCksIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckpTKTsKIAotICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdCA9IGlzQ2VsbFBy
ZWRpY3Rpb24odmFsdWUubV90eXBlKSA/IERhdGFGb3JtYXRKU0NlbGwgOiBEYXRhRm9ybWF0SlM7
CisgICAgICAgIERhdGFGb3JtYXQgZm9ybWF0OworICAgICAgICBpZiAoaXNDZWxsUHJlZGljdGlv
bih2YWx1ZS5tX3R5cGUpCisgICAgICAgICAgICAmJiAhbV9qaXQuZ3JhcGgoKS5pc0NhcHR1cmVk
KG5vZGUubG9jYWwoKSkpCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0SlNDZWxsOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0SlM7CiAgICAgICAg
IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5pbml0SlNWYWx1ZShtX2NvbXBpbGVJ
bmRleCwgbm9kZS5yZWZDb3VudCgpLCB0YWcuZ3ByKCksIHJlc3VsdC5ncHIoKSwgZm9ybWF0KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTczMyw1MyArMTc0Myw2NSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBtX2NvZGVP
cmlnaW5Gb3JPU1IgPSBuZXh0Tm9kZS5jb2RlT3JpZ2luOwogICAgICAgICAKLSAgICAgICAgaWYg
KG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0g
ICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwotICAgICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwotICAgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdzIG5vIGxvbmdl
ciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mCi0gICAgICAgICAgICAvLyB0aGlz
IGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0
aGUgcmVnaXN0ZXIgZmlsZSwKLSAgICAgICAgICAgIC8vIGJ1dCB0aGF0IGl0IGlzIHN0b3JlZCBh
cyBhIGRvdWJsZS4KLSAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChu
b2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3RlckZpbGUpOwotICAgICAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoIW1faml0LmdyYXBoKCkuaXNDYXB0dXJlZChub2RlLmxv
Y2FsKCkpKSB7CisgICAgICAgICAgICBpZiAobm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hv
dWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgICAgIG1faml0
LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxv
Y2FsKCkpKTsKKyAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAg
ICAgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8g
cmV0cmlldmUgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgLy8gdGhpcyBieXRlY29kZSB2
YXJpYWJsZSBmcm9tIHJlZ2lzdGVycyBvciBvdGhlciBsb2NhdGlvbnMgaW4gdGhlIHJlZ2lzdGVy
IGZpbGUsCisgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgaXQgaXMgc3RvcmVkIGFzIGEgZG91
YmxlLgorICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChub2Rl
LmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3RlckZpbGUpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOwog
ICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGlvbkluZm9bYXQobm9kZS5jaGlsZDEoKSkudmlydHVh
bFJlZ2lzdGVyKCldLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewogICAg
ICAgICAgICAgICAgIERvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1f
Y29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQzMlByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZv
ck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZUludGVnZXJPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2Fk
Rm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUlu
ZGV4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQo
bm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKEludDMySW5SZWdpc3RlckZpbGUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzQXJyYXlQ
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBHUFJS
ZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0Fy
cmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwg
SklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAg
bm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNv
dXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKENlbGxJ
blJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5mbykpKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRl
eCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQo
bm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNCb29sZWFu
UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUJv
b2xlYW5PcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUu
bG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1
ZS5wYXlsb2FkR1BSKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwot
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVy
Ojp0YWdGb3Iobm9kZS5sb2NhbCgpKSk7Ci0gICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOworICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFu
ZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluUmVnaXN0ZXJGaWxlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSW5k
aWNhdGUgdGhhdCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVl
IG9mCi0gICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJz
IG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KLSAgICAgICAgICAgIHZh
bHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2U6
OmZvclByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSk7CiAgICAgICAgIH0KKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIG1faml0LnN0b3Jl
MzIodmFsdWUucGF5bG9hZEdQUigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2Fs
KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6
OnRhZ0Zvcihub2RlLmxvY2FsKCkpKTsKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgp
OworICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9
IFZhbHVlU291cmNlKFZhbHVlSW5SZWdpc3RlckZpbGUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTE5NTEsNyArMTk3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICBjYXNlIEFyaXRoQWJzOiB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2Vy
KCkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CiAgICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQu
emVyb0V4dGVuZDMyVG9QdHIob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzM4NCw3ICsz
NDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAg
Y2FzZSBQaGk6CiAgICAgY2FzZSBGbHVzaDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBCcmVha3BvaW50OgogI2lmIEVOQUJMRShERUJV
R19XSVRIX0JSRUFLUE9JTlQpCkBAIC0zNDgxLDcgKzM1MDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0KKyAgICAKICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTA4NzU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc1MSwyNyArMTc1MSwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgp
KSB7Ci0gICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpLCBy
ZXN1bHQuZnByKCkpOwotICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
ciA9IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7Ci0gICAgICAgICAgICBtX2ZwcnMucmV0YWluKHJl
c3VsdC5mcHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyRG91YmxlKTsKLSAgICAgICAg
ICAgIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5pbml0RG91YmxlKG1fY29tcGls
ZUluZGV4LCBub2RlLnJlZkNvdW50KCksIHJlc3VsdC5mcHIoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKLSAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHZhbHVlLm1fdHlwZSkpIHsKLSAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkp
LCByZXN1bHQuZ3ByKCkpOwotCi0gICAgICAgICAgICAvLyBMaWtlIGludGVnZXJSZXN1bHQsIGJ1
dCBkb24ndCB1c2VDaGlsZHJlbiAtIG91ciBjaGlsZHJlbiBhcmUgcGhpIG5vZGVzLAotICAgICAg
ICAgICAgLy8gYW5kIGRvbid0IHJlcHJlc2VudCB2YWx1ZXMgd2l0aGluIHRoaXMgZGF0YWZsb3cg
d2l0aCB2aXJ0dWFsIHJlZ2lzdGVycy4KLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwotICAgICAgICAgICAgbV9ncHJz
LnJldGFpbihyZXN1bHQuZ3ByKCksIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckludGVnZXIp
OwotICAgICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmluaXRJbnRl
Z2VyKG1fY29tcGlsZUluZGV4LCBub2RlLnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFtX2ppdC5ncmFwaCgpLmlzQ2FwdHVyZWQobm9k
ZS5sb2NhbCgpKSkgeworICAgICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCkt
PnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lz
dGVyKCk7CisgICAgICAgICAgICAgICAgbV9mcHJzLnJldGFpbihyZXN1bHQuZnByKCksIHZpcnR1
YWxSZWdpc3RlciwgU3BpbGxPcmRlckRvdWJsZSk7CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0
aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmluaXREb3VibGUobV9jb21waWxlSW5kZXgsIG5vZGUu
cmVmQ291bnQoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9u
KHZhbHVlLm1fdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihub2RlLmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIC8vIExpa2UgaW50ZWdlclJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0g
b3VyIGNoaWxkcmVuIGFyZSBwaGkgbm9kZXMsCisgICAgICAgICAgICAgICAgLy8gYW5kIGRvbid0
IHJlcHJlc2VudCB2YWx1ZXMgd2l0aGluIHRoaXMgZGF0YWZsb3cgd2l0aCB2aXJ0dWFsIHJlZ2lz
dGVycy4KKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0g
bm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJl
c3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySW50ZWdlcik7CisgICAgICAg
ICAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmluaXRJbnRlZ2VyKG1f
Y29tcGlsZUluZGV4LCBub2RlLnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CiAKICAgICAgICAgLy8gTGlr
ZSBqc1ZhbHVlUmVzdWx0LCBidXQgZG9uJ3QgdXNlQ2hpbGRyZW4gLSBvdXIgY2hpbGRyZW4gYXJl
IHBoaSBub2RlcywKQEAgLTE3ODAsNyArMTc4Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgbV9ncHJzLnJldGFpbihyZXN1bHQuZ3ByKCksIHZp
cnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKIAogICAgICAgICBEYXRhRm9ybWF0IGZvcm1h
dDsKLSAgICAgICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24odmFsdWUubV90eXBlKSkKKyAgICAgICAg
aWYgKG1faml0LmdyYXBoKCkuaXNDYXB0dXJlZChub2RlLmxvY2FsKCkpKQorICAgICAgICAgICAg
Zm9ybWF0ID0gRGF0YUZvcm1hdEpTOworICAgICAgICBlbHNlIGlmIChpc0NlbGxQcmVkaWN0aW9u
KHZhbHVlLm1fdHlwZSkpCiAgICAgICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0SlNDZWxsOwog
ICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHZhbHVlLm1fdHlwZSkpCiAgICAg
ICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0SlNCb29sZWFuOwpAQCAtMTgxNyw0OCArMTgyMiw2
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8v
IE9TUiBleGl0LCB3b3VsZCBub3QgYmUgdmlzaWJsZSB0byB0aGUgb2xkIEpJVCBpbiBhbnkgd2F5
LgogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBuZXh0Tm9kZS5jb2RlT3JpZ2luOwogICAg
ICAgICAKLSAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURv
dWJsZUZvcm1hdCgpKSB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFs
dWUuZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwotICAgICAg
ICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgLy8gSW5kaWNhdGUg
dGhhdCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mCi0g
ICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90
aGVyIGxvY2F0aW9ucyBpbiB0aGUgcmVnaXN0ZXIgZmlsZSwKLSAgICAgICAgICAgIC8vIGJ1dCB0
aGF0IGl0IGlzIHN0b3JlZCBhcyBhIGRvdWJsZS4KLSAgICAgICAgICAgIHZhbHVlU291cmNlUmVm
ZXJlbmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdp
c3RlckZpbGUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIW1faml0LmdyYXBoKCku
aXNDYXB0dXJlZChub2RlLmxvY2FsKCkpKSB7CisgICAgICAgICAgICBpZiAobm9kZS52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKKyAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKKyAgICAgICAgICAgICAgICBub1Jlc3VsdChtX2Nv
bXBpbGVJbmRleCk7CisgICAgICAgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdzIG5vIGxv
bmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAg
Ly8gdGhpcyBieXRlY29kZSB2YXJpYWJsZSBmcm9tIHJlZ2lzdGVycyBvciBvdGhlciBsb2NhdGlv
bnMgaW4gdGhlIHJlZ2lzdGVyIGZpbGUsCisgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgaXQg
aXMgc3RvcmVkIGFzIGEgZG91YmxlLgorICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJl
bmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3Rl
ckZpbGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFyaWFibGVB
Y2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG1faml0
LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwo
KSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9
IFZhbHVlU291cmNlKEludDMySW5SZWdpc3RlckZpbGUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNl
bGwuZ3ByKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhjZWxsR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5s
b2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5s
b2NhbCgpKSA9IFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNCeXRlQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcg
Y2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoY2VsbEdQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNCeXRlQXJyYXk6OnNfaW5m
bykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgICAgICBub1Jlc3VsdCht
X2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5j
ZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmls
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIGJvb2xlYW4odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYm9vbGVhbi5ncHIoKSwgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5s
b2NhbCgpKSk7Ci0gICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAg
ICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkp
ID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdz
IG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mCi0gICAgICAgICAg
ICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0
aW9ucyBpbiB0aGUgcmVnaXN0ZXIgZmlsZS4KLSAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJl
bmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2U6OmZvclByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cih2
YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CisgICAg
ICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKKworICAgICAgICB2YWx1ZVNvdXJjZVJlZmVy
ZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKFZhbHVlSW5SZWdpc3Rl
ckZpbGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIwMDcsNyArMjAyNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIEFyaXRoQWJz
OiB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0
ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIob3AxLmdwcigp
LCByZXN1bHQuZ3ByKCkpOwpAQCAtMzM1OCw5ICszMzc1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNl
IFBoaToKICAgICBjYXNlIEZsdXNoOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBjYXNlIFBoaToKKyAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAjaWYg
RU5BQkxFKERFQlVHX1dJVEhfQlJFQUtQT0lOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDg3NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzY1LDcgKzc2NSw2IEBAIEZQUlRlbXBvcmFyeTo6RlBSVGVtcG9yYXJ5KFNwZWN1
bGF0aXZlSkkKIH0KICNlbmRpZgogCi0jaWZuZGVmIE5ERUJVRwogdm9pZCBWYWx1ZVNvdXJjZTo6
ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKQEAgLTc5Miw3
ICs3OTEsNiBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKEZJTEUqIG91dCkgY29uc3QKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQotI2VuZGlmCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUlu
ZGV4LCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsKQEAgLTkzMCw3
ICs5MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAg
QVNTRVJUKG1fYXJndW1lbnRzLnNpemUoKSA9PSBibG9jay52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy5z
aXplKCk7ICsraSkgewogICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYmxvY2sudmFyaWFi
bGVzQXRIZWFkLmFyZ3VtZW50KGkpOwotICAgICAgICBpZiAobm9kZUluZGV4ID09IE5vTm9kZSkK
KyAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUgfHwgbV9qaXQuZ3JhcGgoKS5hcmd1bWVu
dElzQ2FwdHVyZWQoaSkpCiAgICAgICAgICAgICBtX2FyZ3VtZW50c1tpXSA9IFZhbHVlU291cmNl
KFZhbHVlSW5SZWdpc3RlckZpbGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FyZ3Vt
ZW50c1tpXSA9IFZhbHVlU291cmNlOjpmb3JQcmVkaWN0aW9uKGF0KG5vZGVJbmRleCkudmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSk7CkBAIC05NDIsNyArOTQwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgIEFTU0VSVChtX3ZhcmlhYmxl
cy5zaXplKCkgPT0gYmxvY2sudmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKTsK
LSAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUpCisgICAgICAgIGlmIChub2RlSW5kZXgg
PT0gTm9Ob2RlIHx8IG1faml0LmdyYXBoKCkubG9jYWxJc0NhcHR1cmVkKGkpKQogICAgICAgICAg
ICAgbV92YXJpYWJsZXNbaV0gPSBWYWx1ZVNvdXJjZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsKICAg
ICAgICAgZWxzZSBpZiAoYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxk
VXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291
cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEwODc1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDkgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbm9kZUluZGV4OwogICAg
IH0KICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKEZJTEUqIG91dCkgY29uc3Q7
Ci0jZW5kaWYKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIE5vZGVJbmRleCBub2RlSW5kZXhG
cm9tS2luZChWYWx1ZVNvdXJjZUtpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDEwODc1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsOSArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZUV4Y2x1ZGluZ1BoaU5vZGVzOyArK2kpIHsKICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dy
YXBoW2ldOwogICAgICAgICAKLSAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgp
KQorICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkgfHwgbm9kZS5vcCA9PSBQ
aGkgfHwgbm9kZS5vcCA9PSBGbHVzaCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEdldExvY2FsIG5vZGVzIGFyZSBlZmZl
Y3RpdmVseSBwaGkgbm9kZXMgaW4gdGhlIGdyYXBoLCByZWZlcmVuY2luZwogICAgICAgICAgICAg
Ly8gcmVzdWx0cyBmcm9tIHByaW9yIGJsb2Nrcy4KICAgICAgICAgICAgIGlmIChub2RlLm9wICE9
IEdldExvY2FsKSB7Cg==
</data>
<flag name="review"
          id="131158"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>