<?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>23015</bug_id>
          
          <creation_ts>2008-12-28 14:36:51 -0800</creation_ts>
          <short_desc>RenderTextControl relies on HTMLFormControlElement, making it hard to reuse for WML</short_desc>
          <delta_ts>2008-12-28 16:17:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          
          <blocked>20393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103638</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-28 14:36:51 -0800</bug_when>
    <thetext>RenderTextControl relies on HTMLFormControlElement, and is not usable within WML at the moment.

One possibility would be to introduce a FormControlElement abstract class, containing two pure-virtual functions: setValueMatchesRenderer/valueMatchesRenderer, as these methods are in use from within RenderTextControl. As RenderObject stores a Node* pointer only, we&apos;d also need to store a FormControlElement pointer in RenderTextControl, as we aren&apos;t allowed to cast node() to HTMLFormControlElement, as we want to abstract away the HTML-dependency.

As Node got enough unused bits left, it&apos;s easier to store &quot;bool m_controlValueMatchesRenderer : 1&quot; in Node and add non-virtual getter/setter methods. This way RenderTextControl saves all casts from Node -&gt; HTMLFormControlElement and the HTML dependency is gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103640</commentid>
    <comment_count>1</comment_count>
      <attachid>26283</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-28 14:59:49 -0800</bug_when>
    <thetext>Created attachment 26283
Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103641</commentid>
    <comment_count>2</comment_count>
      <attachid>26283</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-12-28 15:26:50 -0800</bug_when>
    <thetext>Comment on attachment 26283
Initial patch

It&apos;s a little sad to be using bits in Node for something as rare as a RenderTextControl.  Otherwise, the patch seems fine. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103643</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-28 15:50:45 -0800</bug_when>
    <thetext>As discussed with Antti &amp; Sam, adding memory to RenderTextControl is not as bad as adding too specialized data (only needed for form control elements) to Node. I&apos;ll upload a revised version, implementing my first idea: a shared ABC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103647</commentid>
    <comment_count>4</comment_count>
      <attachid>26285</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-28 16:09:35 -0800</bug_when>
    <thetext>Created attachment 26285
Updated patch

Found a much nicer way to refactor, without adding any extra memory consumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103648</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-12-28 16:17:09 -0800</bug_when>
    <thetext>Landed in r39495.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26283</attachid>
            <date>2008-12-28 14:59:49 -0800</date>
            <delta_ts>2008-12-28 16:09:35 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>FormFactor.diff</filename>
            <type>text/plain</type>
            <size>12119</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5NDk0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDgtMTIt
MjggIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAxNQorCisgICAg
ICAgIERvbid0IHJlbHkgb24gSFRNTEZvcm1Db250cm9sRWxlbWVudCBpbiBSZW5kZXJUZXh0Q29u
dHJvbC4KKworICAgICAgICBBcyBOb2RlIGdvdCBlbm91Z2ggdW51c2VkIGJpdHMgbGVmdCwgaXQn
cyBlYXNpZXIgdG8gc3RvcmUgImJvb2wKKyAgICAgICAgbV9jb250cm9sVmFsdWVNYXRjaGVzUmVu
ZGVyZXIgOiAxIiBpbiBOb2RlIGFuZCBhZGQgbm9uLXZpcnR1YWwgZ2V0dGVyL3NldHRlcgorICAg
ICAgICBtZXRob2RzLiBUaGlzIHdheSBSZW5kZXJUZXh0Q29udHJvbCBzYXZlcyBhbGwgY2FzdHMg
ZnJvbSBOb2RlIHRvCisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgYW5kIHRoZSBIVE1M
IGRlcGVuZGVuY3kgaXMgZ29uZS4KKworICAgICAgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZv
ciBXTUwgdG8gcmV1c2UgUmVuZGVyVGV4dENvbnRyb2wuCisgICAgICAgIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZSBzdGlsbCByZWxpZXMgb24gSFRNTElucHV0RWxlbWVudCwKKyAgICAgICAg
dGhpcyB3aWxsIGNoYW5nZSBpZiBXTUxJbnB1dEVsZW1lbnQgaXMgaW50cm9kdWNlZC4KKworICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAg
ICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb250cm9sVmFsdWVN
YXRjaGVzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0Q29udHJvbFZhbHVl
TWF0Y2hlc1JlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZXRWYWx1ZUZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhU
TUxUZXh0QXJlYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVu
dDo6dXBkYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
c2V0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzZXRJbm5lclRleHRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6c2VsZWN0aW9uQ2hhbmdl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFz
Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVw
ZGF0ZUZyb21FbGVtZW50KToKKwogMjAwOC0xMi0yOCAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2Fy
aWNoQHV3YXRlcmxvby5jYT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IGRvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vTm9kZS5jcHAJKHJldmlzaW9uIDM5
NDkzKQorKysgZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDcgQEAg
Tm9kZTo6Tm9kZShEb2N1bWVudCogZG9jLCBib29sIGlzRWxlbWVudAogICAgICwgbV9oYXNSYXJl
RGF0YShmYWxzZSkKICAgICAsIG1faXNFbGVtZW50KGlzRWxlbWVudCkKICAgICAsIG1faXNDb250
YWluZXIoaXNDb250YWluZXIpCisgICAgLCBtX2NvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihm
YWxzZSkKICAgICAsIG1fcGFyc2luZ0NoaWxkcmVuRmluaXNoZWQodHJ1ZSkKICNpZiBFTkFCTEUo
U1ZHKQogICAgICwgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQodHJ1ZSkKSW5kZXg6IGRvbS9Ob2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gZG9tL05vZGUuaAkocmV2aXNpb24gMzk0OTMpCisrKyBkb20vTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiArMjk0LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWRPbmx5Q29udHJvbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisg
ICAgYm9vbCBjb250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcjsgfQorICAgIHZvaWQgc2V0Q29udHJvbFZhbHVlTWF0
Y2hlc1JlbmRlcmVyKGJvb2wgYiA9IHRydWUpIHsgbV9jb250cm9sVmFsdWVNYXRjaGVzUmVuZGVy
ZXIgPSBiOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKQEAgLTUzOCw2ICs1NDEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNSYXJlRGF0YSA6IDE7CiAgICAgY29uc3QgYm9v
bCBtX2lzRWxlbWVudCA6IDE7CiAgICAgY29uc3QgYm9vbCBtX2lzQ29udGFpbmVyIDogMTsKKyAg
ICBib29sIG1fY29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyIDogMTsKIAogcHJvdGVjdGVkOgog
ICAgIC8vIFRoZXNlIGJpdHMgYXJlIHVzZWQgYnkgdGhlIEVsZW1lbnQgZGVyaXZlZCBjbGFzcywg
cHVsbGVkIHVwIGhlcmUgc28gdGhleSBjYW4KQEAgLTU1OCw3ICs1NjIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgbXV0YWJsZSBib29sIG1fc3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXMgOiAxOwogI2Vu
ZGlmCiAKLSAgICAvLyAxMSBiaXRzIHJlbWFpbmluZworICAgIC8vIDEwIGJpdHMgcmVtYWluaW5n
CiB9OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFu
ZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCkluZGV4OiBodG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM5NDkzKQorKysgaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpI
VE1MRm9ybUNvbnRyb2xFCiAgICAgLCBtX2Zvcm0oZikKICAgICAsIG1fZGlzYWJsZWQoZmFsc2Up
CiAgICAgLCBtX3JlYWRPbmx5KGZhbHNlKQotICAgICwgbV92YWx1ZU1hdGNoZXNSZW5kZXJlcihm
YWxzZSkKIHsKICAgICBpZiAoIW1fZm9ybSkKICAgICAgICAgbV9mb3JtID0gZmluZEZvcm1BbmNl
c3RvcigpOwpJbmRleDogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDM5NDkzKQorKysgaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkge30KIAotICAgIGJvb2wgdmFs
dWVNYXRjaGVzUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVy
OyB9Ci0gICAgdm9pZCBzZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcihib29sIGIgPSB0cnVlKSBjb25z
dCB7IG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIgPSBiOyB9Ci0KICAgICB2b2lkIG9uQ2hhbmdlKCk7
CiAKICAgICBib29sIGRpc2FibGVkKCkgY29uc3Q7CkBAIC0xMDYsNyArMTAzLDYgQEAgcHJpdmF0
ZToKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBib29sIG1fZGlzYWJsZWQ7CiAg
ICAgYm9vbCBtX3JlYWRPbmx5OwotICAgIG11dGFibGUgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRl
cmVyOwogfTsKIAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSA6IHB1Ymxp
YyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHsKSW5kZXg6IGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzk0
OTMpCisrKyBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Mjks
NyArNjI5LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAg
ICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gc2V0Q2hhbmdlZCBpZiB0aGUgZm9ybSBpcyBsb29raW5n
IGF0IHRoZSBkZWZhdWx0IHZhbHVlIHJpZ2h0IG5vdy4KICAgICAgICAgaWYgKG1fdmFsdWUuaXNO
dWxsKCkpCiAgICAgICAgICAgICBzZXRDaGFuZ2VkKCk7Ci0gICAgICAgIHNldFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKKyAgICAgICAgc2V0Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVy
KGZhbHNlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjaGVja2VkQXR0cikgewog
ICAgICAgICBtX2RlZmF1bHRDaGVja2VkID0gIWF0dHItPmlzTnVsbCgpOwogICAgICAgICBpZiAo
bV91c2VEZWZhdWx0Q2hlY2tlZCkgewpAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6YXR0YWNoKCkKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGV0YWNoKCkKIHsKICAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZXRhY2goKTsKLSAgICBzZXRWYWx1
ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisgICAgc2V0Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRl
cmVyKGZhbHNlKTsKIH0KIAogU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmFsdFRleHQoKSBjb25z
dApAQCAtMTAxOCw3ICsxMDE4LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShj
b25zdCBTdAogICAgIGlmIChpc1RleHRGaWVsZCgpKQogICAgICAgICB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkoKTsKICAgICAKLSAgICBzZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7
CisgICAgc2V0Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKICAgICBpZiAoc3Rv
cmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSkgewogICAgICAgICBpZiAoaW5wdXRUeXBl
KCkgPT0gRklMRSkKICAgICAgICAgICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7CkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlCiAgICAg
ZWxzZQogICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAKLSAgICBzZXRWYWx1ZU1hdGNoZXNSZW5k
ZXJlcigpOworICAgIHNldENvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpOwogCiAgICAgLy8g
RmlyZSB0aGUgImlucHV0IiBET00gZXZlbnQuCiAgICAgZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZl
bnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKTsKQEAgLTEwNzksNyArMTA3OSw3IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmUKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHNpemU7IGkrKykKICAgICAgICAgbV9maWxlTGlzdC0+YXBwZW5kKEZpbGU6OmNy
ZWF0ZShwYXRoc1tpXSkpOwogCi0gICAgc2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoKTsKKyAgICBz
ZXRDb250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKTsKICAgICBub3RpZnlGb3JtU3RhdGVDaGFu
Z2VkKHRoaXMpOwogfQogCkluZGV4OiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDM5NDkzKQor
KysgaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsNyBAQCBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50CiAgICAgLCBt
X2NhY2hlZFNlbGVjdGlvbkVuZCgtMSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0ZXh0YXJl
YVRhZykpOwotICAgIHNldFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCk7CisgICAgc2V0Q29udHJvbFZh
bHVlTWF0Y2hlc1JlbmRlcmVyKCk7CiAgICAgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsK
IH0KIApAQCAtMjU3LDEyICsyNTcsMTIgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5k
ZXJlcldpbGxCZQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKCkgY29u
c3QKIHsKLSAgICBpZiAodmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkKKyAgICBpZiAoY29udHJvbFZh
bHVlTWF0Y2hlc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChyZW5k
ZXJlcigpKTsKICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRyb2wqPihy
ZW5kZXJlcigpKS0+dGV4dCgpOwotICAgIHNldFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCk7CisgICAg
Y29uc3RfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4odGhpcyktPnNldENvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcigpOwogICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CiB9CiAK
QEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlKGNv
bnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7Ci0g
ICAgc2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoKTsKKyAgICBzZXRDb250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudCgpLT51
cGRhdGVSZW5kZXJpbmcoKTsKICAgICBpZiAocmVuZGVyZXIoKSkKSW5kZXg6IHJlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcAkocmV2aXNpb24gMzk0OTMpCisrKyByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUu
aCIKQEAgLTEwMywxNCArMTAyLDEyIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnN0eWxlRGlk
Q2hhbmdlKFIKIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHls
ZSkgY29uc3QKIHsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUoKSk7Ci0KICAgICAvLyBUaGUgaW5u
ZXIgYmxvY2ssIGlmIHByZXNlbnQsIGFsd2F5cyBoYXMgaXRzIGRpcmVjdGlvbiBzZXQgdG8gTFRS
LAogICAgIC8vIHNvIHdlIG5lZWQgdG8gaW5oZXJpdCB0aGUgZGlyZWN0aW9uIGZyb20gdGhlIGVs
ZW1lbnQuCiAgICAgdGV4dEJsb2NrU3R5bGUtPnNldERpcmVjdGlvbihzdHlsZSgpLT5kaXJlY3Rp
b24oKSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUtPnNldFVzZXJNb2RpZnkoZWxlbWVudC0+aXNSZWFk
T25seUNvbnRyb2woKSB8fCBlbGVtZW50LT5kaXNhYmxlZCgpID8gUkVBRF9PTkxZIDogUkVBRF9X
UklURV9QTEFJTlRFWFRfT05MWSk7CisgICAgdGV4dEJsb2NrU3R5bGUtPnNldFVzZXJNb2RpZnko
KG5vZGUoKS0+aXNSZWFkT25seUNvbnRyb2woKSB8fCAhbm9kZSgpLT5pc0VuYWJsZWQoKSkgPyBS
RUFEX09OTFkgOiBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKIAotICAgIGlmICghZWxlbWVu
dC0+aXNFbmFibGVkKCkpCisgICAgaWYgKCFub2RlKCktPmlzRW5hYmxlZCgpKQogICAgICAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0Q29sb3IoZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUt
PmNvbG9yKCksIHN0YXJ0U3R5bGUtPmJhY2tncm91bmRDb2xvcigpKSk7CiB9CiAKQEAgLTEzOSw4
ICsxMzYsNyBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnRleHRCbG9ja1dpZHRoKCkgCiAKIHZv
aWQgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKLSAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudCo+KG5vZGUoKSk7Ci0gICAgbV9pbm5lclRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnNl
dFVzZXJNb2RpZnkoZWxlbWVudC0+aXNSZWFkT25seUNvbnRyb2woKSB8fCBlbGVtZW50LT5kaXNh
YmxlZCgpID8gUkVBRF9PTkxZIDogUkVBRF9XUklURV9QTEFJTlRFWFRfT05MWSk7CisgICAgbV9p
bm5lclRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnNldFVzZXJNb2RpZnkoKG5vZGUoKS0+aXNS
ZWFkT25seUNvbnRyb2woKSB8fCAhbm9kZSgpLT5pc0VuYWJsZWQoKSkgPyBSRUFEX09OTFkgOiBS
RUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsgCiB9CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6
OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgaW5uZXJUZXh0VmFsdWUpCkBAIC0xNzMs
NyArMTY5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0VmFsdQogICAg
ICAgICBtX3VzZXJFZGl0ZWQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKS0+c2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoKTsK
KyAgICBub2RlKCktPnNldENvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpOwogfQogCiB2b2lk
IFJlbmRlclRleHRDb250cm9sOjpzZXRVc2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRpdGVkKQpAQCAt
NTA1LDEwICs1MDEsOCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25DaGFuZ2Vk
CiAgICAgY2FjaGVTZWxlY3Rpb24oc2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKCkpOwog
CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAg
aWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpICYmIHVzZXJUcmlnZ2VyZWQpIHsKLSAg
ICAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAgICAgICAgIGVsZW1lbnQtPmRp
c3BhdGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCwgdHJ1ZSwgZmFsc2Up
OwotICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSAm
JiB1c2VyVHJpZ2dlcmVkKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2Rl
Kj4obm9kZSgpKS0+ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50
LCB0cnVlLCBmYWxzZSk7CiAgICAgfQogfQogCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDM5NDkzKQorKysgcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlCiAgICAgUmVuZGVyVGV4dENv
bnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUoKSk7
Ci0gICAgZWxlbWVudC0+c2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIGVsZW1l
bnQtPnNldENvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CiAKICAgICBpZiAoZWxl
bWVudC0+Zm9jdXNlZCgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKQpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAJKHJldmlzaW9uIDM5NDkzKQorKysgcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dChlbGVtZW50LT5nZXRB
dHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKSwgZWMpOwogICAgICAgICBBU1NFUlQoZWMgPT0gMCk7
Ci0gICAgfSBlbHNlIGlmICghZWxlbWVudC0+dmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFj
ZWhvbGRlclZpc2liaWxpdHlTaG91bGRDaGFuZ2UpCisgICAgfSBlbHNlIGlmICghZWxlbWVudC0+
Y29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgfHwgcGxhY2Vob2xkZXJWaXNpYmlsaXR5U2hv
dWxkQ2hhbmdlKQogICAgICAgICBzZXRJbm5lclRleHRWYWx1ZShlbGVtZW50LT52YWx1ZSgpKTsK
IAogICAgIGlmIChtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKQo=
</data>
<flag name="review"
          id="12439"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26285</attachid>
            <date>2008-12-28 16:09:35 -0800</date>
            <delta_ts>2008-12-28 16:15:46 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>FormFactor.diff</filename>
            <type>text/plain</type>
            <size>17698</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM5NDk0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMDgtMTIt
MjggIE5pa29sYXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
ZXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAxNQorCisgICAg
ICAgIERvbid0IHJlbHkgb24gSFRNTEZvcm1Db250cm9sRWxlbWVudCBpbiBSZW5kZXJUZXh0Q29u
dHJvbC4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJzdHJhY3QgRm9ybUNvbnRyb2xFbGVtZW50
IGNsYXNzLCBjb250YWluaW5nIHRoZQorICAgICAgICB2YWx1ZU1hdGNoZXNSZW5kZXJlci9zZXRW
YWx1ZU1hdGNoZXNSZW5kZXJlciwgdGhlIG9ubHkgSFRNTEZvcm1Db250cm9sRWxlbWVudAorICAg
ICAgICBzcGVjaWZpYyBtZXRob2RzIHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgcmVsaWVzIG9uLgor
CisgICAgICAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIFdNTCB0byByZXVzZSBSZW5kZXJU
ZXh0Q29udHJvbC4KKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIHN0aWxsIHJl
bGllcyBvbiBIVE1MSW5wdXRFbGVtZW50LAorICAgICAgICB0aGlzIHdpbGwgY2hhbmdlIGlmIFdN
TElucHV0RWxlbWVudCBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Gb3JtQ29udHJv
bEVsZW1lbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbEVsZW1lbnQ6
On5Gb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xFbGVt
ZW50OjpGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmFs
dWVNYXRjaGVzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1
cGRhdGVWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjphZGp1c3RJbm5lclRleHRTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dXBkYXRlRnJvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnNldElubmVyVGV4dFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpmb3JtQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1
YnRyZWVIYXNDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgorCiAyMDA4LTEy
LTI4ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM5NDk0KQorKysgR05VbWFrZWZpbGUuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTU4Nyw2ICs1ODcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZS5jcHAgXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCisJV2ViQ29yZS9kb20vRm9y
bUNvbnRyb2xFbGVtZW50LmggXAogCVdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKIAlX
ZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmggXAogCVdlYkNvcmUvZG9tL01hcHBlZEF0dHJpYnV0
ZS5jcHAgXApJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM5NDk0KQorKysgV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMzQyLDYgKzEx
MzQyLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxGb3JtQ29udHJvbEVsZW1lbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxLZXlib2FyZEV2ZW50LmNwcCINCiAJ
CQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAzOTQ5NCkKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogCQkwODNEQUVBOTBGMDFBN0ZC
MDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQg
LyogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggKi87IH07CiAJCTA4NERCQUExMEVEMzlE
MzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg0REJBOUQwRUQzOUQzNTAwMzhDMjI2IC8qIFdNTFZhcmlh
Ymxlcy5jcHAgKi87IH07CiAJCTA4NERCQUEyMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJs
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NERC
QTlFMEVEMzlEMzYwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuaCAqLzsgfTsKKwkJMDg1NzczMzUw
RjA4NDYwMTAwODA1ODNFIC8qIEZvcm1Db250cm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NzczMzQwRjA4NDYwMTAwODA1ODNFIC8q
IEZvcm1Db250cm9sRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4NUI5MkJBMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1
QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi87IH07CiAJCTA4
NUI5MkJCMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3M0QwMEU2MTIz
QyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwODY1Q0NFNjBFRERGNTFCMDBERjlFQzMgLyogV01MTm9vcEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2
NUNDRTQwRURERjUxQjAwREY5RUMzIC8qIFdNTE5vb3BFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTQ4
NzcsNiArNDg3OCw3IEBACiAJCTA4M0RBRUE1MEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4NERCQTlEMEVEMzlEMzUwMDM4QzIyNiAvKiBXTUxWYXJpYWJsZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVmFyaWFibGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg0REJBOUUwRUQzOUQzNjAwMzhDMjI2IC8qIFdNTFZhcmlhYmxl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxWYXJpYWJsZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDg1NzczMzQwRjA4NDYwMTAwODA1ODNFIC8qIEZv
cm1Db250cm9sRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3Jt
Q29udHJvbEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjgw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODY1Q0NFNDBFRERGNTFCMDBERjlFQzMgLyog
V01MTm9vcEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V01MTm9vcEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxODIs
NiArMTQxODQsNyBAQAogCQkJCUJDNjBEOEYxMEQyQTExRTAwMEI5OTE4RiAvKiBFeGNlcHRpb25C
YXNlLmggKi8sCiAJCQkJOTM4MzFCNTYwRDA4N0Q2MDAwRTVDOTg0IC8qIEV4Y2VwdGlvbkNvZGUu
Y3BwICovLAogCQkJCTkzNUZCQ0YxMDlCQTE0M0IwMEUyMzBCMSAvKiBFeGNlcHRpb25Db2RlLmgg
Ki8sCisJCQkJMDg1NzczMzQwRjA4NDYwMTAwODA1ODNFIC8qIEZvcm1Db250cm9sRWxlbWVudC5o
ICovLAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmNwcCAq
LywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5oICovLAog
CQkJCTE0Q0Y3QzIwMDlGNzExMDYwMEVCMzY2NSAvKiBLZXlib2FyZEV2ZW50LmlkbCAqLywKQEAg
LTE1MzEzLDYgKzE1MzE2LDcgQEAKIAkJCQlCMkMzREE2QjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9u
dFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzg0QzM0QjBFMTFBQTM0MDA3RDhENDgg
LyogRm9udFRyYWl0c01hc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VEMEExOTg5Q0Ew
MDdGQjhDNSAvKiBGb250VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4NTc3MzM1MEYwODQ2
MDEwMDgwNTgzRSAvKiBGb3JtQ29udHJvbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3NjcwMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTgxMzZEMzgwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRhTGlzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNjM0Niw2ICsxNjM1MCw3IEBACiAJCQkJQkNFNjU5RTYwRUE5MkZCMjAw
N0U0NTMzIC8qIFRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U2NTlBOTBFQTkyN0I5
MDA3RTQ1MzMgLyogVGhlbWVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFERjZEN0UwQjky
QTE2RDAwQzJEQzg1IC8qIFRocmVhZENoZWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUZGNTdB
MzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ0NjEzQjAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMDVCMjREMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDlFOTEyQUUwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE2NTA5LDcgKzE2NTE0LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3
RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlFMUZGNTdBMzBGMDEyNTVCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0xODMyMiw2ICsxODMyNiw3IEBACiAJCQkJQkNFNjVEMzIwRUFEMTIxMTAwN0U0
NTMzIC8qIFRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1OUU5MEVBOTJGRkEwMDdF
NDUzMyAvKiBUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxREY2RDgwMEI5MkExOEUw
MEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUxRkY1N0E2MEYw
MTI1NkIwMDg5MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUU0NDYxM0FGMENENjMzMTAwMEZBREE3NSAvKiBUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzMzA5RUE0MDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OUU5MTFDRjBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTE4NDY4LDcgKzE4NDczLDYgQEAKIAkJCQkxQTU2OUQyMjBE
N0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE1NjlEMjQwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfcm9vdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlFMUZGNTdBNjBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFs
RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IGRvbS9Gb3JtQ29udHJvbEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBkb20vRm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBk
b20vRm9ybUNvbnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRm9ybUNvbnRy
b2xFbGVtZW50X2gKKyNkZWZpbmUgRm9ybUNvbnRyb2xFbGVtZW50X2gKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBGb3JtQ29udHJvbEVsZW1lbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkZvcm1Db250cm9sRWxlbWVudCgpIHsgfQorCisgICAgdmlydHVhbCBib29sIHZhbHVlTWF0
Y2hlc1JlbmRlcmVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZU1hdGNo
ZXNSZW5kZXJlcihib29sIHZhbHVlID0gdHJ1ZSkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgRm9y
bUNvbnRyb2xFbGVtZW50KCkgeyB9Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgJKHJldmlzaW9uIDM5NDk0KQorKysgaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZm5kZWYgSFRNTEZvcm1Db250
cm9sRWxlbWVudF9oCiAjZGVmaW5lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRfaAogCisjaW5jbHVk
ZSAiRm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzEsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGb3JtRGF0YUxpc3Q7CiBjbGFzcyBIVE1MRm9ybUVsZW1lbnQ7CiAKLWNsYXNzIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTEZvcm1D
b250cm9sRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIEZvcm1Db250cm9sRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogICAgIHZpcnR1
YWwgfkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKTsKQEAgLTUzLDggKzU0LDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCkge30KIAotICAgIGJvb2wgdmFsdWVNYXRjaGVzUmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyOyB9Ci0gICAgdm9p
ZCBzZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcihib29sIGIgPSB0cnVlKSBjb25zdCB7IG1fdmFsdWVN
YXRjaGVzUmVuZGVyZXIgPSBiOyB9CisgICAgdmlydHVhbCBib29sIHZhbHVlTWF0Y2hlc1JlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZU1hdGNoZXNSZW5kZXJlcjsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcihib29sIGIgPSB0cnVlKSB7IG1fdmFsdWVN
YXRjaGVzUmVuZGVyZXIgPSBiOyB9CiAKICAgICB2b2lkIG9uQ2hhbmdlKCk7CiAKQEAgLTEwNiw3
ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIGJv
b2wgbV9kaXNhYmxlZDsKICAgICBib29sIG1fcmVhZE9ubHk7Ci0gICAgbXV0YWJsZSBib29sIG1f
dmFsdWVNYXRjaGVzUmVuZGVyZXI7CisgICAgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyOwog
fTsKIAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSA6IHB1YmxpYyBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50IHsKSW5kZXg6IGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMzk0
OTQpCisrKyBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjIsNyArMjYyLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVWYWx1ZSgpIAog
CiAgICAgQVNTRVJUKHJlbmRlcmVyKCkpOwogICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDxSZW5k
ZXJUZXh0Q29udHJvbCo+KHJlbmRlcmVyKCkpLT50ZXh0KCk7Ci0gICAgc2V0VmFsdWVNYXRjaGVz
UmVuZGVyZXIoKTsKKyAgICBjb25zdF9jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+
c2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoKTsKICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRo
aXMpOwogfQogCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDM5NDk0KQor
KysgcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDE0ICsxMDMsMTIgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c3R5bGVEaWRDaGFuZ2UoUgog
CiB2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSogc3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25zdAog
ewotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsKLQogICAgIC8vIFRoZSBpbm5lciBibG9jaywg
aWYgcHJlc2VudCwgYWx3YXlzIGhhcyBpdHMgZGlyZWN0aW9uIHNldCB0byBMVFIsCiAgICAgLy8g
c28gd2UgbmVlZCB0byBpbmhlcml0IHRoZSBkaXJlY3Rpb24gZnJvbSB0aGUgZWxlbWVudC4KICAg
ICB0ZXh0QmxvY2tTdHlsZS0+c2V0RGlyZWN0aW9uKHN0eWxlKCktPmRpcmVjdGlvbigpKTsKLSAg
ICB0ZXh0QmxvY2tTdHlsZS0+c2V0VXNlck1vZGlmeShlbGVtZW50LT5pc1JlYWRPbmx5Q29udHJv
bCgpIHx8IGVsZW1lbnQtPmRpc2FibGVkKCkgPyBSRUFEX09OTFkgOiBSRUFEX1dSSVRFX1BMQUlO
VEVYVF9PTkxZKTsKKyAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0VXNlck1vZGlmeSgobm9kZSgpLT5p
c1JlYWRPbmx5Q29udHJvbCgpIHx8ICFub2RlKCktPmlzRW5hYmxlZCgpKSA/IFJFQURfT05MWSA6
IFJFQURfV1JJVEVfUExBSU5URVhUX09OTFkpOwogCi0gICAgaWYgKCFlbGVtZW50LT5pc0VuYWJs
ZWQoKSkKKyAgICBpZiAoIW5vZGUoKS0+aXNFbmFibGVkKCkpCiAgICAgICAgIHRleHRCbG9ja1N0
eWxlLT5zZXRDb2xvcihkaXNhYmxlZFRleHRDb2xvcih0ZXh0QmxvY2tTdHlsZS0+Y29sb3IoKSwg
c3RhcnRTdHlsZS0+YmFja2dyb3VuZENvbG9yKCkpKTsKIH0KIApAQCAtMTM5LDggKzEzNyw3IEBA
IGludCBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2NrV2lkdGgoKSAKIAogdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewotICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obm9k
ZSgpKTsKLSAgICBtX2lubmVyVGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+c2V0VXNlck1vZGlm
eShlbGVtZW50LT5pc1JlYWRPbmx5Q29udHJvbCgpIHx8IGVsZW1lbnQtPmRpc2FibGVkKCkgPyBS
RUFEX09OTFkgOiBSRUFEX1dSSVRFX1BMQUlOVEVYVF9PTkxZKTsKKyAgICBtX2lubmVyVGV4dC0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+c2V0VXNlck1vZGlmeSgobm9kZSgpLT5pc1JlYWRPbmx5Q29u
dHJvbCgpIHx8ICFub2RlKCktPmlzRW5hYmxlZCgpKSA/IFJFQURfT05MWSA6IFJFQURfV1JJVEVf
UExBSU5URVhUX09OTFkpOyAKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJU
ZXh0VmFsdWUoY29uc3QgU3RyaW5nJiBpbm5lclRleHRWYWx1ZSkKQEAgLTE3Myw3ICsxNzAsNyBA
QCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZXRJbm5lclRleHRWYWx1CiAgICAgICAgIG1fdXNl
ckVkaXRlZCA9IGZhbHNlOwogICAgIH0KIAotICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqPihub2RlKCkpLT5zZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcigpOworICAgIGZvcm1D
b250cm9sRWxlbWVudCgpLT5zZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcigpOwogfQogCiB2b2lkIFJl
bmRlclRleHRDb250cm9sOjpzZXRVc2VyRWRpdGVkKGJvb2wgaXNVc2VyRWRpdGVkKQpAQCAtNTA1
LDEwICs1MDIsOCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpzZWxlY3Rpb25DaGFuZ2VkCiAg
ICAgY2FjaGVTZWxlY3Rpb24oc2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKCkpOwogCiAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYg
KGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpICYmIHVzZXJUcmlnZ2VyZWQpIHsKLSAgICAg
ICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAgICAgICAgIGVsZW1lbnQtPmRpc3Bh
dGNoRXZlbnRGb3JUeXBlKGV2ZW50TmFtZXMoKS5zZWxlY3RFdmVudCwgdHJ1ZSwgZmFsc2UpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSAmJiB1
c2VyVHJpZ2dlcmVkKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4o
bm9kZSgpKS0+ZGlzcGF0Y2hFdmVudEZvclR5cGUoZXZlbnROYW1lcygpLnNlbGVjdEV2ZW50LCB0
cnVlLCBmYWxzZSk7CiAgICAgfQogfQogCkBAIC01ODQsNCArNTc5LDEzIEBAIEhUTUxFbGVtZW50
KiBSZW5kZXJUZXh0Q29udHJvbDo6aW5uZXJUZXgKICAgICByZXR1cm4gbV9pbm5lclRleHQuZ2V0
KCk7CiB9CiAKK0Zvcm1Db250cm9sRWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2w6OmZvcm1Db250
cm9sRWxlbWVudCgpIGNvbnN0Cit7CisgICAgaWYgKG5vZGUoKS0+aXNIVE1MRWxlbWVudCgpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG5vZGUo
KSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHJldmlzaW9uIDM5
NDk0KQorKysgcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGb3JtQ29udHJv
bEVsZW1lbnQ7CiBjbGFzcyBTZWxlY3Rpb247CiBjbGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVu
dDsKIGNsYXNzIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDsKQEAgLTEwNSw2ICsxMDYsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFRleHRJdGVyYXRvcjsKICAgICBIVE1MRWxl
bWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwogCisgICAgRm9ybUNvbnRyb2xFbGVtZW50
KiBmb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgZmlu
aXNoVGV4dChWZWN0b3I8VUNoYXI+JikgY29uc3Q7CiAKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24gMzk0OTQpCisrKyByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNCArMjQs
MTggQEAKIAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRl
ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKwogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OlJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJv
bChub2RlKQogeworICAgIEFTU0VSVChub2RlLT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSk7CiB9
CiAKIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoKQpAQCAtNDMsMTQgKzQ3LDEzIEBAIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVu
ZGVyVGV4dEMKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXNDaGFu
Z2VkKCkKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQoKTsKKyAg
ICBmb3JtQ29udHJvbEVsZW1lbnQoKS0+c2V0VmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOwog
Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqPihub2RlKCkpOwotICAgIGVsZW1lbnQtPnNldFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKKyAgICBpZiAoIW5vZGUoKS0+Zm9jdXNlZCgpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoZWxlbWVudC0+Zm9jdXNlZCgpKSB7Ci0gICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPnRleHRE
aWRDaGFuZ2VJblRleHRBcmVhKGVsZW1lbnQpOwotICAgIH0KKyAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnRleHREaWRDaGFuZ2VJblRl
eHRBcmVhKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6bGF5b3V0KCkKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiAzOTQ5NCkKKysrIHJlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKIAotdXNpbmcgc3RkOjptYXg7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDYgKzU0LDcgQEAgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpSZW5kZXJUZXh0QwogICAgICwgbV9zZWFyY2hFdmVudFRpbWVyKHRoaXMsICZSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlYXJjaEV2ZW50VGltZXJGaXJlZCkKICAgICAsIG1f
c2VhcmNoUG9wdXAoMCkKIHsKKyAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykp
OwogfQogCiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUoKQpAQCAtNDc1LDcgKzQ3Niw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjp1cGRhdGUKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlu
bmVyVGV4dEVsZW1lbnQoKS0+c2V0SW5uZXJUZXh0KGVsZW1lbnQtPmdldEF0dHJpYnV0ZShwbGFj
ZWhvbGRlckF0dHIpLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICB9IGVsc2Ug
aWYgKCFlbGVtZW50LT52YWx1ZU1hdGNoZXNSZW5kZXJlcigpIHx8IHBsYWNlaG9sZGVyVmlzaWJp
bGl0eVNob3VsZENoYW5nZSkKKyAgICB9IGVsc2UgaWYgKCFmb3JtQ29udHJvbEVsZW1lbnQoKS0+
dmFsdWVNYXRjaGVzUmVuZGVyZXIoKSB8fCBwbGFjZWhvbGRlclZpc2liaWxpdHlTaG91bGRDaGFu
Z2UpCiAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKGVsZW1lbnQtPnZhbHVlKCkpOwogCiAgICAg
aWYgKG1fc2VhcmNoUG9wdXBJc1Zpc2libGUpCg==
</data>
<flag name="review"
          id="12441"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>