<?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>63972</bug_id>
          
          <creation_ts>2011-07-05 20:55:14 -0700</creation_ts>
          <short_desc>DFG JIT does not support method_check</short_desc>
          <delta_ts>2011-07-06 20:42:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>432603</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 20:55:14 -0700</bug_when>
    <thetext>JSC bytecode contains a method_check opcode that is used to optimize method calls of the form o.foo(...).  The DFG JIT currently does not support this opcode at all, so JS functions that contain method calls cannot be compiled with DFG.  The DFG JIT should support both the method_check opcode and the optimizations associated with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432608</commentid>
    <comment_count>1</comment_count>
      <attachid>99786</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 21:02:33 -0700</bug_when>
    <thetext>Created attachment 99786
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432610</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 21:14:08 -0700</bug_when>
    <thetext>Attachment 99786 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/DFGByteCodeParser.cpp:857:  Declaration has space between type name and * in Instruction *getInstruction  [whitespace/declaration] [3]
Total errors found: 1 in 17 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>432611</commentid>
    <comment_count>3</comment_count>
      <attachid>99788</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 21:17:46 -0700</bug_when>
    <thetext>Created attachment 99788
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433094</commentid>
    <comment_count>4</comment_count>
      <attachid>99788</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 16:15:52 -0700</bug_when>
    <thetext>Comment on attachment 99788
the patch (fix style)

Rejecting attachment 99788 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-03&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
rce/JavaScriptCore/dfg/DFGOperations.cpp
patching file Source/JavaScriptCore/dfg/DFGOperations.h
patching file Source/JavaScriptCore/dfg/DFGRepatch.cpp
patching file Source/JavaScriptCore/dfg/DFGRepatch.h
patching file Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
Hunk #1 succeeded at 1019 (offset 5 lines).
patching file Source/JavaScriptCore/jit/JITWriteBarrier.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Gavin Barraclough&apos;, u&apos;...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8985884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433140</commentid>
    <comment_count>5</comment_count>
      <attachid>99907</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-06 17:54:14 -0700</bug_when>
    <thetext>Created attachment 99907
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433202</commentid>
    <comment_count>6</comment_count>
      <attachid>99907</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 20:42:15 -0700</bug_when>
    <thetext>Comment on attachment 99907
the patch

Clearing flags on attachment: 99907

Committed r90529: &lt;http://trac.webkit.org/changeset/90529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433203</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 20:42:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99786</attachid>
            <date>2011-07-05 21:02:33 -0700</date>
            <delta_ts>2011-07-05 21:17:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>method_patch_1.diff</filename>
            <type>text/plain</type>
            <size>25877</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IHN1cHBvcnQgbWV0aG9kX2NoZWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6TWV0aG9k
Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpzZWVuT25j
ZSk6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6c2V0U2Vlbik6CisgICAgICAg
ICogZGZnL0RGR0FsaWFzVHJhY2tlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFsaWFzVHJhY2tl
cjo6cmVjb3JkR2V0TWV0aG9kKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29kZUdlbmVyYXRvcjo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29k
ZUdlbmVyYXRvcjo6Y2FjaGVkR2V0TWV0aG9kKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RG
R0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZE1ldGhv
ZEdldCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Ok1ldGhvZEdldFJlY29yZDo6
TWV0aG9kR2V0UmVjb3JkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkZmdSZXBhdGNoR2V0TWV0aG9kRmFzdCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5
Q2FjaGVHZXRNZXRob2QpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hHZXRNZXRob2Qp
OgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVFdyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpKSVRXcml0
ZUJhcnJpZXI6OnNldCk6CisKIDIwMTEtMDctMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBGb3JjZSBpbmxpbmluZyBvZiBzaW1wbGUgZnVuY3Rpb25zIHRoYXQg
c2hvdyB1cCBhcyBub3QgYmVpbmcgaW5saW5lZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NjUsNyArMTU2NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQK
IAogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9tZXRob2RDYWxsTGlua0luZm9z
W2ldLmNhY2hlZFN0cnVjdHVyZSkgewotICAgICAgICAgICAgLy8gQm90aCBtZW1iZXJzIG11c3Qg
YmUgZmlsbGVkIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgICAgIC8vIFRoZXNlIG1lbWJlcnMg
bXVzdCBiZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGltZSwgYW5kIG9ubHkgYWZ0ZXIKKyAgICAgICAg
ICAgIC8vIHRoZSBNZXRob2RDYWxsTGlua0luZm8gaXMgc2V0IGFzIHNlZW4uCisgICAgICAgICAg
ICBBU1NFUlQobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLnNlZW5PbmNlKCkpOwogICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgQVNTRVJUKCEhbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hl
ZFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRo
b2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5MDQzMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTI5LDI1ICsxMjksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3Qg
TWV0aG9kQ2FsbExpbmtJbmZvIHsKICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKKyAgICAg
ICAgICAgIDogc2VlbihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgYm9v
bCBzZWVuT25jZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0
dXJlKTsKLSAgICAgICAgICAgIHJldHVybiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuaXNGbGFn
Z2VkKCk7CisgICAgICAgICAgICByZXR1cm4gc2VlbjsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgc2V0U2VlbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0
dXJlICYmICFjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgLy8gV2UgdXNl
IHRoZSB2YWx1ZXMgb2YgY2FjaGVkU3RydWN0dXJlICYgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJl
IHRvIGluZGljYXRlIHRoZQotICAgICAgICAgICAgLy8gY3VycmVudCBzdGF0ZS4KLSAgICAgICAg
ICAgIC8vICAgICAtIEluIHRoZSBpbml0aWFsIHN0YXRlLCBib3RoIGFyZSBudWxsLgotICAgICAg
ICAgICAgLy8gICAgIC0gT25jZSB0aGlzIHRyYW5zaXRpb24gaGFzIGJlZW4gdGFrZW4gb25jZSwg
Y2FjaGVkU3RydWN0dXJlIGlzCi0gICAgICAgICAgICAvLyAgICAgICBudWxsIGFuZCBjYWNoZWRQ
cm90b3R5cGVTdHJ1Y3R1cmUgaXMgc2V0IHRvIGEgbnVuLW51bGwgdmFsdWUuCi0gICAgICAgICAg
ICAvLyAgICAgLSBPbmNlIHRoZSBjYWxsIGlzIGxpbmtlZCBib3RoIHN0cnVjdHVyZXMgYXJlIHNl
dCB0byBub24tbnVsbCB2YWx1ZXMuCi0gICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1
cmUuc2V0RmxhZ09uQmFycmllcigpOworICAgICAgICAgICAgc2VlbiA9IHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTE1
NSw2ICsxNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOwogICAgICAgICBKSVRXcml0ZUJhcnJp
ZXI8SlNGdW5jdGlvbj4gY2FjaGVkRnVuY3Rpb247CiAgICAgICAgIEpJVFdyaXRlQmFycmllcjxK
U09iamVjdD4gY2FjaGVkUHJvdG90eXBlOworICAgICAgICBib29sIHNlZW47CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBHbG9iYWxSZXNvbHZlSW5mbyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FsaWFzVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWxpYXNUcmFja2VyLmgJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBbGlhc1RyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfVU5VU0VEKGdldEJ5SWQsIG1fZ3Jh
cGhbZ2V0QnlJZF0ub3AgPT0gR2V0QnlJZCk7CiAgICAgICAgIG1fY2FuZGlkYXRlQWxpYXNHZXRC
eVZhbCA9IE5vTm9kZTsKICAgICB9CisgICAgCisgICAgdm9pZCByZWNvcmRHZXRNZXRob2QoTm9k
ZUluZGV4IGdldE1ldGhvZCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZ2V0TWV0aG9k
LCBtX2dyYXBoW2dldE1ldGhvZF0ub3AgPT0gR2V0TWV0aG9kKTsKKyAgICAgICAgbV9jYW5kaWRh
dGVBbGlhc0dldEJ5VmFsID0gTm9Ob2RlOworICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUHV0QnlJ
ZChOb2RlSW5kZXggcHV0QnlJZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUyLDEyICs4NTIsMjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsKTsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CisgICAg
ICAgICAgICBJbnN0cnVjdGlvbiAqZ2V0SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb24g
KyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjayk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlSW5k
ZXggYmFzZSA9IGdldChnZXRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGdldEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgTm9kZUluZGV4IGdldE1ldGhvZCA9IGFkZFRvR3JhcGgoR2V0
TWV0aG9kLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpOworICAgICAgICAgICAgc2V0KGdldElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0TWV0aG9kKTsKKyAgICAgICAgICAgIGFsaWFzZXMu
cmVjb3JkR2V0TWV0aG9kKGdldE1ldGhvZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSArIE9QQ09ERV9M
RU5HVEgob3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKICAgICAgICAgICAgIFBST1BFUlRZX0FDQ0VT
U19PUCgpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlSW5kZXggZ2V0QnlJZCA9IGFkZFRvR3JhcGgoR2V0QnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXIpLCBiYXNlKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBnZXRCeUlkKTsKICAgICAgICAgICAgIGFsaWFzZXMucmVjb3JkR2V0QnlJZChnZXRCeUlk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjp1c2VDaGlsZHJlbihOb2RlJgogICAgIH0KIH0KIAot
dm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCkKK0pJVENvbXBpbGVyOjpDYWxsIEpJVENvZGVHZW5lcmF0b3I6OmNh
Y2hlZEdldEJ5SWQoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBOb2RlVHlw
ZSBub2RlVHlwZSkKIHsKICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKICAgICAKQEAgLTM1Myw3ICsz
NTMsMjAgQEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUgogICAgIG1f
aml0Lm1vdmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpJbW1QdHIoaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CiAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBmdW5j
dGlvbkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CisgICAgSklUQ29tcGlsZXI6OkNhbGwgZnVuY3Rpb25DYWxsOworICAgIHN3aXRj
aCAobm9kZVR5cGUpIHsKKyAgICBjYXNlIEdldEJ5SWQ6CisgICAgICAgIGZ1bmN0aW9uQ2FsbCA9
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
KyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgR2V0TWV0aG9kOgorICAgICAgICBm
dW5jdGlvbkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldE1l
dGhvZE9wdGltaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSklUQ29tcGlsZXI6
OkNhbGwoKTsKKyAgICB9CiAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
cmVzdWx0R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
CkBAIC0zNzEsNiArMzg0LDggQEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlk
KEdQUgogICAgIAogICAgIGlmIChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BS
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIHVubG9jayhzY3JhdGNoR1BSKTsKKyAgICAKKyAg
ICByZXR1cm4gZnVuY3Rpb25DYWxsOwogfQogCiB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRl
QmFycmllcihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCkBA
IC00MzAsNiArNDQ1LDI5IEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChH
UFIKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcyhmdW5jdGlvbkNhbGwsIGNoZWNrSW1tVG9D
YWxsLCBjYWxsVG9DaGVjaywgY2FsbFRvU3RvcmUsIGNhbGxUb1Nsb3dDYXNlLCBjYWxsVG9Eb25l
LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVl
R1BSKSwgc3RhdGljX2Nhc3Q8aW50OF90PihzY3JhdGNoR1BSKSk7CiB9CiAKK3ZvaWQgSklUQ29k
ZUdlbmVyYXRvcjo6Y2FjaGVkR2V0TWV0aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0
R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCkKK3sKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbDsKKyAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgcHJvdG9PYmosIHByb3RvU3RydWN0
VG9Db21wYXJlLCBwdXRGdW5jdGlvbjsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCB3cm9u
Z1N0cnVjdHVyZSA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3RUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOworICAgIHByb3RvT2JqID0gbV9qaXQubW92ZVdpdGhQYXRj
aChKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigwKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCB3cm9uZ1Byb3RvU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOworICAgIAor
ICAgIHB1dEZ1bmN0aW9uID0gbV9qaXQubW92ZVdpdGhQYXRjaChKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cigwKSwgcmVzdWx0R1BSKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOworICAgIAorICAgIHdyb25nU3RydWN0dXJlLmxpbmsoJm1faml0KTsK
KyAgICB3cm9uZ1Byb3RvU3RydWN0dXJlLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBzbG93Q2Fs
bCA9IGNhY2hlZEdldEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBpZGVudGlmaWVyTnVtYmVyLCBz
bG93UGF0aFRhcmdldCwgR2V0TWV0aG9kKTsKKyAgICAKKyAgICBkb25lLmxpbmsoJm1faml0KTsK
KyAgICAKKyAgICBtX2ppdC5hZGRNZXRob2RHZXQoc2xvd0NhbGwsIHN0cnVjdFRvQ29tcGFyZSwg
cHJvdG9PYmosIHByb3RvU3RydWN0VG9Db21wYXJlLCBwdXRGdW5jdGlvbik7Cit9CisKIHZvaWQg
SklUQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoTm9kZSYgbm9kZSwgR1BSUmVnIHRhcmdldEdQUikK
IHsKICAgICAvLyB0aGUgY2FsbCBpbnN0cnVjdGlvbidzIGZpcnN0IGNoaWxkIGlzIGVpdGhlciB0
aGUgZnVuY3Rpb24gKG5vcm1hbCBjYWxsKSBvciB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5MDQzMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MjAsOCArNTIwLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3Vs
dEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wKCksIE5vZGVUeXBlID0gR2V0QnlJZCk7CiAgICAgdm9pZCBjYWNoZWRQdXRC
eUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY2FjaGVkR2V0TWV0
aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3NPZkNhbGxE
YXRhKGludCBpZHgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUs
NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgICAgIG1f
Y2FsbHMuY2xlYXIoKTsKICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzLmNsZWFyKCk7CiAgICAg
ICAgIG1fanNDYWxscy5jbGVhcigpOworICAgICAgICBtX21ldGhvZEdldHMuY2xlYXIoKTsKICAg
ICAgICAgcmV3aW5kVG9MYWJlbChzcGVjdWxhdGl2ZVBhdGhCZWdpbik7CiAKICAgICAgICAgU3Bl
Y3VsYXRpb25DaGVja1ZlY3RvciBub0NoZWNrczsKQEAgLTQwOSw2ICs0MTAsMTYgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogICAgICAgICBpbmZvLmhvdFBhdGhP
dGhlciA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fanNDYWxsc1tpXS5tX2Zhc3RD
YWxsKTsKICAgICB9CiAgICAgCisgICAgbV9jb2RlQmxvY2stPmFkZE1ldGhvZENhbGxMaW5rSW5m
b3MobV9tZXRob2RHZXRzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWV0aG9kR2V0cy5zaXplKCk7ICsraSkgeworICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIGlu
Zm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJbmZvKGkpOworICAgICAgICBpbmZvLmNh
Y2hlZFN0cnVjdHVyZS5zZXRMb2NhdGlvbihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc3RydWN0VG9Db21wYXJlKSk7CisgICAgICAgIGluZm8uY2FjaGVkUHJvdG90eXBl
U3RydWN0dXJlLnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNb
aV0ubV9wcm90b1N0cnVjdFRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLmNhY2hlZEZ1bmN0aW9u
LnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNbaV0ubV9wdXRG
dW5jdGlvbikpOworICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlwZS5zZXRMb2NhdGlvbihsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJvdG9PYmopKTsKKyAgICAgICAg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc2xvd0NhbGwpOworICAgIH0KKyAgICAKICAgICAvLyBGSVhNRTogc3dpdGNoIHRo
ZSByZWdpc3RlciBmaWxlIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdPcGVydGFpb24g
c3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxSZWdp
c3RlckZpbGVDaGVjaywgY3RpX3JlZ2lzdGVyX2ZpbGVfY2hlY2spOwogICAgIGxpbmtCdWZmZXIu
bGluayhjYWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9v
cF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTA0
MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTEgQEAgcHVibGljOgogICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzZXMuYXBwZW5kKFByb3BlcnR5QWNjZXNzUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZGVsdGFD
aGVja0ltbVRvQ2FsbCwgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjaywgZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSwgZGVsdGFDYWxsVG9TbG93Q2FzZSwgZGVsdGFDYWxsVG9Eb25lLCAgYmFzZUdQUiwgdmFs
dWVHUFIsIHNjcmF0Y2hHUFIpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRNZXRob2RHZXQo
Q2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgRGF0YUxhYmVsUHRy
IHByb3RvT2JqLCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIERhdGFMYWJlbFB0
ciBwdXRGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG1fbWV0aG9kR2V0cy5hcHBlbmQoTWV0aG9k
R2V0UmVjb3JkKHNsb3dDYWxsLCBzdHJ1Y3RUb0NvbXBhcmUsIHByb3RvT2JqLCBwcm90b1N0cnVj
dFRvQ29tcGFyZSwgcHV0RnVuY3Rpb24pKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0Nh
bGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hl
Y2ssIGJvb2wgaXNDYWxsLCB1bnNpZ25lZCBleGNlcHRpb25JbmZvKQogICAgIHsKICAgICAgICAg
bV9qc0NhbGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRU
b0NoZWNrLCBpc0NhbGwsIGV4Y2VwdGlvbkluZm8pKTsKQEAgLTMxOCw2ICszMjMsMjMgQEAgcHJp
dmF0ZToKICAgICAgICAgaW50OF90IG1fc2NyYXRjaEdQUjsKICAgICB9OwogICAgIAorICAgIHN0
cnVjdCBNZXRob2RHZXRSZWNvcmQgeworICAgICAgICBNZXRob2RHZXRSZWNvcmQoQ2FsbCBzbG93
Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgRGF0YUxhYmVsUHRyIHByb3RvT2Jq
LCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIERhdGFMYWJlbFB0ciBwdXRGdW5j
dGlvbikKKyAgICAgICAgICAgIDogbV9zbG93Q2FsbChzbG93Q2FsbCkKKyAgICAgICAgICAgICwg
bV9zdHJ1Y3RUb0NvbXBhcmUoc3RydWN0VG9Db21wYXJlKQorICAgICAgICAgICAgLCBtX3Byb3Rv
T2JqKHByb3RvT2JqKQorICAgICAgICAgICAgLCBtX3Byb3RvU3RydWN0VG9Db21wYXJlKHByb3Rv
U3RydWN0VG9Db21wYXJlKQorICAgICAgICAgICAgLCBtX3B1dEZ1bmN0aW9uKHB1dEZ1bmN0aW9u
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENhbGwgbV9zbG93Q2Fs
bDsKKyAgICAgICAgRGF0YUxhYmVsUHRyIG1fc3RydWN0VG9Db21wYXJlOworICAgICAgICBEYXRh
TGFiZWxQdHIgbV9wcm90b09iajsKKyAgICAgICAgRGF0YUxhYmVsUHRyIG1fcHJvdG9TdHJ1Y3RU
b0NvbXBhcmU7CisgICAgICAgIERhdGFMYWJlbFB0ciBtX3B1dEZ1bmN0aW9uOworICAgIH07Cisg
ICAgCiAgICAgc3RydWN0IEpTQ2FsbFJlY29yZCB7CiAgICAgICAgIEpTQ2FsbFJlY29yZChDYWxs
IGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgYm9v
bCBpc0NhbGwsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZm8pCiAgICAgICAgICAgICA6IG1fZmFzdENh
bGwoZmFzdENhbGwpCkBAIC0zMzYsNiArMzU4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAg
VmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBtX3Byb3BlcnR5QWNjZXNzZXM7CisgICAg
VmVjdG9yPE1ldGhvZEdldFJlY29yZCwgND4gbV9tZXRob2RHZXRzOwogICAgIFZlY3RvcjxKU0Nh
bGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiA5MDQzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgdHlwZWRlZiB1aW50
MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KEdldE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTI2Niw3ICsy
NjcsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG9wID09IEdldEJ5SWQgfHwgb3AgPT0gUHV0QnlJZCB8fCBvcCA9PSBQ
dXRCeUlkRGlyZWN0OworICAgICAgICByZXR1cm4gb3AgPT0gR2V0QnlJZCB8fCBvcCA9PSBQdXRC
eUlkIHx8IG9wID09IFB1dEJ5SWREaXJlY3QgfHwgb3AgPT0gR2V0TWV0aG9kOwogICAgIH0KIAog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwNDMz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzOCw2ICs4MzgsMjAgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dE1ldGhvZDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CisKKyAgICAgICAgY2FjaGVkR2V0TWV0aG9kKGJhc2VHUFIsIHJl
c3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgUHV0QnlJZDogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTkgKzIyOCwxOSBA
QCBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9wZXJ0eU5hbWUsIHNsb3QpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFk
ZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBSZXR1cm5BZGRy
ZXNzUHRyKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERSRVNTKG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci1FbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplV2l0
aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBS
ZXR1cm5BZGRyZXNzUHRyKTsKK0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERS
RVNTKG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplKTsKK0VuY29kZWRKU1ZhbHVlIG9wZXJhdGlv
bkdldE1ldGhvZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIGlmIChzdHViSW5mby5z
ZWVuKQotICAgICAgICBkZmdSZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsICpwcm9wZXJ0
eU5hbWUsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZElu
Zm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0TWV0aG9kQ2FsbExpbmtJbmZvKHJldHVybkFkZHJl
c3MpOworICAgIGlmIChtZXRob2RJbmZvLnNlZW5PbmNlKCkpCisgICAgICAgIGRmZ1JlcGF0Y2hH
ZXRNZXRob2QoZXhlYywgYmFzZVZhbHVlLCAqcHJvcGVydHlOYW1lLCBzbG90LCBtZXRob2RJbmZv
KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBtZXRo
b2RJbmZvLnNldFNlZW4oKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTI1OSw2ICsyNTksMjMgQEAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZEJ1
aWxkTGlzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBSZXR1cm5BZGRyZXNzUHRyKTsKK0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERSRVNTKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CitFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJ
ZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5TmFtZSwgc2xvdCk7CisKKyAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0
dXJuQWRkcmVzcyk7CisgICAgaWYgKHN0dWJJbmZvLnNlZW4pCisgICAgICAgIGRmZ1JlcGF0Y2hH
ZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgKnByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8pOwor
ICAgIGVsc2UKKyAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Qo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbDx0cnVlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2Rl
ZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUg
b3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
SWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogRW5j
b2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CitFbmNvZGVkSlNWYWx1ZSBvcGVyYXRp
b25HZXRNZXRob2RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgSWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgcHJvdG90eXBlKTsKIHZvaWQgb3BlcmF0aW9uVGhyb3dIYXNJbnN0YW5jZUVycm9y
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UpOwogdm9pZCBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiA5MDQz
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw2ICsxNjEsNjMgQEAgdm9pZCBkZmdSZXBhdGNoR2V0QnlJRChFeGVjU3Rh
dGUqIGV4ZWMsIAogICAgICAgICBkZmdSZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsKIH0KIAorc3RhdGlj
IHZvaWQgZGZnUmVwYXRjaEdldE1ldGhvZEZhc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RJbmZvLCBKU0Z1
bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogc2xvdEJhc2VP
YmplY3QpCit7CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIgPSBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpOworICAgIAorICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2Rl
QmxvY2spOworCisgICAgLy8gT25seSBvcHRpbWl6ZSBvbmNlIQorICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKG1ldGhvZEluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsK
KworICAgIG1ldGhvZEluZm8uY2FjaGVkU3RydWN0dXJlLnNldCgqZ2xvYmFsRGF0YSwgb3duZXIs
IHN0cnVjdHVyZSk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0
KCpnbG9iYWxEYXRhLCBvd25lciwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICBt
ZXRob2RJbmZvLmNhY2hlZFByb3RvdHlwZS5zZXQoKmdsb2JhbERhdGEsIG93bmVyLCBzbG90QmFz
ZU9iamVjdCk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRGdW5jdGlvbi5zZXQoKmdsb2JhbERhdGEs
IG93bmVyLCBjYWxsZWUpOworfQorCitzdGF0aWMgYm9vbCB0cnlDYWNoZUdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RJbmZvKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU0NlbGwqIHNwZWNpZmljOworICAg
IEpTT2JqZWN0KiBzbG90QmFzZU9iamVjdDsKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisg
ICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICYmICEoc3RydWN0dXJl
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkKKyAgICAgICAgJiYgKHNsb3RCYXNlT2JqZWN0ID0gYXNPYmplY3Qoc2xvdC5zbG90QmFz
ZSgpKSktPmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHNwZWNp
ZmljKQorICAgICAgICAmJiBzcGVjaWZpYykgeworICAgICAgICAKKyAgICAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gKEpTRnVuY3Rpb24qKXNwZWNpZmljOworICAgICAgICAKKyAgICAgICAgLy8g
U2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2Qg
YmV0IHRoYXQgaXQKKyAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlv
bmFyeS4KKyAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCisgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZXhlYykpIHsKKyAgICAgICAg
ICAgIGRmZ1JlcGF0Y2hHZXRNZXRob2RGYXN0KGdsb2JhbERhdGEsIGNvZGVCbG9jaywgbWV0aG9k
SW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoc2xvdC5zbG90QmFz
ZSgpID09IGJhc2VWYWx1ZSkgeworICAgICAgICAgICAgZGZnUmVwYXRjaEdldE1ldGhvZEZhc3Qo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCBtZXRob2RJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgZXhl
Yy0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPm1ldGhvZENhbGxEdW1teSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBkZmdSZXBhdGNoR2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZEluZm8pCit7CisgICAg
Ym9vbCBjYWNoZWQgPSB0cnlDYWNoZUdldE1ldGhvZChleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgbWV0aG9kSW5mbyk7CisgICAgaWYgKCFjYWNoZWQpCisgICAgICAgIGRmZ1Jl
cGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBtZXRob2RJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKK30KKwogc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCShyZXZpc2lvbiA5MDQzMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgZGZnUmVwYXRjaEdl
dEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIGRmZ1JlcGF0Y2hHZXRNZXRob2Qo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIE1ldGhvZENhbGxMaW5rSW5mbyYpOwogdm9pZCBkZmdCdWlsZEdldEJ5SURMaXN0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBkZmdSZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0
dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgZGZnTGlua0NhbGwoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTQsNiArMTAx
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRNZXRob2Q6IHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKKworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworCisgICAgICAgIGNhY2hlZEdldE1ldGhvZChiYXNlLmdwcigpLCByZXN1
bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAg
ICBjYXNlIFB1dEJ5SWQ6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3Jp
dGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRX
cml0ZUJhcnJpZXIuaAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFdyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgdmFsaWRhdGVDZWxsKHZhbHVlKTsKICAgICAgICAgSklUV3JpdGVC
YXJyaWVyQmFzZTo6c2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBvd25lciwgdmFsdWUpOwogICAg
IH0KKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIs
IFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uKCksIG93
bmVyLCB2YWx1ZSk7CisgICAgfQogICAgIFQqIGdldCgpIGNvbnN0CiAgICAgewogICAgICAgICBU
KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxUKj4oSklUV3JpdGVCYXJyaWVyQmFzZTo6Z2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99788</attachid>
            <date>2011-07-05 21:17:46 -0700</date>
            <delta_ts>2011-07-06 17:54:14 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>method_patch_2.diff</filename>
            <type>text/plain</type>
            <size>25877</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IHN1cHBvcnQgbWV0aG9kX2NoZWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6TWV0aG9k
Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpzZWVuT25j
ZSk6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6c2V0U2Vlbik6CisgICAgICAg
ICogZGZnL0RGR0FsaWFzVHJhY2tlci5oOgorICAgICAgICAoSlNDOjpERkc6OkFsaWFzVHJhY2tl
cjo6cmVjb3JkR2V0TWV0aG9kKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29kZUdlbmVyYXRvcjo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29k
ZUdlbmVyYXRvcjo6Y2FjaGVkR2V0TWV0aG9kKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgICogZGZnL0RG
R0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZE1ldGhv
ZEdldCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6Ok1ldGhvZEdldFJlY29yZDo6
TWV0aG9kR2V0UmVjb3JkKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb25TcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkZmdSZXBhdGNoR2V0TWV0aG9kRmFzdCk6CisgICAgICAgIChKU0M6OkRGRzo6dHJ5
Q2FjaGVHZXRNZXRob2QpOgorICAgICAgICAoSlNDOjpERkc6OmRmZ1JlcGF0Y2hHZXRNZXRob2Qp
OgorICAgICAgICAqIGRmZy9ERkdSZXBhdGNoLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVFdyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpKSVRXcml0
ZUJhcnJpZXI6OnNldCk6CisKIDIwMTEtMDctMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBGb3JjZSBpbmxpbmluZyBvZiBzaW1wbGUgZnVuY3Rpb25zIHRoYXQg
c2hvdyB1cCBhcyBub3QgYmVpbmcgaW5saW5lZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NjUsNyArMTU2NSw5IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQK
IAogICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9tZXRob2RDYWxsTGlua0luZm9z
W2ldLmNhY2hlZFN0cnVjdHVyZSkgewotICAgICAgICAgICAgLy8gQm90aCBtZW1iZXJzIG11c3Qg
YmUgZmlsbGVkIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgICAgIC8vIFRoZXNlIG1lbWJlcnMg
bXVzdCBiZSBmaWxsZWQgYXQgdGhlIHNhbWUgdGltZSwgYW5kIG9ubHkgYWZ0ZXIKKyAgICAgICAg
ICAgIC8vIHRoZSBNZXRob2RDYWxsTGlua0luZm8gaXMgc2V0IGFzIHNlZW4uCisgICAgICAgICAg
ICBBU1NFUlQobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLnNlZW5PbmNlKCkpOwogICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgQVNTRVJUKCEhbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hl
ZFByb3RvdHlwZVN0cnVjdHVyZSk7CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRo
b2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5MDQzMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTI5LDI1ICsxMjksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3Qg
TWV0aG9kQ2FsbExpbmtJbmZvIHsKICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKKyAgICAg
ICAgICAgIDogc2VlbihmYWxzZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgYm9v
bCBzZWVuT25jZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0
dXJlKTsKLSAgICAgICAgICAgIHJldHVybiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuaXNGbGFn
Z2VkKCk7CisgICAgICAgICAgICByZXR1cm4gc2VlbjsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgc2V0U2VlbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0
dXJlICYmICFjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgLy8gV2UgdXNl
IHRoZSB2YWx1ZXMgb2YgY2FjaGVkU3RydWN0dXJlICYgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJl
IHRvIGluZGljYXRlIHRoZQotICAgICAgICAgICAgLy8gY3VycmVudCBzdGF0ZS4KLSAgICAgICAg
ICAgIC8vICAgICAtIEluIHRoZSBpbml0aWFsIHN0YXRlLCBib3RoIGFyZSBudWxsLgotICAgICAg
ICAgICAgLy8gICAgIC0gT25jZSB0aGlzIHRyYW5zaXRpb24gaGFzIGJlZW4gdGFrZW4gb25jZSwg
Y2FjaGVkU3RydWN0dXJlIGlzCi0gICAgICAgICAgICAvLyAgICAgICBudWxsIGFuZCBjYWNoZWRQ
cm90b3R5cGVTdHJ1Y3R1cmUgaXMgc2V0IHRvIGEgbnVuLW51bGwgdmFsdWUuCi0gICAgICAgICAg
ICAvLyAgICAgLSBPbmNlIHRoZSBjYWxsIGlzIGxpbmtlZCBib3RoIHN0cnVjdHVyZXMgYXJlIHNl
dCB0byBub24tbnVsbCB2YWx1ZXMuCi0gICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1
cmUuc2V0RmxhZ09uQmFycmllcigpOworICAgICAgICAgICAgc2VlbiA9IHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTE1
NSw2ICsxNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOwogICAgICAgICBKSVRXcml0ZUJhcnJp
ZXI8SlNGdW5jdGlvbj4gY2FjaGVkRnVuY3Rpb247CiAgICAgICAgIEpJVFdyaXRlQmFycmllcjxK
U09iamVjdD4gY2FjaGVkUHJvdG90eXBlOworICAgICAgICBib29sIHNlZW47CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBHbG9iYWxSZXNvbHZlSW5mbyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FsaWFzVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWxpYXNUcmFja2VyLmgJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBbGlhc1RyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfVU5VU0VEKGdldEJ5SWQsIG1fZ3Jh
cGhbZ2V0QnlJZF0ub3AgPT0gR2V0QnlJZCk7CiAgICAgICAgIG1fY2FuZGlkYXRlQWxpYXNHZXRC
eVZhbCA9IE5vTm9kZTsKICAgICB9CisgICAgCisgICAgdm9pZCByZWNvcmRHZXRNZXRob2QoTm9k
ZUluZGV4IGdldE1ldGhvZCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZ2V0TWV0aG9k
LCBtX2dyYXBoW2dldE1ldGhvZF0ub3AgPT0gR2V0TWV0aG9kKTsKKyAgICAgICAgbV9jYW5kaWRh
dGVBbGlhc0dldEJ5VmFsID0gTm9Ob2RlOworICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUHV0QnlJ
ZChOb2RlSW5kZXggcHV0QnlJZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUyLDEyICs4NTIsMjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsKTsKICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CisgICAg
ICAgICAgICBJbnN0cnVjdGlvbiogZ2V0SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb24g
KyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjayk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKSA9PSBvcF9nZXRfYnlfaWQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlSW5k
ZXggYmFzZSA9IGdldChnZXRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGdldEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgTm9kZUluZGV4IGdldE1ldGhvZCA9IGFkZFRvR3JhcGgoR2V0
TWV0aG9kLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpOworICAgICAgICAgICAgc2V0KGdldElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0TWV0aG9kKTsKKyAgICAgICAgICAgIGFsaWFzZXMu
cmVjb3JkR2V0TWV0aG9kKGdldE1ldGhvZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSArIE9QQ09ERV9M
RU5HVEgob3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKICAgICAgICAgICAgIFBST1BFUlRZX0FDQ0VT
U19PUCgpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlSW5kZXggZ2V0QnlJZCA9IGFkZFRvR3JhcGgoR2V0QnlJZCwgT3BJbmZvKGlkZW50aWZp
ZXIpLCBiYXNlKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCBnZXRCeUlkKTsKICAgICAgICAgICAgIGFsaWFzZXMucmVjb3JkR2V0QnlJZChnZXRCeUlk
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjp1c2VDaGlsZHJlbihOb2RlJgogICAgIH0KIH0KIAot
dm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJS
ZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aFRhcmdldCkKK0pJVENvbXBpbGVyOjpDYWxsIEpJVENvZGVHZW5lcmF0b3I6OmNh
Y2hlZEdldEJ5SWQoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBOb2RlVHlw
ZSBub2RlVHlwZSkKIHsKICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKICAgICAKQEAgLTM1Myw3ICsz
NTMsMjAgQEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUgogICAgIG1f
aml0Lm1vdmUoYmFzZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpJbW1QdHIoaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMik7CiAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBmdW5j
dGlvbkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CisgICAgSklUQ29tcGlsZXI6OkNhbGwgZnVuY3Rpb25DYWxsOworICAgIHN3aXRj
aCAobm9kZVR5cGUpIHsKKyAgICBjYXNlIEdldEJ5SWQ6CisgICAgICAgIGZ1bmN0aW9uQ2FsbCA9
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsK
KyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgR2V0TWV0aG9kOgorICAgICAgICBm
dW5jdGlvbkNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldE1l
dGhvZE9wdGltaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSklUQ29tcGlsZXI6
OkNhbGwoKTsKKyAgICB9CiAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
cmVzdWx0R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
CkBAIC0zNzEsNiArMzg0LDggQEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlk
KEdQUgogICAgIAogICAgIGlmIChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BS
ICE9IEludmFsaWRHUFJSZWcpCiAgICAgICAgIHVubG9jayhzY3JhdGNoR1BSKTsKKyAgICAKKyAg
ICByZXR1cm4gZnVuY3Rpb25DYWxsOwogfQogCiB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRl
QmFycmllcihNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCkBA
IC00MzAsNiArNDQ1LDI5IEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChH
UFIKICAgICBtX2ppdC5hZGRQcm9wZXJ0eUFjY2VzcyhmdW5jdGlvbkNhbGwsIGNoZWNrSW1tVG9D
YWxsLCBjYWxsVG9DaGVjaywgY2FsbFRvU3RvcmUsIGNhbGxUb1Nsb3dDYXNlLCBjYWxsVG9Eb25l
LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGJhc2VHUFIpLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVl
R1BSKSwgc3RhdGljX2Nhc3Q8aW50OF90PihzY3JhdGNoR1BSKSk7CiB9CiAKK3ZvaWQgSklUQ29k
ZUdlbmVyYXRvcjo6Y2FjaGVkR2V0TWV0aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0
R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aFRhcmdldCkKK3sKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbDsKKyAgICBKSVRDb21w
aWxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgcHJvdG9PYmosIHByb3RvU3RydWN0
VG9Db21wYXJlLCBwdXRGdW5jdGlvbjsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCB3cm9u
Z1N0cnVjdHVyZSA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3RUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOworICAgIHByb3RvT2JqID0gbV9qaXQubW92ZVdpdGhQYXRj
aChKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigwKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21w
aWxlcjo6SnVtcCB3cm9uZ1Byb3RvU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNo
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOworICAgIAor
ICAgIHB1dEZ1bmN0aW9uID0gbV9qaXQubW92ZVdpdGhQYXRjaChKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbVB0cigwKSwgcmVzdWx0R1BSKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOworICAgIAorICAgIHdyb25nU3RydWN0dXJlLmxpbmsoJm1faml0KTsK
KyAgICB3cm9uZ1Byb3RvU3RydWN0dXJlLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBzbG93Q2Fs
bCA9IGNhY2hlZEdldEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBpZGVudGlmaWVyTnVtYmVyLCBz
bG93UGF0aFRhcmdldCwgR2V0TWV0aG9kKTsKKyAgICAKKyAgICBkb25lLmxpbmsoJm1faml0KTsK
KyAgICAKKyAgICBtX2ppdC5hZGRNZXRob2RHZXQoc2xvd0NhbGwsIHN0cnVjdFRvQ29tcGFyZSwg
cHJvdG9PYmosIHByb3RvU3RydWN0VG9Db21wYXJlLCBwdXRGdW5jdGlvbik7Cit9CisKIHZvaWQg
SklUQ29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoTm9kZSYgbm9kZSwgR1BSUmVnIHRhcmdldEdQUikK
IHsKICAgICAvLyB0aGUgY2FsbCBpbnN0cnVjdGlvbidzIGZpcnN0IGNoaWxkIGlzIGVpdGhlciB0
aGUgZnVuY3Rpb24gKG5vcm1hbCBjYWxsKSBvciB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5MDQzMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MjAsOCArNTIwLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3Vs
dEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENv
bXBpbGVyOjpKdW1wKCksIE5vZGVUeXBlID0gR2V0QnlJZCk7CiAgICAgdm9pZCBjYWNoZWRQdXRC
eUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAgIHZvaWQgY2FjaGVkR2V0TWV0
aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3NPZkNhbGxE
YXRhKGludCBpZHgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUs
NyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgICAgIG1f
Y2FsbHMuY2xlYXIoKTsKICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc2VzLmNsZWFyKCk7CiAgICAg
ICAgIG1fanNDYWxscy5jbGVhcigpOworICAgICAgICBtX21ldGhvZEdldHMuY2xlYXIoKTsKICAg
ICAgICAgcmV3aW5kVG9MYWJlbChzcGVjdWxhdGl2ZVBhdGhCZWdpbik7CiAKICAgICAgICAgU3Bl
Y3VsYXRpb25DaGVja1ZlY3RvciBub0NoZWNrczsKQEAgLTQwOSw2ICs0MTAsMTYgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogICAgICAgICBpbmZvLmhvdFBhdGhP
dGhlciA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fanNDYWxsc1tpXS5tX2Zhc3RD
YWxsKTsKICAgICB9CiAgICAgCisgICAgbV9jb2RlQmxvY2stPmFkZE1ldGhvZENhbGxMaW5rSW5m
b3MobV9tZXRob2RHZXRzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
bWV0aG9kR2V0cy5zaXplKCk7ICsraSkgeworICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIGlu
Zm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJbmZvKGkpOworICAgICAgICBpbmZvLmNh
Y2hlZFN0cnVjdHVyZS5zZXRMb2NhdGlvbihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc3RydWN0VG9Db21wYXJlKSk7CisgICAgICAgIGluZm8uY2FjaGVkUHJvdG90eXBl
U3RydWN0dXJlLnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNb
aV0ubV9wcm90b1N0cnVjdFRvQ29tcGFyZSkpOworICAgICAgICBpbmZvLmNhY2hlZEZ1bmN0aW9u
LnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZEdldHNbaV0ubV9wdXRG
dW5jdGlvbikpOworICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlwZS5zZXRMb2NhdGlvbihsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJvdG9PYmopKTsKKyAgICAgICAg
aW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RH
ZXRzW2ldLm1fc2xvd0NhbGwpOworICAgIH0KKyAgICAKICAgICAvLyBGSVhNRTogc3dpdGNoIHRo
ZSByZWdpc3RlciBmaWxlIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdPcGVydGFpb24g
c3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlua0J1ZmZlci5saW5rKGNhbGxSZWdp
c3RlckZpbGVDaGVjaywgY3RpX3JlZ2lzdGVyX2ZpbGVfY2hlY2spOwogICAgIGxpbmtCdWZmZXIu
bGluayhjYWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9v
cF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gOTA0
MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTEgQEAgcHVibGljOgogICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzZXMuYXBwZW5kKFByb3BlcnR5QWNjZXNzUmVjb3JkKGZ1bmN0aW9uQ2FsbCwgZGVsdGFD
aGVja0ltbVRvQ2FsbCwgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjaywgZGVsdGFDYWxsVG9Mb2FkT3JT
dG9yZSwgZGVsdGFDYWxsVG9TbG93Q2FzZSwgZGVsdGFDYWxsVG9Eb25lLCAgYmFzZUdQUiwgdmFs
dWVHUFIsIHNjcmF0Y2hHUFIpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBhZGRNZXRob2RHZXQo
Q2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgRGF0YUxhYmVsUHRy
IHByb3RvT2JqLCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIERhdGFMYWJlbFB0
ciBwdXRGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG1fbWV0aG9kR2V0cy5hcHBlbmQoTWV0aG9k
R2V0UmVjb3JkKHNsb3dDYWxsLCBzdHJ1Y3RUb0NvbXBhcmUsIHByb3RvT2JqLCBwcm90b1N0cnVj
dFRvQ29tcGFyZSwgcHV0RnVuY3Rpb24pKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhZGRKU0Nh
bGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hl
Y2ssIGJvb2wgaXNDYWxsLCB1bnNpZ25lZCBleGNlcHRpb25JbmZvKQogICAgIHsKICAgICAgICAg
bV9qc0NhbGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRU
b0NoZWNrLCBpc0NhbGwsIGV4Y2VwdGlvbkluZm8pKTsKQEAgLTMxOCw2ICszMjMsMjMgQEAgcHJp
dmF0ZToKICAgICAgICAgaW50OF90IG1fc2NyYXRjaEdQUjsKICAgICB9OwogICAgIAorICAgIHN0
cnVjdCBNZXRob2RHZXRSZWNvcmQgeworICAgICAgICBNZXRob2RHZXRSZWNvcmQoQ2FsbCBzbG93
Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgRGF0YUxhYmVsUHRyIHByb3RvT2Jq
LCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIERhdGFMYWJlbFB0ciBwdXRGdW5j
dGlvbikKKyAgICAgICAgICAgIDogbV9zbG93Q2FsbChzbG93Q2FsbCkKKyAgICAgICAgICAgICwg
bV9zdHJ1Y3RUb0NvbXBhcmUoc3RydWN0VG9Db21wYXJlKQorICAgICAgICAgICAgLCBtX3Byb3Rv
T2JqKHByb3RvT2JqKQorICAgICAgICAgICAgLCBtX3Byb3RvU3RydWN0VG9Db21wYXJlKHByb3Rv
U3RydWN0VG9Db21wYXJlKQorICAgICAgICAgICAgLCBtX3B1dEZ1bmN0aW9uKHB1dEZ1bmN0aW9u
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENhbGwgbV9zbG93Q2Fs
bDsKKyAgICAgICAgRGF0YUxhYmVsUHRyIG1fc3RydWN0VG9Db21wYXJlOworICAgICAgICBEYXRh
TGFiZWxQdHIgbV9wcm90b09iajsKKyAgICAgICAgRGF0YUxhYmVsUHRyIG1fcHJvdG9TdHJ1Y3RU
b0NvbXBhcmU7CisgICAgICAgIERhdGFMYWJlbFB0ciBtX3B1dEZ1bmN0aW9uOworICAgIH07Cisg
ICAgCiAgICAgc3RydWN0IEpTQ2FsbFJlY29yZCB7CiAgICAgICAgIEpTQ2FsbFJlY29yZChDYWxs
IGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjaywgYm9v
bCBpc0NhbGwsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZm8pCiAgICAgICAgICAgICA6IG1fZmFzdENh
bGwoZmFzdENhbGwpCkBAIC0zMzYsNiArMzU4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAg
VmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBtX3Byb3BlcnR5QWNjZXNzZXM7CisgICAg
VmVjdG9yPE1ldGhvZEdldFJlY29yZCwgND4gbV9tZXRob2RHZXRzOwogICAgIFZlY3RvcjxKU0Nh
bGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiA5MDQzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgdHlwZWRlZiB1aW50
MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KEdldE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKQEAgLTI2Niw3ICsy
NjcsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG9wID09IEdldEJ5SWQgfHwgb3AgPT0gUHV0QnlJZCB8fCBvcCA9PSBQ
dXRCeUlkRGlyZWN0OworICAgICAgICByZXR1cm4gb3AgPT0gR2V0QnlJZCB8fCBvcCA9PSBQdXRC
eUlkIHx8IG9wID09IFB1dEJ5SWREaXJlY3QgfHwgb3AgPT0gR2V0TWV0aG9kOwogICAgIH0KIAog
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwNDMz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzOCw2ICs4MzgsMjAgQEAgdm9pZCBOb25TcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dE1ldGhvZDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGJhc2VHUFIsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CisKKyAgICAgICAgY2FjaGVkR2V0TWV0aG9kKGJhc2VHUFIsIHJl
c3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgUHV0QnlJZDogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsMTkgKzIyOCwxOSBA
QCBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9wZXJ0eU5hbWUsIHNsb3QpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFk
ZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBSZXR1cm5BZGRy
ZXNzUHRyKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERSRVNTKG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci1FbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplV2l0
aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBS
ZXR1cm5BZGRyZXNzUHRyKTsKK0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERS
RVNTKG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplKTsKK0VuY29kZWRKU1ZhbHVlIG9wZXJhdGlv
bkdldE1ldGhvZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5B
ZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwotICAgIGlmIChzdHViSW5mby5z
ZWVuKQotICAgICAgICBkZmdSZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsICpwcm9wZXJ0
eU5hbWUsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZElu
Zm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0TWV0aG9kQ2FsbExpbmtJbmZvKHJldHVybkFkZHJl
c3MpOworICAgIGlmIChtZXRob2RJbmZvLnNlZW5PbmNlKCkpCisgICAgICAgIGRmZ1JlcGF0Y2hH
ZXRNZXRob2QoZXhlYywgYmFzZVZhbHVlLCAqcHJvcGVydHlOYW1lLCBzbG90LCBtZXRob2RJbmZv
KTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0cnVlOworICAgICAgICBtZXRo
b2RJbmZvLnNldFNlZW4oKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KQEAgLTI1OSw2ICsyNTksMjMgQEAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZEJ1
aWxkTGlzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBSZXR1cm5BZGRyZXNzUHRyKTsKK0ZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERSRVNTKG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSk7CitFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoUmV0
dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJ
ZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5TmFtZSwgc2xvdCk7CisKKyAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0U3R1YkluZm8ocmV0
dXJuQWRkcmVzcyk7CisgICAgaWYgKHN0dWJJbmZvLnNlZW4pCisgICAgICAgIGRmZ1JlcGF0Y2hH
ZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgKnByb3BlcnR5TmFtZSwgc2xvdCwgc3R1YkluZm8pOwor
ICAgIGVsc2UKKyAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Qo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAg
b3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbDx0cnVlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2Rl
ZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUg
b3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
SWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogRW5j
b2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CitFbmNvZGVkSlNWYWx1ZSBvcGVyYXRp
b25HZXRNZXRob2RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgSWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgcHJvdG90eXBlKTsKIHZvaWQgb3BlcmF0aW9uVGhyb3dIYXNJbnN0YW5jZUVycm9y
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UpOwogdm9pZCBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiA5MDQz
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw2ICsxNjEsNjMgQEAgdm9pZCBkZmdSZXBhdGNoR2V0QnlJRChFeGVjU3Rh
dGUqIGV4ZWMsIAogICAgICAgICBkZmdSZXBhdGNoQ2FsbChleGVjLT5jb2RlQmxvY2soKSwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsKIH0KIAorc3RhdGlj
IHZvaWQgZGZnUmVwYXRjaEdldE1ldGhvZEZhc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RJbmZvLCBKU0Z1
bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogc2xvdEJhc2VP
YmplY3QpCit7CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIgPSBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpOworICAgIAorICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2Rl
QmxvY2spOworCisgICAgLy8gT25seSBvcHRpbWl6ZSBvbmNlIQorICAgIHJlcGF0Y2hCdWZmZXIu
cmVsaW5rKG1ldGhvZEluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsK
KworICAgIG1ldGhvZEluZm8uY2FjaGVkU3RydWN0dXJlLnNldCgqZ2xvYmFsRGF0YSwgb3duZXIs
IHN0cnVjdHVyZSk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0
KCpnbG9iYWxEYXRhLCBvd25lciwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICBt
ZXRob2RJbmZvLmNhY2hlZFByb3RvdHlwZS5zZXQoKmdsb2JhbERhdGEsIG93bmVyLCBzbG90QmFz
ZU9iamVjdCk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRGdW5jdGlvbi5zZXQoKmdsb2JhbERhdGEs
IG93bmVyLCBjYWxsZWUpOworfQorCitzdGF0aWMgYm9vbCB0cnlDYWNoZUdldE1ldGhvZChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RJbmZvKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU0NlbGwqIHNwZWNpZmljOworICAg
IEpTT2JqZWN0KiBzbG90QmFzZU9iamVjdDsKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisg
ICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAgICAgICYmICEoc3RydWN0dXJl
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkKKyAgICAgICAgJiYgKHNsb3RCYXNlT2JqZWN0ID0gYXNPYmplY3Qoc2xvdC5zbG90QmFz
ZSgpKSktPmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHNwZWNp
ZmljKQorICAgICAgICAmJiBzcGVjaWZpYykgeworICAgICAgICAKKyAgICAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gKEpTRnVuY3Rpb24qKXNwZWNpZmljOworICAgICAgICAKKyAgICAgICAgLy8g
U2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2Qg
YmV0IHRoYXQgaXQKKyAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlv
bmFyeS4KKyAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpCisgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZXhlYykpIHsKKyAgICAgICAg
ICAgIGRmZ1JlcGF0Y2hHZXRNZXRob2RGYXN0KGdsb2JhbERhdGEsIGNvZGVCbG9jaywgbWV0aG9k
SW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0KTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoc2xvdC5zbG90QmFz
ZSgpID09IGJhc2VWYWx1ZSkgeworICAgICAgICAgICAgZGZnUmVwYXRjaEdldE1ldGhvZEZhc3Qo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCBtZXRob2RJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgZXhl
Yy0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPm1ldGhvZENhbGxEdW1teSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBkZmdSZXBhdGNoR2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90LCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZEluZm8pCit7CisgICAg
Ym9vbCBjYWNoZWQgPSB0cnlDYWNoZUdldE1ldGhvZChleGVjLCBiYXNlVmFsdWUsIHByb3BlcnR5
TmFtZSwgc2xvdCwgbWV0aG9kSW5mbyk7CisgICAgaWYgKCFjYWNoZWQpCisgICAgICAgIGRmZ1Jl
cGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBtZXRob2RJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKK30KKwogc3RhdGljIGJvb2wgdHJ5QnVpbGRH
ZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCShyZXZpc2lvbiA5MDQzMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgZGZnUmVwYXRjaEdl
dEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIGRmZ1JlcGF0Y2hHZXRNZXRob2Qo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYsIE1ldGhvZENhbGxMaW5rSW5mbyYpOwogdm9pZCBkZmdCdWlsZEdldEJ5SURMaXN0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBkZmdSZXBhdGNoUHV0QnlJRChFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJvcGVydHlTbG90JiwgU3RydWN0
dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgZGZnTGlua0NhbGwoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwNDMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTQsNiArMTAx
NCwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRNZXRob2Q6IHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKKworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworCisgICAgICAgIGNhY2hlZEdldE1ldGhvZChiYXNlLmdwcigpLCByZXN1
bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAg
ICBjYXNlIFB1dEJ5SWQ6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV3Jp
dGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRX
cml0ZUJhcnJpZXIuaAkocmV2aXNpb24gOTA0MzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFdyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgdmFsaWRhdGVDZWxsKHZhbHVlKTsKICAgICAgICAgSklUV3JpdGVC
YXJyaWVyQmFzZTo6c2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBvd25lciwgdmFsdWUpOwogICAg
IH0KKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIs
IFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uKCksIG93
bmVyLCB2YWx1ZSk7CisgICAgfQogICAgIFQqIGdldCgpIGNvbnN0CiAgICAgewogICAgICAgICBU
KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxUKj4oSklUV3JpdGVCYXJyaWVyQmFzZTo6Z2V0KCkpOwo=
</data>
<flag name="review"
          id="94343"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="94344"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99907</attachid>
            <date>2011-07-06 17:54:14 -0700</date>
            <delta_ts>2011-07-06 20:42:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>method_patch_3.diff</filename>
            <type>text/plain</type>
            <size>25952</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA1MTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMTEtMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGRvZXMgbm90IHN1cHBvcnQgbWV0aG9kX2NoZWNrCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL0NvZGVMb2NhdGlvbi5oOgor
ICAgICAgICAoSlNDOjpDb2RlTG9jYXRpb25Qb3NzaWJseU5lYXJDYWxsOjpDb2RlTG9jYXRpb25Q
b3NzaWJseU5lYXJDYWxsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpNZXRob2RD
YWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86OnNlZW5PbmNl
KToKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpzZXRTZWVuKToKKyAgICAgICAg
KiBkZmcvREZHQWxpYXNUcmFja2VyLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWxpYXNUcmFja2Vy
OjpyZWNvcmRHZXRNZXRob2QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRD
b2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb2Rl
R2VuZXJhdG9yOjpjYWNoZWRHZXRNZXRob2QpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkTWV0aG9k
R2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6TWV0aG9kR2V0UmVjb3JkOjpN
ZXRob2RHZXRSZWNvcmQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllcik6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRmZ1JlcGF0Y2hHZXRNZXRob2RGYXN0KToKKyAgICAgICAgKEpTQzo6REZHOjp0cnlD
YWNoZUdldE1ldGhvZCk6CisgICAgICAgIChKU0M6OkRGRzo6ZGZnUmVwYXRjaEdldE1ldGhvZCk6
CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBqaXQvSklUV3JpdGVCYXJyaWVyLmg6CisgICAgICAgIChKU0M6OkpJVFdyaXRl
QmFycmllcjo6c2V0KToKKwogMjAxMS0wNy0wNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIERGRyBKSVQgdmlydHVhbCBjYWxsIGltcGxlbWVudGF0aW9uIGlzIGlu
ZWZmaWNpZW50LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDkwNTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjUsNyArMTU2NSw5IEBAIHZv
aWQgQ29kZUJsb2NrOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXQKIAogICAgIGZvciAoc2l6ZV90
IHNpemUgPSBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewogICAgICAgICBpZiAobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVjdHVy
ZSkgewotICAgICAgICAgICAgLy8gQm90aCBtZW1iZXJzIG11c3QgYmUgZmlsbGVkIGF0IHRoZSBz
YW1lIHRpbWUKKyAgICAgICAgICAgIC8vIFRoZXNlIG1lbWJlcnMgbXVzdCBiZSBmaWxsZWQgYXQg
dGhlIHNhbWUgdGltZSwgYW5kIG9ubHkgYWZ0ZXIKKyAgICAgICAgICAgIC8vIHRoZSBNZXRob2RD
YWxsTGlua0luZm8gaXMgc2V0IGFzIHNlZW4uCisgICAgICAgICAgICBBU1NFUlQobV9tZXRob2RD
YWxsTGlua0luZm9zW2ldLnNlZW5PbmNlKCkpOwogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
Jm1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
QVNTRVJUKCEhbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlwZVN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9tZXRob2RDYWxsTGlua0luZm9zW2ld
LmNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA5MDUxNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDI1ICsx
MjksMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgTWV0aG9kQ2FsbExpbmtJbmZv
IHsKICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKKyAgICAgICAgICAgIDogc2VlbihmYWxz
ZSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzZWVuT25jZSgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0dXJlKTsKLSAgICAgICAgICAg
IHJldHVybiBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuaXNGbGFnZ2VkKCk7CisgICAgICAgICAg
ICByZXR1cm4gc2VlbjsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgc2V0U2VlbigpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghY2FjaGVkU3RydWN0dXJlICYmICFjYWNoZWRQcm90
b3R5cGVTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSB2YWx1ZXMgb2YgY2Fj
aGVkU3RydWN0dXJlICYgY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlIHRvIGluZGljYXRlIHRoZQot
ICAgICAgICAgICAgLy8gY3VycmVudCBzdGF0ZS4KLSAgICAgICAgICAgIC8vICAgICAtIEluIHRo
ZSBpbml0aWFsIHN0YXRlLCBib3RoIGFyZSBudWxsLgotICAgICAgICAgICAgLy8gICAgIC0gT25j
ZSB0aGlzIHRyYW5zaXRpb24gaGFzIGJlZW4gdGFrZW4gb25jZSwgY2FjaGVkU3RydWN0dXJlIGlz
Ci0gICAgICAgICAgICAvLyAgICAgICBudWxsIGFuZCBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUg
aXMgc2V0IHRvIGEgbnVuLW51bGwgdmFsdWUuCi0gICAgICAgICAgICAvLyAgICAgLSBPbmNlIHRo
ZSBjYWxsIGlzIGxpbmtlZCBib3RoIHN0cnVjdHVyZXMgYXJlIHNldCB0byBub24tbnVsbCB2YWx1
ZXMuCi0gICAgICAgICAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0RmxhZ09uQmFycmll
cigpOworICAgICAgICAgICAgc2VlbiA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBDb2Rl
TG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTE1NSw2ICsxNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJv
dG90eXBlU3RydWN0dXJlOwogICAgICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2Fj
aGVkRnVuY3Rpb247CiAgICAgICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJv
dG90eXBlOworICAgICAgICBib29sIHNlZW47CiAgICAgfTsKIAogICAgIHN0cnVjdCBHbG9iYWxS
ZXNvbHZlSW5mbyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsaWFzVHJh
Y2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWxpYXNU
cmFja2VyLmgJKHJldmlzaW9uIDkwNTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBbGlhc1RyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTIgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlRfVU5VU0VEKGdldEJ5SWQsIG1fZ3JhcGhbZ2V0QnlJZF0ub3AgPT0g
R2V0QnlJZCk7CiAgICAgICAgIG1fY2FuZGlkYXRlQWxpYXNHZXRCeVZhbCA9IE5vTm9kZTsKICAg
ICB9CisgICAgCisgICAgdm9pZCByZWNvcmRHZXRNZXRob2QoTm9kZUluZGV4IGdldE1ldGhvZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZ2V0TWV0aG9kLCBtX2dyYXBoW2dldE1ldGhv
ZF0ub3AgPT0gR2V0TWV0aG9kKTsKKyAgICAgICAgbV9jYW5kaWRhdGVBbGlhc0dldEJ5VmFsID0g
Tm9Ob2RlOworICAgIH0KIAogICAgIHZvaWQgcmVjb3JkUHV0QnlJZChOb2RlSW5kZXggcHV0QnlJ
ZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUyLDEyICs4NTIs
MjggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsKTsKICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgIGNhc2Ugb3BfbWV0aG9kX2NoZWNrOiB7CisgICAgICAgICAgICBJbnN0cnVjdGlv
biogZ2V0SW5zdHJ1Y3Rpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RIKG9w
X21ldGhvZF9jaGVjayk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlf
aWQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChnZXRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ciA9IGdldEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgTm9kZUluZGV4IGdldE1ldGhvZCA9IGFkZFRvR3JhcGgoR2V0TWV0aG9kLCBPcEluZm8oaWRl
bnRpZmllciksIGJhc2UpOworICAgICAgICAgICAgc2V0KGdldEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgZ2V0TWV0aG9kKTsKKyAgICAgICAgICAgIGFsaWFzZXMucmVjb3JkR2V0TWV0aG9kKGdl
dE1ldGhvZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fY3VycmVudEluZGV4ICs9IE9Q
Q09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSArIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lk
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6IHsKICAgICAgICAgICAgIFBST1BFUlRZX0FDQ0VTU19PUCgpOwogICAgICAgICAg
ICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnlJ
ZCA9IGFkZFRvR3JhcGgoR2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKTsKICAgICAg
ICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRCeUlkKTsKICAg
ICAgICAgICAgIGFsaWFzZXMucmVjb3JkR2V0QnlJZChnZXRCeUlkKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gOTA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBKSVRDb2RlR2Vu
ZXJhdG9yOjp1c2VDaGlsZHJlbihOb2RlJgogICAgIH0KIH0KIAotdm9pZCBKSVRDb2RlR2VuZXJh
dG9yOjpjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkK
K0pJVENvbXBpbGVyOjpDYWxsIEpJVENvZGVHZW5lcmF0b3I6OmNhY2hlZEdldEJ5SWQoR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBOb2RlVHlwZSBub2RlVHlwZSkKIHsKICAg
ICBHUFJSZWcgc2NyYXRjaEdQUjsKICAgICAKQEAgLTM1Myw3ICszNTMsMjAgQEAgdm9pZCBKSVRD
b2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUgogICAgIG1faml0Lm1vdmUoYmFzZUdQUiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpJbW1Q
dHIoaWRlbnRpZmllcihpZGVudGlmaWVyTnVtYmVyKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7
CiAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBmdW5jdGlvbkNhbGwgPSBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgZnVuY3Rpb25DYWxsOworICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKKyAg
ICBjYXNlIEdldEJ5SWQ6CisgICAgICAgIGZ1bmN0aW9uQ2FsbCA9IGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgIGNhc2UgR2V0TWV0aG9kOgorICAgICAgICBmdW5jdGlvbkNhbGwgPSBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gSklUQ29tcGlsZXI6OkNhbGwoKTsKKyAgICB9CiAg
ICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0R1BSKTsKICAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgCkBAIC0zNzEsNiArMzg0LDgg
QEAgdm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpjYWNoZWRHZXRCeUlkKEdQUgogICAgIAogICAgIGlm
IChzY3JhdGNoR1BSICE9IHJlc3VsdEdQUiAmJiBzY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcp
CiAgICAgICAgIHVubG9jayhzY3JhdGNoR1BSKTsKKyAgICAKKyAgICByZXR1cm4gZnVuY3Rpb25D
YWxsOwogfQogCiB2b2lkIEpJVENvZGVHZW5lcmF0b3I6OndyaXRlQmFycmllcihNYWNyb0Fzc2Vt
YmxlciYsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCkBAIC00MzAsNiArNDQ1LDI5IEBA
IHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVkUHV0QnlJZChHUFIKICAgICBtX2ppdC5hZGRQ
cm9wZXJ0eUFjY2VzcyhmdW5jdGlvbkNhbGwsIGNoZWNrSW1tVG9DYWxsLCBjYWxsVG9DaGVjaywg
Y2FsbFRvU3RvcmUsIGNhbGxUb1Nsb3dDYXNlLCBjYWxsVG9Eb25lLCBzdGF0aWNfY2FzdDxpbnQ4
X3Q+KGJhc2VHUFIpLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlR1BSKSwgc3RhdGljX2Nhc3Q8
aW50OF90PihzY3JhdGNoR1BSKSk7CiB9CiAKK3ZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2FjaGVk
R2V0TWV0aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCkKK3sKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbDsKKyAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHN0cnVjdFRvQ29tcGFyZSwgcHJvdG9PYmosIHByb3RvU3RydWN0VG9Db21wYXJlLCBwdXRGdW5j
dGlvbjsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCB3cm9uZ1N0cnVjdHVyZSA9IG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3RUb0NvbXBh
cmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0x
KSkpOworICAgIHByb3RvT2JqID0gbV9qaXQubW92ZVdpdGhQYXRjaChKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cigwKSwgcmVzdWx0R1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCB3cm9uZ1By
b3RvU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKSkpOworICAgIAorICAgIHB1dEZ1bmN0aW9uID0g
bV9qaXQubW92ZVdpdGhQYXRjaChKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigwKSwgcmVzdWx0
R1BSKTsKKyAgICAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwor
ICAgIAorICAgIHdyb25nU3RydWN0dXJlLmxpbmsoJm1faml0KTsKKyAgICB3cm9uZ1Byb3RvU3Ry
dWN0dXJlLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBzbG93Q2FsbCA9IGNhY2hlZEdldEJ5SWQo
YmFzZUdQUiwgcmVzdWx0R1BSLCBpZGVudGlmaWVyTnVtYmVyLCBzbG93UGF0aFRhcmdldCwgR2V0
TWV0aG9kKTsKKyAgICAKKyAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICAKKyAgICBtX2ppdC5h
ZGRNZXRob2RHZXQoc2xvd0NhbGwsIHN0cnVjdFRvQ29tcGFyZSwgcHJvdG9PYmosIHByb3RvU3Ry
dWN0VG9Db21wYXJlLCBwdXRGdW5jdGlvbik7Cit9CisKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6
ZW1pdENhbGwoTm9kZSYgbm9kZSkKIHsKICAgICBOb2RlSW5kZXggY2FsbGVlTm9kZUluZGV4ID0g
bV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiA5MDUxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjIsOCArNTIyLDkgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWNoZWRHZXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIE5vZGVUeXBlID0gR2V0QnlJZCk7CiAg
ICAgdm9pZCBjYWNoZWRQdXRCeUlkKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOworICAg
IHZvaWQgY2FjaGVkR2V0TWV0aG9kKEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdl
dCA9IEpJVENvbXBpbGVyOjpKdW1wKCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzIGFkZHJlc3NPZkNhbGxEYXRhKGludCBpZHgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDkwNTE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NSw2ICsyOTUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24o
SklUQ29kCiAgICAgICAgIG1fY2FsbHMuY2xlYXIoKTsKICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c2VzLmNsZWFyKCk7CiAgICAgICAgIG1fanNDYWxscy5jbGVhcigpOworICAgICAgICBtX21ldGhv
ZEdldHMuY2xlYXIoKTsKICAgICAgICAgcmV3aW5kVG9MYWJlbChzcGVjdWxhdGl2ZVBhdGhCZWdp
bik7CiAKICAgICAgICAgU3BlY3VsYXRpb25DaGVja1ZlY3RvciBub0NoZWNrczsKQEAgLTQwOSw2
ICs0MTAsMTYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogICAg
ICAgICBpbmZvLmhvdFBhdGhPdGhlciA9IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1f
anNDYWxsc1tpXS5tX2Zhc3RDYWxsKTsKICAgICB9CiAgICAgCisgICAgbV9jb2RlQmxvY2stPmFk
ZE1ldGhvZENhbGxMaW5rSW5mb3MobV9tZXRob2RHZXRzLnNpemUoKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWV0aG9kR2V0cy5zaXplKCk7ICsraSkgeworICAgICAgICBNZXRo
b2RDYWxsTGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJbmZvKGkp
OworICAgICAgICBpbmZvLmNhY2hlZFN0cnVjdHVyZS5zZXRMb2NhdGlvbihsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fc3RydWN0VG9Db21wYXJlKSk7CisgICAgICAgIGlu
Zm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRp
b25PZihtX21ldGhvZEdldHNbaV0ubV9wcm90b1N0cnVjdFRvQ29tcGFyZSkpOworICAgICAgICBp
bmZvLmNhY2hlZEZ1bmN0aW9uLnNldExvY2F0aW9uKGxpbmtCdWZmZXIubG9jYXRpb25PZihtX21l
dGhvZEdldHNbaV0ubV9wdXRGdW5jdGlvbikpOworICAgICAgICBpbmZvLmNhY2hlZFByb3RvdHlw
ZS5zZXRMb2NhdGlvbihsaW5rQnVmZmVyLmxvY2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fcHJv
dG9PYmopKTsKKyAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBsaW5rQnVmZmVyLmxv
Y2F0aW9uT2YobV9tZXRob2RHZXRzW2ldLm1fc2xvd0NhbGwpOworICAgIH0KKyAgICAKICAgICAv
LyBGSVhNRTogc3dpdGNoIHRoZSByZWdpc3RlciBmaWxlIGNoZWNrICYgYXJpdHkgY2hlY2sgb3Zl
ciB0byBERkdPcGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGxSZWdpc3RlckZpbGVDaGVjaywgY3RpX3JlZ2lzdGVyX2ZpbGVfY2hlY2sp
OwogICAgIGxpbmtCdWZmZXIubGluayhjYWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXND
b25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2Fy
aXR5Q2hlY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAkocmV2aXNpb24gOTA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX3Byb3BlcnR5QWNjZXNzZXMuYXBwZW5kKFByb3BlcnR5QWNjZXNzUmVjb3JkKGZ1
bmN0aW9uQ2FsbCwgZGVsdGFDaGVja0ltbVRvQ2FsbCwgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjaywg
ZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSwgZGVsdGFDYWxsVG9TbG93Q2FzZSwgZGVsdGFDYWxsVG9E
b25lLCAgYmFzZUdQUiwgdmFsdWVHUFIsIHNjcmF0Y2hHUFIpKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBhZGRNZXRob2RHZXQoQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29t
cGFyZSwgRGF0YUxhYmVsUHRyIHByb3RvT2JqLCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0Nv
bXBhcmUsIERhdGFMYWJlbFB0ciBwdXRGdW5jdGlvbikKKyAgICB7CisgICAgICAgIG1fbWV0aG9k
R2V0cy5hcHBlbmQoTWV0aG9kR2V0UmVjb3JkKHNsb3dDYWxsLCBzdHJ1Y3RUb0NvbXBhcmUsIHBy
b3RvT2JqLCBwcm90b1N0cnVjdFRvQ29tcGFyZSwgcHV0RnVuY3Rpb24pKTsKKyAgICB9CisgICAg
CiAgICAgdm9pZCBhZGRKU0NhbGwoQ2FsbCBmYXN0Q2FsbCwgQ2FsbCBzbG93Q2FsbCwgRGF0YUxh
YmVsUHRyIHRhcmdldFRvQ2hlY2ssIGJvb2wgaXNDYWxsLCB1bnNpZ25lZCBleGNlcHRpb25JbmZv
KQogICAgIHsKICAgICAgICAgbV9qc0NhbGxzLmFwcGVuZChKU0NhbGxSZWNvcmQoZmFzdENhbGws
IHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBpc0NhbGwsIGV4Y2VwdGlvbkluZm8pKTsKQEAgLTMx
OCw2ICszMjMsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgaW50OF90IG1fc2NyYXRjaEdQUjsKICAg
ICB9OwogICAgIAorICAgIHN0cnVjdCBNZXRob2RHZXRSZWNvcmQgeworICAgICAgICBNZXRob2RH
ZXRSZWNvcmQoQ2FsbCBzbG93Q2FsbCwgRGF0YUxhYmVsUHRyIHN0cnVjdFRvQ29tcGFyZSwgRGF0
YUxhYmVsUHRyIHByb3RvT2JqLCBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3RUb0NvbXBhcmUsIERh
dGFMYWJlbFB0ciBwdXRGdW5jdGlvbikKKyAgICAgICAgICAgIDogbV9zbG93Q2FsbChzbG93Q2Fs
bCkKKyAgICAgICAgICAgICwgbV9zdHJ1Y3RUb0NvbXBhcmUoc3RydWN0VG9Db21wYXJlKQorICAg
ICAgICAgICAgLCBtX3Byb3RvT2JqKHByb3RvT2JqKQorICAgICAgICAgICAgLCBtX3Byb3RvU3Ry
dWN0VG9Db21wYXJlKHByb3RvU3RydWN0VG9Db21wYXJlKQorICAgICAgICAgICAgLCBtX3B1dEZ1
bmN0aW9uKHB1dEZ1bmN0aW9uKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIENhbGwgbV9zbG93Q2FsbDsKKyAgICAgICAgRGF0YUxhYmVsUHRyIG1fc3RydWN0VG9Db21w
YXJlOworICAgICAgICBEYXRhTGFiZWxQdHIgbV9wcm90b09iajsKKyAgICAgICAgRGF0YUxhYmVs
UHRyIG1fcHJvdG9TdHJ1Y3RUb0NvbXBhcmU7CisgICAgICAgIERhdGFMYWJlbFB0ciBtX3B1dEZ1
bmN0aW9uOworICAgIH07CisgICAgCiAgICAgc3RydWN0IEpTQ2FsbFJlY29yZCB7CiAgICAgICAg
IEpTQ2FsbFJlY29yZChDYWxsIGZhc3RDYWxsLCBDYWxsIHNsb3dDYWxsLCBEYXRhTGFiZWxQdHIg
dGFyZ2V0VG9DaGVjaywgYm9vbCBpc0NhbGwsIHVuc2lnbmVkIGV4Y2VwdGlvbkluZm8pCiAgICAg
ICAgICAgICA6IG1fZmFzdENhbGwoZmFzdENhbGwpCkBAIC0zMzYsNiArMzU4LDcgQEAgcHJpdmF0
ZToKICAgICB9OwogCiAgICAgVmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBtX3Byb3Bl
cnR5QWNjZXNzZXM7CisgICAgVmVjdG9yPE1ldGhvZEdldFJlY29yZCwgND4gbV9tZXRob2RHZXRz
OwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5MDUxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4
LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIG1hY3JvKEdldEJ5SWQs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEdldE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEdldEdsb2JhbFZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEdsb2JhbFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIFwKQEAgLTI2Niw3ICsyNjcsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAKICAgICBib29sIGhhc0lk
ZW50aWZpZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wID09IEdldEJ5SWQgfHwgb3AgPT0g
UHV0QnlJZCB8fCBvcCA9PSBQdXRCeUlkRGlyZWN0OworICAgICAgICByZXR1cm4gb3AgPT0gR2V0
QnlJZCB8fCBvcCA9PSBQdXRCeUlkIHx8IG9wID09IFB1dEJ5SWREaXJlY3QgfHwgb3AgPT0gR2V0
TWV0aG9kOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25TcGVjdWxhdGl2ZUpJVC5j
cHAJKHJldmlzaW9uIDkwNTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb25T
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzOCw2ICs4MzgsMjAgQEAgdm9p
ZCBOb25TcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShTcGVjdWxhdAogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIEdldE1ldGhvZDogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGJhc2VHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisKKyAgICAgICAgY2FjaGVkR2V0
TWV0aG9kKGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENl
bGwpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlJZDogewogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTA1MTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjgsMTkgKzIyOCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRCeUlkKEV4ZWNT
dGF0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9w
ZXJ0eU5hbWUsIHNsb3QpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50
aWZpZXIqLCBSZXR1cm5BZGRyZXNzUHRyKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JF
VFVSTl9BRERSRVNTKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci1FbmNvZGVkSlNWYWx1ZSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0VuY29kZWRKU1ZhbHVlIG9wZXJhdGlvbkdl
dE1ldGhvZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIElkZW50aWZpZXIqLCBSZXR1cm5BZGRyZXNzUHRyKTsKK0ZVTkNUSU9OX1dSQVBQRVJfV0lU
SF9BUkc0X1JFVFVSTl9BRERSRVNTKG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplKTsKK0VuY29k
ZWRKU1ZhbHVlIG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciogcHJv
cGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2VWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0
KGV4ZWMsICpwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOwot
ICAgIGlmIChzdHViSW5mby5zZWVuKQotICAgICAgICBkZmdSZXBhdGNoR2V0QnlJRChleGVjLCBi
YXNlVmFsdWUsICpwcm9wZXJ0eU5hbWUsIHNsb3QsIHN0dWJJbmZvKTsKKyAgICBNZXRob2RDYWxs
TGlua0luZm8mIG1ldGhvZEluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0TWV0aG9kQ2FsbExp
bmtJbmZvKHJldHVybkFkZHJlc3MpOworICAgIGlmIChtZXRob2RJbmZvLnNlZW5PbmNlKCkpCisg
ICAgICAgIGRmZ1JlcGF0Y2hHZXRNZXRob2QoZXhlYywgYmFzZVZhbHVlLCAqcHJvcGVydHlOYW1l
LCBzbG90LCBtZXRob2RJbmZvKTsKICAgICBlbHNlCi0gICAgICAgIHN0dWJJbmZvLnNlZW4gPSB0
cnVlOworICAgICAgICBtZXRob2RJbmZvLnNldFNlZW4oKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI1OSw2ICsyNTksMjMgQEAgRW5jb2RlZEpTVmFsdWUg
b3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplV2l0aFJl
dHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50aWZpZXIqLCBSZXR1
cm5BZGRyZXNzUHRyKTsKK0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc0X1JFVFVSTl9BRERSRVNT
KG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CitFbmNvZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5TmFtZSwgc2xv
dCk7CisKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBleGVjLT5jb2RlQmxvY2so
KS0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7CisgICAgaWYgKHN0dWJJbmZvLnNlZW4pCisg
ICAgICAgIGRmZ1JlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgKnByb3BlcnR5TmFtZSwg
c2xvdCwgc3R1YkluZm8pOworICAgIGVsc2UKKyAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHZvaWQgb3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CiAgICAgb3BlcmF0aW9uUHV0QnlWYWxJbnRlcm5hbDx0cnVlPihleGVjLCBl
bmNvZGVkQmFzZSwgZW5jb2RlZFByb3BlcnR5LCBlbmNvZGVkVmFsdWUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDkwNTE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDYgKzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0
YQogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9u
R2V0QnlJZEJ1aWxkTGlzdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
SWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBJZGVudGlmaWVyKik7CitFbmNv
ZGVkSlNWYWx1ZSBvcGVyYXRpb25HZXRNZXRob2RPcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgSWRlbnRpZmllciopOwogRW5jb2RlZEpTVmFsdWUgb3BlcmF0
aW9uSW5zdGFuY2VPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG90eXBlKTsKIHZvaWQgb3BlcmF0aW9uVGhy
b3dIYXNJbnN0YW5jZUVycm9yKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGJhc2UpOwogdm9p
ZCBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2gu
Y3BwCShyZXZpc2lvbiA5MDUxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVw
YXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNjMgQEAgdm9pZCBkZmdSZXBh
dGNoR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIAogICAgICAgICBkZmdSZXBhdGNoQ2FsbChleGVj
LT5jb2RlQmxvY2soKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRC
eUlkKTsKIH0KIAorc3RhdGljIHZvaWQgZGZnUmVwYXRjaEdldE1ldGhvZEZhc3QoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZv
JiBtZXRob2RJbmZvLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U09iamVjdCogc2xvdEJhc2VPYmplY3QpCit7CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXIg
PSBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOworICAgIAorICAgIFJlcGF0Y2hCdWZmZXIg
cmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOworCisgICAgLy8gT25seSBvcHRpbWl6ZSBvbmNlIQor
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKG1ldGhvZEluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBv
cGVyYXRpb25HZXRCeUlkKTsKKworICAgIG1ldGhvZEluZm8uY2FjaGVkU3RydWN0dXJlLnNldCgq
Z2xvYmFsRGF0YSwgb3duZXIsIHN0cnVjdHVyZSk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRQcm90
b3R5cGVTdHJ1Y3R1cmUuc2V0KCpnbG9iYWxEYXRhLCBvd25lciwgc2xvdEJhc2VPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICBtZXRob2RJbmZvLmNhY2hlZFByb3RvdHlwZS5zZXQoKmdsb2JhbERh
dGEsIG93bmVyLCBzbG90QmFzZU9iamVjdCk7CisgICAgbWV0aG9kSW5mby5jYWNoZWRGdW5jdGlv
bi5zZXQoKmdsb2JhbERhdGEsIG93bmVyLCBjYWxsZWUpOworfQorCitzdGF0aWMgYm9vbCB0cnlD
YWNoZUdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgTWV0aG9k
Q2FsbExpbmtJbmZvJiBtZXRob2RJbmZvKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU0Nl
bGwqIHNwZWNpZmljOworICAgIEpTT2JqZWN0KiBzbG90QmFzZU9iamVjdDsKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCisgICAg
ICAgICYmICEoc3RydWN0dXJlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSktPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgJiYgKHNsb3RCYXNlT2JqZWN0ID0gYXNP
YmplY3Qoc2xvdC5zbG90QmFzZSgpKSktPmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShleGVjLCBw
cm9wZXJ0eU5hbWUsIHNwZWNpZmljKQorICAgICAgICAmJiBzcGVjaWZpYykgeworICAgICAgICAK
KyAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gKEpTRnVuY3Rpb24qKXNwZWNpZmljOworICAg
ICAgICAKKyAgICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEg
bG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQKKyAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0
cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KKyAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+Zmxh
dHRlbkRpY3Rpb25hcnlPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgCisgICAg
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAo
ZXhlYykpIHsKKyAgICAgICAgICAgIGRmZ1JlcGF0Y2hHZXRNZXRob2RGYXN0KGdsb2JhbERhdGEs
IGNvZGVCbG9jaywgbWV0aG9kSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgeworICAgICAgICAgICAgZGZnUmVw
YXRjaEdldE1ldGhvZEZhc3QoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBtZXRob2RJbmZvLCBjYWxs
ZWUsIHN0cnVjdHVyZSwgZXhlYy0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPm1ldGhvZENh
bGxEdW1teSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBkZmdSZXBhdGNoR2V0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBNZXRob2RDYWxsTGlua0luZm8mIG1l
dGhvZEluZm8pCit7CisgICAgYm9vbCBjYWNoZWQgPSB0cnlDYWNoZUdldE1ldGhvZChleGVjLCBi
YXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgc2xvdCwgbWV0aG9kSW5mbyk7CisgICAgaWYgKCFjYWNo
ZWQpCisgICAgICAgIGRmZ1JlcGF0Y2hDYWxsKGV4ZWMtPmNvZGVCbG9jaygpLCBtZXRob2RJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKK30KKwogc3Rh
dGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCShyZXZpc2lvbiA5MDUx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVwYXRjaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IHZvaWQgZGZnUmVwYXRjaEdldEJ5SUQoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIGRm
Z1JlcGF0Y2hHZXRNZXRob2QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYsIE1ldGhvZENhbGxMaW5rSW5mbyYpOwogdm9pZCBkZmdCdWls
ZEdldEJ5SURMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBkZmdSZXBhdGNoUHV0
QnlJRChFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHV0UHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBQdXRLaW5kKTsKIHZvaWQgZGZnTGlua0Nh
bGwoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2Fs
bGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDkwNTE3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMTksNiArMTAxOSwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRl
eCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBHZXRNZXRob2Q6
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBiYXNlKTsKKworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGNhY2hlZEdldE1ldGhv
ZChiYXNlLmdwcigpLCByZXN1bHRHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKKworICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKICAgICBjYXNlIFB1dEJ5SWQ6IHsKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRXcml0ZUJhcnJpZXIuaAkocmV2aXNpb24gOTA1MTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjEsNiArMTIxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgdmFsaWRhdGVDZWxsKHZhbHVlKTsK
ICAgICAgICAgSklUV3JpdGVCYXJyaWVyQmFzZTo6c2V0KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBv
d25lciwgdmFsdWUpOwogICAgIH0KKyAgICB2b2lkIHNldChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQ2VsbCogb3duZXIsIFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2V0KGdsb2JhbERh
dGEsIGxvY2F0aW9uKCksIG93bmVyLCB2YWx1ZSk7CisgICAgfQogICAgIFQqIGdldCgpIGNvbnN0
CiAgICAgewogICAgICAgICBUKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxUKj4oSklUV3JpdGVCYXJy
aWVyQmFzZTo6Z2V0KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>