<?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>88594</bug_id>
          
          <creation_ts>2012-06-07 16:51:37 -0700</creation_ts>
          <short_desc>DFG should inline prototype chain accesses, and do the right things if the specific function optimization is available</short_desc>
          <delta_ts>2012-06-11 14:12:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>644074</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 16:51:37 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644077</commentid>
    <comment_count>1</comment_count>
      <attachid>146419</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 16:54:15 -0700</bug_when>
    <thetext>Created attachment 146419
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644079</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 16:58:14 -0700</bug_when>
    <thetext>Attachment 146419 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/bytecode/GetByIdStatus.h:41:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/bytecode/GetByIdStatus.h:84:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 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>644091</commentid>
    <comment_count>3</comment_count>
      <attachid>146419</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-06-07 17:04:38 -0700</bug_when>
    <thetext>Comment on attachment 146419
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=146419&amp;action=review

&gt; Source/JavaScriptCore/bytecode/GetByIdStatus.cpp:67
&gt; +    UNUSED_PARAM(structure);

Oh yes they are!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644097</commentid>
    <comment_count>4</comment_count>
      <attachid>146423</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 17:08:08 -0700</bug_when>
    <thetext>Created attachment 146423
patch with Gavin&apos;s suggestions

Putting up for EWS while I test it more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644100</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 17:09:59 -0700</bug_when>
    <thetext>Attachment 146423 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/bytecode/GetByIdStatus.h:41:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 11 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>644175</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 18:31:55 -0700</bug_when>
    <thetext>Landed with some additional fixes in http://trac.webkit.org/changeset/119779</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646244</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-11 14:12:56 -0700</bug_when>
    <thetext>This caused bug 88783.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146419</attachid>
            <date>2012-06-07 16:54:15 -0700</date>
            <delta_ts>2012-06-07 17:08:08 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inlinechain_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22910</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5NzcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEyLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBpbmxpbmUgcHJvdG90eXBlIGNoYWluIGFjY2Vzc2VzLCBhbmQgZG8gdGhlIHJp
Z2h0IHRoaW5ncyBpZiB0aGUKKyAgICAgICAgc3BlY2lmaWMgZnVuY3Rpb24gb3B0aW1pemF0aW9u
IGlzIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnBy
b3RvdHlwZUZvckxvb2t1cCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JDaGFpbik6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Ip
OgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6
OmlzU2ltcGxlKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y2hhaW4pOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpzcGVjaWZpY1ZhbHVlKToKKyAgICAgICAgKEdldEJ5SWRT
dGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oOgorICAgICAgICAoU3Ry
dWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpzaW5nbGV0b25TdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVN0dWJJbmZvOjppbml0R2V0QnlJZENoYWluKToKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHUmVwYXRjaC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnByb3Rv
dHlwZUZvckxvb2t1cCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorCiAyMDEyLTA2LTA3ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZp
eCBmb3IgIUVOQUJMRShKSVQpIGFmdGVyIHIxMTk0NDEuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMTQ5OSw2ICsxNDk5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH0KICNlbmRpZgogICAgIAorICAgIGlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBl
Rm9yTG9va3VwKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHByb3RvdHlwZUZvckxvb2t1cChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICB9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQ29kZUJsb2NrX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDExOTY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTUgKzQ0LDYxIEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgaWYgKCFzdHJ1Y3R1cmUp
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgCi0gICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICB1bnNpZ25lZCBh
dHRyaWJ1dGVzSWdub3JlZDsKKyAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7CisgICAgc2l6ZV90
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAqcHJvZmlsZWRCbG9jay0+Z2xvYmFs
RGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUpOwogICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgCi0gICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zm
c2V0LCBmYWxzZSk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlLCBmYWxzZSwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7CiAjZWxzZQotICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgZmFsc2UpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZh
bHNlKTsKKyNlbmRpZgorfQorCit2b2lkIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JDaGFpbihH
ZXRCeUlkU3RhdHVzJiByZXN1bHQsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSWRlbnRpZmll
ciYgaWRlbnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFVOVVNFRF9QQVJBTShyZXN1
bHQpOworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0o
aWRlbnQpOworICAgIFVOVVNFRF9QQVJBTShzdHJ1Y3R1cmUpOworI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBWYWxpZGF0ZSB0aGUgY2hhaW4uIElmIHRo
ZSBjaGFpbiBpcyBpbnZhbGlkLCB0aGVuIGN1cnJlbnRseSB0aGUgYmVzdCB0aGluZworICAgIC8v
IHdlIGNhbiBkbyBpcyB0byBhc3N1bWUgdGhhdCBUYWtlc1Nsb3cgaXMgdHJ1ZS4gSW4gdGhlIGZ1
dHVyZSwgaXQgbWlnaHQgYmUKKyAgICAvLyB3b3J0aCBleHBsb3JpbmcgcmVpZnlpbmcgdGhlIHN0
cnVjdHVyZSBjaGFpbiBmcm9tIHRoZSBzdHJ1Y3R1cmUgd2UndmUgZ290CisgICAgLy8gaW5zdGVh
ZCBvZiB1c2luZyB0aGUgb25lIGZyb20gdGhlIGNhY2hlLCBzaW5jZSB0aGF0IHdpbGwgZG8gdGhl
IHJpZ2h0IHRoaW5ncworICAgIC8vIGlmIHRoZSBzdHJ1Y3R1cmUgY2hhaW4gaGFzIGNoYW5nZWQu
IEJ1dCB0aGF0IG1heSBiZSBoYXJkZXIsIGJlY2F1c2Ugd2UgbWF5CisgICAgLy8gdGhlbiBlbmQg
dXAgaGF2aW5nIGEgZGlmZmVyZW50IHR5cGUgb2YgYWNjZXNzIGFsdG9nZXRoZXIuIEFuZCBpdCBj
dXJyZW50bHkKKyAgICAvLyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgd29ydGggaXQgdG8gZG8gc28g
LS0gZWZmZWN0aXZlbHksIHRoZSBoZXVyaXN0aWMgd2UKKyAgICAvLyBoYXZlIG5vdyBpcyB0aGF0
IGlmIHRoZSBzdHJ1Y3R1cmUgY2hhaW4gaGFzIGNoYW5nZWQgYmV0d2VlbiB3aGVuIGl0IHdhcwor
ICAgIC8vIGNhY2hlZCBvbiBpbiB0aGUgYmFzZWxpbmUgSklUIGFuZCB3aGVuIHRoZSBERkcgdHJp
ZWQgdG8gaW5saW5lIHRoZSBhY2Nlc3MsCisgICAgLy8gdGhlbiB3ZSBmYWxsIGJhY2sgb24gYSBw
b2x5bW9ycGhpYyBhY2Nlc3MuCisgICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gc3Ry
dWN0dXJlOworICAgIEpTT2JqZWN0KiBjdXJyZW50T2JqZWN0ID0gMDsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVzdWx0Lm1fY2hhaW4uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY3Vy
cmVudE9iamVjdCA9IGFzT2JqZWN0KGN1cnJlbnRTdHJ1Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1
cChwcm9maWxlZEJsb2NrKSk7CisgICAgICAgIGN1cnJlbnRTdHJ1Y3R1cmUgPSByZXN1bHQubV9j
aGFpbltpXTsKKyAgICAgICAgaWYgKGN1cnJlbnRPYmplY3QtPnN0cnVjdHVyZSgpICE9IGN1cnJl
bnRTdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBB
U1NFUlQoY3VycmVudE9iamVjdCk7CisgICAgICAgIAorICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJ
Z25vcmVkOworICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKKyAgICAgICAgCisgICAgcmVzdWx0
Lm1fb2Zmc2V0ID0gY3VycmVudFN0cnVjdHVyZS0+Z2V0KAorICAgICAgICAqcHJvZmlsZWRCbG9j
ay0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUp
OworICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgcmVzdWx0Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOworICAg
IHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKHNwZWNpZmljVmFsdWUpOworI2Vsc2UK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogfQogCkBAIC04OSwxMiArMTM1LDEy
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+
bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2Vz
Q2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgLy8g
TmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0
byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFr
ZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhU
YWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOworICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKICAgICAKICAgICAvLyBG
aW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAg
ICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CkBAIC0xMDUsMTAgKzE1MSwxNSBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNz
X2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1Yklu
Zm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwotICAgICAgICByZXN1
bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7CisgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOworICAgICAgICBK
U0NlbGwqIHNwZWNpZmljVmFsdWU7CisgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAorICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQs
IGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgCi0gICAgICAgIGlm
IChyZXN1bHQubV9vZmZzZXQgIT0gbm90Rm91bmQpCisgICAgICAgIGlmIChyZXN1bHQubV9vZmZz
ZXQgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQo
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVl
KHNwZWNpZmljVmFsdWUpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX3N0cnVj
dHVyZVNldC5zaXplKCkpOwpAQCAtMTE2LDI5ICsxNjcsMzIgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkX3NlbGZfbGlzdDogewotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QqIGxpc3QgPSBzdHViSW5mby51LmdldEJ5SWRQcm90b0xpc3Quc3RydWN0dXJlTGlzdDsK
LSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvTGlzdC5saXN0
U2l6ZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgICAgIEFT
U0VSVChsaXN0LT5saXN0W2ldLmlzRGlyZWN0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBsaXN0LT5saXN0W2ldLmJhc2UuZ2V0KCk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lm1fc3RydWN0dXJlU2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHNpemVfdCBt
eU9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOworICAgICAgICAg
ICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOworICAgICAgICAgICAgc2l6ZV90IG15T2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoCisgICAgICAgICAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKG15T2Zmc2V0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFp
KQorICAgICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gbXlPZmZzZXQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQubV9vZmZzZXQgIT0gbXlP
ZmZzZXQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1
ZShzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm1fb2Zmc2V0
ICE9IG15T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0gbm90Rm91
bmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQubV9zcGVjaWZpY1ZhbHVlICE9
IEpTVmFsdWUoc3BlY2lmaWNWYWx1ZSkpCisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fc3BlY2lm
aWNWYWx1ZSA9IEpTVmFsdWUoKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0Lm1f
c3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtMTQ3LDYgKzIwMSwyMyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBhY2Nl
c3NfZ2V0X2J5X2lkX3Byb3RvOiB7CisgICAgICAgIHJlc3VsdC5tX2NoYWluLmFwcGVuZChzdHVi
SW5mby51LmdldEJ5SWRQcm90by5wcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBj
b21wdXRlRm9yQ2hhaW4oCisgICAgICAgICAgICByZXN1bHQsIHByb2ZpbGVkQmxvY2ssIGlkZW50
LAorICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkUHJvdG8uYmFzZU9iamVjdFN0cnVjdHVy
ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBhY2Nl
c3NfZ2V0X2J5X2lkX2NoYWluOiB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dHViSW5mby51LmdldEJ5SWRDaGFpbi5jb3VudDsgKytpKQorICAgICAgICAgICAgcmVzdWx0Lm1f
Y2hhaW4uYXBwZW5kKHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmNoYWluLT5oZWFkKClbaV0uZ2V0
KCkpOworICAgICAgICBjb21wdXRlRm9yQ2hhaW4oCisgICAgICAgICAgICByZXN1bHQsIHByb2Zp
bGVkQmxvY2ssIGlkZW50LAorICAgICAgICAgICAgc3R1YkluZm8udS5nZXRCeUlkQ2hhaW4uYmFz
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUKHJlc3VsdC5tX29mZnNldCA9PSBub3RGb3Vu
ZCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTU1LDEyICsyMjYsMTQgQEAgR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGlmIChyZXN1bHQubV9vZmZzZXQgPT0gbm90
Rm91bmQpIHsKICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOwogICAgICAg
ICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuY2xlYXIoKTsKKyAgICAgICAgcmVzdWx0Lm1fY2hhaW4u
Y2xlYXIoKTsKKyAgICAgICAgcmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGVEaXJlY3Q7CisgICAgICAg
IHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxz
ZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDExOTY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDggQEAgY2xhc3MgR2V0QnlJ
ZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIE5vSW5mb3JtYXRp
b24sICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCi0gICAgICAg
IFNpbXBsZURpcmVjdCwgICAvLyBJdCdzIGNhY2hlZCBmb3IgYSBkaXJlY3QgYWNjZXNzIHRvIGEg
a25vd24gb2JqZWN0IHByb3BlcnR5LgorICAgICAgICBTaW1wbGUsICAgICAgICAgLy8gSXQncyBj
YWNoZWQgZm9yIGEgc2ltcGxlIGFjY2VzcyB0byBhIGtub3duIG9iamVjdCBwcm9wZXJ0eSB3aXRo
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHBvc3NpYmxlIHN0cnVjdHVyZSBjaGFpbiBh
bmQgYSBwb3NzaWJsZSBzcGVjaWZpYyB2YWx1ZS4KICAgICAgICAgVGFrZXNTbG93UGF0aCwgIC8v
IEl0J3Mga25vd24gdG8gb2Z0ZW4gdGFrZSBzbG93IHBhdGguCiAgICAgICAgIE1ha2VzQ2FsbHMg
ICAgICAvLyBJdCdzIGtub3duIHRvIHRha2UgcGF0aHMgdGhhdCBtYWtlIGNhbGxzLgogICAgIH07
CkBAIC00OSwxMyArNTAsMTcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0
QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQs
IHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQorICAgIEdldEJ5SWRTdGF0dXMoCisg
ICAgICAgIFN0YXRlIHN0YXRlLCBib29sIHdhc1NlZW5JbkpJVCwgY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQgPSBTdHJ1Y3R1cmVTZXQoKSwKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9
IG5vdEZvdW5kLCBKU1ZhbHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCksIFZlY3RvcjxTdHJ1
Y3R1cmUqPiBjaGFpbiA9IFZlY3RvcjxTdHJ1Y3R1cmUqPigpKQogICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQorICAgICAgICAs
IG1fY2hhaW4oY2hhaW4pCisgICAgICAgICwgbV9zcGVjaWZpY1ZhbHVlKHNwZWNpZmljVmFsdWUp
CiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdh
c1NlZW5JbkpJVCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0
KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CisgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2lt
cGxlKSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBH
ZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgSWRlbnRpZmllciYpOwpAQCAtNjQsMjAgKzY5LDI1IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CiAg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQotICAgIGJvb2wg
aXNTaW1wbGVEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZURpcmVjdDsg
fQorICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsg
fQogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFr
ZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHM7IH0KICAgICBib29sIG1ha2VzQ2Fs
bHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IE1ha2VzQ2FsbHM7IH0KICAgICAKICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlU2V0OyB9CisgICAgY29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhaW47IH0gLy8gUmV0dXJucyBlbXB0eSB2ZWN0b3IgaWYgdGhpcyBpcyBhIGRp
cmVjdCBhY2Nlc3MuCisgICAgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9zcGVjaWZpY1ZhbHVlOyB9IC8vIFJldHVybnMgSlNWYWx1ZSgpIGlmIHRoZXJlIGlzIG5vIHNw
ZWNpZmljIHZhbHVlLgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNl
dDsgfQogICAgIAogICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNT
ZWVuSW5KSVQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUZvckNo
YWluKEdldEJ5SWRTdGF0dXMmIHJlc3VsdCwgQ29kZUJsb2NrKiwgSWRlbnRpZmllciYsIFN0cnVj
dHVyZSogc3RydWN0dXJlKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKICAg
ICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsK
KyAgICBWZWN0b3I8U3RydWN0dXJlKj4gbV9jaGFpbjsKKyAgICBKU1ZhbHVlIG1fc3BlY2lmaWNW
YWx1ZTsKICAgICBzaXplX3QgbV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTQgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCisgICAgLy8gQ2FsbCB0aGlzIGlmIHlv
dSBrbm93IHRoYXQgdGhlIHN0cnVjdHVyZSBzZXQgbXVzdCBjb25zaXN0IG9mIGV4YWN0bHkKKyAg
ICAvLyBvbmUgc3RydWN0dXJlLgorICAgIFN0cnVjdHVyZSogc2luZ2xldG9uU3RydWN0dXJlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZXMuc2l6ZSgpID09IDEpOwor
ICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVzWzBdOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1
cmUqIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZXMuYXQoaSk7IH0KICAg
ICAKICAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0
KGkpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCwx
MiArMTEwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdS5nZXRCeUlkUHJvdG8u
cHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBvd25lciwgcHJvdG90eXBlU3RydWN0
dXJlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaW5pdEdldEJ5SWRDaGFpbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0
cnVjdHVyZSwgU3RydWN0dXJlQ2hhaW4qIGNoYWluKQorICAgICAgICB2b2lkIGluaXRHZXRCeUlk
Q2hhaW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUq
IGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgdW5zaWduZWQgY291
bnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lk
X2NoYWluOwogCiAgICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJl
LnNldChnbG9iYWxEYXRhLCBvd25lciwgYmFzZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICB1LmdldEJ5SWRDaGFpbi5jaGFpbi5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGNoYWluKTsKKyAg
ICAgICAgICAgIHUuZ2V0QnlJZENoYWluLmNvdW50ID0gY291bnQ7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZkxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVM
aXN0KiBzdHJ1Y3R1cmVMaXN0LCBpbnQgbGlzdFNpemUpCkBAIC0yNTUsNiArMjU2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8U3RydWN0dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAg
ICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgICAgICAgfSBnZXRCeUlkQ2hhaW47CiAgICAgICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJl
TGlzdCogc3RydWN0dXJlTGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU0Nyw0MSArMTU0Nyw2NCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5v
ZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAogICAgIGNvbnN0IEdldEJ5
SWRTdGF0dXMmIGdldEJ5SWRTdGF0dXMpCiB7Ci0gICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNTaW1w
bGVEaXJlY3QoKQotICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7Ci0gICAgICAgIEFTU0VSVChn
ZXRCeUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRCeU9mZnNldCBkb2VzIG5vdCBrbm93
IHRvIHRlcm1pbmF0ZSBzcGVjdWxhdGl2ZQotICAgICAgICAvLyBleGVjdXRpb24gaWYgaXQgZG9l
c24ndCBoYXZlIGEgcHJlZGljdGlvbiwgc28gd2UgZG8gaXQgbWFudWFsbHkuCi0gICAgICAgIGlm
IChwcmVkaWN0aW9uID09IFNwZWNOb25lKQotICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9T
UkV4aXQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0
dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1
cmVTZXQoKSkpLCBiYXNlKTsKLSAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAg
ICAgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKLSAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMuc3Ry
dWN0dXJlU2V0KCkuYWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKSkgewotICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKLSAgICAgICAgICAgIEFTU0VSVCghKHNpemVv
ZihKU09iamVjdCkgJSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICBvZmZz
ZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgo
R2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsKLSAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7
Ci0gICAgICAgIH0KLSAgICAgICAgc2V0KGRlc3RpbmF0aW9uT3BlcmFuZCwKLSAgICAgICAgICAg
IGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAotICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSkpOwotICAgICAgICAKLSAgICAgICAgU3RvcmFnZUFj
Y2Vzc0RhdGEgc3RvcmFnZUFjY2Vzc0RhdGE7Ci0gICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9m
ZnNldCA9IGdldEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7Ci0gICAgICAgIHN0
b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAg
ICAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRh
KTsKLSAgICB9IGVsc2UgeworICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpCisgICAg
ICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAog
ICAgICAgICAgICAgYWRkVG9HcmFwaCgKICAgICAgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLm1h
a2VzQ2FsbHMoKSA/IEdldEJ5SWRGbHVzaCA6IEdldEJ5SWQsCiAgICAgICAgICAgICAgICAgT3BJ
bmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1
cmVTZXQoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIAorICAgIC8vIFRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBHZXRCeU9mZnNldCBkb2VzIG5vdCBrbm93IHRvIHRlcm1pbmF0ZSBzcGVjdWxhdGl2
ZQorICAgIC8vIGV4ZWN1dGlvbiBpZiBpdCBkb2Vzbid0IGhhdmUgYSBwcmVkaWN0aW9uLCBzbyB3
ZSBkbyBpdCBtYW51YWxseS4KKyAgICBpZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkKKyAgICAg
ICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIAorICAgIGFkZFRv
R3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnZXRC
eUlkU3RhdHVzLnN0cnVjdHVyZVNldCgpKSksIGJhc2UpOworICAgIAorICAgIGJvb2wgdXNlSW5s
aW5lU3RvcmFnZTsKKyAgICBpZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgU3RydWN0dXJlKiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1
Y3R1cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNPYmplY3QqIGN1cnJl
bnRPYmplY3QgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2V0QnlJZFN0
YXR1cy5jaGFpbigpLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjdXJyZW50T2JqZWN0ID0g
YXNPYmplY3QoY3VycmVudFN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKG1faW5saW5lU3Rh
Y2tUb3AtPm1fY29kZUJsb2NrKSk7CisgICAgICAgICAgICBjdXJyZW50U3RydWN0dXJlID0gZ2V0
QnlJZFN0YXR1cy5jaGFpbigpW2ldOworICAgICAgICAgICAgYmFzZSA9IGFkZFRvR3JhcGgoV2Vh
a0pTQ29uc3RhbnQsIE9wSW5mbyhjdXJyZW50T2JqZWN0KSk7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY3VycmVu
dFN0cnVjdHVyZSkpLCBiYXNlKTsKKyAgICAgICAgfQorICAgICAgICB1c2VJbmxpbmVTdG9yYWdl
ID0gY3VycmVudFN0cnVjdHVyZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgdXNlSW5saW5lU3RvcmFnZSA9IGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCku
YWxsQXJlVXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAKKyAgICBpZiAoZ2V0QnlJ
ZFN0YXR1cy5zcGVjaWZpY1ZhbHVlKCkpIHsKKyAgICAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMu
c3BlY2lmaWNWYWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uT3BlcmFu
ZCwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhnZXRCeUlk
U3RhdHVzLnNwZWNpZmljVmFsdWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICAKKyAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOworICAgIHNpemVfdCBvZmZz
ZXRPZmZzZXQ7CisgICAgaWYgKHVzZUlubGluZVN0b3JhZ2UpIHsKKyAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYmFzZTsKKyAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpKTsKKyAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2Jq
ZWN0KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOworICAg
ICAgICBvZmZzZXRPZmZzZXQgPSAwOworICAgIH0KKyAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5k
LAorICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyht
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAor
ICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlKSk7CisgICAgICAgIAorICAgIFN0b3JhZ2VBY2Nl
c3NEYXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9
IGdldEJ5SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgc3RvcmFnZUFjY2Vz
c0RhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgbV9ncmFwaC5t
X3N0b3JhZ2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiB9CiAKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2soKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEs
NyArMjYxLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2spLCBDb2RlTG9j
YXRpb25MYWJlbChzdHViSW5mby5zdHViUm91dGluZS5jb2RlKCkpKTsKICAgICByZXBhdGNoQnVm
ZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRQ
cm90b0J1aWxkTGlzdCk7CiAgICAgCi0gICAgc3R1YkluZm8uaW5pdEdldEJ5SWRDaGFpbigqZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5
cGVDaGFpbik7CisgICAgc3R1YkluZm8uaW5pdEdldEJ5SWRDaGFpbigqZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwgY291
bnQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MSw3ICs5NjEsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0CiAgICAgfQogCiAgICAgU3RydWN0
dXJlQ2hhaW4qIHByb3RvdHlwZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxs
RnJhbWUpOwotICAgIHN0dWJJbmZvLT5pbml0R2V0QnlJZENoYWluKGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHByb3RvdHlw
ZUNoYWluKTsKKyAgICBzdHViSW5mby0+aW5pdEdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5
cGVDaGFpbiwgY291bnQpOwogICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUt
PnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluLCBjb3VudCwgcHJvcGVydHlOYW1lLCBzbG90LCBv
ZmZzZXQsIHJldHVybkFkZHJlc3MpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDExOTY4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4MSwxMyArMzgxLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gIWVu
dHJ5LmlzTnVsbCgpOwogICAgIH0KIAotICAgIGlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJv
dG90eXBlRm9yTG9va3VwKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgSlNWYWx1
ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzT2JqZWN0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7CiAKICAgICAgICAgQVNTRVJUKHR5cGVJbmZvKCkudHlw
ZSgpID09IFN0cmluZ1R5cGUpOwotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
c3RyaW5nUHJvdG90eXBlKCk7CisgICAgfQorCisgICAgaW5saW5lIEpTVmFsdWUgU3RydWN0dXJl
Ojpwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByb3RvdHlwZUZvckxvb2t1cChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogICAgIH0KIAogICAgIGlubGluZSBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlOjpwcm90b3R5
cGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsx
MjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgc3RvcmVk
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAg
IEpTVmFsdWUgcHJvdG90eXBlRm9yTG9va3VwKENvZGVCbG9jayopIGNvbnN0OwogICAgICAgICBT
dHJ1Y3R1cmVDaGFpbiogcHJvdG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAo=
</data>
<flag name="review"
          id="153715"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146423</attachid>
            <date>2012-06-07 17:08:08 -0700</date>
            <delta_ts>2012-06-07 17:08:08 -0700</delta_ts>
            <desc>patch with Gavin&apos;s suggestions</desc>
            <filename>inlinechain_patch_2.diff</filename>
            <type>text/plain</type>
            <size>22949</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5NzcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBpbmxpbmUgcHJvdG90eXBlIGNoYWluIGFjY2Vzc2VzLCBhbmQgZG8gdGhlIHJp
Z2h0IHRoaW5ncyBpZiB0aGUKKyAgICAgICAgc3BlY2lmaWMgZnVuY3Rpb24gb3B0aW1pemF0aW9u
IGlzIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKyAg
ICAgICAgCisgICAgICAgIExvb2tzIGxpa2UgYSAzJSB3aW4gb24gVjguCisKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcm90b3R5cGVG
b3JMb29rdXApOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
Q2hhaW4pOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAg
ICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0
dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjppc1NpbXBs
ZSk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNoYWluKToKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6c3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKFN0cnVjdHVyZVNl
dCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6c2luZ2xldG9uU3RydWN0dXJlKToKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVTdHViSW5mbzo6aW5pdEdldEJ5SWRDaGFpbik6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
R2V0QnlJZCk6CisgICAgICAgICogZGZnL0RGR1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcm90b3R5cGVGb3JM
b29rdXApOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoU3RydWN0dXJlKToKKwogMjAxMi0wNi0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxw
YXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBmaXggZm9yICFF
TkFCTEUoSklUKSBhZnRlciByMTE5NDQxLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTE0OTksNiArMTQ5OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5k
aWYKICAgICAKKyAgICBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3RvdHlwZUZvckxvb2t1
cChDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBwcm90
b3R5cGVGb3JMb29rdXAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CisgICAgfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIENvZGVCbG9ja19oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MTk2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0NCw2MSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOwogICAgIGlmICghc3RydWN0dXJlKQotICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgZmFsc2UpOwogICAgIAotICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgdW5zaWduZWQgYXR0cmlidXRl
c0lnbm9yZWQ7CisgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOworICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwg
aWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKICAgICBpZiAob2Zmc2V0
ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogICAgIAotICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFs
c2UpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZSwgZmFsc2UsIFN0cnVjdHVyZVNl
dChzdHJ1Y3R1cmUpLCBvZmZzZXQsIHNwZWNpZmljVmFsdWUpOwogI2Vsc2UKLSAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZh
bHNlKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7Cisj
ZW5kaWYKK30KKwordm9pZCBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yQ2hhaW4oR2V0QnlJZFN0
YXR1cyYgcmVzdWx0LCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElkZW50aWZpZXImIGlkZW50
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCisgICAgLy8gVmFsaWRhdGUgdGhlIGNoYWluLiBJZiB0aGUgY2hhaW4gaXMg
aW52YWxpZCwgdGhlbiBjdXJyZW50bHkgdGhlIGJlc3QgdGhpbmcKKyAgICAvLyB3ZSBjYW4gZG8g
aXMgdG8gYXNzdW1lIHRoYXQgVGFrZXNTbG93IGlzIHRydWUuIEluIHRoZSBmdXR1cmUsIGl0IG1p
Z2h0IGJlCisgICAgLy8gd29ydGggZXhwbG9yaW5nIHJlaWZ5aW5nIHRoZSBzdHJ1Y3R1cmUgY2hh
aW4gZnJvbSB0aGUgc3RydWN0dXJlIHdlJ3ZlIGdvdAorICAgIC8vIGluc3RlYWQgb2YgdXNpbmcg
dGhlIG9uZSBmcm9tIHRoZSBjYWNoZSwgc2luY2UgdGhhdCB3aWxsIGRvIHRoZSByaWdodCB0aGlu
Z3MKKyAgICAvLyBpZiB0aGUgc3RydWN0dXJlIGNoYWluIGhhcyBjaGFuZ2VkLiBCdXQgdGhhdCBt
YXkgYmUgaGFyZGVyLCBiZWNhdXNlIHdlIG1heQorICAgIC8vIHRoZW4gZW5kIHVwIGhhdmluZyBh
IGRpZmZlcmVudCB0eXBlIG9mIGFjY2VzcyBhbHRvZ2V0aGVyLiBBbmQgaXQgY3VycmVudGx5Cisg
ICAgLy8gZG9lcyBub3QgYXBwZWFyIHRvIGJlIHdvcnRoIGl0IHRvIGRvIHNvIC0tIGVmZmVjdGl2
ZWx5LCB0aGUgaGV1cmlzdGljIHdlCisgICAgLy8gaGF2ZSBub3cgaXMgdGhhdCBpZiB0aGUgc3Ry
dWN0dXJlIGNoYWluIGhhcyBjaGFuZ2VkIGJldHdlZW4gd2hlbiBpdCB3YXMKKyAgICAvLyBjYWNo
ZWQgb24gaW4gdGhlIGJhc2VsaW5lIEpJVCBhbmQgd2hlbiB0aGUgREZHIHRyaWVkIHRvIGlubGlu
ZSB0aGUgYWNjZXNzLAorICAgIC8vIHRoZW4gd2UgZmFsbCBiYWNrIG9uIGEgcG9seW1vcnBoaWMg
YWNjZXNzLgorICAgIFN0cnVjdHVyZSogY3VycmVudFN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAg
ICBKU09iamVjdCogY3VycmVudE9iamVjdCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJlc3VsdC5tX2NoYWluLnNpemUoKTsgKytpKSB7CisgICAgICAgIGN1cnJlbnRPYmplY3Qg
PSBhc09iamVjdChjdXJyZW50U3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAocHJvZmlsZWRC
bG9jaykpOworICAgICAgICBjdXJyZW50U3RydWN0dXJlID0gcmVzdWx0Lm1fY2hhaW5baV07Cisg
ICAgICAgIGlmIChjdXJyZW50T2JqZWN0LT5zdHJ1Y3R1cmUoKSAhPSBjdXJyZW50U3RydWN0dXJl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgQVNTRVJUKGN1cnJl
bnRPYmplY3QpOworICAgICAgICAKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKKyAg
ICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7CisgICAgICAgIAorICAgIHJlc3VsdC5tX29mZnNldCA9
IGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQsIGF0dHJpYnV0ZXNJZ25vcmVkLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBpZiAo
cmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIHJlc3VsdC5tX3N0cnVjdHVyZVNldC5hZGQoc3RydWN0dXJlKTsKKyAgICByZXN1bHQubV9z
cGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZpY1ZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVO
VVNFRF9QQVJBTShpZGVudCk7CisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZSk7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KIApAQCAtODksMTIgKzEzNSwxMiBAQCBHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0u
aXNEaXJlY3QpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBT
dHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTWFrZXNDYWxscywgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hl
Y2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2lu
ZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBm
aWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5
SWRTdGF0dXMgcmVzdWx0OwpAQCAtMTA1LDEwICsxNTEsMTUgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0
QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgcmVzdWx0Lm1fb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQp
OworICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKKyAgICAgICAgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlOworICAgICAgICByZXN1bHQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgK
KyAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50LCBhdHRyaWJ1
dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVzdWx0
Lm1fb2Zmc2V0ICE9IG5vdEZvdW5kKQorICAgICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgICAgICByZXN1bHQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVy
ZSk7CisgICAgICAgICAgICByZXN1bHQubV9zcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZShzcGVjaWZp
Y1ZhbHVlKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHJlc3VsdC5tX29mZnNl
dCAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQubV9zdHJ1Y3R1cmVTZXQu
c2l6ZSgpKTsKQEAgLTExNiwyOSArMTY3LDMyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9p
ZF9zZWxmX2xpc3Q6IHsKLSAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBs
aXN0ID0gc3R1YkluZm8udS5nZXRCeUlkUHJvdG9MaXN0LnN0cnVjdHVyZUxpc3Q7Ci0gICAgICAg
IHVuc2lnbmVkIHNpemUgPSBzdHViSW5mby51LmdldEJ5SWRQcm90b0xpc3QubGlzdFNpemU7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBBU1NFUlQobGlz
dC0+bGlzdFtpXS5pc0RpcmVjdCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbGlzdC0+bGlzdFtpXS5iYXNlLmdldCgpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5tX3N0cnVjdHVyZVNldC5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBzaXplX3QgbXlPZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKKyAgICAgICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKKyAgICAgICAgICAgIHNpemVfdCBteU9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KAorICAgICAgICAgICAgICAgICpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50LCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChteU9mZnNldCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgIHJl
c3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghaSkKKyAgICAg
ICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG15T2Zm
c2V0OwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0Lm1fb2Zmc2V0ICE9IG15T2Zmc2V0KSB7
CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSA9IEpTVmFsdWUoc3BlY2lm
aWNWYWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5tX29mZnNldCAhPSBteU9m
ZnNldCkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5tX29mZnNldCA9IG5vdEZvdW5kOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm1fc3BlY2lmaWNWYWx1ZSAhPSBKU1ZhbHVl
KHNwZWNpZmljVmFsdWUpKQorICAgICAgICAgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUg
PSBKU1ZhbHVlKCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIHJlc3VsdC5tX3N0cnVjdHVy
ZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAg
LTE0Nyw2ICsyMDEsMjMgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgYWNjZXNzX2dldF9i
eV9pZF9wcm90bzogeworICAgICAgICByZXN1bHQubV9jaGFpbi5hcHBlbmQoc3R1YkluZm8udS5n
ZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgY29tcHV0ZUZv
ckNoYWluKAorICAgICAgICAgICAgcmVzdWx0LCBwcm9maWxlZEJsb2NrLCBpZGVudCwKKyAgICAg
ICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZFByb3RvLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgYWNjZXNzX2dldF9i
eV9pZF9jaGFpbjogeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R1YkluZm8u
dS5nZXRCeUlkQ2hhaW4uY291bnQ7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5tX2NoYWluLmFw
cGVuZChzdHViSW5mby51LmdldEJ5SWRDaGFpbi5jaGFpbi0+aGVhZCgpW2ldLmdldCgpKTsKKyAg
ICAgICAgY29tcHV0ZUZvckNoYWluKAorICAgICAgICAgICAgcmVzdWx0LCBwcm9maWxlZEJsb2Nr
LCBpZGVudCwKKyAgICAgICAgICAgIHN0dWJJbmZvLnUuZ2V0QnlJZENoYWluLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVChyZXN1bHQubV9vZmZzZXQgPT0gbm90Rm91bmQpOwogICAg
ICAgICBicmVhazsKQEAgLTE1NSwxMiArMjI2LDE0IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICBpZiAocmVzdWx0Lm1fb2Zmc2V0ID09IG5vdEZvdW5kKSB7
CiAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gVGFrZXNTbG93UGF0aDsKICAgICAgICAgcmVzdWx0
Lm1fc3RydWN0dXJlU2V0LmNsZWFyKCk7CisgICAgICAgIHJlc3VsdC5tX2NoYWluLmNsZWFyKCk7
CisgICAgICAgIHJlc3VsdC5tX3NwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlRGlyZWN0OworICAgICAgICByZXN1bHQu
bV9zdGF0ZSA9IFNpbXBsZTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lv
biAxMTk2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw4IEBAIGNsYXNzIEdldEJ5SWRTdGF0dXMg
ewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewogICAgICAgICBOb0luZm9ybWF0aW9uLCAgLy8g
SXQncyB1bmNhY2hlZCBzbyB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uLgotICAgICAgICBTaW1wbGVE
aXJlY3QsICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgZGlyZWN0IGFjY2VzcyB0byBhIGtub3duIG9i
amVjdCBwcm9wZXJ0eS4KKyAgICAgICAgU2ltcGxlLCAgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZv
ciBhIHNpbXBsZSBhY2Nlc3MgdG8gYSBrbm93biBvYmplY3QgcHJvcGVydHkgd2l0aAorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYSBwb3NzaWJsZSBzdHJ1Y3R1cmUgY2hhaW4gYW5kIGEgcG9z
c2libGUgc3BlY2lmaWMgdmFsdWUuCiAgICAgICAgIFRha2VzU2xvd1BhdGgsICAvLyBJdCdzIGtu
b3duIHRvIG9mdGVuIHRha2Ugc2xvdyBwYXRoLgogICAgICAgICBNYWtlc0NhbGxzICAgICAgLy8g
SXQncyBrbm93biB0byB0YWtlIHBhdGhzIHRoYXQgbWFrZSBjYWxscy4KICAgICB9OwpAQCAtNDks
MTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0
dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qg
b2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKKyAgICBHZXRCeUlkU3RhdHVzKAorICAgICAgICBT
dGF0ZSBzdGF0ZSwgYm9vbCB3YXNTZWVuSW5KSVQsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0ID0gU3RydWN0dXJlU2V0KCksCisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBub3RGb3Vu
ZCwgSlNWYWx1ZSBzcGVjaWZpY1ZhbHVlID0gSlNWYWx1ZSgpLCBWZWN0b3I8U3RydWN0dXJlKj4g
Y2hhaW4gPSBWZWN0b3I8U3RydWN0dXJlKj4oKSkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQog
ICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKKyAgICAgICAgLCBtX2NoYWlu
KGNoYWluKQorICAgICAgICAsIG1fc3BlY2lmaWNWYWx1ZShzcGVjaWZpY1ZhbHVlKQogICAgICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5K
SVQpCiAgICAgewotICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9m
ZnNldCAhPSBub3RGb3VuZCkpOworICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSkgPT0g
KG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgR2V0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50
aWZpZXImKTsKQEAgLTY0LDIwICs2OSwyNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gTm9JbmZvcm1hdGlvbjsgfQogICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KLSAgICBib29sIGlzU2ltcGxl
RGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGVEaXJlY3Q7IH0KKyAgICBi
b29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KICAgICBi
b29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1Bh
dGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBNYWtlc0NhbGxzOyB9CiAgICAgCiAgICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsg
fQorICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBt
X2NoYWluOyB9IC8vIFJldHVybnMgZW1wdHkgdmVjdG9yIGlmIHRoaXMgaXMgYSBkaXJlY3QgYWNj
ZXNzLgorICAgIEpTVmFsdWUgc3BlY2lmaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lm
aWNWYWx1ZTsgfSAvLyBSZXR1cm5zIEpTVmFsdWUoKSBpZiB0aGVyZSBpcyBubyBzcGVjaWZpYyB2
YWx1ZS4KICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAg
ICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklU
OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVGb3JDaGFpbihHZXRC
eUlkU3RhdHVzJiByZXN1bHQsIENvZGVCbG9jayosIElkZW50aWZpZXImLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKICAgICAKICAgICBTdGF0ZSBtX3N0
YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKKyAgICBWZWN0b3I8U3RydWN0
dXJlKj4gbV9jaGFpbjsKKyAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsKICAgICBzaXplX3Qg
bV9vZmZzZXQ7CiAgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCShyZXZpc2lvbiAxMTk2ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgCisgICAgLy8gQ2FsbCB0aGlzIGlmIHlvdSBrbm93IHRoYXQgdGhlIHN0
cnVjdHVyZSBzZXQgbXVzdCBjb25zaXN0IG9mIGV4YWN0bHkKKyAgICAvLyBvbmUgc3RydWN0dXJl
LgorICAgIFN0cnVjdHVyZSogc2luZ2xldG9uU3RydWN0dXJlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZXMuc2l6ZSgpID09IDEpOworICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmVzWzBdOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1cmUqIGF0KHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZXMuYXQoaSk7IH0KICAgICAKICAgICBTdHJ1Y3R1cmUq
IG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAko
cmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCwxMiArMTEwLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgdS5nZXRCeUlkUHJvdG8ucHJvdG90eXBlU3RydWN0dXJl
LnNldChnbG9iYWxEYXRhLCBvd25lciwgcHJvdG90eXBlU3RydWN0dXJlKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgaW5pdEdldEJ5SWRDaGFpbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQ2VsbCogb3duZXIsIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgU3RydWN0dXJl
Q2hhaW4qIGNoYWluKQorICAgICAgICB2b2lkIGluaXRHZXRCeUlkQ2hhaW4oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93bmVyLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1
cmUsIFN0cnVjdHVyZUNoYWluKiBjaGFpbiwgdW5zaWduZWQgY291bnQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGFjY2Vzc1R5cGUgPSBhY2Nlc3NfZ2V0X2J5X2lkX2NoYWluOwogCiAgICAgICAg
ICAgICB1LmdldEJ5SWRDaGFpbi5iYXNlT2JqZWN0U3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBv
d25lciwgYmFzZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgICAgICAgICB1LmdldEJ5SWRDaGFpbi5j
aGFpbi5zZXQoZ2xvYmFsRGF0YSwgb3duZXIsIGNoYWluKTsKKyAgICAgICAgICAgIHUuZ2V0QnlJ
ZENoYWluLmNvdW50ID0gY291bnQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGluaXRHZXRC
eUlkU2VsZkxpc3QoUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBzdHJ1Y3R1cmVMaXN0
LCBpbnQgbGlzdFNpemUpCkBAIC0yNTUsNiArMjU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0
dXJlPiBiYXNlT2JqZWN0U3RydWN0dXJlOwogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllckJh
c2U8U3RydWN0dXJlQ2hhaW4+IGNoYWluOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50
OwogICAgICAgICAgICAgfSBnZXRCeUlkQ2hhaW47CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogc3RydWN0dXJlTGlz
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Nyw0MSArMTU0Nyw2NCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIGludCBkZXN0aW5hdGlv
bk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLAogICAgIGNvbnN0IEdldEJ5SWRTdGF0dXMmIGdldEJ5SWRT
dGF0dXMpCiB7Ci0gICAgaWYgKGdldEJ5SWRTdGF0dXMuaXNTaW1wbGVEaXJlY3QoKQotICAgICAg
ICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2FjaGUpKSB7Ci0gICAgICAgIEFTU0VSVChnZXRCeUlkU3RhdHVzLnN0cnVj
dHVyZVNldCgpLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgIC8vIFRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBHZXRCeU9mZnNldCBkb2VzIG5vdCBrbm93IHRvIHRlcm1pbmF0ZSBzcGVj
dWxhdGl2ZQotICAgICAgICAvLyBleGVjdXRpb24gaWYgaXQgZG9lc24ndCBoYXZlIGEgcHJlZGlj
dGlvbiwgc28gd2UgZG8gaXQgbWFudWFsbHkuCi0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFNw
ZWNOb25lKQotICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSkpLCBiYXNlKTsK
LSAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICAgICAgc2l6ZV90IG9mZnNl
dE9mZnNldDsKLSAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuYWxsQXJl
VXNpbmdJbmxpbmVQcm9wZXJ0eVN0b3JhZ2UoKSkgewotICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYmFzZTsKLSAgICAgICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2Yo
SlNPYmplY3QpIC8gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdl
LCBiYXNlKTsKLSAgICAgICAgICAgIG9mZnNldE9mZnNldCA9IDA7Ci0gICAgICAgIH0KLSAgICAg
ICAgc2V0KGRlc3RpbmF0aW9uT3BlcmFuZCwKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAg
ICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0Rh
dGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAotICAgICAgICAgICAgICAgIHByb3BlcnR5
U3RvcmFnZSkpOwotICAgICAgICAKLSAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFnZUFj
Y2Vzc0RhdGE7Ci0gICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGdldEJ5SWRTdGF0
dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7Ci0gICAgICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlk
ZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgICAgICBtX2dyYXBoLm1fc3Rv
cmFnZUFjY2Vzc0RhdGEuYXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKLSAgICB9IGVsc2Ugewor
ICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpCisgICAgICAgIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hl
KSkgewogICAgICAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAogICAgICAgICAgICAgYWRkVG9H
cmFwaCgKICAgICAgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IEdldEJ5
SWRGbHVzaCA6IEdldEJ5SWQsCiAgICAgICAgICAgICAgICAgT3BJbmZvKGlkZW50aWZpZXJOdW1i
ZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBBU1NFUlQoZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIAorICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRCeU9mZnNl
dCBkb2VzIG5vdCBrbm93IHRvIHRlcm1pbmF0ZSBzcGVjdWxhdGl2ZQorICAgIC8vIGV4ZWN1dGlv
biBpZiBpdCBkb2Vzbid0IGhhdmUgYSBwcmVkaWN0aW9uLCBzbyB3ZSBkbyBpdCBtYW51YWxseS4K
KyAgICBpZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkKKyAgICAgICAgYWRkVG9HcmFwaChGb3Jj
ZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIAorICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1
cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChnZXRCeUlkU3RhdHVzLnN0cnVjdHVy
ZVNldCgpKSksIGJhc2UpOworICAgIAorICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZTsKKyAgICBp
ZiAoIWdldEJ5SWRTdGF0dXMuY2hhaW4oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RydWN0dXJl
KiBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5zdHJ1Y3R1cmVTZXQoKS5zaW5nbGV0
b25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgSlNPYmplY3QqIGN1cnJlbnRPYmplY3QgPSAwOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2V0QnlJZFN0YXR1cy5jaGFpbigpLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBjdXJyZW50T2JqZWN0ID0gYXNPYmplY3QoY3VycmVudFN0
cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
KSk7CisgICAgICAgICAgICBjdXJyZW50U3RydWN0dXJlID0gZ2V0QnlJZFN0YXR1cy5jaGFpbigp
W2ldOworICAgICAgICAgICAgYmFzZSA9IGFkZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5m
byhjdXJyZW50T2JqZWN0KSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJl
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY3VycmVudFN0cnVjdHVyZSkpLCBiYXNl
KTsKKyAgICAgICAgfQorICAgICAgICB1c2VJbmxpbmVTdG9yYWdlID0gY3VycmVudFN0cnVjdHVy
ZS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdXNlSW5saW5l
U3RvcmFnZSA9IGdldEJ5SWRTdGF0dXMuc3RydWN0dXJlU2V0KCkuYWxsQXJlVXNpbmdJbmxpbmVQ
cm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAKKyAgICBpZiAoZ2V0QnlJZFN0YXR1cy5zcGVjaWZpY1Zh
bHVlKCkpIHsKKyAgICAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMuc3BlY2lmaWNWYWx1ZSgpLmlz
Q2VsbCgpKTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uT3BlcmFuZCwKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoV2Vha0pTQ29uc3RhbnQsIE9wSW5mbyhnZXRCeUlkU3RhdHVzLnNwZWNpZmljVmFs
dWUoKS5hc0NlbGwoKSkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBOb2Rl
SW5kZXggcHJvcGVydHlTdG9yYWdlOworICAgIHNpemVfdCBvZmZzZXRPZmZzZXQ7CisgICAgaWYg
KHVzZUlubGluZVN0b3JhZ2UpIHsKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAg
ICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkp
KTsKKyAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAvIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRk
VG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOworICAgICAgICBvZmZzZXRPZmZzZXQg
PSAwOworICAgIH0KKyAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAorICAgICAgICBhZGRUb0dy
YXBoKAorICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFj
Y2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAorICAgICAgICAgICAgcHJvcGVy
dHlTdG9yYWdlKSk7CisgICAgICAgIAorICAgIFN0b3JhZ2VBY2Nlc3NEYXRhIHN0b3JhZ2VBY2Nl
c3NEYXRhOworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGdldEJ5SWRTdGF0dXMub2Zm
c2V0KCkgKyBvZmZzZXRPZmZzZXQ7CisgICAgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRpZmllck51
bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRh
LmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBy
ZXBhcmVUb1BhcnNlQmxvY2soKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
cGF0Y2guY3BwCShyZXZpc2lvbiAxMTk2ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGlj
IGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0
Y2guZGZnLmRlbHRhQ2FsbFRvU3RydWN0Q2hlY2spLCBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5m
by5zdHViUm91dGluZS5jb2RlKCkpKTsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRQcm90b0J1aWxkTGlzdCk7CiAg
ICAgCi0gICAgc3R1YkluZm8uaW5pdEdldEJ5SWRDaGFpbigqZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbik7CisgICAgc3R1
YkluZm8uaW5pdEdldEJ5SWRDaGFpbigqZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwgY291bnQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2
aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk2MSw3ICs5NjEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRU
aHVua3M6OnRyeUNhY2hlR2V0CiAgICAgfQogCiAgICAgU3RydWN0dXJlQ2hhaW4qIHByb3RvdHlw
ZUNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihjYWxsRnJhbWUpOwotICAgIHN0dWJJ
bmZvLT5pbml0R2V0QnlJZENoYWluKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIHByb3RvdHlwZUNoYWluKTsKKyAgICBzdHVi
SW5mby0+aW5pdEdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLCBwcm90b3R5cGVDaGFpbiwgY291bnQpOwog
ICAgIEpJVDo6Y29tcGlsZUdldEJ5SWRDaGFpbihjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xv
YmFsRGF0YSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHN0dWJJbmZvLCBzdHJ1Y3R1cmUsIHByb3Rv
dHlwZUNoYWluLCBjb3VudCwgcHJvcGVydHlOYW1lLCBzbG90LCBvZmZzZXQsIHJldHVybkFkZHJl
c3MpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDExOTY4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MSwxMyArMzgxLDE4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogICAg
IH0KIAotICAgIGlubGluZSBKU1ZhbHVlIFN0cnVjdHVyZTo6cHJvdG90eXBlRm9yTG9va3VwKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKKyAgICBpbmxpbmUgSlNWYWx1ZSBTdHJ1Y3R1cmU6OnByb3Rv
dHlwZUZvckxvb2t1cChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKGlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gbV9wcm90b3R5cGUu
Z2V0KCk7CiAKICAgICAgICAgQVNTRVJUKHR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUp
OwotICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90
b3R5cGUoKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90eXBlKCk7
CisgICAgfQorCisgICAgaW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29r
dXAoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZUZvckxvb2t1cChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgIH0KIAogICAgIGlu
bGluZSBTdHJ1Y3R1cmVDaGFpbiogU3RydWN0dXJlOjpwcm90b3R5cGVDaGFpbihFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkocmV2aXNpb24gMTE5Njg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KICAgICAgICAgSlNWYWx1ZSBwcm90b3R5cGVG
b3JMb29rdXAoRXhlY1N0YXRlKikgY29uc3Q7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlRm9y
TG9va3VwKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CisgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
Rm9yTG9va3VwKENvZGVCbG9jayopIGNvbnN0OwogICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogcHJv
dG90eXBlQ2hhaW4oRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>