<?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>23942</bug_id>
          
          <creation_ts>2009-02-12 19:08:43 -0800</creation_ts>
          <short_desc>Do final hookup of 3D support</short_desc>
          <delta_ts>2009-02-12 21:11:15 -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>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>23359</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>109604</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-12 19:08:43 -0800</bug_when>
    <thetext>This is for the final connections to enable 3D rendering in WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109605</commentid>
    <comment_count>1</comment_count>
      <attachid>27637</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-12 19:11:52 -0800</bug_when>
    <thetext>Created attachment 27637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109612</commentid>
    <comment_count>2</comment_count>
      <attachid>27637</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-12 21:10:43 -0800</bug_when>
    <thetext>Comment on attachment 27637
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109613</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-12 21:11:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/40964</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27637</attachid>
            <date>2009-02-12 19:11:52 -0800</date>
            <delta_ts>2009-02-12 21:10:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>23942.patch</filename>
            <type>text/plain</type>
            <size>26372</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDk1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDktMDItMTIgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk0MgorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpbmFsIHNldCBvZiBmdW5jdGlvbmFsaXR5IGFkZGVkIHRvIGNvbm5lY3QgdGhl
IDNEIENTUyBUcmFuc2Zvcm0KKyAgICAgICAgbG9naWMgdG8gdGhlIGFjY2VsZXJhdGVkIGNvbXBv
c2l0b3IuIEl0IGlzIGNoZWNrZWQgaW4gdHVybmVkIG9mZi4gV2hlbiB0dXJuZWQKKyAgICAgICAg
b24gaXQgd29ya3MsIGJ1dCBpcyBub3Qgd2VsbCB0ZXN0ZWQuCisKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6
CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogcGFnZS9h
bmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUFuaW1hdGlvblByaXZhdGU6OnVwZGF0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbXBs
aWNpdEFuaW1hdGlvbjo6d2lsbE5lZWRTZXJ2aWNlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6d2lsbE5lZWRTZXJ2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlRyYW5zZm9y
bVZhbHVlTGlzdDo6bWFrZUZ1bmN0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0VmFsdWVGdW5jdGlvbk5hbWVGb3JUcmFuc2Zvcm1PcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphbmltYXRlVHJhbnNmb3Jt
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVw
ZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzVHJhbnNm
b3JtU3R5bGUzRCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzUGVyc3BlY3Rp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3Jt
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2lu
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmhhczNEQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXJGb3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDA5LTAyLTEy
ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbApJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
CShyZXZpc2lvbiA0MDk1MCkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJJbXBsaWNp
dEFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIktleWZyYW1lQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAi
TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlVuaXRCZXppZXIuaCIKQEAgLTE0Nyw3ICsxNDgsNyBAQCBzdGF0aWMg
aW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRGCiAgICAgICAgIHRvVC5ibGVuZChmcm9t
VCwgcHJvZ3Jlc3MpOwogICAgICAgICAKICAgICAgICAgLy8gQXBwZW5kIHRoZSByZXN1bHQKLSAg
ICAgICAgcmVzdWx0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUodG9ULmEoKSwgdG9ULmIoKSwgdG9ULmMoKSwgdG9ULmQoKSwgdG9ULmUoKSwgdG9U
LmYoKSkpOworICAgICAgICByZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRvVCkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtNDI2LDggKzQyNywxMiBAQCBzdGF0aWMgdm9pZCBlbnN1cmVQcm9wZXJ0eU1hcCgpCiAg
ICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjx1bnNp
Z25lZCBzaG9ydD4oQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6b3V0bGlu
ZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCkpOwogICAgICAgICBnUHJvcGVy
dHlXcmFwcGVycy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8aW50PihDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6bGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjpz
ZXRMZXR0ZXJTcGFjaW5nKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxpbnQ+KENTU1Byb3BlcnR5V29yZFNwYWNpbmcsICZSZW5kZXJTdHls
ZTo6d29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcpKTsKKyAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLCAmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlLCAmUmVu
ZGVyU3R5bGU6OnNldFBlcnNwZWN0aXZlKSk7CisgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2luWCwgJlJlbmRlclN0
eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblgpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMt
PmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblksICZSZW5kZXJTdHlsZTo6cGVyc3BlY3RpdmVPcmlnaW5ZLCAmUmVuZGVy
U3R5bGU6OnNldFBlcnNwZWN0aXZlT3JpZ2luWSkpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblgsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWCwgJlJlbmRlclN0
eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5YKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5h
cHBlbmQobmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6
OnNldFRyYW5zZm9ybU9yaWdpblkpKTsKKyAgICAgICAgZ1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVu
ZChuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblosICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5aKSk7CiAgICAgICAgIGdQcm9wZXJ0eVdyYXBwZXJzLT5hcHBlbmQobmV3
IFByb3BlcnR5V3JhcHBlcjxjb25zdCBJbnRTaXplJj4oQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJU
b3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OmJvcmRlclRvcExlZnRSYWRpdXMsICZSZW5kZXJT
dHlsZTo6c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cykpOwogICAgICAgICBnUHJvcGVydHlXcmFwcGVy
cy0+YXBwZW5kKG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgSW50U2l6ZSY+KENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRS
YWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpKTsKICAgICAgICAg
Z1Byb3BlcnR5V3JhcHBlcnMtPmFwcGVuZChuZXcgUHJvcGVydHlXcmFwcGVyPGNvbnN0IEludFNp
emUmPihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJvdHRvbUxlZnRSYWRpdXMsICZSZW5kZXJTdHls
ZTo6Ym9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKSk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwCShyZXZpc2lvbiA0MDk1MCkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q29tcG9zaXRlQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBA
IHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6dXBkYXRlVHIKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBhY2NlbGVyYXRl
ZCBhbmltYXRpb25zIHdlIG5lZWQgdG8gcmV0dXJuIGEgbmV3IFJlbmRlclN0eWxlIHdpdGggdGhl
IF9jdXJyZW50XyB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgcHJvcGVydHks
IHNvIHRoYXQgcmVzdGFydGVkIHRyYW5zaXRpb25zIHVzZSB0aGUgY29ycmVjdCBzdGFydGluZyBw
b2ludC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKEFuaW1hdGlvbkJhc2U6OmFuaW1hdGlvbk9m
UHJvcGVydHlJc0FjY2VsZXJhdGVkKHByb3ApKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChB
bmltYXRpb25CYXNlOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChwcm9wKSAmJiAh
aW1wbEFuaW0tPmlzRmFsbGJhY2tBbmltYXRpbmcoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtb2RpZmllZEN1cnJlbnRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllZEN1cnJlbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShjdXJyZW50U3R5bGUp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cAkocmV2aXNpb24gNDA5NTApCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5p
bWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIGRvdWJsZSBJbXBs
aWNpdEFuaW1hdGlvbjo6d2lsbE5lZWRTZXJ2aWMKICAgICAgICAgCiAgICAgLy8gQSByZXR1cm4g
dmFsdWUgb2YgMCBtZWFucyB3ZSBuZWVkIHNlcnZpY2UuIEJ1dCBpZiB0aGlzIGlzIGFuIGFjY2Vs
ZXJhdGVkIGFuaW1hdGlvbiB3ZSAKICAgICAvLyBvbmx5IG5lZWQgc2VydmljZSBhdCB0aGUgZW5k
IG9mIHRoZSB0cmFuc2l0aW9uLgotICAgIGlmIChhbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVy
YXRlZChtX2FuaW1hdGluZ1Byb3BlcnR5KSkgeworICAgIGlmIChhbmltYXRpb25PZlByb3BlcnR5
SXNBY2NlbGVyYXRlZChtX2FuaW1hdGluZ1Byb3BlcnR5KSAmJiAhaXNGYWxsYmFja0FuaW1hdGlu
ZygpKSB7CiAgICAgICAgIGJvb2wgaXNMb29waW5nOwogICAgICAgICBnZXRUaW1lVG9OZXh0RXZl
bnQodCwgaXNMb29waW5nKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tl
eWZyYW1lQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gNDA5NTApCisrKyBXZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcg
KzM1Nyw3IEBAIGRvdWJsZSBLZXlmcmFtZUFuaW1hdGlvbjo6d2lsbE5lZWRTZXJ2aWMKICAgICBi
b29sIGFjY2VsZXJhdGVkUHJvcGVydGllc09ubHkgPSB0cnVlOwogICAgIAogICAgIGZvciAoSGFz
aFNldDxpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVzLmJlZ2luUHJvcGVydGll
cygpOyBpdCAhPSBlbmRQcm9wZXJ0aWVzOyArK2l0KSB7Ci0gICAgICAgIGlmICghYW5pbWF0aW9u
T2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQoKml0KSkgeworICAgICAgICBpZiAoIWFuaW1hdGlvbk9m
UHJvcGVydHlJc0FjY2VsZXJhdGVkKCppdCkgfHwgaXNGYWxsYmFja0FuaW1hdGluZygpKSB7CiAg
ICAgICAgICAgICBhY2NlbGVyYXRlZFByb3BlcnRpZXNPbmx5ID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiA0MDk1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsMTAg
QEAgdm9pZCBHcmFwaGljc0xheWVyOjpUcmFuc2Zvcm1WYWx1ZUxpc3Q6OgogICAgICAgICBsaXN0
W2pdID0gdHlwZTsKICAgICAgICAgCiAgICAgICAgIC8vIGlmIHRoaXMgaXMgYSByb3RhdGlvbiBl
bnRyeSwgd2UgbmVlZCB0byBzZWUgaWYgYW55IGFuZ2xlIGRpZmZlcmVuY2VzIGFyZSA+PSAxODAg
ZGVnCi0gICAgICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFKSB7Cisg
ICAgICAgIGlmICh0eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1ggfHwKKyAgICAg
ICAgICAgIHR5cGUgPT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWSB8fAorICAgICAgICAg
ICAgdHlwZSA9PSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9aIHx8CisgICAgICAgICAgICB0
eXBlID09IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEKSB7CiAgICAgICAgICAgICBsYXN0
Um90QW5nbGUgPSBzdGF0aWNfY2FzdDxSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihmaXJzdFZh
bC0+b3BlcmF0aW9ucygpLmF0KGopLmdldCgpKS0+YW5nbGUoKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKG1heFJvdEFuZ2xlIDwgMCkKQEAgLTUwOCw5ICs1MTEsMTAgQEAgdm9pZCBH
cmFwaGljc0xheWVyOjpkdW1wUHJvcGVydGllcyhUZXh0UwogICAgIGlmIChtX3RyYW5zZm9ybS5p
c0lkZW50aXR5KCkpCiAgICAgICAgIHRzIDw8ICJpZGVudGl0eSI7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHRzIDw8ICJbIiA8PCBtX3RyYW5zZm9ybS5hKCkgPDwgIiAiIDw8IG1fdHJhbnNmb3JtLmIo
KSA8PCAiXSAiOwotICAgICAgICB0cyA8PCAiWyIgPDwgbV90cmFuc2Zvcm0uYygpIDw8ICIgIiA8
PCBtX3RyYW5zZm9ybS5kKCkgPDwgIl0gIjsKLSAgICAgICAgdHMgPDwgIlsiIDw8IG1fdHJhbnNm
b3JtLmUoKSA8PCAiICIgPDwgbV90cmFuc2Zvcm0uZigpIDw8ICJdICI7CisgICAgICAgIHRzIDw8
ICJbIiA8PCBtX3RyYW5zZm9ybS5tMTEoKSA8PCAiICIgPDwgbV90cmFuc2Zvcm0ubTEyKCkgPDwg
IiAiIDw8IG1fdHJhbnNmb3JtLm0xMygpIDw8ICIgIiA8PCBtX3RyYW5zZm9ybS5tMTQoKSA8PCAi
XSAiOworICAgICAgICB0cyA8PCAiWyIgPDwgbV90cmFuc2Zvcm0ubTIxKCkgPDwgIiAiIDw8IG1f
dHJhbnNmb3JtLm0yMigpIDw8ICIgIiA8PCBtX3RyYW5zZm9ybS5tMjMoKSA8PCAiICIgPDwgbV90
cmFuc2Zvcm0ubTI0KCkgPDwgIl0gIjsKKyAgICAgICAgdHMgPDwgIlsiIDw8IG1fdHJhbnNmb3Jt
Lm0zMSgpIDw8ICIgIiA8PCBtX3RyYW5zZm9ybS5tMzIoKSA8PCAiICIgPDwgbV90cmFuc2Zvcm0u
bTMzKCkgPDwgIiAiIDw8IG1fdHJhbnNmb3JtLm0zNCgpIDw8ICJdICI7CisgICAgICAgIHRzIDw8
ICJbIiA8PCBtX3RyYW5zZm9ybS5tNDEoKSA8PCAiICIgPDwgbV90cmFuc2Zvcm0ubTQyKCkgPDwg
IiAiIDw8IG1fdHJhbnNmb3JtLm00MygpIDw8ICIgIiA8PCBtX3RyYW5zZm9ybS5tNDQoKSA8PCAi
XSI7CiAgICAgfQogICAgIHRzIDw8ICIpXG4iOwogCkBAIC01MTksOSArNTIzLDEwIEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFMKICAgICBpZiAobV9jaGlsZHJlblRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgIHRzIDw8ICJpZGVudGl0eSI7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIHRzIDw8ICJbIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLmEoKSA8PCAiICIg
PDwgbV9jaGlsZHJlblRyYW5zZm9ybS5iKCkgPDwgIl0gIjsKLSAgICAgICAgdHMgPDwgIlsiIDw8
IG1fY2hpbGRyZW5UcmFuc2Zvcm0uYygpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLmQo
KSA8PCAiXSAiOwotICAgICAgICB0cyA8PCAiWyIgPDwgbV9jaGlsZHJlblRyYW5zZm9ybS5lKCkg
PDwgIiAiIDw8IG1fY2hpbGRyZW5UcmFuc2Zvcm0uZigpIDw8ICJdICI7CisgICAgICAgIHRzIDw8
ICJbIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0xMSgpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJh
bnNmb3JtLm0xMigpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0xMygpIDw8ICIgIiA8
PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0xNCgpIDw8ICJdICI7CisgICAgICAgIHRzIDw8ICJbIiA8
PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0yMSgpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3Jt
Lm0yMigpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0yMygpIDw8ICIgIiA8PCBtX2No
aWxkcmVuVHJhbnNmb3JtLm0yNCgpIDw8ICJdICI7CisgICAgICAgIHRzIDw8ICJbIiA8PCBtX2No
aWxkcmVuVHJhbnNmb3JtLm0zMSgpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0zMigp
IDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm0zMygpIDw8ICIgIiA8PCBtX2NoaWxkcmVu
VHJhbnNmb3JtLm0zNCgpIDw8ICJdICI7CisgICAgICAgIHRzIDw8ICJbIiA8PCBtX2NoaWxkcmVu
VHJhbnNmb3JtLm00MSgpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm00MigpIDw8ICIg
IiA8PCBtX2NoaWxkcmVuVHJhbnNmb3JtLm00MygpIDw8ICIgIiA8PCBtX2NoaWxkcmVuVHJhbnNm
b3JtLm00NCgpIDw8ICJdIjsKICAgICB9CiAgICAgdHMgPDwgIilcbiI7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0JKHJldmlz
aW9uIDQwOTUwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXll
ckNBLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJBbmltYXRp
b24uaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ1N0cmluZy5oIgor
I2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBv
cnQgIkltYWdlLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTE2LDkgKzExNywy
NCBAQCBzdGF0aWMgTlNTdHJpbmcqIGNvbnN0IFdlYkFuaW1hdGlvbkNTU1ByCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotaW5saW5lIHZvaWQgY29weVRyYW5zZm9ybShDQVRyYW5zZm9ybTNEJiB0
b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCitzdGF0aWMgaW5saW5lIHZvaWQg
Y29weVRyYW5zZm9ybShDQVRyYW5zZm9ybTNEJiB0b1QzRCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpCiB7Ci0gICAgdG9UM0QgPSBDQVRyYW5zZm9ybTNETWFrZUFmZmluZVRyYW5zZm9y
bSh0KTsKKyAgICB0b1QzRC5tMTEgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTExKCkpOwor
ICAgIHRvVDNELm0xMiA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMTIoKSk7CisgICAgdG9U
M0QubTEzID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0xMygpKTsKKyAgICB0b1QzRC5tMTQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTE0KCkpOworICAgIHRvVDNELm0yMSA9IG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQodC5tMjEoKSk7CisgICAgdG9UM0QubTIyID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh0Lm0yMigpKTsKKyAgICB0b1QzRC5tMjMgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHQubTIzKCkpOworICAgIHRvVDNELm0yNCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5t
MjQoKSk7CisgICAgdG9UM0QubTMxID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zMSgpKTsK
KyAgICB0b1QzRC5tMzIgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQubTMyKCkpOworICAgIHRv
VDNELm0zMyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodC5tMzMoKSk7CisgICAgdG9UM0QubTM0
ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh0Lm0zNCgpKTsKKyAgICB0b1QzRC5tNDEgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHQubTQxKCkpOworICAgIHRvVDNELm00MiA9IG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQodC5tNDIoKSk7CisgICAgdG9UM0QubTQzID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdCh0Lm00MygpKTsKKyAgICB0b1QzRC5tNDQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHQu
bTQ0KCkpOwogfQogCiBzdGF0aWMgTlNWYWx1ZSogZ2V0VHJhbnNmb3JtRnVuY3Rpb25WYWx1ZShj
b25zdCBHcmFwaGljc0xheWVyOjpUcmFuc2Zvcm1WYWx1ZSYgdHJhbnNmb3JtVmFsdWUsIHNpemVf
dCBpbmRleCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHRyYW5zZm9ybVR5cGUpCkBAIC0xNzIsMTYgKzE4OCwyNCBAQCBzdGF0aWMgTlNTdHJp
bmcqIGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yCiB7CiAgICAgLy8gVXNlIGxpdGVyYWwgc3RyaW5n
cyB0byBhdm9pZCBsaW5rLXRpbWUgZGVwZW5kZW5jeSBvbiB0aG9zZSBzeW1ib2xzLgogICAgIHN3
aXRjaCAodHJhbnNmb3JtVHlwZSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1g6CisgICAgICAgICAgICByZXR1cm4gQCJyb3RhdGVYIjsgLy8ga0NBVmFsdWVGdW5j
dGlvblJvdGF0ZVg7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToK
KyAgICAgICAgICAgIHJldHVybiBAInJvdGF0ZVkiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRl
WTsKICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKICAgICAgICAgICAg
IHJldHVybiBAInJvdGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uUm90YXRlWjsKICAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CiAgICAgICAgICAgICByZXR1cm4gQCJz
Y2FsZVgiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uU2NhbGVYOwogICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfWToKICAgICAgICAgICAgIHJldHVybiBAInNjYWxlWSI7IC8vIGtD
QVZhbHVlRnVuY3Rpb25TY2FsZVk7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9aOgorICAgICAgICAgICAgcmV0dXJuIEAic2NhbGVaIjsgLy8ga0NBVmFsdWVGdW5jdGlv
blNjYWxlWjsKICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgog
ICAgICAgICAgICAgcmV0dXJuIEAidHJhbnNsYXRlWCI7IC8vIGtDQVZhbHVlRnVuY3Rpb25UcmFu
c2xhdGVYOwogICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CiAg
ICAgICAgICAgICByZXR1cm4gQCJ0cmFuc2xhdGVZIjsgLy8ga0NBVmFsdWVGdW5jdGlvblRyYW5z
bGF0ZVk7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAg
ICAgICAgICAgIHJldHVybiBAInRyYW5zbGF0ZVoiOyAvLyBrQ0FWYWx1ZUZ1bmN0aW9uVHJhbnNs
YXRlWjsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQpA
QCAtODgzLDggKzkwNyw5IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphbmltYXRlVHJhbnNmb3Jt
KGMKICAgICB2YWx1ZUxpc3QubWFrZUZ1bmN0aW9uTGlzdChmdW5jdGlvbkxpc3QsIGlzVmFsaWQs
IGhhc0JpZ1JvdGF0aW9uKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIHNvZnR3
YXJlIGFuaW1hdGlvbiBpZiB3ZSBkb24ndCBoYXZlIHNldFZhbHVlRnVuY3Rpb246LCBhbmQKLSAg
ICAvLyB3ZSBoYXZlIGEgPiAxODBkZWcgcm90YXRpb24gbWl4ZWQgd2l0aCBhbm90aGVyIHRyYW5z
Zm9ybS4KLSAgICBpZiAoaGFzQmlnUm90YXRpb24gJiYgZnVuY3Rpb25MaXN0LnNpemUoKSA+IDEg
JiYgIWNhVmFsdWVGdW5jdGlvblN1cHBvcnRlZCgpKQorICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8g
YW5pbWF0ZSBlYWNoIGluY29taW5nIHRyYW5zZm9ybSBmdW5jdGlvbiBzZXBhcmF0ZWx5LiBUaGlz
IGlzIHRoZQorICAgIC8vIGNhc2UgaWYgd2UgaGF2ZSBhIHJvdGF0aW9uID49IDE4MCBvciB3ZSBo
YXZlIG1vcmUgdGhhbiBvbmUgdHJhbnNmb3JtIGZ1bmN0aW9uLgorICAgIGlmICgoaGFzQmlnUm90
YXRpb24gfHwgZnVuY3Rpb25MaXN0LnNpemUoKSA+IDEpICYmICFjYVZhbHVlRnVuY3Rpb25TdXBw
b3J0ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA0MDk1
MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbmRlckJveDo6dXBkYXRlQm94TW9kZWxJbmZvRnJvbVN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZXRIYXNUcmFuc2Zvcm0oc3R5bGUoKS0+aGFzVHJh
bnNmb3JtKCkpOworICAgIHNldEhhc1RyYW5zZm9ybShzdHlsZSgpLT5oYXNUcmFuc2Zvcm1SZWxh
dGVkUHJvcGVydHkoKSk7CiAgICAgc2V0SGFzUmVmbGVjdGlvbihzdHlsZSgpLT5ib3hSZWZsZWN0
KCkpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA0MDk1
MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAg
ICAgICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgICAgIEFTU0VSVChib3gp
OwogICAgICAgICBtX3RyYW5zZm9ybS0+bWFrZUlkZW50aXR5KCk7Ci0gICAgICAgIGJveC0+c3R5
bGUoKS0+YXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCBib3gtPmJvcmRlckJveFJlY3QoKS5z
aXplKCkpOworICAgICAgICBib3gtPnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9y
bSwgYm94LT5ib3JkZXJCb3hSZWN0KCkuc2l6ZSgpLCBSZW5kZXJTdHlsZTo6SW5jbHVkZVRyYW5z
Zm9ybU9yaWdpbik7CiAgICAgfQogfQogCkBAIC00OTgsNiArNDk4LDQ0IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJMYXll
cjo6aGFzVHJhbnNmb3JtU3R5bGUzRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmVyKCkt
PnN0eWxlKCktPnRyYW5zZm9ybVN0eWxlM0QoKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6aGFz
UGVyc3BlY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiByZW5kZXJlcigpLT5zdHlsZSgpLT5w
ZXJzcGVjdGl2ZSgpICE9IDA7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgaWYgKCFyZW5kZXJlcigpLT5o
YXNUcmFuc2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisK
KyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgpOworICAgIGlmICgh
c3R5bGUtPnBlcnNwZWN0aXZlKCkpCisgICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpOworCisgICAgLy8gTWF5YmUgZmV0Y2ggdGhlIHBlcnNwZWN0aXZlIGZyb20gdGhlIGJhY2tp
bmc/CisgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigp
KS0+Ym9yZGVyQm94UmVjdCgpOworICAgIGNvbnN0IGZsb2F0IGJveFdpZHRoID0gYm9yZGVyQm94
LndpZHRoKCk7CisgICAgY29uc3QgZmxvYXQgYm94SGVpZ2h0ID0gYm9yZGVyQm94LmhlaWdodCgp
OworCisgICAgZmxvYXQgcGVyc3BlY3RpdmVPcmlnaW5YID0gc3R5bGUtPnBlcnNwZWN0aXZlT3Jp
Z2luWCgpLmNhbGNGbG9hdFZhbHVlKGJveFdpZHRoKTsKKyAgICBmbG9hdCBwZXJzcGVjdGl2ZU9y
aWdpblkgPSBzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkuY2FsY0Zsb2F0VmFsdWUoYm94SGVp
Z2h0KTsKKworICAgIHBlcnNwZWN0aXZlT3JpZ2luWCAtPSBib3hXaWR0aCAvIDIuMGY7CisgICAg
cGVyc3BlY3RpdmVPcmlnaW5ZIC09IGJveEhlaWdodCAvIDIuMGY7CisgICAgCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdDsKKyAgICB0LnRyYW5zbGF0ZShwZXJzcGVjdGl2ZU9yaWdpblgsIHBl
cnNwZWN0aXZlT3JpZ2luWSk7CisgICAgdC5hcHBseVBlcnNwZWN0aXZlKHN0eWxlLT5wZXJzcGVj
dGl2ZSgpKTsKKyAgICB0LnRyYW5zbGF0ZSgtcGVyc3BlY3RpdmVPcmlnaW5YLCAtcGVyc3BlY3Rp
dmVPcmlnaW5ZKTsKKyAgICAKKyAgICByZXR1cm4gdDsKK30KKwogUmVuZGVyTGF5ZXIgKlJlbmRl
ckxheWVyOjpzdGFja2luZ0NvbnRleHQoKSBjb25zdAogewogICAgIFJlbmRlckxheWVyKiBjdXJy
ID0gcGFyZW50KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlzaW9uIDQwOTUw
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzk5LDYgKzM5OSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiByZW5kZXJlcigpLT5oYXNUcmFuc2Zvcm0oKTsgfQogICAgIC8vIE5vdGUgdGhhdCB0
aGlzIHRyYW5zZm9ybSBoYXMgdGhlIHRyYW5zZm9ybS1vcmlnaW4gYmFrZWQgaW4uCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXgqIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3Jt
LmdldCgpOyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm1TdHlsZTNEKCkgY29uc3Q7CisgICAgLy8g
R2V0IHRoZSBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0sIHdoaWNoIGlzIGFwcGxpZWQgdG8gdHJhbnNm
b3JtZWQgc3VibGF5ZXJzLgorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIgaGFzIGEg
LXdlYmtpdC1wZXJzcGVjdGl2ZS4KKyAgICAvLyBOb3RlIHRoYXQgdGhpcyB0cmFuc2Zvcm0gaGFz
IHRoZSBwZXJzcGVjdGl2ZS1vcmlnaW4gYmFrZWQgaW4uCisgICAgYm9vbCBoYXNQZXJzcGVjdGl2
ZSgpIGNvbnN0OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBlcnNwZWN0aXZlVHJhbnNmb3Jt
KCkgY29uc3Q7CiAKICAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKIApJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiA0MDk1MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0OSw2ICsxNDksMTAgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBo
aWNzTAogICAgIGlmICghcmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPmlzQW5pbWF0aW5nUHJvcGVy
dHlPblJlbmRlcmVyKHJlbmRlcmVyKCksIENTU1Byb3BlcnR5T3BhY2l0eSkpCiAgICAgICAgIHVw
ZGF0ZUxheWVyT3BhY2l0eSgpOwogICAgIAorICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRl
cmVyKCktPnN0eWxlKCk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChzdHls
ZS0+dHJhbnNmb3JtU3R5bGUzRCgpKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tmYWNl
VmlzaWJpbGl0eShzdHlsZS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmls
aXR5VmlzaWJsZSk7CisKICAgICB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKTsKICAgICAK
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnVwZGF0ZUNvbnRlbnRzUmVjdCgpOwpAQCAtMjUzLDYgKzI1
NywzMSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5oZWlnaHQoKSAh
PSAwLjBmID8gKChsYXllckJvdW5kcy55KCkgLSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLnko
KSkgKyB0cmFuc2Zvcm1PcmlnaW4ueSgpKSAvIHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMuaGVp
Z2h0KCkgOiAwLjVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdp
bi56KCkpOwogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEFuY2hvclBvaW50KGFuY2hvcik7
CisKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAg
ICAgICAgaWYgKHN0eWxlLT5wZXJzcGVjdGl2ZSgpID4gMCkgeworICAgICAgICAgICAgRmxvYXRQ
b2ludCBwZXJzcGVjdGl2ZU9yaWdpbiA9IGNvbXB1dGVQZXJzcGVjdGl2ZU9yaWdpbihib3JkZXJC
b3gpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmbG9hdCB4T2Zmc2V0ID0gcGVyc3BlY3Rp
dmVPcmlnaW4ueCgpIC0gKGZsb2F0KWJvcmRlckJveC53aWR0aCgpIC8gMi4wZjsKKyAgICAgICAg
ICAgIGZsb2F0IHlPZmZzZXQgPSBwZXJzcGVjdGl2ZU9yaWdpbi55KCkgLSAoZmxvYXQpYm9yZGVy
Qm94LmhlaWdodCgpIC8gMi4wZjsKKworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dDsKKyAgICAgICAgICAgIHQudHJhbnNsYXRlKHhPZmZzZXQsIHlPZmZzZXQpOworICAgICAgICAg
ICAgdC5hcHBseVBlcnNwZWN0aXZlKHN0eWxlLT5wZXJzcGVjdGl2ZSgpKTsKKyAgICAgICAgICAg
IHQudHJhbnNsYXRlKC14T2Zmc2V0LCAteU9mZnNldCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChtX2NsaXBwaW5nTGF5ZXIpIHsKKyAgICAgICAgICAgICAgICBtX2NsaXBwaW5nTGF5
ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHQpOworICAgICAgICAgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRDaGlsZHJlblRyYW5zZm9ybSh0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChtX2NsaXBwaW5nTGF5ZXIpCisgICAgICAgICAgICAgICAgbV9jbGlwcGluZ0xheWVy
LT5zZXRDaGlsZHJlblRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENoaWxkcmVuVHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMC41
ZiwgMC41ZiwgMCkpOwogICAgIH0KQEAgLTU2OCwxMyArNTk3LDI4IEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpmb3JjZUNvbXBvc2l0aW4KICAgICBtX2ZvcmNlQ29tcG9zaXRpbmdMYXllciA9
IGZvcmNlOwogfQogCi1GbG9hdFBvaW50IFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVRyYW5z
Zm9ybU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJCb3gpIGNvbnN0CitGbG9hdFBvaW50M0Qg
UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlVHJhbnNmb3JtT3JpZ2luKGNvbnN0IEludFJlY3Qm
IGJvcmRlckJveCkgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigp
LT5zdHlsZSgpOwogCi0gICAgRmxvYXRQb2ludCBvcmlnaW47CisgICAgRmxvYXRQb2ludDNEIG9y
aWdpbjsKICAgICBvcmlnaW4uc2V0WChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLmNhbGNGbG9h
dFZhbHVlKGJvcmRlckJveC53aWR0aCgpKSk7CiAgICAgb3JpZ2luLnNldFkoc3R5bGUtPnRyYW5z
Zm9ybU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3guaGVpZ2h0KCkpKTsKKyAgICBv
cmlnaW4uc2V0WihzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpKTsKKworICAgIHJldHVybiBvcmln
aW47Cit9CisKK0Zsb2F0UG9pbnQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlUGVyc3BlY3Rp
dmVPcmlnaW4oY29uc3QgSW50UmVjdCYgYm9yZGVyQm94KSBjb25zdAoreworICAgIFJlbmRlclN0
eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCktPnN0eWxlKCk7CisKKyAgICBmbG9hdCBib3hXaWR0aCA9
IGJvcmRlckJveC53aWR0aCgpOworICAgIGZsb2F0IGJveEhlaWdodCA9IGJvcmRlckJveC5oZWln
aHQoKTsKKworICAgIEZsb2F0UG9pbnQgb3JpZ2luOworICAgIG9yaWdpbi5zZXRYKHN0eWxlLT5w
ZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjRmxvYXRWYWx1ZShib3hXaWR0aCkpOworICAgIG9yaWdp
bi5zZXRZKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKS5jYWxjRmxvYXRWYWx1ZShib3hIZWln
aHQpKTsKIAogICAgIHJldHVybiBvcmlnaW47CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAkocmV2aXNpb24gNDA5NTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw5IEBAIHBy
aXZhdGU6CiAKICAgICBJbnRTaXplIGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpOwog
ICAgIC8vIFJlc3VsdCBpcyB0cmFuc2Zvcm0gb3JpZ2luIGluIHBpeGVscy4KLSAgICBGbG9hdFBv
aW50IGNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4oY29uc3QgSW50UmVjdCYgYm9yZGVyQm94KSBjb25z
dDsKKyAgICBGbG9hdFBvaW50M0QgY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihjb25zdCBJbnRSZWN0
JiBib3JkZXJCb3gpIGNvbnN0OworICAgIC8vIFJlc3VsdCBpcyBwZXJzcGVjdGl2ZSBvcmlnaW4g
aW4gcGl4ZWxzLgorICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNvbnN0
IEludFJlY3QmIGJvcmRlckJveCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUxheWVyT3BhY2l0
eSgpOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gNDA5NTApCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCwxMSBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKDNEX1RSQU5TRk9STVMpCisvLyBUaGlzIHN5bWJvbCBpcyB1c2VkIHRv
IGRldGVybWluZSBmcm9tIGEgc2NyaXB0IHdoZXRoZXIgM0QgdHJhbnNmb3JtcyBhcmUgZW5hYmxl
ZCAodmlhICdubScpLgorYm9vbCBXZWJDb3JlSGFzM0RUcmFuc2Zvcm1zID0gdHJ1ZTsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDb21wb3NpdGluZ1N0YXRlIHsKQEAg
LTYwNSwxNSArNjEwLDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290
TGEKICAgICAgICAgbV9yb290UGxhdGZvcm1MYXllci0+c2V0U2l6ZShGbG9hdFNpemUobV9yZW5k
ZXJWaWV3LT5kb2NXaWR0aCgpLCBtX3JlbmRlclZpZXctPmRvY0hlaWdodCgpKSk7CiB9CiAKK2Jv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpoYXMzRENvbnRlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBsYXllckhhczNEQ29udGVudChyb290UmVuZGVyTGF5ZXIoKSk7Cit9CisKIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllcikgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGxh
eWVyKSB8fCAobGF5ZXItPmJhY2tpbmcoKSAmJiBsYXllci0+YmFja2luZygpLT5mb3JjZWRDb21w
b3NpdGluZ0xheWVyKCkpOwogfQogCi1zdGF0aWMgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nTGF5
ZXJGb3JUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KikKK3N0YXRpYyBib29sIHJlcXVpcmVzQ29tcG9z
aXRpbmdMYXllckZvclRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIC8v
IDJEIHRyYW5zZm9ybXMgYXJlIHJlbmRlcmVkIGluIHNvZnR3YXJlLCB1bmxlc3MgYW5pbWF0aW5n
ICh3aGljaCBpcyB0ZXN0ZWQgc2VwYXJhdGVseSkuCi0gICAgcmV0dXJuIGZhbHNlOworICAgIFJl
bmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOworICAgIHJldHVybiByZW5kZXJl
ci0+aGFzVHJhbnNmb3JtKCkgJiYgKHN0eWxlLT50cmFuc2Zvcm0oKS5oYXMzRE9wZXJhdGlvbigp
IHx8IHN0eWxlLT50cmFuc2Zvcm1TdHlsZTNEKCkgfHwgc3R5bGUtPnBlcnNwZWN0aXZlKCkgPiAw
KTsKIH0KIAogI2RlZmluZSBWRVJCT1NFX0NPTVBPU0lUSU5HTEFZRVIgICAgMApAQCAtNjM3LDYg
KzY0NywxMSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wCiAgICAg
ICAgIGdvdFJlYXNvbiA9IHRydWU7CiAgICAgfQogCisgICAgaWYgKCFnb3RSZWFzb24gJiYgbGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPmJhY2tmYWNlVmlzaWJpbGl0eSgpID09IEJhY2tmYWNl
VmlzaWJpbGl0eUhpZGRlbikgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJlbmRlckxheWVy
ICVwIHJlcXVpcmVzIGNvbXBvc2l0aW5nIGxheWVyIGJlY2F1c2U6IGl0IGhhcyBiYWNrZmFjZS12
aXNpYmlsaXR5OiBoaWRkZW5cbiIsIGxheWVyKTsKKyAgICAgICAgZ290UmVhc29uID0gdHJ1ZTsK
KyAgICB9CisKICAgICBpZiAoIWdvdFJlYXNvbiAmJiBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFu
dHMobGF5ZXIpKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiUmVuZGVyTGF5ZXIgJXAgcmVx
dWlyZXMgY29tcG9zaXRpbmcgbGF5ZXIgYmVjYXVzZTogaXQgaGFzIG92ZXJmbG93IGNsaXBcbiIs
IGxheWVyKTsKICAgICAgICAgZ290UmVhc29uID0gdHJ1ZTsKQEAgLTY1NCw2ICs2NjksNyBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wCiAgICAgLy8gVGhlIHJvb3Qg
bGF5ZXIgYWx3YXlzIGhhcyBhIGNvbXBvc2l0aW5nIGxheWVyLCBidXQgaXQgbWF5IG5vdCBoYXZl
IGJhY2tpbmcuCiAgICAgcmV0dXJuIChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jv
b3RMYXllcigpKSB8fAogICAgICAgICAgICAgIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllckZvclRy
YW5zZm9ybShsYXllci0+cmVuZGVyZXIoKSkgfHwKKyAgICAgICAgICAgICBsYXllci0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5
SGlkZGVuIHx8CiAgICAgICAgICAgICAgY2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGxheWVy
KSB8fAogICAgICAgICAgICAgIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24obGF5ZXIp
OwogfQpAQCAtNzMxLDYgKzc0Nyw0NCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5z
dXJlUm9vdFBsCiAgICAgZGlkTW92ZU9uc2NyZWVuKCk7CiB9CiAKK2Jvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNv
bnN0Cit7CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5ZXItPnJlbmRlcmVyKCkt
PnN0eWxlKCk7CisKKyAgICBpZiAoc3R5bGUgJiYgCisgICAgICAgIChzdHlsZS0+dHJhbnNmb3Jt
U3R5bGUzRCgpIHx8CisgICAgICAgICBzdHlsZS0+cGVyc3BlY3RpdmUoKSB8fAorICAgICAgICAg
c3R5bGUtPnRyYW5zZm9ybSgpLmhhczNET3BlcmF0aW9uKCkpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCk7
CisgICAgICAgIGlmIChuZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgZm9yIChWZWN0b3I8UmVu
ZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBuZWdaT3JkZXJMaXN0LT5iZWdpbigpOyBpdCAhPSBu
ZWdaT3JkZXJMaXN0LT5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIFJlbmRlckxheWVy
KiBjdXJMYXllciA9ICgqaXQpOworICAgICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVu
dChjdXJMYXllcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgIFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5
ZXItPnBvc1pPcmRlckxpc3QoKTsKKyAgICAgICAgaWYgKHBvc1pPcmRlckxpc3QpCisgICAgICAg
ICAgICBmb3IgKFZlY3RvcjxSZW5kZXJMYXllcio+OjppdGVyYXRvciBpdCA9IHBvc1pPcmRlckxp
c3QtPmJlZ2luKCk7IGl0ICE9IHBvc1pPcmRlckxpc3QtPmVuZCgpOyArK2l0KSB7CisgICAgICAg
ICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gKCppdCk7CisgICAgICAgICAgICAgICAg
aWYgKGxheWVySGFzM0RDb250ZW50KGN1ckxheWVyKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgVmVjdG9yPFJlbmRlckxheWVyKj4q
IG92ZXJmbG93TGlzdCA9IGxheWVyLT5vdmVyZmxvd0xpc3QoKTsKKyAgICAgICAgaWYgKG92ZXJm
bG93TGlzdCkKKyAgICAgICAgICAgIGZvciAoVmVjdG9yPFJlbmRlckxheWVyKj46Oml0ZXJhdG9y
IGl0ID0gb3ZlcmZsb3dMaXN0LT5iZWdpbigpOyBpdCAhPSBvdmVyZmxvd0xpc3QtPmVuZCgpOyAr
K2l0KSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gKCppdCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KGN1ckxheWVyKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmgJKHJldmlzaW9uIDQwOTUwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlUm9vdExheWVyUG9zaXRpb24oKTsKIAorICAgIC8vIFdh
bGsgdGhlIHRyZWUgbG9va2luZyBmb3IgbGF5ZXJzIHdpdGggM2QgdHJhbnNmb3Jtcy4gVXNlZnVs
IGluIGNhc2UgeW91IG5lZWQKKyAgICAvLyB0byBrbm93IGlmIHRoZXJlIGlzIG5vbi1hZmZpbmUg
Y29udGVudCwgZS5nLiBmb3IgZHJhd2luZyBpbnRvIGFuIGltYWdlLgorICAgIGJvb2wgaGFzM0RD
b250ZW50KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gUkwg
bmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KICAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0ZWQo
Y29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKQEAgLTExNyw2ICsxMjEsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBwYXJlbnRJblJvb3RMYXllcihSZW5kZXJMYXllciopOwogCisgICAgYm9vbCBs
YXllckhhczNEQ29udGVudChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OworCiAgICAgdm9pZCBl
bnN1cmVSb290UGxhdGZvcm1MYXllcigpOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="13419"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>