<?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>129129</bug_id>
          
          <creation_ts>2014-02-20 16:46:08 -0800</creation_ts>
          <short_desc>DFG should do its own static estimates of execution frequency before it starts creating OSR entrypoints</short_desc>
          <delta_ts>2014-02-23 19:54:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983035</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-20 16:46:08 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983036</commentid>
    <comment_count>1</comment_count>
      <attachid>224809</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-20 17:00:31 -0800</bug_when>
    <thetext>Created attachment 224809
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983037</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-20 17:01:55 -0800</bug_when>
    <thetext>Attachment 224809 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:53:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
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>983043</commentid>
    <comment_count>3</comment_count>
      <attachid>224809</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-20 17:10:54 -0800</bug_when>
    <thetext>Comment on attachment 224809
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        This is better than letting LLVM do its own static estimates, since by the time we
&gt; +        generate LLVM IR, we may have messed up the CFG due to OSR entrypoint creation. Of
&gt; +        course, it would be even better if we just slurped in some kind of execution counts
&gt; +        from profiling, but we don&apos;t do that, yet.

Do want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983044</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-20 17:15:47 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/164459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983788</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-23 19:54:45 -0800</bug_when>
    <thetext>*** Bug 129055 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224809</attachid>
            <date>2014-02-20 17:00:31 -0800</date>
            <delta_ts>2014-02-20 17:10:54 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>27185</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE0LTAyLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBkbyBpdHMgb3duIHN0YXRpYyBlc3RpbWF0ZXMgb2YgZXhlY3V0aW9uIGZyZXF1
ZW5jeSBiZWZvcmUgaXQgc3RhcnRzIGNyZWF0aW5nIE9TUiBlbnRyeXBvaW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXZSBlc3RpbWF0
ZSBleGVjdXRpb24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGgsIGFuZCB0aGVuIHVzZSB0aG9z
ZSB0byBlc3RpbWF0ZSBicmFuY2gKKyAgICAgICAgd2VpZ2h0cy4gVGhlc2Ugd2VpZ2h0cyB0aGVu
IGdldCBjYXJyaWVkIGFsbCB0aGUgd2F5IGRvd24gdG8gTExWTSBwcm9mIGJyYW5jaF93ZWlnaHRz
CisgICAgICAgIG1ldGEtZGF0YS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYmV0dGVyIHRo
YW4gbGV0dGluZyBMTFZNIGRvIGl0cyBvd24gc3RhdGljIGVzdGltYXRlcywgc2luY2UgYnkgdGhl
IHRpbWUgd2UKKyAgICAgICAgZ2VuZXJhdGUgTExWTSBJUiwgd2UgbWF5IGhhdmUgbWVzc2VkIHVw
IHRoZSBDRkcgZHVlIHRvIE9TUiBlbnRyeXBvaW50IGNyZWF0aW9uLiBPZgorICAgICAgICBjb3Vy
c2UsIGl0IHdvdWxkIGJlIGV2ZW4gYmV0dGVyIGlmIHdlIGp1c3Qgc2x1cnBlZCBpbiBzb21lIGtp
bmQgb2YgZXhlY3V0aW9uIGNvdW50cworICAgICAgICBmcm9tIHByb2ZpbGluZywgYnV0IHdlIGRv
bid0IGRvIHRoYXQsIHlldC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OkJhc2ljQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdCYXNpY0Jsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAg
KEpTQzo6REZHOjpCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKiBk
ZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Q3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZTo6YnJlYWtDcml0aWNhbEVkZ2Up
OgorICAgICAgICAqIGRmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Y3JlYXRlUHJlSGVhZGVyKToKKyAgICAgICAgKiBkZmcvREZHTmF0dXJh
bExvb3BzLmg6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpsb29wRGVwdGgpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25Q
aGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlN0YXRpY0V4ZWN1dGlvbkNvdW50
RXN0aW1hdGlvblBoYXNlOjpTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2U6OnJ1
bik6CisgICAgICAgIChKU0M6OkRGRzo6U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhh
c2U6OmFwcGx5Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtU3RhdGljRXhlY3V0
aW9uQ291bnRFc3RpbWF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3RhdGljRXhlY3V0aW9uQ291
bnRFc3RpbWF0aW9uUGhhc2UuaDogQWRkZWQuCisKIDIwMTQtMDItMjAgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgbWF5IG5vdCBzZWUgYSBjb21wYWN0X3Vu
d2luZCBzZWN0aW9uIGlmIHRoZXJlIHdlcmVuJ3QgYW55IHN0YWNrbWFwcwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY0NDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKICAgICBkZmcvREZH
U3RhY2tMYXlvdXRQaGFzZS5jcHAKKyAgICBkZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAK
ICAgICBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKICAgICBkZmcvREZHVGhyZWFk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjQ0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDEwLDYgKzQxMCw4IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQ
aGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2Uu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb25QaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhl
Y3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY0NDQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDM2LDYgKzQzNiw3IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxkZmdcREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTU0FMb3dlcmluZ1BoYXNlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGFja0xheW91dFBoYXNlLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RvcmVC
YXJyaWVyRWxpc2lvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRm
Z1xERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdUaHJlYWREYXRhLmNwcCIgLz4KQEAgLTk5Nyw2ICs5OTgsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NTQUNvbnZlcnNpb25QaGFzZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdGFja0xheW91dFBoYXNlLmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU3RhdGljRXhlY3V0aW9uQ291bnRF
c3RpbWF0aW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdT
dG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxkZmdcREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIiAvPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NDQ0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjEsNiArMjYxLDggQEAKIAkJMEY0ODUzMkExODdERkRFQzAwODNCNjg3IC8q
IEZUTFJlY292ZXJ5T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3ZlcnlPcGNvZGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ5
M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhC
IC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJMEY0Qjk0REMxN0I5RjA3NTAwREQwM0E0
IC8qIFR5cGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjRCOTREQjE3QjlGMDc1MDBERDAzQTQgLyogVHlwZWRBcnJheUlubGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjRGMjlERjE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0RjI5REQxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEY0RjI5RTAxOEI2QUQxQzAwNTdCQzE1IC8qIERG
R1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGMjlERTE4QjZBRDFDMDA1N0JDMTUgLyog
REZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNF
MjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVy
LmNwcCAqLzsgfTsKIAkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDFC
MDE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMg
LyogVG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTU5ODk3MTdDODZDNTYwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
NzM1LDYgKzE3MzcsOCBAQAogCQkwRjQ4NTMyNjE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3Zl
cnlPcGNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMUmVjb3ZlcnlP
cGNvZGUuaDsgcGF0aCA9IGZ0bC9GVExSZWNvdmVyeU9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjQ5M0FGODE2RDBDQUQxMDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU291cmNlUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRCOTREQjE3QjlGMDc1MDBERDAz
QTQgLyogVHlwZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVHlwZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
RjI5REQxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdGF0aWNF
eGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNEYyOURFMThCNkFEMUMwMDU3QkMxNSAvKiBERkdTdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNTU0MUFGMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjaWFsUG9pbnRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTU0MUIwMTYxM0MxRkIwMENFM0UyNSAvKiBT
cGVjaWFsUG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjaWFs
UG9pbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1OTg5NzE3Qzg2QzU2
MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9OYXRpdmVG
cm9tVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzQsNiArNDE3OCw4
IEBACiAJCTg2RUM5REIzMTMyOERGNDQwMDJCMkFENyAvKiBkZmcgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNEYyOUREMThCNkFEMUMwMDU3QkMxNSAv
KiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEY0
RjI5REUxOEI2QUQxQzAwNTdCQzE1IC8qIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmggKi8sCiAJCQkJQTc3QTQyMzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0
SGVhcC5jcHAgKi8sCiAJCQkJQTc3QTQyMzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0
SGVhcC5oICovLAogCQkJCUE3MDREOEZFMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdElu
dGVycHJldGVyLmggKi8sCkBAIC01MTU4LDYgKzUxNjQsNyBAQAogCQkJCTBGMkI2NkUwMTdCNkI1
QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYgLyogR2V0QnlJ
ZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0RjI5RTAxOEI2QUQxQzAwNTdCQzE1IC8q
IERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI0RTU0NDE3RUE5RjU5MDBBQkIyMTcgLyogR1BSSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQyRTMxMzQxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVy
cyAqLywKQEAgLTYwODIsNiArNjA4OSw3IEBACiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZE
IC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxNjAxNUQxNTYx
OThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2Mzk0ODQxNUU0ODExODAwNkE1OTdDIC8qIERGR0FycmF5TW9kZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjRGMjlERjE4QjZBRDFDMDA1N0JDMTUgLyogREZHU3Rh
dGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdEOUEyOTQxN0EwQkM3NDAwRUUyNjE4IC8qIERGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY3MTRDQTQxNkVBOTJGMDAwRjNFQkVCIC8qIERGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVCNThDMTQxODdCOEIx
NjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24g
MTY0NDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzIsNyArMzIsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLUJhc2ljQmxvY2s6OkJhc2ljQmxvY2sodW5zaWduZWQgYnl0ZWNvZGVCZWdpbiwg
dW5zaWduZWQgbnVtQXJndW1lbnRzLCB1bnNpZ25lZCBudW1Mb2NhbHMpCitCYXNpY0Jsb2NrOjpC
YXNpY0Jsb2NrKAorICAgIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4sIHVuc2lnbmVkIG51bUFyZ3Vt
ZW50cywgdW5zaWduZWQgbnVtTG9jYWxzLCBmbG9hdCBleGVjdXRpb25Db3VudCkKICAgICA6IGJ5
dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBp
c09TUlRhcmdldChmYWxzZSkKQEAgLTQ5LDYgKzUwLDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9j
ayh1bnNpZ25lZCBieXRlY29kZQogICAgICwgdmFyaWFibGVzQXRUYWlsKG51bUFyZ3VtZW50cywg
bnVtTG9jYWxzKQogICAgICwgdmFsdWVzQXRIZWFkKG51bUFyZ3VtZW50cywgbnVtTG9jYWxzKQog
ICAgICwgdmFsdWVzQXRUYWlsKG51bUFyZ3VtZW50cywgbnVtTG9jYWxzKQorICAgICwgZXhlY3V0
aW9uQ291bnQoZXhlY3V0aW9uQ291bnQpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxNjQ0NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDgsNyArNDgsOSBAQCBjbGFzcyBJbnNlcnRpb25TZXQ7CiB0eXBlZGVmIFZlY3RvcjxCYXNp
Y0Jsb2NrKiwgMj4gUHJlZGVjZXNzb3JMaXN0OwogCiBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jaz4gewotICAgIEJhc2ljQmxvY2sodW5zaWduZWQgYnl0ZWNvZGVCZWdp
biwgdW5zaWduZWQgbnVtQXJndW1lbnRzLCB1bnNpZ25lZCBudW1Mb2NhbHMpOworICAgIEJhc2lj
QmxvY2soCisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4sIHVuc2lnbmVkIG51bUFyZ3Vt
ZW50cywgdW5zaWduZWQgbnVtTG9jYWxzLAorICAgICAgICBmbG9hdCBleGVjdXRpb25Db3VudCk7
CiAgICAgfkJhc2ljQmxvY2soKTsKICAgICAKICAgICB2b2lkIGVuc3VyZUxvY2Fscyh1bnNpZ25l
ZCBuZXdOdW1Mb2NhbHMpOwpAQCAtMTM0LDYgKzEzNiw4IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDog
UmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBPcGVyYW5kczxBYnN0cmFjdFZhbHVlPiB2YWx1ZXNB
dEhlYWQ7CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4gdmFsdWVzQXRUYWlsOwogICAgIAor
ICAgIGZsb2F0IGV4ZWN1dGlvbkNvdW50OworICAgIAogICAgIC8vIFRoZXNlIGZpZWxkcyBhcmUg
cmVzZXJ2ZWQgZm9yIE5hdHVyYWxMb29wcy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZJbm5lck1vc3RMb29wSW5kaWNlcyA9IDI7CiAgICAgdW5zaWduZWQgaW5uZXJNb3N0TG9v
cEluZGljZXNbbnVtYmVyT2ZJbm5lck1vc3RMb29wSW5kaWNlc107CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmNwcAkocmV2aXNp
b24gMTY0NDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja0luc2VydGlv
blNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDIwICs0OSwyMSBAQCB2b2lkIEJsb2NrSW5zZXJ0
aW9uU2V0OjppbnNlcnQoc2l6ZV90IGluCiAgICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4
LCBibG9jaykpOwogfQogCi1CYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5zZXJ0KHNp
emVfdCBpbmRleCkKK0Jhc2ljQmxvY2sqIEJsb2NrSW5zZXJ0aW9uU2V0OjppbnNlcnQoc2l6ZV90
IGluZGV4LCBmbG9hdCBleGVjdXRpb25Db3VudCkKIHsKICAgICBSZWZQdHI8QmFzaWNCbG9jaz4g
YmxvY2sgPSBhZG9wdFJlZihuZXcgQmFzaWNCbG9jaygKICAgICAgICAgVUlOVF9NQVgsCiAgICAg
ICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
LAotICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKSkpOworICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKSwKKyAgICAgICAgZXhlY3V0aW9uQ291bnQpKTsKICAgICBibG9jay0+aXNSZWFj
aGFibGUgPSB0cnVlOwogICAgIGluc2VydChpbmRleCwgYmxvY2spOwogICAgIHJldHVybiBibG9j
ay5nZXQoKTsKIH0KIAotQmFzaWNCbG9jayogQmxvY2tJbnNlcnRpb25TZXQ6Omluc2VydEJlZm9y
ZShCYXNpY0Jsb2NrKiBiZWZvcmUpCitCYXNpY0Jsb2NrKiBCbG9ja0luc2VydGlvblNldDo6aW5z
ZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSwgZmxvYXQgZXhlY3V0aW9uQ291bnQpCiB7Ci0g
ICAgcmV0dXJuIGluc2VydChiZWZvcmUtPmluZGV4KTsKKyAgICByZXR1cm4gaW5zZXJ0KGJlZm9y
ZS0+aW5kZXgsIGV4ZWN1dGlvbkNvdW50KTsKIH0KIAogYm9vbCBCbG9ja0luc2VydGlvblNldDo6
ZXhlY3V0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0
aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9j
a0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxNjQ0NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDggKzQzLDgg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgaW5zZXJ0KGNvbnN0IEJsb2NrSW5zZXJ0aW9uJiBp
bnNlcnRpb24pOwogICAgIHZvaWQgaW5zZXJ0KHNpemVfdCBpbmRleCwgUGFzc1JlZlB0cjxCYXNp
Y0Jsb2NrPiBibG9jayk7Ci0gICAgQmFzaWNCbG9jayogaW5zZXJ0KHNpemVfdCBpbmRleCk7Ci0g
ICAgQmFzaWNCbG9jayogaW5zZXJ0QmVmb3JlKEJhc2ljQmxvY2sqIGJlZm9yZSk7CisgICAgQmFz
aWNCbG9jayogaW5zZXJ0KHNpemVfdCBpbmRleCwgZmxvYXQgZXhlY3V0aW9uQ291bnQpOworICAg
IEJhc2ljQmxvY2sqIGluc2VydEJlZm9yZShCYXNpY0Jsb2NrKiBiZWZvcmUsIGZsb2F0IGV4ZWN1
dGlvbkNvdW50KTsKICAgICAKICAgICBib29sIGV4ZWN1dGUoKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE2
NDQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDU1LDcgKzE0NTUsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbmxpbmluZyhOb2RlCiAgICAgCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0ZSBhIG5l
dyBiYXNpYyBibG9jayBmb3IgdGhlIGNvbnRpbnVhdGlvbiBhdCB0aGUgY2FsbGVyLgotICAgIFJl
ZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZz
ZXQsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscykpOworICAgIFJlZlB0cjxCYXNpY0Jsb2Nr
PiBibG9jayA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKG5leHRPZmZzZXQsIG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2FscywgUU5hTikpOwogCiAgICAgLy8gTGluayB0aGUgZWFybHkgcmV0dXJu
cyB0byB0aGUgYmFzaWMgYmxvY2sgd2UncmUgYWJvdXQgdG8gY3JlYXRlLgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLnNpemUoKTsg
KytpKSB7CkBAIC0zNzEwLDcgKzM3MTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNv
ZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbV9ncmFwaC5s
YXN0QmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2Rl
QmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZihuZXcgQmFz
aWNCbG9jayhtX2N1cnJlbnRJbmRleCwgbV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKG5l
dyBCYXNpY0Jsb2NrKG1fY3VycmVudEluZGV4LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMs
IFFOYU4pKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBibG9jay5nZXQo
KTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gY2hlY2tzIHR3byB0aGlu
Z3M6CiAgICAgICAgICAgICAgICAgICAgIC8vIDEpIElmIHRoZSBieXRlY29kZUJlZ2luIGlzIGdy
ZWF0ZXIgdGhhbiBjdXJyZW50SW5kZXgsIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdl
QnJlYWtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2NDQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDcgKzczLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGJyZWFrQ3JpdGlj
YWxFZGdlKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCYXNpY0Jsb2NrKiogc3VjY2Vzc29yKQog
ICAgIHsKLSAgICAgICAgQmFzaWNCbG9jayogcGFkID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0QmVm
b3JlKCpzdWNjZXNzb3IpOworICAgICAgICAvLyBOb3RlIHRoYXQgd2UgcGFzcyBOYU4gZm9yIHRo
ZSBjb3VudCBvZiB0aGUgY3JpdGljYWwgZWRnZSBibG9jaywgYmVjYXVzZSB3ZSBob25lc3RseQor
ICAgICAgICAvLyBkb24ndCBrbm93IGl0cyBleGVjdXRpb24gZnJlcXVlbmN5LgorICAgICAgICBC
YXNpY0Jsb2NrKiBwYWQgPSBtX2luc2VydGlvblNldC5pbnNlcnRCZWZvcmUoKnN1Y2Nlc3Nvciwg
UU5hTik7CiAgICAgICAgIHBhZC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgIG1fZ3JhcGgsIFNw
ZWNOb25lLCBKdW1wLCAoKnN1Y2Nlc3NvciktPmF0KDApLT5vcmlnaW4sIE9wSW5mbygqc3VjY2Vz
c29yKSk7CiAgICAgICAgIHBhZC0+cHJlZGVjZXNzb3JzLmFwcGVuZChwcmVkZWNlc3Nvcik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY0NDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2Vy
dGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBCYXNpY0Js
b2NrKiBwcmVIZWFkZXIgPSBpbnNlcnRpb25TZXQuaW5zZXJ0QmVmb3JlKGJsb2NrKTsKKyAgICAv
LyBEb24ndCBib3RoZXIgdG8gcHJlc2VydmUgZXhlY3V0aW9uIGZyZXF1ZW5jaWVzIGZvciBub3cu
CisgICAgQmFzaWNCbG9jayogcHJlSGVhZGVyID0gaW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShi
bG9jaywgUU5hTik7CiAgICAgcHJlSGVhZGVyLT5hcHBlbmROb2RlKAogICAgICAgICBncmFwaCwg
U3BlY05vbmUsIEp1bXAsIGJsb2NrLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oYmxvY2spKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAko
cmV2aXNpb24gMTY0NDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFs
TG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgdW5zaWduZWQgbG9vcERlcHRoKEJh
c2ljQmxvY2sqIGJsb2NrKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgZGVwdGggPSAw
OworICAgICAgICBmb3IgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gaW5uZXJNb3N0TG9vcE9m
KGJsb2NrKTsgbG9vcDsgbG9vcCA9IGlubmVyTW9zdE91dGVyTG9vcCgqbG9vcCkpCisgICAgICAg
ICAgICBkZXB0aCsrOworICAgICAgICByZXR1cm4gZGVwdGg7CisgICAgfQorICAgIAogICAgIC8v
IFJldHVybiB0aGUgaW5kaWNlcyBvZiBhbGwgbG9vcHMgdGhpcyBiZWxvbmdzIHRvLgogICAgIFZl
Y3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BzT2YoQmFzaWNCbG9jayopIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY0NDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgQmxv
Y2tJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwogICAgICAgICAKLSAgICAgICAg
QmFzaWNCbG9jayogbmV3Um9vdCA9IGluc2VydGlvblNldC5pbnNlcnQoMCk7CisgICAgICAgIEJh
c2ljQmxvY2sqIG5ld1Jvb3QgPSBpbnNlcnRpb25TZXQuaW5zZXJ0KDAsIFFOYU4pOwogICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCiAg
ICAgICAgIFZlY3RvcjxOb2RlKj4gbG9jYWxzKGJhc2VsaW5lLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE2
NDQ0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJERkdTU0FDb252ZXJzaW9uUGhhc2Uu
aCIKICNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHU3RhY2tM
YXlvdXRQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmgiCiAjaW5jbHVkZSAiREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmgiCiAjaW5j
bHVkZSAiREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuaCIKQEAgLTIwOCw2ICsyMDksOSBAQCBQbGFuOjpDb21waWxhdGlv
blBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgcGVyZm9ybVVuaWZpY2F0aW9uKGRmZyk7CiAg
ICAgcGVyZm9ybVByZWRpY3Rpb25JbmplY3Rpb24oZGZnKTsKICAgICAKKyAgICBpZiAoaXNGVEwo
bW9kZSkpCisgICAgICAgIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb24oZGZn
KTsKKyAgICAKICAgICBpZiAobW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAgICAg
Ym9vbCByZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAgICAg
IGlmICghcmVzdWx0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdTdGF0aWNFeGVjdXRpb25Db3VudEVz
dGltYXRpb25QaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdC
YXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZH
UGhhc2UuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKKworY2xhc3MgU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1h
dGlvblBoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgInN0YXRpYyBl
eGVjdXRpb24gY291bnQgZXN0aW1hdGlvbiIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29s
IHJ1bigpCisgICAgeworICAgICAgICBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLmNvbXB1dGVJZk5l
Y2Vzc2FyeShtX2dyYXBoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJs
b2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KKyAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07
KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJ
bmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgu
bV9uYXR1cmFsTG9vcHMubG9vcERlcHRoKGJsb2NrKSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3Vu
dHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4gSXQnbGwKKyAgICAgICAgLy8gYXNzdW1lIHRo
YXQgZWFjaCBibG9jaydzIGNvbmRpdGlvbmFsIHN1Y2Nlc3NvciBvbmx5IGhhcyB0aGF0IGJsb2Nr
IGFzIGl0cworICAgICAgICAvLyBwcmVkZWNlc3Nvci4KKyAgICAgICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Cisg
ICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGJsb2NrLT5sYXN0KCktPm9wKCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgQnJhbmNoOiB7CisgICAgICAgICAgICAgICAgQnJhbmNoRGF0YSogZGF0YSA9
IGJsb2NrLT5sYXN0KCktPmJyYW5jaERhdGEoKTsKKyAgICAgICAgICAgICAgICBhcHBseUNvdW50
cyhkYXRhLT50YWtlbik7CisgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+bm90VGFr
ZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgY2FzZSBTd2l0Y2g6IHsKKyAgICAgICAgICAgICAgICBTd2l0Y2hE
YXRhKiBkYXRhID0gYmxvY2stPmxhc3QoKS0+c3dpdGNoRGF0YSgpOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGRhdGEtPmNhc2VzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
ICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+Y2FzZXNbaV0udGFyZ2V0KTsKKyAgICAgICAgICAg
ICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBh
cHBseUNvdW50cyhCcmFuY2hUYXJnZXQmIHRhcmdldCkKKyAgICB7CisgICAgICAgIHRhcmdldC5j
b3VudCA9IHRhcmdldC5ibG9jay0+ZXhlY3V0aW9uQ291bnQ7CisgICAgfQorfTsKKworYm9vbCBw
ZXJmb3JtU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkKK3sKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0YXRpYyBFeGVjdXRpb24gQ291
bnQgRXN0aW1hdGlvbiIpOworICAgIHJldHVybiBydW5QaGFzZTxTdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb25QaGFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFz
ZV9oCisjZGVmaW5lIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlX2gKKwor
I2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisK
K2NsYXNzIEdyYXBoOworCisvLyBFc3RpbWF0ZSBleGVjdXRpb24gY291bnRzIChicmFuY2ggZXhl
Y3V0aW9uIGNvdW50cywgaW4gcGFydGljdWxhcikgYmFzZWQgb24KKy8vIHByZXNlbnRseSBhdmFp
bGFibGUgc3RhdGljIGluZm9ybWF0aW9uLiBUaGlzIHBoYXNlIGlzIGltcG9ydGFudCBiZWNhdXNl
CisvLyBzdWJzZXF1ZW50IENGRyB0cmFuc2Zvcm1hdGlvbnMsIHN1Y2ggYXMgT1NSIGVudHJ5cG9p
bnQgY3JlYXRpb24sIHBlcnR1cmIgb3VyCisvLyBhYmlsaXR5IHRvIGRvIGFjY3VyYXRlIHN0YXRp
YyBlc3RpbWF0aW9ucy4gSGVuY2Ugd2UgbG9jayBpbiB0aGUgZXN0aW1hdGVzIGVhcmx5LgorLy8g
SWRlYWxseSwgd2Ugd291bGQgaGF2ZSBkeW5hbWljIGluZm9ybWF0aW9uLCBidXQgd2UgZG9uJ3Qg
cmlnaHQgbm93LCBzbyB0aGlzIGlzIGFzCisvLyBnb29kIGFzIGl0IGdldHMuCisvLworLy8gSXQn
cyB3b3J0aCBub3RpbmcgdGhhdCBpZiB3ZSBkaWRuJ3QgaGF2ZSB0aGlzIHBoYXNlLCB0aGVuIHRo
ZSBzdGF0aWMgZXN0aW1hdGlvbgorLy8gd291bGQgYmUgcGVyZm9tZWQgYnkgTExWTSBpbnN0ZWFk
LiBJdCdzIHdvcnRoIHRyeWluZyB0byBtYWtlIHRoaXMgcGhhc2UgcGVyZm9ybQorLy8gdGhlIGVz
dGltYXRlcyB1c2luZyB0aGUgc2FtZSBoZXVyaXN0aWNzIHRoYXQgTExWTSB3b3VsZCB1c2UuCisK
K2Jvb2wgcGVyZm9ybVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvbihHcmFwaCYpOworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwor
I2VuZGlmIC8vIERGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlX2gKKwo=
</data>
<flag name="review"
          id="248924"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>