<?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>69291</bug_id>
          
          <creation_ts>2011-10-03 13:50:46 -0700</creation_ts>
          <short_desc>DFG backends don&apos;t have access to per-node predictions from the propagator</short_desc>
          <delta_ts>2011-10-03 18:05:26 -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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477221</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-03 13:50:46 -0700</bug_when>
    <thetext>The DFG propagator has complete knowledge of how each node in the data flow graph is predicted.  But this knowledge is lost when going to the backend.  The backends try to reinfer this, but do so poorly (for example the backend has no idea how to predict a ConvertThis node, while the propagator knows exactly how to predict it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477229</commentid>
    <comment_count>1</comment_count>
      <attachid>109527</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-03 14:01:46 -0700</bug_when>
    <thetext>Created attachment 109527
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477376</commentid>
    <comment_count>2</comment_count>
      <attachid>109527</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-03 17:35:12 -0700</bug_when>
    <thetext>Comment on attachment 109527
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477386</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-03 18:05:26 -0700</bug_when>
    <thetext>Landed in r96562.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109527</attachid>
            <date>2011-10-03 14:01:46 -0700</date>
            <delta_ts>2011-10-03 17:35:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>betterprop_patch_1.diff</filename>
            <type>text/plain</type>
            <size>20105</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTY1MzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTEtMTAtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgYmFja2VuZHMgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gcGVyLW5vZGUgcHJlZGljdGlvbnMgZnJv
bSB0aGUgcHJvcGFnYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjkyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIE5vZGVzIG5vdyBoYXZlIHR3byBub3Rpb24gb2YgcHJlZGljdGlvbnM6
IHRoZSBoZWFwIHByZWRpY3Rpb24sIHdoaWNoIGlzCisgICAgICAgIHdoYXQgY2FtZSBkaXJlY3Rs
eSBmcm9tIHZhbHVlIHByb2ZpbGluZywgYW5kIHRoZSBwcm9wYWdhdG9yJ3MgcHJlZGljdGlvbnMs
CisgICAgICAgIHdoaWNoIGFyaXNlIG91dCBvZiBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbi4gRXZl
cnkgbm9kZSBoYXMgYSBwcm9wYWdhdG9yCisgICAgICAgIHByZWRpY3Rpb24sIGJ1dCBub3QgZXZl
cnkgbm9kZSBoYXMgYSBoZWFwIHByZWRpY3Rpb247IGFuZCB0aGVyZSBpcyBubworICAgICAgICBn
dWFyYW50ZWUgdGhhdCBhIG5vZGUgdGhhdCBoYXMgYm90aCB3aWxsIGtlZXAgdGhlbSBjb25zaXN0
ZW50IGFzIHRoZQorICAgICAgICBwcm9wYWdhdG9yIG1heSBoYXZlIGFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gYXZhaWxhYmxlIHRvIGl0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBwZXJmb3Jt
YW5jZSBuZXV0cmFsLgorCisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
ICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6
OmdldFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSGVhcFByZWRp
Y3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdldEhlYXBQcmVkaWN0aW9uKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpwcmVkaWN0SGVhcCk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6cHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cHJlZGljdCk6Cisg
ICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByb3Bh
Z2F0b3I6OlByb3BhZ2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnNldFBy
ZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6Om1lcmdlUHJlZGljdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9kZVByZWRpY3Rp
b25zKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmlzUHJlZGljdGVkTnVtZXJpY2FsKToKKyAgICAgICAg
KEpTQzo6REZHOjpQcm9wYWdhdG9yOjpsb2dpY2FsTm90SXNQdXJlKToKKyAgICAgICAgKEpTQzo6
REZHOjpQcm9wYWdhdG9yOjpzZXRSZXBsYWNlbWVudCk6CisKIDIwMTEtMTAtMDMgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGZvciBERkcgSklUIDMyXzY0LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDk2NTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw4ICsyMDQsOCBAQCB2b2lk
IEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgsIENvCiAgICAgICAgICAgICBwcmludGYo
IiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNWYXJOdW1i
ZXIoKSkKICAgICAgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRv
U3RyaW5nKGdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZS52YXJOdW1iZXIoKSkpKTsKLSAgICAg
ICAgZWxzZSBpZiAobm9kZS5oYXNQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICBwcmludGYoIiAg
cHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldFByZWRpY3Rpb24oKSkp
OworICAgICAgICBlbHNlIGlmIChub2RlLmhhc0hlYXBQcmVkaWN0aW9uKCkpCisgICAgICAgICAg
ICBwcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldEhl
YXBQcmVkaWN0aW9uKCkpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5oYXNNZXRob2RDaGVja0Rh
dGEoKSkgewogICAgICAgICAgICAgTWV0aG9kQ2hlY2tEYXRhJiBtZXRob2RDaGVja0RhdGEgPSBt
X21ldGhvZENoZWNrRGF0YVtub2RlLm1ldGhvZENoZWNrRGF0YUluZGV4KCldOwogICAgICAgICAg
ICAgcHJpbnRmKCIgIHByZWRpY3RpbmcgZnVuY3Rpb24gJXAiLCBtZXRob2RDaGVja0RhdGEuZnVu
Y3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24g
OTY1MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NiwzMyArMTg2LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wcmVk
aWN0aW9ucy5wcmVkaWN0R2xvYmFsVmFyKHZhck51bWJlciwgcHJlZGljdGlvbik7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgcHJlZGljdChOb2RlJiBub2RlLCBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24pCi0gICAgewotICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKLSAgICAgICAgY2FzZSBHZXRM
b2NhbDoKLSAgICAgICAgY2FzZSBTZXRMb2NhbDoKLSAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAg
IGNhc2UgU2V0QXJndW1lbnQ6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdChwcmVkaWN0aW9uKTsKLSAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6
Ci0gICAgICAgICAgICByZXR1cm4gcHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJlcigpLCBw
cmVkaWN0aW9uKTsKLSAgICAgICAgY2FzZSBHZXRCeUlkOgotICAgICAgICBjYXNlIEdldE1ldGhv
ZDoKLSAgICAgICAgY2FzZSBHZXRCeVZhbDoKLSAgICAgICAgY2FzZSBDYWxsOgotICAgICAgICBj
YXNlIENvbnN0cnVjdDoKLSAgICAgICAgY2FzZSBHZXRCeU9mZnNldDoKLSAgICAgICAgY2FzZSBH
ZXRTY29wZWRWYXI6Ci0gICAgICAgIGNhc2UgUmVzb2x2ZToKLSAgICAgICAgY2FzZSBSZXNvbHZl
QmFzZToKLSAgICAgICAgY2FzZSBSZXNvbHZlQmFzZVN0cmljdFB1dDoKLSAgICAgICAgY2FzZSBS
ZXNvbHZlR2xvYmFsOgotICAgICAgICAgICAgcmV0dXJuIG5vZGUucHJlZGljdChwcmVkaWN0aW9u
KTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLQogICAgIFByZWRpY3RlZFR5cGUgZ2V0R2xvYmFsVmFyUHJlZGljdGlvbih1bnNp
Z25lZCB2YXJOdW1iZXIpCiAgICAgewogICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9ucy5nZXRH
bG9iYWxWYXJQcmVkaWN0aW9uKHZhck51bWJlcik7CkBAIC0yMjgsNDAgKzIwMSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb25Gcm9tVmFsdWUobm9kZS52YWx1ZU9mSlNDb25z
dGFudE5vZGUoY29kZUJsb2NrKSk7CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbihOb2RlJiBub2RlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICB7Ci0gICAg
ICAgIE5vZGUqIG5vZGVQdHIgPSAmbm9kZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChub2RlUHRy
LT5vcCA9PSBWYWx1ZVRvTnVtYmVyKQotICAgICAgICAgICAgbm9kZVB0ciA9ICYoKnRoaXMpW25v
ZGVQdHItPmNoaWxkMSgpXTsKLQotICAgICAgICBpZiAobm9kZVB0ci0+b3AgPT0gVmFsdWVUb0lu
dDMyKQotICAgICAgICAgICAgbm9kZVB0ciA9ICYoKnRoaXMpW25vZGVQdHItPmNoaWxkMSgpXTsK
LSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAobm9kZVB0ci0+b3ApIHsKLSAgICAgICAgY2FzZSBH
ZXRMb2NhbDoKLSAgICAgICAgY2FzZSBTZXRMb2NhbDoKLSAgICAgICAgY2FzZSBTZXRBcmd1bWVu
dDoKLSAgICAgICAgY2FzZSBQaGk6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZVB0ci0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKTsKLSAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0R2xvYmFsVmFyUHJlZGljdGlvbihub2RlUHRyLT52YXJO
dW1iZXIoKSk7Ci0gICAgICAgIGNhc2UgR2V0QnlJZDoKLSAgICAgICAgY2FzZSBHZXRNZXRob2Q6
Ci0gICAgICAgIGNhc2UgR2V0QnlWYWw6Ci0gICAgICAgIGNhc2UgQ2FsbDoKLSAgICAgICAgY2Fz
ZSBDb25zdHJ1Y3Q6Ci0gICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6Ci0gICAgICAgICAgICByZXR1
cm4gbm9kZVB0ci0+Z2V0UHJlZGljdGlvbigpOwotICAgICAgICBjYXNlIENoZWNrTWV0aG9kOgot
ICAgICAgICAgICAgcmV0dXJuIGdldE1ldGhvZENoZWNrUHJlZGljdGlvbigqbm9kZVB0cik7Ci0g
ICAgICAgIGNhc2UgSlNDb25zdGFudDoKLSAgICAgICAgICAgIHJldHVybiBnZXRKU0NvbnN0YW50
UHJlZGljdGlvbigqbm9kZVB0ciwgY29kZUJsb2NrKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBQcmVkaWN0Tm9uZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICAv
LyBIZWxwZXIgbWV0aG9kcyB0byBjaGVjayBub2RlcyBmb3IgY29uc3RhbnRzLgogICAgIGJvb2wg
aXNDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDk2NTM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgIEpTRnVuY3Rpb24qIHZhbHVlT2ZGdW5jdGlv
bkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIGdyYXBoKCkudmFsdWVPZkZ1
bmN0aW9uQ29uc3RhbnQoY29kZUJsb2NrKCksIG5vZGVJbmRleCk7IH0KICAgICAKICAgICAvLyBI
ZWxwZXIgbWV0aG9kcyB0byBnZXQgcHJlZGljdGlvbnMKLSAgICBQcmVkaWN0ZWRUeXBlIGdldFBy
ZWRpY3Rpb24oTm9kZSYgbm9kZSkgeyByZXR1cm4gZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKG5vZGUs
IGNvZGVCbG9jaygpKTsgfQorICAgIFByZWRpY3RlZFR5cGUgZ2V0UHJlZGljdGlvbihOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLnByZWRpY3Rpb24oKTsgfQogICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBnZXRQcmVkaWN0aW9uKGdy
YXBoKClbbm9kZUluZGV4XSk7IH0KIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gOTY1MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgLCBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCiAgICAg
ICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdpc3RlcikKICAgICAgICAg
LCBtX3JlZkNvdW50KDApCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCEob3AgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICBBU1NF
UlQoIWhhc0FyaXRoTm9kZUZsYWdzKCkpOwpAQCAtNDQzLDYgKzQ0NCw3IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQog
ICAgICAgICAsIG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1ZSkK
KyAgICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCiAgICAgewogICAgICAgICBBU1NF
UlQoIShvcCAmIE5vZGVIYXNWYXJBcmdzKSk7CiAgICAgICAgIGNoaWxkcmVuLmZpeGVkLmNoaWxk
MSA9IGNoaWxkMTsKQEAgLTQ1OCw2ICs0NjAsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICwg
bV9yZWZDb3VudCgwKQogICAgICAgICAsIG1fb3BJbmZvKGltbTEubV92YWx1ZSkKICAgICAgICAg
LCBtX29wSW5mbzIoc2FmZUNhc3Q8dW5zaWduZWQ+KGltbTIubV92YWx1ZSkpCisgICAgICAgICwg
bV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEob3AgJiBO
b2RlSGFzVmFyQXJncykpOwogICAgICAgICBjaGlsZHJlbi5maXhlZC5jaGlsZDEgPSBjaGlsZDE7
CkBAIC00NzMsNiArNDc2LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAsIG1fcmVmQ291bnQo
MCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0xLm1fdmFsdWUpCiAgICAgICAgICwgbV9vcEluZm8y
KHNhZmVDYXN0PHVuc2lnbmVkPihpbW0yLm1fdmFsdWUpKQorICAgICAgICAsIG1fcHJlZGljdGlv
bihQcmVkaWN0Tm9uZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChvcCAmIE5vZGVIYXNWYXJBcmdz
KTsKICAgICAgICAgY2hpbGRyZW4udmFyaWFibGUuZmlyc3RDaGlsZCA9IGZpcnN0Q2hpbGQ7CkBA
IC03NTQsNyArNzU4LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm8y
OwogICAgIH0KICAgICAKLSAgICBib29sIGhhc1ByZWRpY3Rpb24oKQorICAgIGJvb2wgaGFzSGVh
cFByZWRpY3Rpb24oKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNl
IEdldEJ5SWQ6CkBAIC03NzQsMTUgKzc3OCwxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKCkKKyAgICBQcmVk
aWN0ZWRUeXBlIGdldEhlYXBQcmVkaWN0aW9uKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNQ
cmVkaWN0aW9uKCkpOworICAgICAgICBBU1NFUlQoaGFzSGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcmVkaWN0ZWRUeXBlPihtX29wSW5mbzIpOwogICAgIH0K
ICAgICAKLSAgICBib29sIHByZWRpY3QoUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQorICAgIGJv
b2wgcHJlZGljdEhlYXAoUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKLSAgICAgICAg
QVNTRVJUKGhhc1ByZWRpY3Rpb24oKSk7CisgICAgICAgIEFTU0VSVChoYXNIZWFwUHJlZGljdGlv
bigpKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBtZXJnZVByZWRpY3Rpb24obV9vcEluZm8y
LCBwcmVkaWN0aW9uKTsKICAgICB9CkBAIC05MTMsNiArOTE3LDE2IEBAIHN0cnVjdCBOb2RlIHsK
ICAgICAgICAgcmV0dXJuIGNoaWxkcmVuLnZhcmlhYmxlLm51bUNoaWxkcmVuOwogICAgIH0KICAg
ICAKKyAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcHJlZGljdGlvbjsKKyAgICB9CisgICAgCisgICAgYm9vbCBwcmVkaWN0KFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVByZWRpY3Rpb24obV9w
cmVkaWN0aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisgICAgCiAgICAgLy8gVGhpcyBlbnVtIHZh
bHVlIGRlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgbm9kZS4KICAgICBOb2RlVHlwZSBvcDsKICAg
ICAvLyBVc2VkIHRvIGxvb2sgdXAgZXhjZXB0aW9uIGhhbmRsaW5nIGluZm9ybWF0aW9uIChjdXJy
ZW50bHkgaW1wbGVtZW50ZWQgYXMgYSBieXRlY29kZSBpbmRleCkuCkBAIC05MzcsNiArOTUxLDgg
QEAgcHJpdmF0ZToKICAgICAvLyBiaWcgZW5vdWdoIHRvIHN0b3JlIGEgcG9pbnRlci4KICAgICB1
aW50cHRyX3QgbV9vcEluZm87CiAgICAgdW5zaWduZWQgbV9vcEluZm8yOworICAgIC8vIFRoZSBw
cmVkaWN0aW9uIGFzY3JpYmVkIHRvIHRoaXMgbm9kZSBhZnRlciBwcm9wYWdhdGlvbi4KKyAgICBQ
cmVkaWN0ZWRUeXBlIG1fcHJlZGljdGlvbjsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAko
cmV2aXNpb24gOTY1MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOCArNDIsMTEgQEAgcHVibGljOgogICAgICAg
ICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAgICAgLCBtX3Byb2ZpbGVkQmxvY2socHJv
ZmlsZWRCbG9jaykKICAgICB7Ci0gICAgICAgIC8vIFByZWRpY3Rpb25zIGlzIGEgZm9yd2FyZCBm
bG93IHByb3BlcnR5IHRoYXQgcHJvcGFnYXRlcyB0aGUgdmFsdWVzIHNlZW4gYXQKLSAgICAgICAg
Ly8gYSBwYXJ0aWN1bGFyIHZhbHVlIHNvdXJjZSB0byB0aGVpciB2YXJpb3VzIHVzZXMsIGVuc3Vy
aW5nIHRoYXQgdXNlcyBwZXJmb3JtCi0gICAgICAgIC8vIHNwZWN1bGF0aW9uIHRoYXQgZG9lcyBu
b3QgY29udHJhdmVuZSB0aGUgZXhwZWN0ZWQgdmFsdWVzLgotICAgICAgICBtX3ByZWRpY3Rpb25z
LnJlc2l6ZShtX2dyYXBoLnNpemUoKSk7Ci0gICAgICAgIAogICAgICAgICAvLyBSZXBsYWNlbWVu
dHMgYXJlIHVzZWQgdG8gaW1wbGVtZW50IGxvY2FsIGNvbW1vbiBzdWJleHByZXNzaW9uIGVsaW1p
bmF0aW9uLgogICAgICAgICBtX3JlcGxhY2VtZW50cy5yZXNpemUobV9ncmFwaC5zaXplKCkpOwog
ICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGguc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIG1fcHJlZGljdGlvbnNbaV0gPSBQcmVkaWN0Tm9uZTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGguc2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICBtX3JlcGxhY2VtZW50c1tpXSA9IE5vTm9kZTsKLSAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IExhc3ROb2RlSWQ7ICsraSkKICAgICAg
ICAgICAgIG1fbGFzdFNlZW5baV0gPSBOb05vZGU7CkBAIC0yODUsMTggKzI3OCwyMCBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLmhhc1Jl
c3VsdCgpKTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX3ByZWRpY3Rpb25zW21fY29tcGlsZUlu
ZGV4XSA9PSBwcmVkaWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAv
LyBzZXRQcmVkaWN0aW9uKCkgaXMgdXNlZCB3aGVuIHdlIGtub3cgdGhhdCB0aGVyZSBpcyBubyB3
YXkgdGhhdCB3ZSBjYW4gY2hhbmdlCisgICAgICAgIC8vIG91ciBtaW5kcyBhYm91dCB3aGF0IHRo
ZSBwcmVkaWN0aW9uIGlzIGdvaW5nIHRvIGJlLiBUaGVyZSBpcyBubyBzZW1hbnRpYworICAgICAg
ICAvLyBkaWZmZXJlbmNlIGJldHdlZW4gc2V0UHJlZGljdGlvbigpIGFuZCBtZXJnZVByZWRpY3Rp
b24oKSBvdGhlciB0aGFuIHRoZQorICAgICAgICAvLyBpbmNyZWFzZWQgY2hlY2tpbmcgdG8gdmFs
aWRhdGUgdGhpcyBwcm9wZXJ0eS4KKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbV9jb21waWxlSW5k
ZXhdLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0Tm9uZSB8fCBtX2dyYXBoW21fY29tcGlsZUluZGV4
XS5wcmVkaWN0aW9uKCkgPT0gcHJlZGljdGlvbik7CiAgICAgICAgIAotICAgICAgICBtX3ByZWRp
Y3Rpb25zW21fY29tcGlsZUluZGV4XSA9IHByZWRpY3Rpb247Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdChwcmVkaWN0
aW9uKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBtZXJnZVByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbV9jb21waWxlSW5k
ZXhdLmhhc1Jlc3VsdCgpKTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBKU0M6Om1lcmdlUHJl
ZGljdGlvbihtX3ByZWRpY3Rpb25zW21fY29tcGlsZUluZGV4XSwgcHJlZGljdGlvbik7CisgICAg
ICAgIHJldHVybiBtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0KHByZWRpY3Rpb24pOwog
ICAgIH0KICAgICAKICAgICB2b2lkIHByb3BhZ2F0ZU5vZGVQcmVkaWN0aW9ucyhOb2RlJiBub2Rl
KQpAQCAtMzI2LDcgKzMyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIFNldExvY2FsOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG5vZGUudmFy
aWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QobV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXSk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRp
Y3QobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMzQyLDggKzMzNyw4IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoTW9kOiB7Ci0gICAgICAgICAgICBQcmVk
aWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwotICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDIoKV07Cisg
ICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25v
ZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24o
bWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYmIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2Vy
KG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCkBAIC0zNjMsNyArMzU4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFsdWVUb051bWJlcjogewotICAgICAgICAgICAgUHJl
ZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKKyAg
ICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocHJlZGljdGlv
bikgewogICAgICAgICAgICAgICAgIGlmICghKHByZWRpY3Rpb24gJiBQcmVkaWN0RG91YmxlKSAm
JiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQpAQCAtMzc2
LDggKzM3MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIFZhbHVlQWRk
OiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUu
Y2hpbGQxKCldOwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlv
bnNbbm9kZS5jaGlsZDIoKV07CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBp
ZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkp
IHsKQEAgLTQwMCw4ICszOTUsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoTWluOgog
ICAgICAgICBjYXNlIEFyaXRoTWF4OgogICAgICAgICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwot
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGls
ZDIoKV07CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBt
X2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlBy
ZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkpICYmIG5vZGVDYW5TcGVjdWxh
dGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCkBAIC00MTgsNyArNDEzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhBYnM6IHsK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgY2hpbGQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hp
bGQxKCldOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKGNoaWxkKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3Mo
KSkpCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxk
KTsKQEAgLTQ0Myw4ICs0MzgsOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAg
ICAgICAgIGNhc2UgR2V0TWV0aG9kOgogICAgICAgICBjYXNlIEdldEJ5VmFsOiB7Ci0gICAgICAg
ICAgICBpZiAobm9kZS5nZXRQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgaWYg
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDU0LDggKzQ0OSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7Ci0g
ICAgICAgICAgICBpZiAobm9kZS5nZXRQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRQcmVkaWN0aW9uKCkpOworICAgICAgICAg
ICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNDY2LDE3ICs0NjEsMTcgQEAg
cHJpdmF0ZToKIAogICAgICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OiB7
Ci0gICAgICAgICAgICBpZiAobm9kZS5nZXRQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRQcmVkaWN0aW9uKCkpOworICAgICAg
ICAgICAgaWYgKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSkKKyAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENvbnZl
cnRUaGlzOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX3ByZWRp
Y3Rpb25zW25vZGUuY2hpbGQxKCldOworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBp
ZiAocHJlZGljdGlvbikgewogICAgICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgflByZWRp
Y3RPYmplY3RNYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gJj0gflByZWRp
Y3RPYmplY3RNYXNrOwotICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uIHw9IFByZWRpY3RP
YmplY3RVbmtub3duOworICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uICY9IFByZWRpY3RP
YmplY3RNYXNrOworICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gbWVyZ2VQcmVkaWN0
aW9ucyhwcmVkaWN0aW9uLCBQcmVkaWN0T2JqZWN0VW5rbm93bik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24p
OwogICAgICAgICAgICAgfQpAQCAtNDkxLDcgKzQ4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFB1dEdsb2JhbFZhcjogewotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtX2dyYXBoLnByZWRpY3RHbG9iYWxWYXIobm9kZS52YXJOdW1iZXIoKSwgbV9w
cmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGgucHJlZGljdEdsb2JhbFZhcihub2RlLnZhck51bWJlcigpLCBtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCkBAIC01MDAsNyArNDk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBSZXNvbHZl
QmFzZToKICAgICAgICAgY2FzZSBSZXNvbHZlQmFzZVN0cmljdFB1dDoKICAgICAgICAgY2FzZSBS
ZXNvbHZlR2xvYmFsOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBu
b2RlLmdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlv
biA9IG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9u
KQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24p
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MzksNyArNTM0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKLSAgICAgICAg
ICAgIFByZWRpY3RlZFR5cGUgY2hpbGQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwor
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKGNoaWxkKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGlzT2JqZWN0UHJlZGljdGlvbihjaGlsZCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
SSdkIGxvdmUgdG8gZm9sZCB0aGlzIGNhc2UgaW50byB0aGUgY2FzZSBiZWxvdywgYnV0IEkgY2Fu
J3QsIGJlY2F1c2UKQEAgLTU5OSw3ICs1OTQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICNp
ZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50Zigi
JXMgIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fcHJlZGljdGlvbnNbbV9jb21waWxlSW5kZXhdKSk7
CisgICAgICAgIHByaW50ZigiJXMgIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fZ3JhcGhbbV9jb21w
aWxlSW5kZXhdLnByZWRpY3Rpb24oKSkpOwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX2No
YW5nZWQgfD0gY2hhbmdlZDsKQEAgLTY1Miw4ICs2NDcsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBQ
cmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQxKCldOwotICAgICAg
ICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDIoKV07
CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGxlZnQgJiYgcmlnaHQgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVy
UHJlZGljdGlvbihyaWdodCkpIHsKICAgICAgICAgICAgICAgICBpZiAobGVmdCAmIFByZWRpY3RE
b3VibGUpCkBAIC02NzcsOCArNjcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgUHJlZGljdGVkVHlw
ZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKLSAgICAgICAgICAgIFByZWRp
Y3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQyKCldOworICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9u
KCk7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGxlZnQgJiBQcmVkaWN0RG91YmxlKQpAQCAt
Njk1LDcgKzY5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlv
biA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDEoKV07CisgICAgICAgICAgICBQcmVkaWN0ZWRU
eXBlIHByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKICAg
ICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgUHJlZGljdERvdWJsZSkKICAgICAgICAgICAgICAg
ICB0b0RvdWJsZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzA3LDEx
ICs3MDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgR2V0QnlJZDogewotICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rp
b24obV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXSk7Ci0gICAgICAgICAgICBib29sIGlzU3Ry
aW5nID0gaXNTdHJpbmdQcmVkaWN0aW9uKG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDEoKV0pOwor
ICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IGlz
U3RyaW5nUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CiAg
ICAgICAgICAgICBpZiAoIWlzQXJyYXkgJiYgIWlzU3RyaW5nKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbihtX3ByZWRpY3Rpb25zW21f
Y29tcGlsZUluZGV4XSkpCisgICAgICAgICAgICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKG1fZ3Jh
cGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlkZW50aWZpZXIobm9kZS5pZGVudGlmaWVy
TnVtYmVyKCkpICE9IG1fZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC04NjAsMTQgKzg1NSwxNCBAQCBwcml2YXRlOgogICAgIAogICAg
IGJvb2wgaXNQcmVkaWN0ZWROdW1lcmljYWwoTm9kZSYgbm9kZSkKICAgICB7Ci0gICAgICAgIFBy
ZWRpY3RlZFR5cGUgbGVmdCA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGlsZDEoKV07Ci0gICAgICAg
IFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQyKCldOworICAg
ICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ucHJlZGljdGlvbigpOwogICAgICAgICByZXR1cm4gaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQp
ICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgbG9n
aWNhbE5vdElzUHVyZShOb2RlJiBub2RlKQogICAgIHsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0aW9uID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKKyAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7
CiAgICAgICAgIHJldHVybiBpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pIHx8ICFwcmVk
aWN0aW9uOwogICAgIH0KICAgICAKQEAgLTExNjUsNyArMTE2MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIAogICAgICAgICAvLyBCZSBzYWZlLiBEb24ndCB0cnkgdG8gcGVyZm9ybSByZXBsYWNlbWVu
dHMgaWYgdGhlIHByZWRpY3Rpb25zIGRvbid0CiAgICAgICAgIC8vIGFncmVlLgotICAgICAgICBp
ZiAobV9wcmVkaWN0aW9uc1ttX2NvbXBpbGVJbmRleF0gIT0gbV9wcmVkaWN0aW9uc1tyZXBsYWNl
bWVudF0pCisgICAgICAgIGlmIChtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkg
IT0gbV9ncmFwaFtyZXBsYWNlbWVudF0ucHJlZGljdGlvbigpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkBA
IC0xMzg4LDggKzEzODMsNiBAQCBwcml2YXRlOgogICAgIE5vZGVJbmRleCBtX3N0YXJ0OwogICAg
IE5vZGVJbmRleCBtX2NvbXBpbGVJbmRleDsKICAgICAKLSAgICBWZWN0b3I8UHJlZGljdGVkVHlw
ZSwgMTY+IG1fcHJlZGljdGlvbnM7Ci0KICNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCiAgICAgdW5zaWduZWQgbV9jb3VudDsKICNlbmRpZgo=
</data>
<flag name="review"
          id="106783"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>