<?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>21560</bug_id>
          
          <creation_ts>2008-10-12 13:11:43 -0700</creation_ts>
          <short_desc>Layering violation: String should not be responsible for creating Lengths</short_desc>
          <delta_ts>2008-10-12 13:43:38 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95059</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-12 13:11:43 -0700</bug_when>
    <thetext>We should move the parsing and creating to Length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95061</commentid>
    <comment_count>1</comment_count>
      <attachid>24308</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-12 13:14:59 -0700</bug_when>
    <thetext>Created attachment 24308
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95064</commentid>
    <comment_count>2</comment_count>
      <attachid>24308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-12 13:21:06 -0700</bug_when>
    <thetext>Comment on attachment 24308
patch

The return values of these functions should be auto_ptr&lt;Length&gt;, not Length*.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95065</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-12 13:21:45 -0700</bug_when>
    <thetext>I would use &quot;newArray&quot; or something along those lines rather than &quot;create&quot; in the names of the functions. And I was wrong, auto_ptr would be incorrect since it&apos;s delete [] rather than delete that needs to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95068</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-12 13:43:38 -0700</bug_when>
    <thetext>Landed in r37527.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24308</attachid>
            <date>2008-10-12 13:14:59 -0700</date>
            <delta_ts>2008-10-12 13:21:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>moveLength.diff</filename>
            <type>text/plain</type>
            <size>20677</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3NTI2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDgtMTAt
MTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTU2MAorICAgICAgICBMYXllcmluZyB2aW9sYXRpb246IFN0cmlu
ZyBzaG91bGQgbm90IGJlIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBMZW5ndGhzCisKKyAgICAg
ICAgSXQgd2FzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uIGZvciBTdHJpbmcgdG8ga25vdyBoYXcgdG8g
cGFyc2UKKyAgICAgICAgaW50byBMZW5ndGhzLCBMZW5ndGhBcnJheXMsIGFuZCBDb29yZHNBcnJh
eXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMu
YmtsOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBcmVhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVT
ZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9BdG9taWNTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZzo6cGVyY2Vu
dGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0
cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9MZW5ndGguY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvdW50Q2hhcmFjdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNvb3Jkc0FycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxl
bmd0aEFycmF5KToKKyAgICAgICAgKiByZW5kZXJpbmcvTGVuZ3RoLmg6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGhTaXplOjpMZW5ndGhTaXplKToKKwogMjAwOC0xMC0xMiAgQnJhZCBHYXJjaWEg
IDxiZ2FyY2lhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CkluZGV4OiBHTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gMzc1MjYpCisrKyBHTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTQ3OCw2
ICsxNDc4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcCBcCiAJV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaCBcCisJV2ViQ29yZS9yZW5kZXJpbmcvTGVuZ3Ro
LmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvTGVuZ3RoLmggXAogCVdlYkNvcmUvcmVuZGVyaW5n
L0xpc3RNYXJrZXJCb3guY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9MaXN0TWFya2VyQm94Lmgg
XApJbmRleDogV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5wcm8JKHJldmlzaW9u
IDM3NTI2KQorKysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTg3NCw2ICs4NzQsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAgXAogICAgIHJl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL0xheW91dFN0YXRlLmNw
cCBcCisgICAgcmVuZGVyaW5nL0xlbmd0aC5jcHAgXAogICAgIHJlbmRlcmluZy9MaXN0TWFya2Vy
Qm94LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAgXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJBcmVuYS5jcHAgXApJbmRleDogV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzc1MjYpCisrKyBXZWJDb3JlU291cmNl
cy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTgyNiw2ICs4MjYsNyBAQCBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94
LmNwcAogICAgICAgICByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKICAgICAgICAgcmVuZGVy
aW5nL0xheW91dFN0YXRlLmNwcAorICAgICAgICByZW5kZXJpbmcvTGVuZ3RoLmNwcAogICAgICAg
ICByZW5kZXJpbmcvTGlzdE1hcmtlckJveC5jcHAKICAgICAgICAgcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAogICAgICAgICByZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcApJbmRl
eDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM3NTI2KQorKysgV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc5MjIsNiArNzkyMiwxOCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJp
bmdcTGVuZ3RoLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5h
bWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1
ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXExlbmd0aC5oIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDM3NTI2KQorKysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zODkzLDYgKzM4OTMsNyBAQAogCQlCQzdGQTY4MjBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5j
cHAgKi87IH07CiAJCUJDODBDOTg3MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDODBDOTg1MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCAq
LzsgfTsKIAkJQkM4MEM5ODgwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODBD
OTg2MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi87IH07CisJ
CUJDODBGQTEzMEVBMjg3QjAwMEIwODIxRCAvKiBMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MEZBMTIwRUEyODdCMDAwQjA4MjFEIC8q
IExlbmd0aC5jcHAgKi87IH07CiAJCUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgy
NDMyNTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oICovOyB9OwogCQlCQzgyNDMyQTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjQzMjYwRDBDRThBMjAwNDYwQzhGIC8qIEpT
U1FMVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJQkM4MjQzMkIwRDBDRThBMjAwNDYwQzhGIC8qIEpT
Vm9pZENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDODI0MzI3MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgKi87
IH07CkBAIC04NDQ3LDYgKzg0NDgsNyBAQAogCQlCQzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyog
U2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTZWxlY3Rvck5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4
MEM5ODUwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgwQzk4NjBDRDI5NEVFMDBBMEI3
QjMgLyogQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzgwRkExMjBFQTI4N0IwMDBCMDgyMUQgLyogTGVuZ3RoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDODI0MzI1MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1FMRXJyb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQzMjYwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMVHJhbnNh
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxUcmFuc2FjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzgyNDMyNzBEMENFOEEyMDA0NjBD
OEYgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNWb2lkQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTM1MDksNiArMTM1MTEsNyBAQAogCQkJCUJDRUE0ODFCMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxp
bmVUZXh0Qm94LmggKi8sCiAJCQkJMkQ5MDY2MDQwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0
YXRlLmNwcCAqLywKIAkJCQkyRDkwNjYwNTBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUu
aCAqLywKKwkJCQlCQzgwRkExMjBFQTI4N0IwMDBCMDgyMUQgLyogTGVuZ3RoLmNwcCAqLywKIAkJ
CQk5MzVDNDc2MDA5QUM0Q0QxMDBBNkFBQjQgLyogTGVuZ3RoLmggKi8sCiAJCQkJQThFQTdBNEQw
QTE5MUE1MjAwQThFRjVGIC8qIExpc3RNYXJrZXJCb3guY3BwICovLAogCQkJCUE4RUE3QTQ5MEEx
OTFBNTIwMEE4RUY1RiAvKiBMaXN0TWFya2VyQm94LmggKi8sCkBAIC0xNzg1MSw2ICsxNzg1NCw3
IEBACiAJCQkJQkMzQkU5QUIwRTlDMjQyMDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNGNkJERkIwRTlCQjI2QTAwMjVFMUNEIC8qIE9iakNF
dmVudExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNGNkJFMTQwRTlCQjQ2NzAwMjVF
MUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4
MEZBMTMwRUEyODdCMDAwQjA4MjFEIC8qIExlbmd0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM3NTI2KQorKysgaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1
ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNjEsNyArNjIsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1CiAgICAgICAgICAgICBtX3NoYXBlID0gUmVjdDsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBjb29yZHNBdHRyKSB7CiAgICAgICAgIGRlbGV0ZSBbXSBtX2Nvb3JkczsK
LSAgICAgICAgbV9jb29yZHMgPSBhdHRyLT52YWx1ZSgpLnRvQ29vcmRzQXJyYXkobV9jb29yZHNM
ZW4pOworICAgICAgICBtX2Nvb3JkcyA9IGNyZWF0ZUNvb3Jkc0FycmF5KGF0dHItPnZhbHVlKCku
c3RyaW5nKCksIG1fY29vcmRzTGVuKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBh
bHRBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7CiAgICAgICAgIC8vIERv
IG5vdGhpbmcuCiAgICAgfSBlbHNlCkluZGV4OiBodG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM3
NTI2KQorKysgaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKKyNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhbWVTZXQuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCkBAIC04OCwxMyArODksMTMgQEAgdm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c0F0dHIpIHsKICAgICAgICAg
aWYgKCFhdHRyLT5pc051bGwoKSkgewogICAgICAgICAgICAgaWYgKG1fcm93cykgZGVsZXRlIFtd
IG1fcm93czsKLSAgICAgICAgICAgIG1fcm93cyA9IGF0dHItPnZhbHVlKCkudG9MZW5ndGhBcnJh
eShtX3RvdGFsUm93cyk7CisgICAgICAgICAgICBtX3Jvd3MgPSBjcmVhdGVMZW5ndGhBcnJheShh
dHRyLT52YWx1ZSgpLnN0cmluZygpLCBtX3RvdGFsUm93cyk7CiAgICAgICAgICAgICBzZXRDaGFu
Z2VkKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xzQXR0
cikgewogICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBkZWxldGUg
W10gbV9jb2xzOwotICAgICAgICAgICAgbV9jb2xzID0gYXR0ci0+dmFsdWUoKS50b0xlbmd0aEFy
cmF5KG1fdG90YWxDb2xzKTsKKyAgICAgICAgICAgIG1fY29scyA9IGNyZWF0ZUxlbmd0aEFycmF5
KGF0dHItPnZhbHVlKCkuc3RyaW5nKCksIG1fdG90YWxDb2xzKTsKICAgICAgICAgICAgIHNldENo
YW5nZWQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1l
Ym9yZGVyQXR0cikgewpJbmRleDogcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5oCShyZXZpc2lvbiAzNzUyNikKKysr
IHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDggKzc3
LDYgQEAgcHVibGljOgogICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLnRvRG91YmxlKG9rKTsgfQogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCog
b2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Zsb2F0KG9rKTsgfQogICAgIGJvb2wg
cGVyY2VudGFnZShpbnQmIHApIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnBlcmNlbnRhZ2UocCk7
IH0KLSAgICBMZW5ndGgqIHRvTGVuZ3RoQXJyYXkoaW50JiBsZW4pIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLnRvTGVuZ3RoQXJyYXkobGVuKTsgfQotICAgIExlbmd0aCogdG9Db29yZHNBcnJheShp
bnQmIGxlbikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9Db29yZHNBcnJheShsZW4pOyB9CiAK
ICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9Cklu
ZGV4OiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZv
cm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oCShyZXZpc2lvbiAzNzUyNikKKysrIHBsYXRmb3JtL3Rl
eHQvUGxhdGZvcm1TdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDggKzE2NCw3IEBAIHB1
YmxpYzoKICAgICB1aW50NjRfdCB0b1VJbnQ2NChib29sKiBvayA9IDApIGNvbnN0OwogICAgIGRv
dWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0OwogICAgIGZsb2F0IHRvRmxvYXQoYm9v
bCogb2sgPSAwKSBjb25zdDsKLSAgICBMZW5ndGgqIHRvTGVuZ3RoQXJyYXkoaW50JiBsZW4pIGNv
bnN0OwotICAgIExlbmd0aCogdG9Db29yZHNBcnJheShpbnQmIGxlbikgY29uc3Q7CisKICAgICBi
b29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdlKSBjb25zdDsKIAogICAgIC8vIE1ha2VzIGEg
ZGVlcCBjb3B5LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgU3RyaW5nIG9uIGFu
b3RoZXIgdGhyZWFkLgpJbmRleDogcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL3RleHQvU3RyaW5nLmNwcAkocmV2aXNpb24gMzc1MjYpCisrKyBwbGF0Zm9y
bS90ZXh0L1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSwxNiArNTE5LDYgQEAgYm9v
bCBTdHJpbmc6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwt
Pmxlbmd0aCgpOwogfQogCi1MZW5ndGgqIFN0cmluZzo6dG9Db29yZHNBcnJheShpbnQmIGxlbikg
Y29uc3QgCi17Ci0gICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+dG9Db29yZHNBcnJheShsZW4p
IDogMDsKLX0KLQotTGVuZ3RoKiBTdHJpbmc6OnRvTGVuZ3RoQXJyYXkoaW50JiBsZW4pIGNvbnN0
IAotewotICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnRvTGVuZ3RoQXJyYXkobGVuKSA6IDA7
Ci19Ci0KIHZvaWQgU3RyaW5nOjpzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKIHsKICAgICBy
ZXN1bHQuY2xlYXIoKTsKSW5kZXg6IHBsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gMzc1MjYpCisr
KyBwbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgi
CiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5j
bHVkZSAiU3RyaW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCkBAIC0xOTQsMTI0ICsxOTMsNiBAQCBVQ2hhcjMyIFN0cmlu
Z0ltcGw6OmNoYXJhY3RlclN0YXJ0aW5nQXQoCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBM
ZW5ndGggcGFyc2VMZW5ndGgoY29uc3QgVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsK
LSAgICBpZiAobGVuZ3RoID09IDApCi0gICAgICAgIHJldHVybiBMZW5ndGgoMSwgUmVsYXRpdmUp
OwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgaXNTcGFj
ZU9yTmV3bGluZShkYXRhW2ldKSkKLSAgICAgICAgKytpOwotICAgIGlmIChpIDwgbGVuZ3RoICYm
IChkYXRhW2ldID09ICcrJyB8fCBkYXRhW2ldID09ICctJykpCi0gICAgICAgICsraTsKLSAgICB3
aGlsZSAoaSA8IGxlbmd0aCAmJiBpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0gICAgICAgICsraTsK
LSAgICB1bnNpZ25lZCBpbnRMZW5ndGggPSBpOwotICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIChp
c0FTQ0lJRGlnaXQoZGF0YVtpXSkgfHwgZGF0YVtpXSA9PSAnLicpKQotICAgICAgICArK2k7Ci0g
ICAgdW5zaWduZWQgZG91YmxlTGVuZ3RoID0gaTsKLQotICAgIC8vIElFIHF1aXJrOiBTa2lwIHdo
aXRlc3BhY2UgYmV0d2VlbiB0aGUgbnVtYmVyIGFuZCB0aGUgJSBjaGFyYWN0ZXIgKDIwICUgPT4g
MjAlKS4KLSAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0p
KQotICAgICAgICArK2k7Ci0KLSAgICBib29sIG9rOwotICAgIFVDaGFyIG5leHQgPSAoaSA8IGxl
bmd0aCkgPyBkYXRhW2ldIDogJyAnOwotICAgIGlmIChuZXh0ID09ICclJykgewotICAgICAgICAv
LyBJRSBxdWlyazogYWNjZXB0IGRlY2ltYWwgZnJhY3Rpb25zIGZvciBwZXJjZW50YWdlcy4KLSAg
ICAgICAgZG91YmxlIHIgPSBjaGFyYWN0ZXJzVG9Eb3VibGUoZGF0YSwgZG91YmxlTGVuZ3RoLCAm
b2spOwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIFBlcmNl
bnQpOwotICAgICAgICByZXR1cm4gTGVuZ3RoKDEsIFJlbGF0aXZlKTsKLSAgICB9Ci0gICAgaW50
IHIgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoZGF0YSwgaW50TGVuZ3RoLCAmb2spOwotICAgIGlm
IChuZXh0ID09ICcqJykgewotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICByZXR1cm4gTGVu
Z3RoKHIsIFJlbGF0aXZlKTsKLSAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBSZWxhdGl2ZSk7Ci0g
ICAgfQotICAgIGlmIChvaykKLSAgICAgICAgcmV0dXJuIExlbmd0aChyLCBGaXhlZCk7Ci0gICAg
cmV0dXJuIExlbmd0aCgwLCBSZWxhdGl2ZSk7Ci19Ci0KLUxlbmd0aCBTdHJpbmdJbXBsOjp0b0xl
bmd0aCgpCi17Ci0gICAgcmV0dXJuIHBhcnNlTGVuZ3RoKG1fZGF0YSwgbV9sZW5ndGgpOwotfQot
Ci1zdGF0aWMgaW50IGNvdW50Q2hhcmFjdGVyKFN0cmluZ0ltcGwqIHN0cmluZywgVUNoYXIgY2hh
cmFjdGVyKQotewotICAgIGludCBjb3VudCA9IDA7Ci0gICAgaW50IGxlbmd0aCA9IHN0cmluZy0+
bGVuZ3RoKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIGNvdW50ICs9ICgqc3RyaW5nKVtpXSA9PSBjaGFyYWN0ZXI7Ci0gICAgcmV0dXJuIGNvdW50
OwotfQotCi1MZW5ndGgqIFN0cmluZ0ltcGw6OnRvQ29vcmRzQXJyYXkoaW50JiBsZW4pCi17Ci0g
ICAgU3RyaW5nQnVmZmVyIHNwYWNpZmllZChtX2xlbmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgVUNoYXIgY2MgPSBtX2RhdGFbaV07
Ci0gICAgICAgIGlmIChjYyA+ICc5JyB8fCAoY2MgPCAnMCcgJiYgY2MgIT0gJy0nICYmIGNjICE9
ICcqJyAmJiBjYyAhPSAnLicpKQotICAgICAgICAgICAgc3BhY2lmaWVkW2ldID0gJyAnOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBzcGFjaWZpZWRbaV0gPSBjYzsKLSAgICB9Ci0gICAgUmVm
UHRyPFN0cmluZ0ltcGw+IHN0ciA9IGFkb3B0KHNwYWNpZmllZCk7Ci0KLSAgICBzdHIgPSBzdHIt
PnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwotCi0gICAgbGVuID0gY291bnRDaGFyYWN0ZXIoc3RyLmdl
dCgpLCAnICcpICsgMTsKLSAgICBMZW5ndGgqIHIgPSBuZXcgTGVuZ3RoW2xlbl07Ci0KLSAgICBp
bnQgaSA9IDA7Ci0gICAgaW50IHBvcyA9IDA7Ci0gICAgaW50IHBvczI7Ci0KLSAgICB3aGlsZSAo
KHBvczIgPSBzdHItPmZpbmQoJyAnLCBwb3MpKSAhPSAtMSkgewotICAgICAgICByW2krK10gPSBw
YXJzZUxlbmd0aChzdHItPmNoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7Ci0gICAgICAg
IHBvcyA9IHBvczIrMTsKLSAgICB9Ci0gICAgcltpXSA9IHBhcnNlTGVuZ3RoKHN0ci0+Y2hhcmFj
dGVycygpICsgcG9zLCBzdHItPmxlbmd0aCgpIC0gcG9zKTsKLQotICAgIEFTU0VSVChpID09IGxl
biAtIDEpOwotCi0gICAgcmV0dXJuIHI7Ci19Ci0KLUxlbmd0aCogU3RyaW5nSW1wbDo6dG9MZW5n
dGhBcnJheShpbnQmIGxlbikKLXsKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gc3RyID0gc2ltcGxp
ZnlXaGl0ZVNwYWNlKCk7Ci0gICAgaWYgKCFzdHItPmxlbmd0aCgpKSB7Ci0gICAgICAgIGxlbiA9
IDE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVy
KHN0ci5nZXQoKSwgJywnKSArIDE7Ci0gICAgTGVuZ3RoKiByID0gbmV3IExlbmd0aFtsZW5dOwot
Ci0gICAgaW50IGkgPSAwOwotICAgIGludCBwb3MgPSAwOwotICAgIGludCBwb3MyOwotCi0gICAg
d2hpbGUgKChwb3MyID0gc3RyLT5maW5kKCcsJywgcG9zKSkgIT0gLTEpIHsKLSAgICAgICAgcltp
KytdID0gcGFyc2VMZW5ndGgoc3RyLT5jaGFyYWN0ZXJzKCkgKyBwb3MsIHBvczIgLSBwb3MpOwot
ICAgICAgICBwb3MgPSBwb3MyKzE7Ci0gICAgfQotCi0gICAgQVNTRVJUKGkgPT0gbGVuIC0gMSk7
Ci0KLSAgICAvKiBJRSBRdWlyazogSWYgdGhlIGxhc3QgY29tbWEgaXMgdGhlIGxhc3QgY2hhciBz
a2lwIGl0IGFuZCByZWR1Y2UgbGVuIGJ5IG9uZSAqLwotICAgIGlmIChzdHItPmxlbmd0aCgpLXBv
cyA+IDApCi0gICAgICAgIHJbaV0gPSBwYXJzZUxlbmd0aChzdHItPmNoYXJhY3RlcnMoKSArIHBv
cywgc3RyLT5sZW5ndGgoKSAtIHBvcyk7Ci0gICAgZWxzZQotICAgICAgICBsZW4tLTsKLQotICAg
IHJldHVybiByOwotfQotCiBib29sIFN0cmluZ0ltcGw6OmlzTG93ZXIoKQogewogICAgIC8vIERv
IGEgZmFzdGVyIGxvb3AgZm9yIHRoZSBjYXNlIHdoZXJlIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUg
QVNDSUkuCkluZGV4OiBwbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMzc1MjYpCisrKyBwbGF0Zm9ybS90
ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBT
dHJpbmdCdWZmZXI7CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBIYXNoQW5k
Q2hhcmFjdGVyc1RyYW5zbGF0b3I7Ci1zdHJ1Y3QgTGVuZ3RoOwogc3RydWN0IFN0cmluZ0hhc2g7
CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogCkBAIC05OSw4ICs5OCw2IEBAIHB1Ymxp
YzoKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgQVNTRVJUKGkgPCBtX2xlbmd0
aCk7IHJldHVybiBtX2RhdGFbaV07IH0KICAgICBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQo
dW5zaWduZWQpOwogCi0gICAgTGVuZ3RoIHRvTGVuZ3RoKCk7Ci0KICAgICBib29sIGNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKIAogICAgIGludCB0b0ludFN0cmljdChib29sKiBvayA9IDAsIGlu
dCBiYXNlID0gMTApOwpAQCAtMTE2LDggKzExMyw2IEBAIHB1YmxpYzoKICAgICBkb3VibGUgdG9E
b3VibGUoYm9vbCogb2sgPSAwKTsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCk7CiAK
LSAgICBMZW5ndGgqIHRvQ29vcmRzQXJyYXkoaW50JiBsZW4pOwotICAgIExlbmd0aCogdG9MZW5n
dGhBcnJheShpbnQmIGxlbik7CiAgICAgYm9vbCBpc0xvd2VyKCk7CiAgICAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBsb3dlcigpOwogICAgIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsK
SW5kZXg6IHJlbmRlcmluZy9MZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9MZW5n
dGguY3BwCShyZXZpc2lvbiAwKQorKysgcmVuZGVyaW5nL0xlbmd0aC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyICggbXVl
bGxlckBrZGUub3JnICkKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQW5kcmV3IFdlbGxpbmd0b24gKHByb3RvbkB3aXJldGFwcGVkLm5ldCkKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMZW5ndGguaCIKKworI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3RyaW5nQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBMZW5ndGggcGFyc2VMZW5n
dGgoY29uc3QgVUNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBpZiAobGVuZ3Ro
ID09IDApCisgICAgICAgIHJldHVybiBMZW5ndGgoMSwgUmVsYXRpdmUpOworCisgICAgdW5zaWdu
ZWQgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgaXNTcGFjZU9yTmV3bGluZShkYXRh
W2ldKSkKKyAgICAgICAgKytpOworICAgIGlmIChpIDwgbGVuZ3RoICYmIChkYXRhW2ldID09ICcr
JyB8fCBkYXRhW2ldID09ICctJykpCisgICAgICAgICsraTsKKyAgICB3aGlsZSAoaSA8IGxlbmd0
aCAmJiBpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCisgICAgICAgICsraTsKKyAgICB1bnNpZ25lZCBp
bnRMZW5ndGggPSBpOworICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIChpc0FTQ0lJRGlnaXQoZGF0
YVtpXSkgfHwgZGF0YVtpXSA9PSAnLicpKQorICAgICAgICArK2k7CisgICAgdW5zaWduZWQgZG91
YmxlTGVuZ3RoID0gaTsKKworICAgIC8vIElFIHF1aXJrOiBTa2lwIHdoaXRlc3BhY2UgYmV0d2Vl
biB0aGUgbnVtYmVyIGFuZCB0aGUgJSBjaGFyYWN0ZXIgKDIwICUgPT4gMjAlKS4KKyAgICB3aGls
ZSAoaSA8IGxlbmd0aCAmJiBpc1NwYWNlT3JOZXdsaW5lKGRhdGFbaV0pKQorICAgICAgICArK2k7
CisKKyAgICBib29sIG9rOworICAgIFVDaGFyIG5leHQgPSAoaSA8IGxlbmd0aCkgPyBkYXRhW2ld
IDogJyAnOworICAgIGlmIChuZXh0ID09ICclJykgeworICAgICAgICAvLyBJRSBxdWlyazogYWNj
ZXB0IGRlY2ltYWwgZnJhY3Rpb25zIGZvciBwZXJjZW50YWdlcy4KKyAgICAgICAgZG91YmxlIHIg
PSBjaGFyYWN0ZXJzVG9Eb3VibGUoZGF0YSwgZG91YmxlTGVuZ3RoLCAmb2spOworICAgICAgICBp
ZiAob2spCisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIFBlcmNlbnQpOworICAgICAgICBy
ZXR1cm4gTGVuZ3RoKDEsIFJlbGF0aXZlKTsKKyAgICB9CisgICAgaW50IHIgPSBjaGFyYWN0ZXJz
VG9JbnRTdHJpY3QoZGF0YSwgaW50TGVuZ3RoLCAmb2spOworICAgIGlmIChuZXh0ID09ICcqJykg
eworICAgICAgICBpZiAob2spCisgICAgICAgICAgICByZXR1cm4gTGVuZ3RoKHIsIFJlbGF0aXZl
KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgxLCBSZWxhdGl2ZSk7CisgICAgfQorICAgIGlmIChv
aykKKyAgICAgICAgcmV0dXJuIExlbmd0aChyLCBGaXhlZCk7CisgICAgcmV0dXJuIExlbmd0aCgw
LCBSZWxhdGl2ZSk7Cit9CisKK3N0YXRpYyBpbnQgY291bnRDaGFyYWN0ZXIoU3RyaW5nSW1wbCog
c3RyaW5nLCBVQ2hhciBjaGFyYWN0ZXIpCit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBpbnQg
bGVuZ3RoID0gc3RyaW5nLT5sZW5ndGgoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICAgICAgY291bnQgKz0gKCpzdHJpbmcpW2ldID09IGNoYXJhY3RlcjsK
KyAgICByZXR1cm4gY291bnQ7Cit9CisKK0xlbmd0aCogY3JlYXRlQ29vcmRzQXJyYXkoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmlu
Zy5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciogZGF0YSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7
CisgICAgU3RyaW5nQnVmZmVyIHNwYWNpZmllZChsZW5ndGgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBVQ2hhciBjYyA9IGRhdGFbaV07Cisg
ICAgICAgIGlmIChjYyA+ICc5JyB8fCAoY2MgPCAnMCcgJiYgY2MgIT0gJy0nICYmIGNjICE9ICcq
JyAmJiBjYyAhPSAnLicpKQorICAgICAgICAgICAgc3BhY2lmaWVkW2ldID0gJyAnOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBzcGFjaWZpZWRbaV0gPSBjYzsKKyAgICB9CisgICAgUmVmUHRy
PFN0cmluZ0ltcGw+IHN0ciA9IFN0cmluZ0ltcGw6OmFkb3B0KHNwYWNpZmllZCk7CisKKyAgICBz
dHIgPSBzdHItPnNpbXBsaWZ5V2hpdGVTcGFjZSgpOworCisgICAgbGVuID0gY291bnRDaGFyYWN0
ZXIoc3RyLmdldCgpLCAnICcpICsgMTsKKyAgICBMZW5ndGgqIHIgPSBuZXcgTGVuZ3RoW2xlbl07
CisKKyAgICBpbnQgaSA9IDA7CisgICAgaW50IHBvcyA9IDA7CisgICAgaW50IHBvczI7CisKKyAg
ICB3aGlsZSAoKHBvczIgPSBzdHItPmZpbmQoJyAnLCBwb3MpKSAhPSAtMSkgeworICAgICAgICBy
W2krK10gPSBwYXJzZUxlbmd0aChzdHItPmNoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7
CisgICAgICAgIHBvcyA9IHBvczIrMTsKKyAgICB9CisgICAgcltpXSA9IHBhcnNlTGVuZ3RoKHN0
ci0+Y2hhcmFjdGVycygpICsgcG9zLCBzdHItPmxlbmd0aCgpIC0gcG9zKTsKKworICAgIEFTU0VS
VChpID09IGxlbiAtIDEpOworCisgICAgcmV0dXJuIHI7Cit9CisKK0xlbmd0aCogY3JlYXRlTGVu
Z3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQoreworICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBzdHIgPSBzdHJpbmcuaW1wbCgpLT5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKKyAg
ICBpZiAoIXN0ci0+bGVuZ3RoKCkpIHsKKyAgICAgICAgbGVuID0gMTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgbGVuID0gY291bnRDaGFyYWN0ZXIoc3RyLmdldCgpLCAnLCcpICsg
MTsKKyAgICBMZW5ndGgqIHIgPSBuZXcgTGVuZ3RoW2xlbl07CisKKyAgICBpbnQgaSA9IDA7Cisg
ICAgaW50IHBvcyA9IDA7CisgICAgaW50IHBvczI7CisKKyAgICB3aGlsZSAoKHBvczIgPSBzdHIt
PmZpbmQoJywnLCBwb3MpKSAhPSAtMSkgeworICAgICAgICByW2krK10gPSBwYXJzZUxlbmd0aChz
dHItPmNoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7CisgICAgICAgIHBvcyA9IHBvczIr
MTsKKyAgICB9CisKKyAgICBBU1NFUlQoaSA9PSBsZW4gLSAxKTsKKworICAgIC8vIElFIFF1aXJr
OiBJZiB0aGUgbGFzdCBjb21tYSBpcyB0aGUgbGFzdCBjaGFyIHNraXAgaXQgYW5kIHJlZHVjZSBs
ZW4gYnkgb25lLgorICAgIGlmIChzdHItPmxlbmd0aCgpLXBvcyA+IDApCisgICAgICAgIHJbaV0g
PSBwYXJzZUxlbmd0aChzdHItPmNoYXJhY3RlcnMoKSArIHBvcywgc3RyLT5sZW5ndGgoKSAtIHBv
cyk7CisgICAgZWxzZQorICAgICAgICBsZW4tLTsKKworICAgIHJldHVybiByOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiByZW5kZXJpbmcvTGVuZ3RoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcmVuZGVyaW5nL0xlbmd0aC5oCShyZXZpc2lvbiAzNzUyNikKKysrIHJlbmRlcmluZy9MZW5n
dGguaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFN0cmluZzsKKwogY29uc3QgaW50IHVuZGVmaW5lZExlbmd0aCA9IC0xOwog
Y29uc3QgaW50IHBlcmNlbnRTY2FsZUZhY3RvciA9IDEyODsKIApAQCAtMjI0LDE2ICsyMjYsMjEg
QEAgc3RydWN0IExlbmd0aEJveCB7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZSB7CiAgICAgTGVuZ3RoIHdp
ZHRoOwogICAgIExlbmd0aCBoZWlnaHQ7Ci0gICAgCisKICAgICBMZW5ndGhTaXplKCkKLSAgICB7
fQorICAgIHsKKyAgICB9CiAgICAgCiAgICAgTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGgmIHcsIGNv
bnN0IExlbmd0aCYgaCkKLSAgICA6IHdpZHRoKHcpCi0gICAgLCBoZWlnaHQoaCkKLSAgICB7fQor
ICAgICAgICA6IHdpZHRoKHcpCisgICAgICAgICwgaGVpZ2h0KGgpCisgICAgeworICAgIH0KIH07
CiAKK0xlbmd0aCogY3JlYXRlQ29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW4pOwor
TGVuZ3RoKiBjcmVhdGVMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbik7CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExlbmd0aF9oCg==
</data>
<flag name="review"
          id="11071"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>