<?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>117920</bug_id>
          
          <creation_ts>2013-06-23 19:35:00 -0700</creation_ts>
          <short_desc>fourthTier: DFG should optimize identifier string equality</short_desc>
          <delta_ts>2013-06-23 21:08:31 -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="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>902859</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-23 19:35:00 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902860</commentid>
    <comment_count>1</comment_count>
      <attachid>205275</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-23 19:39:25 -0700</bug_when>
    <thetext>Created attachment 205275
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902862</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-23 21:08:31 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151890 and http://trac.webkit.org/changeset/151891</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205275</attachid>
            <date>2013-06-23 19:39:25 -0700</date>
            <delta_ts>2013-06-23 20:43:32 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>28617</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEzLTA2LTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBvcHRpbWl6ZSBpZGVudGlmaWVyIHN0cmluZyBlcXVhbGl0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3OTIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGlzIGEgMjAlIHNwZWVkLXVwIGZvciBzdHJpbmcgZXF1YWxpdHkgY29tcGFyaXNvbnMg
d2hlbiBib3RoIHN0cmluZ3MgYXJlCisgICAgICAgIGlkZW50aWZpZXJzLgorICAgICAgICAKKyAg
ICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHR3byByZWFzb25zOgorICAgICAgICAKKyAgICAg
ICAgMSkgVXNpbmcgc3RyaW5ncyBhcyBlbnVtZXJhdGlvbnMgaXMgYW4gaWRpb20uIEEgZ3JlYXQg
ZXhhbXBsZSBpcyB0eXBlb2YuIEl0CisgICAgICAgICAgIHdvdWxkIGJlIGdyZWF0IGlmIHRoaXMg
cGVyZm9ybWVkIGJldHRlci4KKyAgICAgICAgCisgICAgICAgIDIpIFdoZW4gSSBpbXBsZW1lbnQg
c3dpdGNoX3N0cmluZyBpbiB0aGUgREZHLCBpdCB3b3VsZCBiZSBncmVhdCB0byBvcHRpbWl6ZQor
ICAgICAgICAgICB0aGUgY2FzZSB3aGVyZSB0aGUgc3dpdGNoZWQtb24gdmFsdWUgaXMgYW4gaWRl
bnRpZmllci4gVGhhdCB3b3VsZCBpbnZvbHZlCisgICAgICAgICAgIGEgc2ltcGxlIGJpbmFyeSBz
d2l0Y2ggcmF0aGVyIHRoYW4gYSBtb3JlIGNvbXBsaWNhdGVkIHRyaWUtc3dpdGNoIG92ZXIKKyAg
ICAgICAgICAgY2hhcmFjdGVycy4KKworICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6c3Bl
Y3VsYXRpb25Ub0FiYnJldmlhdGVkU3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3BlY3VsYXRpb25G
cm9tQ2VsbCk6CisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OmlzU3RyaW5nSWRlbnRTcGVjdWxhdGlvbik6CisgICAgICAg
IChKU0M6OmlzU3RyaW5nU3BlY3VsYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0
cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCk6CisgICAgICAg
IChOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0lkZW50RXF1YWxpdHkpOgorICAgICAgICAo
REZHKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRl
bnRBbmRMb2FkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZVN0cmluZ0lkZW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6CisgICAgICAg
IChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5kLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRGRzo6aXNDZWxs
KToKKwogMjAxMy0wNi0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1lcmdlIHRydW5rIHIxNDc5NjUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9uIDE1MTg4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOCwxMCArMTM4LDE5IEBAIHZvaWQgZHVtcFNwZWN1bGF0aW9uKFByaW50U3Ry
ZWFtJiBvdXQsIFMKICAgICAgICAgICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKHZhbHVlICYgU3BlY1N0cmluZykKKyAgICAgICAgaWYgKCh2YWx1ZSAmIFNw
ZWNTdHJpbmcpID09IFNwZWNTdHJpbmcpCiAgICAgICAgICAgICBteU91dC5wcmludCgiU3RyaW5n
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKHZhbHVlICYgU3BlY1N0cmluZ0lkZW50KQorICAgICAgICAg
ICAgICAgIG15T3V0LnByaW50KCJTdHJpbmdpZGVudCIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAmIFNwZWNTdHJpbmdWYXIpCisgICAgICAgICAgICAgICAgbXlPdXQucHJpbnQoIlN0
cmluZ3ZhciIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzVG9wID0gZmFs
c2U7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKHZhbHVlICYgU3BlY0ludDMyKQpA
QCAtMTQ5LDE1ICsxNTgsMTkgQEAgdm9pZCBkdW1wU3BlY3VsYXRpb24oUHJpbnRTdHJlYW0mIG91
dCwgUwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKLSAgICBpZiAodmFs
dWUgJiBTcGVjRG91YmxlUmVhbCkKLSAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZXJlYWwiKTsK
LSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHZhbHVlICYg
U3BlY0RvdWJsZU5hTikKLSAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZW5hbiIpOwotICAgIGVs
c2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICBpZiAoKHZhbHVlICYgU3BlY0RvdWJsZSkg
PT0gU3BlY0RvdWJsZSkKKyAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZSIpOworICAgIGVsc2Ug
eworICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlUmVhbCkKKyAgICAgICAgICAgIG15T3V0
LnByaW50KCJEb3VibGVyZWFsIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlzVG9wID0g
ZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWUgJiBTcGVjRG91YmxlTmFOKQorICAg
ICAgICAgICAgbXlPdXQucHJpbnQoIkRvdWJsZW5hbiIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpc1RvcCA9IGZhbHNlOworICAgIH0KICAgICAKICAgICBpZiAodmFsdWUgJiBTcGVjQm9v
bGVhbikKICAgICAgICAgbXlPdXQucHJpbnQoIkJvb2wiKTsKQEAgLTE4Niw2ICsxOTksOCBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub0FiYnJldmlhCiAgICAgICAgIHJldHVybiAi
PEZpbmFsPiI7CiAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAg
ICAgcmV0dXJuICI8QXJyYXk+IjsKKyAgICBpZiAoaXNTdHJpbmdJZGVudFNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxTdHJpbmdJZGVudD4iOwogICAgIGlmIChpc1N0
cmluZ1NwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxTdHJpbmc+IjsK
ICAgICBpZiAoaXNGdW5jdGlvblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQpAQCAtMjkxLDYgKzMw
NiwxMyBAQCBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoCiAKIFNwZWN1
bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbUNlbGwoSlNDZWxsKiBjZWxsKQogeworICAgIGlmIChK
U1N0cmluZyogc3RyaW5nID0ganNEeW5hbWljQ2FzdDxKU1N0cmluZyo+KGNlbGwpKSB7CisgICAg
ICAgIGlmIChjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwo
KSkgeworICAgICAgICAgICAgaWYgKGltcGwtPmlzSWRlbnRpZmllcigpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBTcGVjU3RyaW5nSWRlbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNw
ZWNTdHJpbmdWYXI7CisgICAgfQogICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUo
Y2VsbC0+c3RydWN0dXJlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkocmV2aXNpb24gMTUxODg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDkgKzUzLDExIEBAIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJndW1l
bnQKIHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjU3RyaW5nT2JqZWN0ICAgICAgPSAw
eDAwMDA0MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBTdHJpbmdPYmplY3QuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdE90aGVyICAgICAgID0gMHgwMDAwODAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmplY3QsIEpTQXJyYXks
IG9yIEpTRnVuY3Rpb24uCiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY09iamVjdCAg
ICAgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZvciBh
bnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlw
ZSBTcGVjU3RyaW5nICAgICAgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU1N0cmluZy4KLXN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbE90aGVyICAg
ICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwgYnV0IG5vdCBh
IHN1YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5vdCBhIEpTU3RyaW5nLgotc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNDZWxsICAgICAgICAgICAgICA9IDB4MDAwM2Zm
ZmY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVk
VHlwZSBTcGVjU3RyaW5nSWRlbnQgICAgICAgPSAweDAwMDEwMDAwOyAvLyBJdCdzIGRlZmluaXRl
bHkgYSBKU1N0cmluZywgYW5kIGl0J3MgYW4gaWRlbnRpZmllci4KK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjU3RyaW5nVmFyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU1N0cmluZywgYW5kIGl0J3Mgbm90IGFuIGlkZW50aWZpZXIuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAgICAgICAgICAgID0gMHgwMDAzMDAwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5
cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDA0MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5pdGVseSBu
b3QgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAg
ICAgICAgICAgPSAweDAwMDdmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0NlbGwuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMyICAgICAgICAgICAgID0gMHgwMDgwMDAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNEb3VibGVSZWFsICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhIG5vbi1OYU4gZG91YmxlLgogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3Vi
bGVOYU4gICAgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIE5hTi4KQEAg
LTEwNyw5ICsxMDksMTQgQEAgaW5saW5lIGJvb2wgaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0
UwogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIEZpeGVkSW5kZXhlZFN0b3JhZ2VNYXNr
KSA9PSB2YWx1ZTsKIH0KIAoraW5saW5lIGJvb2wgaXNTdHJpbmdJZGVudFNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjU3RyaW5nSWRl
bnQ7Cit9CisKIGlubGluZSBib29sIGlzU3RyaW5nU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFNwZWNTdHJpbmc7CisgICAgcmV0dXJuICEh
dmFsdWUgJiYgKHZhbHVlICYgU3BlY1N0cmluZykgPT0gdmFsdWU7CiB9CiAKIGlubGluZSBib29s
IGlzQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTUx
ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzk2LDI5ICs3OTYsMzkgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlRWZmZWN0cyh1bnNpZwogCiAgICAgICAgIEpTVmFsdWUgbGVmdENvbnN0ID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSByaWdodENvbnN0ID0g
Zm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKLSAgICAgICAgaWYgKGxlZnRDb25zdCAm
JiByaWdodENvbnN0ICYmIGxlZnRDb25zdC5pc051bWJlcigpICYmIHJpZ2h0Q29uc3QuaXNOdW1i
ZXIoKSkgewotICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0Q29uc3QuYXNOdW1iZXIoKTsKLSAg
ICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHRDb25zdC5hc051bWJlcigpOwotICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgotICAg
ICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZSwganNCb29s
ZWFuKGEgPCBiKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENv
bXBhcmVMZXNzRXE6Ci0gICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4oYSA8PSBiKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyOgotICAgICAgICAgICAgICAgIGNvbnN0YW50
V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGEgPiBiKSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6Ci0gICAg
ICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlLCBqc0Jvb2xl
YW4oYSA+PSBiKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENv
bXBhcmVFcToKLSAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbihhID09IGIpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBpZiAobGVmdENvbnN0ICYmIHJpZ2h0Q29uc3QpIHsKKyAg
ICAgICAgICAgIGlmIChsZWZ0Q29uc3QuaXNOdW1iZXIoKSAmJiByaWdodENvbnN0LmlzTnVtYmVy
KCkpIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgYSA9IGxlZnRDb25zdC5hc051bWJlcigpOwor
ICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHRDb25zdC5hc051bWJlcigpOworICAgICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ29t
cGFyZUxlc3M6CisgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29u
c3RhbnQobm9kZSwganNCb29sZWFuKGEgPCBiKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oYSA8PSBi
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ29t
cGFyZUdyZWF0ZXI6CisgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0
Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGEgPiBiKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4o
YSA+PSBiKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgQ29tcGFyZUVxOgorICAgICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNl
dENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihhID09IGIpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRX
YXNTZXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWNvbnN0
YW50V2FzU2V0ICYmIG5vZGUtPm9wKCkgPT0gQ29tcGFyZUVxCisgICAgICAgICAgICAgICAgJiYg
bGVmdENvbnN0LmlzU3RyaW5nKCkgJiYgcmlnaHRDb25zdC5pc1N0cmluZygpKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogYSA9IGFzU3RyaW5nKGxlZnRDb25zdCktPnRyeUdl
dFZhbHVlSW1wbCgpOworICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGIgPSBhc1N0
cmluZyhyaWdodENvbnN0KS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAgICAgaWYg
KGEgJiYgYikKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25z
dGFudChub2RlLCBqc0Jvb2xlYW4oV1RGOjplcXVhbChhLCBiKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIApAQCAtODUzLDEwICs4NjMsMjAgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICBOb2RlKiByaWdodE5vZGUgPSBub2Rl
LT5jaGlsZDIoKS5ub2RlKCk7CiAgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobGVmdE5v
ZGUpLnZhbHVlKCk7CiAgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKHJpZ2h0Tm9kZSku
dmFsdWUoKTsKLSAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYm
IHJpZ2h0LmlzTnVtYmVyKCkKLSAgICAgICAgICAgICYmIHRyeVNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbihsZWZ0LmFzTnVtYmVyKCkgPT0gcmlnaHQuYXNOdW1iZXIoKSkpKSB7Ci0gICAgICAg
ICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCkgeworICAgICAgICAgICAgaWYgKGxlZnQuaXNOdW1iZXIoKSAm
JiByaWdodC5pc051bWJlcigpCisgICAgICAgICAgICAgICAgJiYgdHJ5U2V0Q29uc3RhbnQobm9k
ZSwganNCb29sZWFuKGxlZnQuYXNOdW1iZXIoKSA9PSByaWdodC5hc051bWJlcigpKSkpIHsKKyAg
ICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsZWZ0LmlzU3RyaW5nKCkgJiYg
cmlnaHQuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGEg
PSBhc1N0cmluZyhsZWZ0KS0+dHJ5R2V0VmFsdWVJbXBsKCk7CisgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nSW1wbCogYiA9IGFzU3RyaW5nKHJpZ2h0KS0+dHJ5R2V0VmFsdWVJbXBsKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGEgJiYgYiAmJiB0cnlTZXRDb25zdGFudChub2RlLCBqc0Jvb2xl
YW4oV1RGOjplcXVhbChhLCBiKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZm91bmRDb25z
dGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsgLy8gVGhp
cyBpcyBvdmVybHkgY29uc2VydmF0aXZlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxNTE4ODkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiAr
MzA0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSAhPSBDb21wYXJlRXEpCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+
Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8
U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nKCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygp
ICYmIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDcpIHsKICAgICAgICAgICAgICAgICBz
ZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPFN0cmluZ1Vz
ZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzQyLDYgKzM0NywxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGZpeERvdWJsZUVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKKyAgICAgICAgICAgICAgICBzZXRVc2VL
aW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nSWRl
bnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3Ry
aW5nKCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmIEdQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzID49IDcpIHsKICAgICAgICAgICAgICAgICBzZXRVc2VLaW5k
QW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPFN0cmluZ1VzZT4obm9kZS0+
Y2hpbGQyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDE1MTg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTkyLDYgKzExOTIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1
cm4gaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAKKyAgICBi
b29sIHNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBp
c1N0cmluZ0lkZW50U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKKyAgICB9CisgCiAgICAgYm9v
bCBzaG91bGRTcGVjdWxhdGVTdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5n
U3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTE4ODkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlQnJhbgogICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNl
KSkKICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChub2RlLCBicmFuY2hO
b2RlLCBkb3VibGVDb25kaXRpb24pOwogICAgICAgICBlbHNlIGlmIChub2RlLT5vcCgpID09IENv
bXBhcmVFcSkgewotICAgICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdV
c2UpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkg
fHwgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewogICAgICAgICAgICAg
ICAgIC8vIFVzZSBub24tcGVlcGhvbGUgY29tcGFyaXNvbiwgZm9yIG5vdy4KICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0zNjI3LDYgKzM2MjcsMTEgQEAg
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBpZiAobm9kZS0+aXNCaW5h
cnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgeworICAgICAgICAgICAgY29tcGlsZVN0cmluZ0lk
ZW50RXF1YWxpdHkobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkg
ewogICAgICAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzc2MSw2ICszNzY2LDExIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTdHJpY3RFcShOb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAg
ICAgCisgICAgY2FzZSBTdHJpbmdJZGVudFVzZTogeworICAgICAgICBjb21waWxlU3RyaW5nSWRl
bnRFcXVhbGl0eShub2RlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAgICAg
CiAgICAgY2FzZSBPYmplY3RVc2U6IHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJs
b2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5C
bG9jayAhPSBVSU5UX01BWCkgewpAQCAtMzgwOCwyMSArMzgxOCwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxpCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGZh
bHNlQ2FzZTsKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2U7CiAgICAgCi0gICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGxlZnRH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbV9qaXQuYnJhbmNoUHRyKAotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobGVmdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgpLCBsZWZ0
R1BSKTsKICAgICAKICAgICAvLyBJdCdzIHNhZmUgdG8gYnJhbmNoIGFyb3VuZCB0aGUgdHlwZSBj
aGVjayBiZWxvdywgc2luY2UgcHJvdmluZyB0aGF0IHRoZSB2YWx1ZXMgYXJlCiAgICAgLy8gZXF1
YWwgZG9lcyBpbmRlZWQgcHJvdmUgdGhhdCB0aGUgcmlnaHQgdmFsdWUgaXMgYSBzdHJpbmcuCiAg
ICAgdHJ1ZUNhc2UuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IGxlZnRHUFIsIHJpZ2h0R1BSKSk7CiAgICAgCi0gICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKHJpZ2h0R1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJpZ2h0R1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBz
cGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKIAogICAgIG1faml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsZWZ0R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZM
ZW5ndGgoKSksIGxlbmd0aEdQUik7CiAgICAgCkBAIC0zODkxLDYgKzM4OTMsMzcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaQogI2VuZGlmCiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdJZGVudEVxdWFsaXR5KE5vZGUqIG5vZGUpCit7Cisg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgbGVmdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcmlnaHQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEdQ
UlRlbXBvcmFyeSBsZWZ0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wKHRo
aXMpOworICAgIAorICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5ncHIoKTsKKyAgICBHUFJSZWcg
cmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICBHUFJSZWcgbGVmdFRlbXBHUFIgPSBsZWZ0VGVt
cC5ncHIoKTsKKyAgICBHUFJSZWcgcmlnaHRUZW1wR1BSID0gcmlnaHRUZW1wLmdwcigpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHRydWVDYXNlOworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBmYWxzZUNhc2U7CisgICAgCisgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMSgp
LCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BS
KTsKKyAgICAKKyAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKG5vZGUtPmNo
aWxkMSgpLCBsZWZ0R1BSLCBsZWZ0VGVtcEdQUik7CisgICAgc3BlY3VsYXRlU3RyaW5nSWRlbnRB
bmRMb2FkU3RvcmFnZShub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIsIHJpZ2h0VGVtcEdQUik7Cisg
ICAgCisgICAgbV9qaXQuY29tcGFyZVB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGxlZnRUZW1w
R1BSLCByaWdodFRlbXBHUFIsIGxlZnRUZW1wR1BSKTsKKyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBsZWZ0VGVtcEdQUik7
CisgICAganNWYWx1ZVJlc3VsdChsZWZ0VGVtcEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVh
bik7CisjZWxzZQorICAgIGJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOworI2VuZGlm
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CkBAIC00NDUzLDE4ICs0NDg2LDYxIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICNlbmRpZgogfQogCit2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKK3sKKyAgICBERkdfVFlQ
RV9DSEVDSygKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2Us
IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cit9CisK
K3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2Uo
RWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSkKK3sKKyAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZywgSlNTdHJpbmc6Om9mZnNldE9m
VmFsdWUoKSksIHN0b3JhZ2UpOworICAgIAorICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY1N0cmluZ0lkZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3BlY3VsYXRpb25DaGVj
aygKKyAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoc3RyaW5nKSwg
ZWRnZSwKKyAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
c3RvcmFnZSkpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgIEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKHN0cmluZyksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3QzMigK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZSwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJc0lk
ZW50aWZpZXIoKSkpKTsKKyAgICAKKyAgICBtX3N0YXRlLmZpbHRlcihlZGdlLCBTcGVjU3RyaW5n
SWRlbnQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudChF
ZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcpCit7CisgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjU3RyaW5nSWRlbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKGVkZ2Us
IHN0cmluZywgdGVtcC5ncHIoKSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZ0lkZW50KEVkZ2UgZWRnZSkKK3sKKyAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNTdHJpbmdJZGVudCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOworICAgIEdQUlJlZyBncHIgPSBvcGVyYW5k
LmdwcigpOworICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlLCBncHIpOworICAgIHNwZWN1bGF0ZVN0
cmluZ0lkZW50KGVkZ2UsIGdwcik7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZyhFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
U3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7Ci0g
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdw
ciksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChHUFJSZWcgZ3ByKQpAQCAtNDU5
Myw2ICs0NjY5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAog
ICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0T3JPdGhl
cihlZGdlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKKyAgICAg
ICAgc3BlY3VsYXRlU3RyaW5nSWRlbnQoZWRnZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3RyaW5nVXNlOgogICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSk7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMTUxODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODU5LDYgKzE4NTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoRWRnZSB2YWx1ZSk7CiAg
ICAgdm9pZCBjb21waWxlTG9naWNhbE5vdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU3RyaW5n
RXF1YWxpdHkoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVN0cmluZ0lkZW50RXF1YWxpdHkoTm9k
ZSopOwogICAgIHZvaWQgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSB2YWx1ZSwgQmxvY2tJ
bmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5v
ZGUqKTsKICAgICB2b2lkIGVtaXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFs
dWUsIEdQUlJlZyBzY3JhdGNoKTsKQEAgLTIwNDYsNiArMjA0NywxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzcGVjdWxhdGVDZWxsKEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2Up
OwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKKyAgICB2b2lkIHNwZWN1
bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKKyAgICB2b2lkIHNwZWN1bGF0ZVN0
cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcg
c3RvcmFnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdJZGVudChFZGdlIGVkZ2UsIEdQUlJl
ZyBzdHJpbmcpOworICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nSWRlbnQoRWRnZSk7CiAgICAgdm9p
ZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJl
TG9jYXRpb25UeXBlPgogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJl
KFN0cnVjdHVyZUxvY2F0aW9uVHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1VzZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVXNlS2luZC5jcHAJKHJldmlzaW9uIDE1MTg4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVXNlS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFVzZQogICAgIGNhc2UgT2JqZWN0T3JP
dGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVyIik7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6CisgICAgICAgIG91dC5wcmludCgiU3RyaW5n
SWRlbnQiKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgIG91
dC5wcmludCgiU3RyaW5nIik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdVc2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgJKHJldmlzaW9uIDE1MTg4OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
IGVudW0gVXNlS2luZCB7CiAgICAgS25vd25DZWxsVXNlLAogICAgIE9iamVjdFVzZSwKICAgICBP
YmplY3RPck90aGVyVXNlLAorICAgIFN0cmluZ0lkZW50VXNlLAogICAgIFN0cmluZ1VzZSwKICAg
ICBLbm93blN0cmluZ1VzZSwKICAgICBTdHJpbmdPYmplY3RVc2UsCkBAIC03OCw2ICs3OSw4IEBA
IEFMV0FZU19JTkxJTkUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckYKICAgICAgICAgcmV0dXJu
IFNwZWNPYmplY3Q7CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICByZXR1cm4g
U3BlY09iamVjdCB8IFNwZWNPdGhlcjsKKyAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgorICAgICAg
ICByZXR1cm4gU3BlY1N0cmluZ0lkZW50OwogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgIGNhc2Ug
S25vd25TdHJpbmdVc2U6CiAgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwpAQCAtMTQ1LDYgKzE0
OCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2Ug
Q2VsbFVzZToKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIE9iamVjdFVzZToKKyAg
ICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgIGNhc2UgS25v
d25TdHJpbmdVc2U6CiAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTUxODg5KQorKysgU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw2ICs0NDMsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgZmxhZ3NPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RyaW5nSW1wbCwgbV9oYXNoQW5kRmxhZ3MpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGZs
YWdJczhCaXQoKSB7IHJldHVybiBzX2hhc2hGbGFnOEJpdEJ1ZmZlcjsgfQorICAgIHN0YXRpYyB1
bnNpZ25lZCBmbGFnSXNJZGVudGlmaWVyKCkgeyByZXR1cm4gc19oYXNoRmxhZ0lzSWRlbnRpZmll
cjsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBkYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cmluZ0ltcGwsIG1fZGF0YTgpOyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gY3JlYXRlV2l0aFRlcm1pbmF0aW5nTnVsbENoYXJhY3Rlcihjb25zdCBTdHJpbmdJ
bXBsJik7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MTg4OSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA2LTIzICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogREZHIHNob3Vs
ZCBvcHRpbWl6ZSBpZGVudGlmaWVyIHN0cmluZyBlcXVhbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3OTIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgYSBiZW5jaG1hcmsgZm9y
IHN0cmluZyBlcXVhbGl0eSB3aGVyZSB0aGVyZSBpcyBhIGxvbmcgaWRlbnRpZmllciwgYW5kCisg
ICAgICAgIGFsc28gYWRkIGEgYmVuY2htYXJrIGZvciBub24taWRlbnRpZmllciBzdHJpbmcgZXF1
YWxpdHkgKHNpbmNlIHRoZSBwcmV2aW91cworICAgICAgICB0ZXN0IGZvciBzdHJpbmcgZXF1YWxp
dHkgd2FzIHJlYWxseSBpZGVudGlmaWVyIGVxdWFsaXR5KS4KKworICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkuanM6IEFkZGVk
LgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N0cmluZy12YXItZXF1YWxpdHkuanM6IEFkZGVkLgorICAgICAgICAoYWRkRm9vKToKKyAgICAg
ICAgKGZvbyk6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb25nLWlkZW50LWVx
dWFsaXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3N0
cmluZy1sb25nLWlkZW50LWVxdWFsaXR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zdHJpbmctdmFyLWVxdWFsaXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9yZWdyZXNzL3N0cmluZy12YXItZXF1YWxpdHkuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDYtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJn
ZSB0cnVuayByMTQ3OTY1LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmlu
Zy1sb25nLWlkZW50LWVxdWFsaXR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1s
b25nLWlkZW50LWVxdWFsaXR5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9uZy1pZGVudC1lcXVhbGl0eS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9uZy1pZGVudC1l
cXVhbGl0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L3N0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLWxv
bmctaWRlbnQtZXF1YWxpdHkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy12YXItZXF1YWxpdHktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctdmFyLWVxdWFsaXR5
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zdHJpbmctdmFyLWVxdWFsaXR5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXZhci1lcXVhbGl0eQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdyZXNzL3N0cmluZy12YXItZXF1YWxpdHkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLXZhci1lcXVhbGl0eS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy12YXItZXF1YWxp
dHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctdmFyLWVxdWFsaXR5LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9uZy1pZGVudC1lcXVhbGl0eS5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNiBAQAordmFyIGFycmF5ID0gWyAiYWdkc2FnZHdkIiwgImJnYmdiZ2JnYSIsICJjYjN3NTNi
cTQiLCAiZHdlcndlZXd3IiBdOworCitmdW5jdGlvbiBmb28oYXJyYXksIHMpIHsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChhcnJheVtp
XSA9PSBzKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkKKyAgICByZXN1bHQgKz0gZm9vKGFycmF5LCAiY2IzdzUzYnE0Iik7CisKK2lmIChyZXN1bHQg
IT0gMTAwMDAwMCkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXZhci1lcXVhbGl0
eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3N0cmluZy12YXItZXF1YWxpdHkuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy12YXItZXF1YWxpdHkuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAordmFyIGFycmF5ID0gWyAiYSIsICJiIiwgImMiLCAi
ZCIgXTsKKworZnVuY3Rpb24gYWRkRm9vKHgpIHsgcmV0dXJuIHggKyAiZm9vIjsgfQorCitmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQorICAgIGFycmF5W2ldID0gYWRkRm9v
KGFycmF5W2ldKTsKKworZnVuY3Rpb24gZm9vKGFycmF5LCBzKSB7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYXJyYXlbaV0gPT0gcykK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZhciBkRm9vID0gYWRkRm9vKCJkIik7CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpCisgICAgcmVzdWx0ICs9IGZvbyhhcnJheSwgZEZvbyk7CisK
K2lmIChyZXN1bHQgIT0gMTAwMDAwMCkKKyAgICB0aHJvdyAiQmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsK
</data>
<flag name="review"
          id="226766"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>