<?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>39247</bug_id>
          
          <creation_ts>2010-05-17 15:47:03 -0700</creation_ts>
          <short_desc>Move rarely used data members to the rare structures, thus saving memory.</short_desc>
          <delta_ts>2010-05-17 16:35: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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>226950</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-17 15:47:03 -0700</bug_when>
    <thetext>Move rarely used data members to the rare structures, thus saving memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226958</commentid>
    <comment_count>1</comment_count>
      <attachid>56282</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-17 15:59:22 -0700</bug_when>
    <thetext>Created attachment 56282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226959</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-17 15:59:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/7994707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226960</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-17 16:00:24 -0700</bug_when>
    <thetext>Attachment 56282 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/rendering/style/RenderStyle.cpp:382:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/style/RenderStyle.cpp:383:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/style/RenderStyle.cpp:399:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/style/RenderStyle.cpp:465:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 4 in 8 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>226963</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-05-17 16:04:31 -0700</bug_when>
    <thetext>Committed r59629: &lt;http://trac.webkit.org/changeset/59629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226982</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 16:27:30 -0700</bug_when>
    <thetext>A Qt test crashed after this commit:
http://build.webkit.org/results/Qt%20Linux%20Release/r59629%20(11910)/http/tests/misc/font-face-in-multiple-segmented-faces-stderr.txt

It might just be a flaky test though.  Waiting for another roll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226983</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 16:35:38 -0700</bug_when>
    <thetext>Rolled green.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56282</attachid>
            <date>2010-05-17 15:59:22 -0700</date>
            <delta_ts>2010-05-17 16:00:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39247-20100517155920.patch</filename>
            <type>text/plain</type>
            <size>22253</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTYyOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMTAtMDUtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkyNDcKKyAgICAgICAg
TW92ZSByYXJlbHkgdXNlZCBkYXRhIG1lbWJlcnMgdG8gdGhlIHJhcmUgc3RydWN0dXJlcywgdGh1
cyBzYXZpbmcgbWVtb3J5LgorCisgICAgICAgIE1vdmUgcmFyZWx5IHVzZWQgbWVtYmVyIHZhcmlh
YmxlcyBmcm9tIFN0eWxlSW5oZXJpdGVkRGF0YSBhbmQgU3R5bGVWaXN1YWxEYXRhIHRvCisgICAg
ICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEgYW5kIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEs
IG5hbWVseToKKworICAgICAgICBpbmRlbnQsIGN1cnNvckRhdGEsIG1fZWZmZWN0aXZlWm9vbSwg
d2lkb3dzIGFuZCBvcnBoYW5zIG1vdmUgZnJvbSBTdHlsZUluaGVyaXRlZERhdGEgdG8gU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS4KKyAgICAgICAgbV9jb3VudGVySW5jcmVtZW50IGFuZCBtX2NvdW50
ZXJSZXNldCBtb3ZlIGZyb20gU3R5bGVWaXN1YWxEYXRhIHRvIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmFkZEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0
Q3Vyc29yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JM
aXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjp0ZXh0SW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkluaGVyaXRlZEZsYWdzOjplZmZlY3RpdmVab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVy
aXRlZEZsYWdzOjpjb3VudGVySW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRl
ZEZsYWdzOjpjb3VudGVyUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OmN1cnNvcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OndpZG93cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6b3JwaGFucyk6CisgICAgICAgIChXZWJD
b3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0VGV4dEluZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bmhlcml0ZWRGbGFnczo6c2V0RWZmZWN0aXZlWm9vbSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0Q291bnRlckluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6c2V0Q291bnRlclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRl
ZEZsYWdzOjpzZXRXaWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dE9ycGhhbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRl
ZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JEYXRhRXF1aXZhbGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVZpc3VhbERhdGE6Om9wZXJhdG9yPT0pOgorCiAyMDEwLTA1LTE3ICBSb2JlcnQgSG9nYW4g
IDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlz
aW9uIDU5NjI2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDggQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0
eWxlOjpkaWZmKGNvbnN0IAogCiAgICAgaWYgKHJhcmVJbmhlcml0ZWREYXRhLmdldCgpICE9IG90
aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS5nZXQoKSkgewogICAgICAgICBpZiAocmFyZUluaGVyaXRl
ZERhdGEtPmhpZ2hsaWdodCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPmhpZ2hsaWdodCB8
fAorICAgICAgICAgICAgcmFyZUluaGVyaXRlZERhdGEtPmluZGVudCAhPSBvdGhlci0+cmFyZUlu
aGVyaXRlZERhdGEtPmluZGVudCB8fAorICAgICAgICAgICAgcmFyZUluaGVyaXRlZERhdGEtPm1f
ZWZmZWN0aXZlWm9vbSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9v
bSB8fAogICAgICAgICAgICAgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90
aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QgfHwKICAgICAgICAgICAgIHJh
cmVJbmhlcml0ZWREYXRhLT53b3JkQnJlYWsgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT53
b3JkQnJlYWsgfHwKICAgICAgICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLT53b3JkV3JhcCAhPSBv
dGhlci0+cmFyZUluaGVyaXRlZERhdGEtPndvcmRXcmFwIHx8CkBAIC0zOTQsOCArMzk2LDcgQEAg
U3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IAogICAgICAgICAgICAgcmV0
dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGVkLT5p
bmRlbnQgIT0gb3RoZXItPmluaGVyaXRlZC0+aW5kZW50IHx8Ci0gICAgICAgIGluaGVyaXRlZC0+
bGluZV9oZWlnaHQgIT0gb3RoZXItPmluaGVyaXRlZC0+bGluZV9oZWlnaHQgfHwKKyAgICBpZiAo
aW5oZXJpdGVkLT5saW5lX2hlaWdodCAhPSBvdGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodCB8
fAogICAgICAgICBpbmhlcml0ZWQtPmxpc3Rfc3R5bGVfaW1hZ2UgIT0gb3RoZXItPmluaGVyaXRl
ZC0+bGlzdF9zdHlsZV9pbWFnZSB8fAogICAgICAgICBpbmhlcml0ZWQtPmZvbnQgIT0gb3RoZXIt
PmluaGVyaXRlZC0+Zm9udCB8fAogICAgICAgICBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVy
X3NwYWNpbmcgIT0gb3RoZXItPmluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyB8
fApAQCAtNDYxLDExICs0NjIsOCBAQCBTdHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYo
Y29uc3QgCiAgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZU1hcCogbWFwQiA9IG90aGVyLT5yYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVyRGlyZWN0aXZlcy5nZXQoKTsKICAgICBpZiAoISht
YXBBID09IG1hcEIgfHwgKG1hcEEgJiYgbWFwQiAmJiAqbWFwQSA9PSAqbWFwQikpKQogICAgICAg
ICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwotICAgIGlmICh2aXN1YWwtPmNvdW50ZXJJ
bmNyZW1lbnQgIT0gb3RoZXItPnZpc3VhbC0+Y291bnRlckluY3JlbWVudCB8fAotICAgICAgICB2
aXN1YWwtPmNvdW50ZXJSZXNldCAhPSBvdGhlci0+dmlzdWFsLT5jb3VudGVyUmVzZXQpCi0gICAg
ICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7Ci0KLSAgICBpZiAoaW5oZXJpdGVkLT5t
X2VmZmVjdGl2ZVpvb20gIT0gb3RoZXItPmluaGVyaXRlZC0+bV9lZmZlY3RpdmVab29tKQorICAg
IGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVySW5jcmVtZW50ICE9IG90aGVyLT5y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3VudGVySW5jcmVtZW50IHx8CisgICAgICAgIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2NvdW50ZXJSZXNldCAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fY291bnRlclJlc2V0KQogICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5
b3V0OwogCiAgICAgaWYgKChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA9PSAxICYmIG90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eSA8IDEpIHx8CkBAIC01NTMsMjAgKzU1
MSwyMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwKExlbmd0aCB0b3AsIExlCiAKIHZvaWQg
UmVuZGVyU3R5bGU6OmFkZEN1cnNvcihDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBob3RTcG90KQogewotICAgIGlmICghaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhKQot
ICAgICAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVh
dGUoKTsKLSAgICBpbmhlcml0ZWQuYWNjZXNzKCktPmN1cnNvckRhdGEtPmFwcGVuZChDdXJzb3JE
YXRhKGltYWdlLCBob3RTcG90KSk7CisgICAgaWYgKCFyYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+Y3Vyc29yRGF0YSkKKyAgICAgICAgcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCktPmN1cnNv
ckRhdGEgPSBDdXJzb3JMaXN0OjpjcmVhdGUoKTsKKyAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+Y3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEoaW1hZ2UsIGhvdFNwb3QpKTsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q3Vyc29yTGlzdChQYXNzUmVmUHRyPEN1cnNvckxpc3Q+
IG90aGVyKQogewotICAgIGluaGVyaXRlZC5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IG90aGVyOwor
ICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gb3RoZXI7CiB9CiAK
IHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCgpCiB7Ci0gICAgaWYgKGluaGVyaXRl
ZC0+Y3Vyc29yRGF0YSkKLSAgICAgICAgaW5oZXJpdGVkLmFjY2VzcygpLT5jdXJzb3JEYXRhID0g
MDsKKyAgICBpZiAocmFyZUluaGVyaXRlZERhdGEtPmN1cnNvckRhdGEpCisgICAgICAgIHJhcmVJ
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJzb3JEYXRhID0gMDsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6Y2xlYXJDb250ZW50KCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAkocmV2aXNpb24gNTk2MjYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAgcHVibGljOgogICAgIGlu
dCBmb250U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udC5waXhlbFNpemUoKTsg
fQogCiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5j
b2xvcjsgfQotICAgIExlbmd0aCB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5pbmRlbnQ7IH0KKyAgICBMZW5ndGggdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJ
bmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KICAgICBFVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KGluaGVyaXRlZF9mbGFncy5fdGV4dF9h
bGlnbik7IH0KICAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFu
c2Zvcm0pOyB9CiAgICAgaW50IHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zOyB9CkBAIC00NjEsNyArNDYxLDcg
QEAgcHVibGljOgogICAgIGludCBsZXR0ZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkLT5mb250LmxldHRlclNwYWNpbmcoKTsgfQogCiAgICAgZmxvYXQgem9vbSgpIGNvbnN0IHsg
cmV0dXJuIHZpc3VhbC0+bV96b29tOyB9Ci0gICAgZmxvYXQgZWZmZWN0aXZlWm9vbSgpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZC0+bV9lZmZlY3RpdmVab29tOyB9CisgICAgZmxvYXQgZWZmZWN0
aXZlWm9vbSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2VmZmVjdGl2ZVpv
b207IH0KIAogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24pOyB9CiAg
ICAgTGVuZ3RoIGxpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmxpbmVfaGVp
Z2h0OyB9CkBAIC01NzIsOCArNTcyLDggQEAgcHVibGljOgogICAgIEVFbXB0eUNlbGwgZW1wdHlD
ZWxscygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVFbXB0eUNlbGw+KGluaGVyaXRlZF9m
bGFncy5fZW1wdHlfY2VsbHMpOyB9CiAgICAgRUNhcHRpb25TaWRlIGNhcHRpb25TaWRlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUNhcHRpb25TaWRlPihpbmhlcml0ZWRfZmxhZ3MuX2Nh
cHRpb25fc2lkZSk7IH0KIAotICAgIHNob3J0IGNvdW50ZXJJbmNyZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB2aXN1YWwtPmNvdW50ZXJJbmNyZW1lbnQ7IH0KLSAgICBzaG9ydCBjb3VudGVyUmVzZXQo
KSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNvdW50ZXJSZXNldDsgfQorICAgIHNob3J0IGNvdW50
ZXJJbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jb3Vu
dGVySW5jcmVtZW50OyB9CisgICAgc2hvcnQgY291bnRlclJlc2V0KCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY291bnRlclJlc2V0OyB9CiAKICAgICBFTGlzdFN0eWxl
VHlwZSBsaXN0U3R5bGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUxpc3RTdHls
ZVR5cGU+KGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90eXBlKTsgfQogICAgIFN0eWxlSW1h
Z2UqIGxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saXN0X3N0eWxl
X2ltYWdlLmdldCgpOyB9CkBAIC01OTIsMTMgKzU5MiwxMyBAQCBwdWJsaWM6CiAKICAgICBFQ3Vy
c29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJzb3I+KGluaGVyaXRl
ZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogCi0gICAgQ3Vyc29yTGlzdCogY3Vyc29ycygpIGNv
bnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yRGF0YS5nZXQoKTsgfQorICAgIEN1cnNvckxp
c3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+Y3Vyc29yRGF0
YS5nZXQoKTsgfQogCiAgICAgRUluc2lkZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVJbnNpZGVMaW5rPihpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmspOyB9
CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2lz
TGluazsgfQogCi0gICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53
aWRvd3M7IH0KLSAgICBzaG9ydCBvcnBoYW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5v
cnBoYW5zOyB9CisgICAgc2hvcnQgd2lkb3dzKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPndpZG93czsgfQorICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiByYXJl
SW5oZXJpdGVkRGF0YS0+b3JwaGFuczsgfQogICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrSW5zaWRl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVkX2Zs
YWdzLl9wYWdlX2JyZWFrX2luc2lkZSk7IH0KICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0JlZm9y
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQYWdlQnJlYWs+KG5vbmluaGVyaXRlZF9m
bGFncy5fcGFnZV9icmVha19iZWZvcmUpOyB9CiAgICAgRVBhZ2VCcmVhayBwYWdlQnJlYWtBZnRl
cigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQYWdlQnJlYWs+KG5vbmluaGVyaXRlZF9m
bGFncy5fcGFnZV9icmVha19hZnRlcik7IH0KQEAgLTg0OSw3ICs4NDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRCbGVuZGVkRm9udFNpemUoaW50KTsKIAogICAgIHZvaWQgc2V0Q29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGNvbG9yLCB2KSB9Ci0gICAgdm9pZCBz
ZXRUZXh0SW5kZW50KExlbmd0aCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBpbmRlbnQsIHYpIH0K
KyAgICB2b2lkIHNldFRleHRJbmRlbnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgaW5kZW50LCB2KSB9CiAgICAgdm9pZCBzZXRUZXh0QWxpZ24oRVRleHRBbGlnbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbiA9IHY7IH0KICAgICB2b2lkIHNldFRleHRUcmFu
c2Zvcm0oRVRleHRUcmFuc2Zvcm0gdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfdHJhbnNmb3Jt
ID0gdjsgfQogICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChpbnQgdikgeyBp
bmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgfD0gdjsgfQpAQCAtODU4LDcgKzg1OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYpIHsgaW5o
ZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9pZCBzZXRMaW5lSGVpZ2h0KExl
bmd0aCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBsaW5lX2hlaWdodCwgdikgfQogICAgIHZvaWQg
c2V0Wm9vbShmbG9hdCBmKSB7IFNFVF9WQVIodmlzdWFsLCBtX3pvb20sIGYpOyBzZXRFZmZlY3Rp
dmVab29tKGVmZmVjdGl2ZVpvb20oKSAqIHpvb20oKSk7IH0KLSAgICB2b2lkIHNldEVmZmVjdGl2
ZVpvb20oZmxvYXQgZikgeyBTRVRfVkFSKGluaGVyaXRlZCwgbV9lZmZlY3RpdmVab29tLCBmKSB9
CisgICAgdm9pZCBzZXRFZmZlY3RpdmVab29tKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbV9lZmZlY3RpdmVab29tLCBmKSB9CiAKICAgICB2b2lkIHNldFdoaXRlU3BhY2Uo
RVdoaXRlU3BhY2UgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlID0gdjsgfQogCkBA
IC04OTgsOCArODk4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlD
ZWxsIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IHY7IH0KICAgICB2b2lkIHNl
dENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9z
aWRlID0gdjsgfQogCi0gICAgdm9pZCBzZXRDb3VudGVySW5jcmVtZW50KHNob3J0IHYpIHsgU0VU
X1ZBUih2aXN1YWwsIGNvdW50ZXJJbmNyZW1lbnQsIHYpIH0KLSAgICB2b2lkIHNldENvdW50ZXJS
ZXNldChzaG9ydCB2KSB7IFNFVF9WQVIodmlzdWFsLCBjb3VudGVyUmVzZXQsIHYpIH0KKyAgICB2
b2lkIHNldENvdW50ZXJJbmNyZW1lbnQoc2hvcnQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2NvdW50ZXJJbmNyZW1lbnQsIHYpIH0KKyAgICB2b2lkIHNldENvdW50ZXJSZXNl
dChzaG9ydCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fY291bnRlclJlc2V0
LCB2KSB9CiAKICAgICB2b2lkIHNldExpc3RTdHlsZVR5cGUoRUxpc3RTdHlsZVR5cGUgdikgeyBp
bmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZSA9IHY7IH0KICAgICB2b2lkIHNldExpc3RT
dHlsZUltYWdlKFN0eWxlSW1hZ2UqIHYpIHsgaWYgKGluaGVyaXRlZC0+bGlzdF9zdHlsZV9pbWFn
ZSAhPSB2KSBpbmhlcml0ZWQuYWNjZXNzKCktPmxpc3Rfc3R5bGVfaW1hZ2UgPSB2OyB9CkBAIC05
MzcsOCArOTM3LDggQEAgcHVibGljOgogICAgIGludCB6SW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2JveC0+ekluZGV4KCk7IH0KICAgICB2b2lkIHNldFpJbmRleChpbnQgdikgeyBTRVRfVkFSKG1f
Ym94LCBtX2hhc0F1dG9aSW5kZXgsIGZhbHNlKTsgU0VUX1ZBUihtX2JveCwgbV96SW5kZXgsIHYp
IH0KIAotICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHdp
ZG93cywgdyk7IH0KLSAgICB2b2lkIHNldE9ycGhhbnMoc2hvcnQgbykgeyBTRVRfVkFSKGluaGVy
aXRlZCwgb3JwaGFucywgbyk7IH0KKyAgICB2b2lkIHNldFdpZG93cyhzaG9ydCB3KSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgdyk7IH0KKyAgICB2b2lkIHNldE9ycGhhbnMo
c2hvcnQgbykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQogICAg
IHZvaWQgc2V0UGFnZUJyZWFrSW5zaWRlKEVQYWdlQnJlYWsgYikgeyBub25pbmhlcml0ZWRfZmxh
Z3MuX3BhZ2VfYnJlYWtfaW5zaWRlID0gYjsgfQogICAgIHZvaWQgc2V0UGFnZUJyZWFrQmVmb3Jl
KEVQYWdlQnJlYWsgYikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfYmVmb3JlID0g
YjsgfQogICAgIHZvaWQgc2V0UGFnZUJyZWFrQWZ0ZXIoRVBhZ2VCcmVhayBiKSB7IG5vbmluaGVy
aXRlZF9mbGFncy5fcGFnZV9icmVha19hZnRlciA9IGI7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gNTk2MjYpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxNSArMjgsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVJ
bmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEoKQotICAgIDogaW5kZW50KFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQotICAgICwgbGluZV9oZWlnaHQoUmVuZGVyU3R5bGU6
OmluaXRpYWxMaW5lSGVpZ2h0KCkpCisgICAgOiBsaW5lX2hlaWdodChSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVIZWlnaHQoKSkKICAgICAsIGxpc3Rfc3R5bGVfaW1hZ2UoUmVuZGVyU3R5bGU6Omlu
aXRpYWxMaXN0U3R5bGVJbWFnZSgpKQogICAgICwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2xvcigpKQotICAgICwgbV9lZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KQogICAgICwgaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyhSZW5kZXJTdHlsZTo6aW5pdGlhbEhv
cml6b250YWxCb3JkZXJTcGFjaW5nKCkpCiAgICAgLCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKQotICAgICwgd2lkb3dz
KFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCi0gICAgLCBvcnBoYW5zKFJlbmRlclN0eWxl
Ojppbml0aWFsT3JwaGFucygpKQogewogfQogCkBAIC00Niw0MyArNDIsMjQgQEAgU3R5bGVJbmhl
cml0ZWREYXRhOjp+U3R5bGVJbmhlcml0ZWREYXRhKAogCiBTdHlsZUluaGVyaXRlZERhdGE6OlN0
eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pCiAgICAgOiBSZWZD
b3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKQotICAgICwgaW5kZW50KG8uaW5kZW50KQogICAg
ICwgbGluZV9oZWlnaHQoby5saW5lX2hlaWdodCkKICAgICAsIGxpc3Rfc3R5bGVfaW1hZ2Uoby5s
aXN0X3N0eWxlX2ltYWdlKQotICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBm
b250KG8uZm9udCkKICAgICAsIGNvbG9yKG8uY29sb3IpCi0gICAgLCBtX2VmZmVjdGl2ZVpvb20o
by5tX2VmZmVjdGl2ZVpvb20pCiAgICAgLCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKG8uaG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZykKICAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKG8u
dmVydGljYWxfYm9yZGVyX3NwYWNpbmcpCi0gICAgLCB3aWRvd3Moby53aWRvd3MpCi0gICAgLCBv
cnBoYW5zKG8ub3JwaGFucykKIHsKIH0KIAotc3RhdGljIGJvb2wgY3Vyc29yRGF0YUVxdWl2YWxl
bnQoY29uc3QgQ3Vyc29yTGlzdCogYzEsIGNvbnN0IEN1cnNvckxpc3QqIGMyKQotewotICAgIGlm
IChjMSA9PSBjMikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCghYzEgJiYgYzIpIHx8
IChjMSAmJiAhYzIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICgqYzEgPT0g
KmMyKTsKLX0KLQogYm9vbCBTdHlsZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5
bGVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAogewogICAgIHJldHVybgotICAgICAgICBpbmRlbnQg
PT0gby5pbmRlbnQgJiYKICAgICAgICAgbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdodCAmJgog
ICAgICAgICBTdHlsZUltYWdlOjppbWFnZXNFcXVpdmFsZW50KGxpc3Rfc3R5bGVfaW1hZ2UuZ2V0
KCksIG8ubGlzdF9zdHlsZV9pbWFnZS5nZXQoKSkgJiYKLSAgICAgICAgY3Vyc29yRGF0YUVxdWl2
YWxlbnQoY3Vyc29yRGF0YS5nZXQoKSwgby5jdXJzb3JEYXRhLmdldCgpKSAmJgogICAgICAgICBm
b250ID09IG8uZm9udCAmJgogICAgICAgICBjb2xvciA9PSBvLmNvbG9yICYmCi0gICAgICAgIG1f
ZWZmZWN0aXZlWm9vbSA9PSBvLm1fZWZmZWN0aXZlWm9vbSAmJgogICAgICAgICBob3Jpem9udGFs
X2JvcmRlcl9zcGFjaW5nID09IG8uaG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyAmJgotICAgICAg
ICB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyA9PSBvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nICYm
Ci0gICAgICAgIHdpZG93cyA9PSBvLndpZG93cyAmJgotICAgICAgICBvcnBoYW5zID09IG8ub3Jw
aGFuczsKKyAgICAgICAgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gby52ZXJ0aWNhbF9ib3Jk
ZXJfc3BhY2luZzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDU5NjI2KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3R5
bGVJbWFnZTsKLWNsYXNzIEN1cnNvckxpc3Q7CiAKIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlSW5oZXJpdGVkRGF0YT4gewogcHVibGljOgpAQCAtNDks
MjYgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAg
fQogCi0gICAgTGVuZ3RoIGluZGVudDsKICAgICAvLyBjb3VsZCBiZSBwYWNrZWQgaW4gYSBzaG9y
dCBidXQgZG9lc24ndAogICAgIC8vIG1ha2UgYSBkaWZmZXJlbmNlIGN1cnJlbnRseSBiZWNhdXNl
IG9mIHBhZGRpbmcKICAgICBMZW5ndGggbGluZV9oZWlnaHQ7CiAKICAgICBSZWZQdHI8U3R5bGVJ
bWFnZT4gbGlzdF9zdHlsZV9pbWFnZTsKLSAgICBSZWZQdHI8Q3Vyc29yTGlzdD4gY3Vyc29yRGF0
YTsKIAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsKLSAgICAKLSAgICBmbG9hdCBt
X2VmZmVjdGl2ZVpvb207CiAKICAgICBzaG9ydCBob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nOwog
ICAgIHNob3J0IHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOwotICAgIAotICAgIC8vIFBhZ2VkIG1l
ZGlhIHByb3BlcnRpZXMuCi0gICAgc2hvcnQgd2lkb3dzOwotICAgIHNob3J0IG9ycGhhbnM7Ci0g
ICAgCiBwcml2YXRlOgogICAgIFN0eWxlSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlSW5oZXJp
dGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiA1
OTYyNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICA6
IHRleHRTdHJva2VXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTdHJva2VXaWR0aCgpKQog
ICAgICwgdGV4dFNoYWRvdygwKQorICAgICwgaW5kZW50KFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dEluZGVudCgpKQorICAgICwgbV9lZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9v
bSgpKQorICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCisgICAgLCBv
cnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFucygpKQogICAgICwgdGV4dFNlY3VyaXR5
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFNlY3VyaXR5KCkpCiAgICAgLCB1c2VyTW9kaWZ5KFJF
QURfT05MWSkKICAgICAsIHdvcmRCcmVhayhSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRCcmVhaygp
KQpAQCAtNTAsNiArNTQsMTEgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdAogICAgICwgdGV4dEZpbGxDb2xvcihvLnRleHRGaWxsQ29sb3IpCiAgICAgLCB0ZXh0U2hh
ZG93KG8udGV4dFNoYWRvdyA/IG5ldyBTaGFkb3dEYXRhKCpvLnRleHRTaGFkb3cpIDogMCkKICAg
ICAsIGhpZ2hsaWdodChvLmhpZ2hsaWdodCkKKyAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRh
KQorICAgICwgaW5kZW50KG8uaW5kZW50KQorICAgICwgbV9lZmZlY3RpdmVab29tKG8ubV9lZmZl
Y3RpdmVab29tKQorICAgICwgd2lkb3dzKG8ud2lkb3dzKQorICAgICwgb3JwaGFucyhvLm9ycGhh
bnMpCiAgICAgLCB0ZXh0U2VjdXJpdHkoby50ZXh0U2VjdXJpdHkpCiAgICAgLCB1c2VyTW9kaWZ5
KG8udXNlck1vZGlmeSkKICAgICAsIHdvcmRCcmVhayhvLndvcmRCcmVhaykKQEAgLTY4LDYgKzc3
LDE1IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6On5TdHlsZVJhcmVJbmhlcmkKICAgICBkZWxl
dGUgdGV4dFNoYWRvdzsKIH0KIAorc3RhdGljIGJvb2wgY3Vyc29yRGF0YUVxdWl2YWxlbnQoY29u
c3QgQ3Vyc29yTGlzdCogYzEsIGNvbnN0IEN1cnNvckxpc3QqIGMyKQoreworICAgIGlmIChjMSA9
PSBjMikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCghYzEgJiYgYzIpIHx8IChjMSAm
JiAhYzIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICgqYzEgPT0gKmMyKTsK
K30KKwogYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
UmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRleHRTdHJva2VDb2xv
ciA9PSBvLnRleHRTdHJva2VDb2xvcgpAQCAtNzUsNiArOTMsMTEgQEAgYm9vbCBTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogICAgICAgICAmJiB0ZXh0RmlsbENvbG9yID09IG8u
dGV4dEZpbGxDb2xvcgogICAgICAgICAmJiBzaGFkb3dEYXRhRXF1aXZhbGVudChvKQogICAgICAg
ICAmJiBoaWdobGlnaHQgPT0gby5oaWdobGlnaHQKKyAgICAgICAgJiYgY3Vyc29yRGF0YUVxdWl2
YWxlbnQoY3Vyc29yRGF0YS5nZXQoKSwgby5jdXJzb3JEYXRhLmdldCgpKQorICAgICAgICAmJiBp
bmRlbnQgPT0gby5pbmRlbnQKKyAgICAgICAgJiYgbV9lZmZlY3RpdmVab29tID09IG8ubV9lZmZl
Y3RpdmVab29tCisgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93cworICAgICAgICAmJiBvcnBo
YW5zID09IG8ub3JwaGFucwogICAgICAgICAmJiB0ZXh0U2VjdXJpdHkgPT0gby50ZXh0U2VjdXJp
dHkKICAgICAgICAgJiYgdXNlck1vZGlmeSA9PSBvLnVzZXJNb2RpZnkKICAgICAgICAgJiYgd29y
ZEJyZWFrID09IG8ud29yZEJyZWFrCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCShyZXZpc2lvbiA1OTYyNikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTEgKzI3LDEzIEBACiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDdXJzb3JMaXN0OwogY2xhc3MgU2hhZG93RGF0YTsKIAogLy8gVGhpcyBzdHJ1Y3Qg
aXMgZm9yIHJhcmVseSB1c2VkIGluaGVyaXRlZCBDU1MzLCBDU1MyLCBhbmQgV2ViS2l0LXNwZWNp
ZmljIHByb3BlcnRpZXMuCkBAIC01Niw2ICs1OCwxNSBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dE
YXRhKiB0ZXh0U2hhZG93OyAvLyBPdXIgdGV4dCBzaGFkb3cgaW5mb3JtYXRpb24gZm9yIHNoYWRv
d2VkIHRleHQgZHJhd2luZy4KICAgICBBdG9taWNTdHJpbmcgaGlnaGxpZ2h0OyAvLyBBcHBsZS1z
cGVjaWZpYyBleHRlbnNpb24gZm9yIGN1c3RvbSBoaWdobGlnaHQgcmVuZGVyaW5nLgorICAgIAor
ICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOworICAgIExlbmd0aCBpbmRlbnQ7Cisg
ICAgZmxvYXQgbV9lZmZlY3RpdmVab29tOworCisgICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVydGll
cy4KKyAgICBzaG9ydCB3aWRvd3M7CisgICAgc2hvcnQgb3JwaGFuczsKKyAgICAKICAgICB1bnNp
Z25lZCB0ZXh0U2VjdXJpdHkgOiAyOyAvLyBFVGV4dFNlY3VyaXR5CiAgICAgdW5zaWduZWQgdXNl
ck1vZGlmeSA6IDI7IC8vIEVVc2VyTW9kaWZ5IChlZGl0aW5nKQogICAgIHVuc2lnbmVkIHdvcmRC
cmVhayA6IDI7IC8vIEVXb3JkQnJlYWsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiA1OTYyNikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkkKICAgICAsIG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3Io
UmVuZGVyU3R5bGU6OmluaXRpYWxNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKCkpCiAg
ICAgLCBtX2FwcGVhcmFuY2UoUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlKCkpCiAgICAg
LCBtX2JvcmRlckZpdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdCgpKQorICAgICwgbV9j
b3VudGVySW5jcmVtZW50KDApCisgICAgLCBtX2NvdW50ZXJSZXNldCgwKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIG1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9u
KGZhbHNlKQogI2VuZGlmCkBAIC03Nyw2ICs3OSw4IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkkKICAgICAsIG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3Io
by5tYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQogICAgICwgbV9hcHBlYXJhbmNlKG8u
bV9hcHBlYXJhbmNlKQogICAgICwgbV9ib3JkZXJGaXQoby5tX2JvcmRlckZpdCkKKyAgICAsIG1f
Y291bnRlckluY3JlbWVudChvLm1fY291bnRlckluY3JlbWVudCkKKyAgICAsIG1fY291bnRlclJl
c2V0KG8ubV9jb3VudGVyUmVzZXQpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgICwgbV9ydW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24oby5tX3J1bm5pbmdBY2NlbGVyYXRl
ZEFuaW1hdGlvbikKICNlbmRpZgpAQCAtMTMzLDYgKzEzNyw4IEBAIGJvb2wgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6b3BlcmF0b3IKICAgICAgICAgJiYgbWF0Y2hOZWFyZXN0TWFpbEJsb2Nr
cXVvdGVDb2xvciA9PSBvLm1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IKICAgICAgICAg
JiYgbV9hcHBlYXJhbmNlID09IG8ubV9hcHBlYXJhbmNlCiAgICAgICAgICYmIG1fYm9yZGVyRml0
ID09IG8ubV9ib3JkZXJGaXQKKyAgICAgICAgJiYgbV9jb3VudGVySW5jcmVtZW50ID09IG8ubV9j
b3VudGVySW5jcmVtZW50CisgICAgICAgICYmIG1fY291bnRlclJlc2V0ID09IG8ubV9jb3VudGVy
UmVzZXQKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICYmICFtX3J1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbiAmJiAhby5tX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1h
dGlvbgogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCShyZXZpc2lvbiA1OTYyNikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDkgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbWF0Y2hOZWFyZXN0TWFp
bEJsb2NrcXVvdGVDb2xvciA6IDE7IC8vIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9y
LCBGSVhNRTogVGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBlbGltaW5hdGVkLiBJdCBzaG91bGQg
bmV2ZXIgaGF2ZSBiZWVuIGFkZGVkLgogICAgIHVuc2lnbmVkIG1fYXBwZWFyYW5jZSA6IDY7IC8v
IEVBcHBlYXJhbmNlCiAgICAgdW5zaWduZWQgbV9ib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0
CisgICAgCisgICAgc2hvcnQgbV9jb3VudGVySW5jcmVtZW50OworICAgIHNob3J0IG1fY291bnRl
clJlc2V0OworICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBib29s
IG1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uIDogMTsKLSNlbmRpZiAgICAKKyNlbmRpZgog
ICAgIE93blB0cjxTaGFkb3dEYXRhPiBtX2JveFNoYWRvdzsgIC8vIEZvciBib3gtc2hhZG93IGRl
Y29yYXRpb25zLgogICAgIAogICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IG1fYm94UmVmbGVj
dDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAko
cmV2aXNpb24gNTk2MjYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6IGhhc0NsaXAoZmFs
c2UpCiAgICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0
aW9uKCkpCi0gICAgLCBjb3VudGVySW5jcmVtZW50KDApCi0gICAgLCBjb3VudGVyUmVzZXQoMCkK
ICAgICAsIG1fem9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKIHsKIH0KQEAgLTQ0LDgg
KzQyLDYgQEAgU3R5bGVWaXN1YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoY29uc3QgUwogICAgICwg
Y2xpcChvLmNsaXApCiAgICAgLCBoYXNDbGlwKG8uaGFzQ2xpcCkKICAgICAsIHRleHREZWNvcmF0
aW9uKG8udGV4dERlY29yYXRpb24pCi0gICAgLCBjb3VudGVySW5jcmVtZW50KG8uY291bnRlcklu
Y3JlbWVudCkKLSAgICAsIGNvdW50ZXJSZXNldChvLmNvdW50ZXJSZXNldCkKICAgICAsIG1fem9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCShyZXZpc2lvbiA1OTYyNikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4
ICs0MSw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAoIGNsaXAgPT0gby5jbGlw
ICYmCiAgICAgICAgICAgICAgICAgIGhhc0NsaXAgPT0gby5oYXNDbGlwICYmCi0gICAgICAgICAg
ICAgICAgIGNvdW50ZXJJbmNyZW1lbnQgPT0gby5jb3VudGVySW5jcmVtZW50ICYmCi0gICAgICAg
ICAgICAgICAgIGNvdW50ZXJSZXNldCA9PSBvLmNvdW50ZXJSZXNldCAmJgogICAgICAgICAgICAg
ICAgICB0ZXh0RGVjb3JhdGlvbiA9PSBvLnRleHREZWNvcmF0aW9uICYmCiAgICAgICAgICAgICAg
ICAgIG1fem9vbSA9PSBvLm1fem9vbSk7CiAgICAgfQpAQCAtNTIsOSArNTAsNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNDbGlwIDogMTsKICAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbiA6IDQ7
IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50LgogICAg
IAotICAgIHNob3J0IGNvdW50ZXJJbmNyZW1lbnQ7IC8vIG9rLCBzbyB0aGVzZSBhcmUgbm90IHZp
c3VhbCBtb2RlIHNwZWNpZmljCi0gICAgc2hvcnQgY291bnRlclJlc2V0OyAgICAgLy8gY2FuJ3Qg
Z28gdG8gaW5oZXJpdGVkLCBzaW5jZSB0aGVzZSBhcmUgbm90IGluaGVyaXRlZAotCiAgICAgZmxv
YXQgbV96b29tOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="40683"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>