<?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>76904</bug_id>
          
          <creation_ts>2012-01-24 04:44:55 -0800</creation_ts>
          <short_desc>Reduce internal use of CSSStyleDeclaration base class</short_desc>
          <delta_ts>2012-02-03 09:38: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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>77745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541246</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-24 04:44:55 -0800</bug_when>
    <thetext>Internally WebCore should use the more specific CSSMutableStyleDeclaration and CSSComputedStyleDeclaration types. The CSSStyleDeclaration base should be used in the DOM API functions only. This will make it easier to separate internal style sheet implementation from the DOM in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541257</commentid>
    <comment_count>1</comment_count>
      <attachid>123716</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-24 05:04:34 -0800</bug_when>
    <thetext>Created attachment 123716
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541259</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 05:07:26 -0800</bug_when>
    <thetext>Attachment 123716 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/rendering/RenderLayer.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541335</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-24 08:09:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/105739</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123716</attachid>
            <date>2012-01-24 05:04:34 -0800</date>
            <delta_ts>2012-01-24 07:16:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>reduce-cssstyledeclaration-use-2.patch</filename>
            <type>text/plain</type>
            <size>22560</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTcyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAxLTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgaW50ZXJuYWwgdXNl
IG9mIENTU1N0eWxlRGVjbGFyYXRpb24gYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlcm5hbGx5IFdlYkNvcmUgc2hvdWxkIHVzZSB0
aGUgbW9yZSBzcGVjaWZpYyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiBhbmQgQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uIHR5cGVzLgorICAgICAgICBUaGUgQ1NTU3R5bGVEZWNsYXJhdGlv
biBiYXNlIHNob3VsZCBiZSB1c2VkIGluIHRoZSBET00gQVBJIGZ1bmN0aW9ucyBvbmx5LiBUaGlz
IHdpbGwgbWFrZSBpdCBlYXNpZXIgdG8gc2VwYXJhdGUgCisgICAgICAgIGludGVybmFsIHN0eWxl
IHNoZWV0IGltcGxlbWVudGF0aW9uIGZyb20gdGhlIERPTSBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICAKKyAgICAgICAgLSBTd2l0Y2ggQ1NTU3R5bGVEZWNsYXJhdGlvbiAtPiBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiB3aGVyZSBmZWFzaWJsZQorICAgICAgICAtIFVzZSBTdHlsZWRFbGVtZW50
OjplbnN1cmVJbmxpbmVTdHlsZURlY2woKSBpbnN0ZWFkIG9mIEVsZW1lbnQ6OnN0eWxlKCkgKHdo
aWNoIGlzIGEgRE9NIEFQSSBmdW5jdGlvbikKKyAgICAgICAgLSBSZW1vdmUgQXR0cmlidXRlOjpz
dHlsZSgpIHdoaWNoIGxvb2tzIGxpa2UgYSBET00gQVBJIGZ1bmN0aW9uIGJ1dCBpcyBub3QgZXhw
b3NlZC4KKworICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUpOgorICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpz
dHlsZSk6CisgICAgICAgICogZG9tL0F0dHJpYnV0ZS5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRFcXVpdmFsZW50Ojpwcm9wZXJ0eUV4
aXN0c0luU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRFcXVpdmFsZW50Ojp2
YWx1ZUlzUHJlc2VudEluU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHREZWNvcmF0
aW9uRXF1aXZhbGVudDo6cHJvcGVydHlFeGlzdHNJblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJ
blN0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
d3JhcFdpdGhTdHlsZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcpOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVy
dHlNaXNzaW5nT3JFcXVhbFRvTm9uZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFy
cmF5Rm9yQXR0cmlidXRlU3R5bGVzKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Vy
aWFsaXplcjo6cmV0cmlldmVSZXNvdXJjZXNGb3JDU1NEZWNsYXJhdGlvbik6CisgICAgICAgICog
cGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVzaXplKToKKyAgICAgICAgKiBz
dmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVt
ZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorCiAyMDEyLTAxLTI0ICBNYXJpbyBTYW5j
aGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWZhY3Rv
ciBHVEsncyBhY2Nlc3NpYmlsaXRpdHkgY29kZSB0byBiZSBtb3JlIG1vZHVsYXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5oCShyZXZp
c2lvbiAxMDU2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29weSgpIGNv
bnN0OwogCisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgeyByZXR1cm4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOyB9CisKICAgICBib29sIHNldFByb3BlcnR5
KGludCBwcm9wZXJ0eUlELCBpbnQgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpIHsgcmV0
dXJuIHNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHRydWUpOyB9CiAg
ICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJZCwgZG91YmxlIHZhbHVlLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpIHsgcmV0
dXJuIHNldFByb3BlcnR5KHByb3BlcnR5SWQsIHZhbHVlLCB1bml0LCBpbXBvcnRhbnQsIHRydWUp
OyB9CiAgICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSkgeyByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgdHJ1ZSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkocmV2aXNp
b24gMTA1NjIwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lkKCkgY29uc3Q7CiAKICAgICAv
LyBBbiBleHRlbnNpb24gdG8gZ2V0IHByZXNlbnRhdGlvbmFsIGluZm9ybWF0aW9uIGZvciBhdHRy
aWJ1dGVzLgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4gbV9hdHRy
aWJ1dGUtPnN0eWxlKCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0
dXJuIG1fYXR0cmlidXRlLT5kZWNsKCk7IH0KIAogICAgIHZvaWQgc2V0U3BlY2lmaWVkKGJvb2wg
c3BlY2lmaWVkKSB7IG1fc3BlY2lmaWVkID0gc3BlY2lmaWVkOyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
QXR0cmlidXRlLmgJKHJldmlzaW9uIDEwNTYyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
aWJ1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksNiBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGNsb25lKCkgY29uc3Q7CiAKLSAgICAvLyBBbiBleHRl
bnNpb24gdG8gZ2V0IHRoZSBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgcHJlc2VudGF0aW9uYWwgYXR0
cmlidXRlcy4KLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGVEZWNsLmdldCgpOyB9CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24q
IGRlY2woKSBjb25zdCB7IHJldHVybiBtX3N0eWxlRGVjbC5nZXQoKTsgfQogICAgIHZvaWQgc2V0
RGVjbChQYXNzUmVmUHRyPENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uPiBkZWNsKSB7IG1f
c3R5bGVEZWNsID0gZGVjbDsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDEwNTYyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3NTMsNyArMzc1Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKGMKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKFNDUk9MTF9MSVNURU5FUik7CiB9
CiAKLUNTU1N0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmKQorQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50
OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVy
biAwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEwNTYyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBBdHRy
OwogY2xhc3MgQ0RBVEFTZWN0aW9uOworY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTU3R5bGVTZWxlY3RvcjsKIGNs
YXNzIENTU1N0eWxlU2hlZXQ7CkBAIC03ODIsNyArNzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7
IG1fbXV0YXRpb25PYnNlcnZlclR5cGVzIHw9IHR5cGVzOyB9CiAjZW5kaWYKIAotICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIGdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cHNldWRvRWx0KTsKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZ2V0T3ZlcnJpZGVT
dHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpOwogCiAgICAgaW50IG5vZGVB
YnNJbmRleChOb2RlKik7CiAgICAgTm9kZSogbm9kZVdpdGhBYnNJbmRleChpbnQgYWJzSW5kZXgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2aXNpb24g
MTA1NjIwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxF
bGVtZW50RXF1aXZhbGVudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuICFtX3RhZ05hbWUgfHwgZWxlbWVudC0+aGFz
VGFnTmFtZSgqbV90YWdOYW1lKTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBwcm9wZXJ0eUV4aXN0c0lu
U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN0eWxlICYm
IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgdmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9u
KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHByb3BlcnR5RXhpc3RzSW5TdHlsZShDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN0eWxlICYmIHN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhZGRUb1N0eWxlKEVsZW1lbnQqLCBFZGl0aW5n
U3R5bGUqKSBjb25zdDsKIAogcHJvdGVjdGVkOgpAQCAtMTU0LDcgKzE1NCw3IEBAIEhUTUxFbGVt
ZW50RXF1aXZhbGVudDo6SFRNTEVsZW1lbnRFcXVpdmEKICAgICBBU1NFUlQocHJpbWl0aXZlVmFs
dWUgIT0gQ1NTVmFsdWVJbnZhbGlkKTsKIH0KIAotYm9vbCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6
OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSkgY29uc3QKK2Jvb2wgSFRNTEVsZW1lbnRFcXVpdmFsZW50Ojp2YWx1ZUlzUHJl
c2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IHN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShtX3Byb3BlcnR5SUQpOwogICAgIHJldHVybiBtYXRjaGVzKGVsZW1l
bnQpICYmIHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSktPmdldElkZW50KCkgPT0gbV9wcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKTsKQEAgLTE3MSw4ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQo
cHJpbWl0aXZlVmFsdWUsIHRhZ05hbWUpKTsKICAgICB9Ci0gICAgdmlydHVhbCBib29sIHByb3Bl
cnR5RXhpc3RzSW5TdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIHZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiwgQ1NTU3R5bGVEZWNsYXJhdGlv
biopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwcm9wZXJ0eUV4aXN0c0luU3R5bGUoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVJc1By
ZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQoaW50IHByaW1p
dGl2ZVZhbHVlLCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKQEAgLTE4NCwxMiArMTg0
LDEyIEBAIEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQ6OkhUTUxUZXh0RGUKIHsKIH0KIAot
Ym9vbCBIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50Ojpwcm9wZXJ0eUV4aXN0c0luU3R5bGUo
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0Citib29sIEhUTUxUZXh0RGVjb3JhdGlv
bkVxdWl2YWxlbnQ6OnByb3BlcnR5RXhpc3RzSW5TdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpIHx8IHN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pOwogfQogCi1ib29s
IEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVt
ZW50KiBlbGVtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QKK2Jvb2wgSFRN
TFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQq
IGVsZW1lbnQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QKIHsKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHN0eWxlVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKICAgICBpZiAoIXN0
eWxlVmFsdWUpCkBAIC0yMTAsNyArMjEwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXRjaGVz
KGNvbnN0IEVsZW1lbnQqIGVsZW0pIGNvbnN0IHsgcmV0dXJuIEhUTUxFbGVtZW50RXF1aXZhbGVu
dDo6bWF0Y2hlcyhlbGVtKSAmJiBlbGVtLT5oYXNBdHRyaWJ1dGUobV9hdHRyTmFtZSk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCB2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCosIENTU1N0eWxlRGVj
bGFyYXRpb24qKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVJc1ByZXNlbnRJblN0eWxl
KEVsZW1lbnQqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBhZGRUb1N0eWxlKEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGF0dHJpYnV0ZVZhbHVlQXNDU1NWYWx1ZShFbGVt
ZW50KikgY29uc3Q7CiAgICAgaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX2F0dHJOYW1lOyB9CkBAIC0yMzMsNyArMjMzLDcgQEAgSFRN
TEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OkhUTUxBdHRyaWJ1dGVFcQogewogfQogCi1ib29sIEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVu
dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0Citib29sIEhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCk7CiAgICAgUmVmUHRy
PENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9w
ZXJ0eUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDEwNTYy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc0NywxMiArMjc0NywxMCBAQCB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0Vs
ZW1lbnQoCiB7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGVsZW1lbnQtPnN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0
eWxlKTsKLSAgICBpZiAoIXN0eWxlKQorICAgIEFTU0VSVChlbGVtZW50LT5pc1N0eWxlZEVsZW1l
bnQoKSk7CisgICAgaWYgKCFlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwotCisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2woKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMTA1NjIwKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShDU1NTdHlsZURlY2xh
cmF0aW9uKiwgaW50IHByb3BlcnR5SUQpOworc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5nT3JF
cXVhbFRvTm9uZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGludCBwcm9wZXJ0eUlEKTsK
IAogY2xhc3MgQXR0cmlidXRlQ2hhbmdlIHsKIHB1YmxpYzoKQEAgLTEyNywxMSArMTI3LDExIEBA
IHB1YmxpYzoKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUq
IHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
KSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAgdm9p
ZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNl
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKLSAgICB2b2lk
IHdyYXBXaXRoU3R5bGVOb2RlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wg
aXNCbG9jayA9IGZhbHNlKTsKKyAgICB2b2lkIHdyYXBXaXRoU3R5bGVOb2RlKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBib29sIGlzQmxvY2sgPSBmYWxzZSk7CiAgICAg
U3RyaW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhcHBlbmRTdHlsZU5v
ZGVPcGVuVGFnKFN0cmluZ0J1aWxkZXImLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQq
LCBib29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVPcGVuVGFn
KFN0cmluZ0J1aWxkZXImLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIERvY3VtZW50Kiwg
Ym9vbCBpc0Jsb2NrID0gZmFsc2UpOwogICAgIGNvbnN0IFN0cmluZyBzdHlsZU5vZGVDbG9zZVRh
Zyhib29sIGlzQmxvY2sgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFRleHQoU3Ry
aW5nQnVpbGRlciYgb3V0LCBUZXh0Kik7CiAgICAgU3RyaW5nIHJlbmRlcmVkVGV4dChjb25zdCBO
b2RlKiwgY29uc3QgUmFuZ2UqKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjp3cmFwV2l0aE5vCiAgICAgICAgIG1fbm9kZXMtPmFwcGVuZChub2RlKTsK
IH0KIAotdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUoQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2Nr
KQordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNC
bG9jaykKIHsKICAgICBTdHJpbmdCdWlsZGVyIG9wZW5UYWc7CiAgICAgYXBwZW5kU3R5bGVOb2Rl
T3BlblRhZyhvcGVuVGFnLCBzdHlsZSwgZG9jdW1lbnQsIGlzQmxvY2spOwpAQCAtMTg0LDcgKzE4
NCw3IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoU3QKICAgICBhcHBl
bmRTdHJpbmcoc3R5bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykpOwogfQogCi12b2lkIFN0eWxlZE1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFN0cmluZ0J1aWxkZXImIG91
dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBp
c0Jsb2NrKQordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3Bl
blRhZyhTdHJpbmdCdWlsZGVyJiBvdXQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzQmxvY2spCiB7CiAgICAgLy8gd3JhcHBpbmdT
dHlsZUZvclNlcmlhbGl6YXRpb24gc2hvdWxkIGhhdmUgcmVtb3ZlZCAtd2Via2l0LXRleHQtZGVj
b3JhdGlvbnMtaW4tZWZmZWN0CiAgICAgQVNTRVJUKHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05v
bmUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsKQEAg
LTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgaW5saW5lIE5vZGUqIGFuY2VzdG9yVG9SZXRhaW5TdHJ1
CiAgICAgcmV0dXJuIGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxv
Y2soY29tbW9uQW5jZXN0b3JCbG9jayk7CiB9CiAKLXN0YXRpYyBib29sIHByb3BlcnR5TWlzc2lu
Z09yRXF1YWxUb05vbmUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGludCBwcm9wZXJ0eUlE
KQorc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUsIGludCBwcm9wZXJ0eUlEKQogewogICAgIGlmICghc3R5bGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkocmV2aXNpb24gMTA1NjIwKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIwLDE0ICs3MjAsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NT
QQogICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPmF0dHJpYnV0ZXMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBhdHRyaWJ1dGVzICYmIGkgPCBhdHRyaWJ1dGVzLT5s
ZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRl
cy0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS0+c3R5bGUoKSkgewot
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXR0clN0eWxlT2JqZWN0ID0gSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIFN0cmluZyBhdHRyaWJ1dGVOYW1l
ID0gYXR0cmlidXRlLT5sb2NhbE5hbWUoKTsKLSAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNT
U0lkKCksIGF0dHJpYnV0ZS0+c3R5bGUoKSwgMCk7Ci0gICAgICAgICAgICBhdHRyU3R5bGVPYmpl
Y3QtPnNldFN0cmluZygibmFtZSIsIGF0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBhdHRyU3R5bGVPYmplY3QtPnNldE9iamVjdCgic3R5bGUiLCBpbnNwZWN0b3JTdHls
ZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpKTsKLSAgICAgICAgICAgIGF0dHJTdHlsZXMtPnB1c2hP
YmplY3QoYXR0clN0eWxlT2JqZWN0LnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFhdHRyaWJ1dGUtPmRlY2woKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBhdHRyU3R5bGVPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOworICAgICAgICBTdHJpbmcgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS0+bG9jYWxO
YW1lKCk7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJ
bnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIGF0dHJpYnV0ZS0+ZGVjbCgp
LCAwKTsKKyAgICAgICAgYXR0clN0eWxlT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiLCBhdHRyaWJ1
dGVOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBhdHRyU3R5bGVPYmplY3QtPnNldE9iamVj
dCgic3R5bGUiLCBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpKTsKKyAgICAg
ICAgYXR0clN0eWxlcy0+cHVzaE9iamVjdChhdHRyU3R5bGVPYmplY3QucmVsZWFzZSgpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gYXR0clN0eWxlcy5yZWxlYXNlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTA1NjIwKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKICNpbmNsdWRl
ICJDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgpAQCAtNDQ1LDcgKzQ0NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHIKICAgICAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gaW5uZXJSYW5nZSA9IGlubmVyRnJhbWUt
PnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgICAgICBSZWZQdHI8Q1NTU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBtX2RvY3VtZW50VW5kZXJNb3VzZS0+Y3JlYXRlQ1NTU3R5
bGVEZWNsYXJhdGlvbigpOworICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvciwgY29sb3Iuc2VyaWFsaXplZCgpLCBmYWxzZSwgZWMpOwogICAgICAgICBpZiAoIWlu
bmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJh
bmdlLmdldCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCShy
ZXZpc2lvbiAxMDU2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw4IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZUZyYW1lKEZyYW0KIAogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVt
ZW50KG5vZGUpOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHByb2Nlc3MgaW4tbGluZSBzdHlsZSBh
cyBpdCBtaWdodCBjb250YWluIHNvbWUgcmVzb3VyY2VzICh0eXBpY2FsbHkgYmFja2dyb3VuZCBp
bWFnZXMpLgotICAgICAgICByZXRyaWV2ZVJlc291cmNlc0ZvckNTU0RlY2xhcmF0aW9uKGVsZW1l
bnQtPnN0eWxlKCkpOworICAgICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCisg
ICAgICAgICAgICByZXRyaWV2ZVJlc291cmNlc0ZvckNTU0RlY2xhcmF0aW9uKHN0YXRpY19jYXN0
PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpOwogCiAgICAgICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKSkgewogICAgICAgICAg
ICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEltYWdl
RWxlbWVudCo+KGVsZW1lbnQpOwpAQCAtMzA1LDcgKzMwNiw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnJldHJpZXZlUmVzb3VyY2VzRm8KICAgICByZXRyaWV2ZVJlc291cmNlc0ZvckNTU0RlY2xh
cmF0aW9uKHJ1bGUtPnN0eWxlKCkpOwogfQogCi12b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2
ZVJlc291cmNlc0ZvckNTU0RlY2xhcmF0aW9uKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRGVj
bGFyYXRpb24pCit2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNlc0ZvckNTU0Rl
Y2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uKQog
ewogICAgIGlmICghc3R5bGVEZWNsYXJhdGlvbikKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAkocmV2aXNpb24gMTA1NjIwKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0
MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZEltYWdlOwotY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbjsKK2NsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwog
Y2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIEZyYW1lOwpA
QCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOwogCiAgICAgdm9pZCBhZGRJbWFnZVRvUmVz
b3VyY2VzKENhY2hlZEltYWdlKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgS1VSTCYpOwotICAgIHZv
aWQgcmV0cmlldmVSZXNvdXJjZXNGb3JDU1NEZWNsYXJhdGlvbihDU1NTdHlsZURlY2xhcmF0aW9u
Kik7CisgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0ZvckNTU0RlY2xhcmF0aW9uKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0ZvckNTU1J1
bGUoQ1NTU3R5bGVSdWxlKik7CiAKICAgICBWZWN0b3I8UmVzb3VyY2U+KiBtX3Jlc291cmNlczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24g
MTA1NjIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogCiAjaW5jbHVkZSAiQ29sdW1uSW5mby5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0
aW9uLmgiCisjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKQEAgLTE3MDUsNyArMTcwNSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShj
b25zdCBQbGF0Zm9ybU0KICAgICAKICAgICBMYXlvdXRTaXplIGRpZmZlcmVuY2UgPSAoY3VycmVu
dFNpemUgKyBuZXdPZmZzZXQgLSBhZGp1c3RlZE9sZE9mZnNldCkuZXhwYW5kZWRUbyhtaW5pbXVt
U2l6ZSkgLSBjdXJyZW50U2l6ZTsKIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0g
ZWxlbWVudC0+c3R5bGUoKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkp
OworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uID0gc3Rh
dGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2wo
KTsKICAgICBib29sIGlzQm94U2l6aW5nQm9yZGVyID0gcmVuZGVyZXItPnN0eWxlKCktPmJveFNp
emluZygpID09IEJPUkRFUl9CT1g7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwpAQCAtMTcxMywy
MyArMTcxNCwyMyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1NCiAg
ICAgaWYgKHJlc2l6ZSAhPSBSRVNJWkVfVkVSVElDQUwgJiYgZGlmZmVyZW5jZS53aWR0aCgpKSB7
CiAgICAgICAgIGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7CiAgICAgICAg
ICAgICAvLyBNYWtlIGltcGxpY2l0IG1hcmdpbnMgZnJvbSB0aGUgdGhlbWUgZXhwbGljaXQgKHNl
ZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0Nz4pLgotICAgICAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgU3RyaW5nOjpu
dW1iZXIocmVuZGVyZXItPm1hcmdpbkxlZnQoKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2Us
IGVjKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0LCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+bWFyZ2luUmlnaHQoKSAvIHpvb21GYWN0b3Ip
ICsgInB4IiwgZmFsc2UsIGVjKTsKKyAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb24tPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgU3RyaW5nOjpudW1iZXIocmVuZGVyZXItPm1h
cmdpbkxlZnQoKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKKyAgICAgICAgICAg
IHN0eWxlRGVjbGFyYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIFN0
cmluZzo6bnVtYmVyKHJlbmRlcmVyLT5tYXJnaW5SaWdodCgpIC8gem9vbUZhY3RvcikgKyAicHgi
LCBmYWxzZSwgZWMpOwogICAgICAgICB9CiAgICAgICAgIExheW91dFVuaXQgYmFzZVdpZHRoID0g
cmVuZGVyZXItPndpZHRoKCkgLSAoaXNCb3hTaXppbmdCb3JkZXIgPyAwIDogcmVuZGVyZXItPmJv
cmRlckFuZFBhZGRpbmdXaWR0aCgpKTsKICAgICAgICAgYmFzZVdpZHRoID0gYmFzZVdpZHRoIC8g
em9vbUZhY3RvcjsKLSAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgs
IFN0cmluZzo6bnVtYmVyKGJhc2VXaWR0aCArIGRpZmZlcmVuY2Uud2lkdGgoKSkgKyAicHgiLCBm
YWxzZSwgZWMpOworICAgICAgICBzdHlsZURlY2xhcmF0aW9uLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCBTdHJpbmc6Om51bWJlcihiYXNlV2lkdGggKyBkaWZmZXJlbmNlLndpZHRoKCkp
ICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICB9CiAKICAgICBpZiAocmVzaXplICE9IFJFU0laRV9I
T1JJWk9OVEFMICYmIGRpZmZlcmVuY2UuaGVpZ2h0KCkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQt
PmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKICAgICAgICAgICAgIC8vIE1ha2UgaW1wbGljaXQg
bWFyZ2lucyBmcm9tIHRoZSB0aGVtZSBleHBsaWNpdCAoc2VlIDxodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3PikuCi0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIFN0cmluZzo6bnVtYmVyKHJlbmRlcmVyLT5tYXJnaW5U
b3AoKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKLSAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgU3RyaW5nOjpudW1iZXIocmVu
ZGVyZXItPm1hcmdpbkJvdHRvbSgpIC8gem9vbUZhY3RvcikgKyAicHgiLCBmYWxzZSwgZWMpOwor
ICAgICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJn
aW5Ub3AsIFN0cmluZzo6bnVtYmVyKHJlbmRlcmVyLT5tYXJnaW5Ub3AoKSAvIHpvb21GYWN0b3Ip
ICsgInB4IiwgZmFsc2UsIGVjKTsKKyAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb24tPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+
bWFyZ2luQm90dG9tKCkgLyB6b29tRmFjdG9yKSArICJweCIsIGZhbHNlLCBlYyk7CiAgICAgICAg
IH0KICAgICAgICAgTGF5b3V0VW5pdCBiYXNlSGVpZ2h0ID0gcmVuZGVyZXItPmhlaWdodCgpIC0g
KGlzQm94U2l6aW5nQm9yZGVyID8gMCA6IHJlbmRlcmVyLT5ib3JkZXJBbmRQYWRkaW5nSGVpZ2h0
KCkpOwogICAgICAgICBiYXNlSGVpZ2h0ID0gYmFzZUhlaWdodCAvIHpvb21GYWN0b3I7Ci0gICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIo
YmFzZUhlaWdodCArIGRpZmZlcmVuY2UuaGVpZ2h0KCkpICsgInB4IiwgZmFsc2UsIGVjKTsKKyAg
ICAgICAgc3R5bGVEZWNsYXJhdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIFN0
cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNlLmhlaWdodCgpKSArICJweCIsIGZh
bHNlLCBlYyk7CiAgICAgfQogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTA1NjIwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MjIsNyArNDIyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVu
dDo6ZwogCiAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lKG51bGxBdG9tLCBuYW1lLCBu
dWxsQXRvbSk7CiAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cmlidXRlTWFwKCktPmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7Ci0gICAgaWYgKCFhdHRyIHx8ICFhdHRyLT5pc01hcHBl
ZEF0dHJpYnV0ZSgpIHx8ICFhdHRyLT5zdHlsZSgpKQorICAgIGlmICghYXR0ciB8fCAhYXR0ci0+
aXNNYXBwZWRBdHRyaWJ1dGUoKSB8fCAhYXR0ci0+ZGVjbCgpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIEF0dHJpYnV0ZSogY3NzU1ZHQXR0ciA9IGF0dHI7CkBAIC00MzcsNyArNDM3LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6ZwogICAgICAgICBpbnQgcHJv
cElkID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUo
Y3NzU1ZHQXR0ci0+bmFtZSgpKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoY3NzU1ZHQXR0ciwg
cHJvcElkLCBjc3NTVkdBdHRyLT52YWx1ZSgpKTsKICAgICB9Ci0gICAgcmV0dXJuIGNzc1NWR0F0
dHItPnN0eWxlKCktPmdldFByb3BlcnR5Q1NTVmFsdWUobmFtZSk7CisgICAgcmV0dXJuIGNzc1NW
R0F0dHItPmRlY2woKS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShuYW1lKTsKIH0KIAogYm9vbCBTVkdT
dHlsZWRFbGVtZW50OjppbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkgY29uc3QK
</data>
<flag name="review"
          id="124813"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>