<?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>49135</bug_id>
          
          <creation_ts>2010-11-06 16:54:20 -0700</creation_ts>
          <short_desc>Optimize painting to avoid rendering areas that are completely obscured by other elements</short_desc>
          <delta_ts>2010-11-07 22:41:02 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305826</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-06 16:54:20 -0700</bug_when>
    <thetext>Painting is currently back-to-front, even across iframe boundaries. That means that if an area of some foreground element is invalidated, we&apos;ll repaint everything behind it (potentially including expensive gradients, scaled background images etc) before painting the element itself. This could be optimized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305827</commentid>
    <comment_count>1</comment_count>
      <attachid>73180</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-06 17:16:54 -0700</bug_when>
    <thetext>Created attachment 73180
WIP patch

This is a demonstration of how the optimization might work. If I tweak the test a little (make the iframe positioned), this makes some Peacekeeper tests 2-26% faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305949</commentid>
    <comment_count>2</comment_count>
      <attachid>73180</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-07 19:59:59 -0800</bug_when>
    <thetext>Comment on attachment 73180
WIP patch

Better patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305964</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-07 20:36:52 -0800</bug_when>
    <thetext>Didn&apos;t mean to mark fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305967</commentid>
    <comment_count>4</comment_count>
      <attachid>73208</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-07 20:41:06 -0800</bug_when>
    <thetext>Created attachment 73208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305999</commentid>
    <comment_count>5</comment_count>
      <attachid>73214</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-07 22:41:02 -0800</bug_when>
    <thetext>Created attachment 73214
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73180</attachid>
            <date>2010-11-06 17:16:54 -0700</date>
            <delta_ts>2010-11-07 19:59:59 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>painting-opt.txt</filename>
            <type>text/plain</type>
            <size>7727</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDYyNWE2NDMuLmMyNTdiZTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtMTI1MCw2ICsxMjUwLDE4IEBAIEludFNpemUgUmVuZGVyQm94Ojpv
ZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgSW50UG9pbnQmIHBvaW50
KSBjCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAorYm9vbCBSZW5kZXJCb3g6OmlzT3BhcXVlSW5S
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0g
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKKyAgICBib29sIGhhc09wYXF1ZUJhY2tncm91bmQgPSBiYWNrZ3JvdW5kQ29sb3IuaXNWYWxp
ZCgpICYmICFiYWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKTsKKyAgICBpZiAoIWhhc09wYXF1ZUJh
Y2tncm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiB0aGlzIGlz
IG1vc3RseSBjcmFwCisgICAgSW50UmVjdCBiYWNrZ3JvdW5kUmVjdCA9IGJvcmRlckJveFJlY3Qo
KTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFJlY3QuY29udGFpbnMocmVjdCk7Cit9CisKIElubGlu
ZUJveCogUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewogICAgIHJldHVybiBuZXcgKHJl
bmRlckFyZW5hKCkpIElubGluZUJveCh0aGlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZjFi
NTdhMi4uZWM5NmFkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQwOCw2ICs0MDgsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQsIGJvb2wgdXNlVHJhbnNm
b3JtcywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1
dGVUb0xvY2FsUG9pbnQoYm9vbCBmaXhlZCwgYm9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1T
dGF0ZSYpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGlzT3BhcXVlSW5SZWN0KGNvbnN0IElu
dFJlY3QmKTsKKwogcHJpdmF0ZToKICAgICBib29sIGluY2x1ZGVWZXJ0aWNhbFNjcm9sbGJhclNp
emUoKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5bGUoKS0+b3ZlcmZs
b3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZSgpLT5vdmVyZmxvd1koKSA9PSBPQVVUTyk7IH0KICAg
ICBib29sIGluY2x1ZGVIb3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGhh
c092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPU0NST0xMIHx8IHN0
eWxlKCktPm92ZXJmbG93WCgpID09IE9BVVRPKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKaW5kZXggMTIxNjAxZi4uYTEyMDBjMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xMTQsNiArMTE0LDkgQEAgcHVibGljOgogICAg
IHZvaWQgcGFpbnRCb3hTaGFkb3coR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGlu
dCB3LCBpbnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRy
dWUpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBj
b25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGludCB0eCwgaW50IHR5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIElubGluZUZsb3dCb3gqID0gMCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QgPSAwKTsKIAor
ICAgIC8vIFJlY3QgaXMgaW4gY29vcmRzIGxvY2FsIHRvIHRoZSByZW5kZXJlcgorICAgIHZpcnR1
YWwgYm9vbCBpc09wYXF1ZUluUmVjdChjb25zdCBJbnRSZWN0JikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAKICAgICAvLyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgaW5saW5lJ3MgYmFzZWxp
bmUgcG9zaXRpb24gYW5kIHRoZSBsaW5lJ3MgYmFzZWxpbmUgcG9zaXRpb24uCiAgICAgaW50IHZl
cnRpY2FsUG9zaXRpb24oYm9vbCBmaXJzdExpbmUpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDRlOGNlZWMuLjgzY2MyZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTIyOTEsOCArMjI5MSwxNCBAQCBib29sIFJlbmRlckxheWVyOjpzY3JvbGwo
U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAog
CiB2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0
ICpwYWludGluZ1Jvb3QpCiB7CisgICAgUmVuZGVyTGF5ZXIqIGxheWVyVG9TdGFydFBhaW50aW5n
ID0gZGVzY2VuZGFudE9ic2N1cmluZ1JlY3QoZGFtYWdlUmVjdCwgdGhpcyk7CisgICAgaWYgKCFs
YXllclRvU3RhcnRQYWludGluZykKKyAgICAgICAgbGF5ZXJUb1N0YXJ0UGFpbnRpbmcgPSB0aGlz
OworICAgICAgICAKKyAgICAvLyBGSVhNRTogZml4IHVwIGRhbWFnZVJlY3QKKwogICAgIE92ZXJs
YXBUZXN0UmVxdWVzdE1hcCBvdmVybGFwVGVzdFJlcXVlc3RzOwotICAgIHBhaW50TGF5ZXIodGhp
cywgcCwgZGFtYWdlUmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCAmb3ZlcmxhcFRl
c3RSZXF1ZXN0cyk7CisgICAgbGF5ZXJUb1N0YXJ0UGFpbnRpbmctPnBhaW50TGF5ZXIodGhpcywg
cCwgZGFtYWdlUmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCAmb3ZlcmxhcFRlc3RS
ZXF1ZXN0cyk7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjppdGVyYXRvciBlbmQgPSBvdmVy
bGFwVGVzdFJlcXVlc3RzLmVuZCgpOwogICAgIGZvciAoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOjpp
dGVyYXRvciBpdCA9IG92ZXJsYXBUZXN0UmVxdWVzdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQogICAgICAgICBpdC0+Zmlyc3QtPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKQEAgLTMz
NDYsNiArMzM1Miw2NyBAQCBib29sIFJlbmRlckxheWVyOjppbnRlcnNlY3RzRGFtYWdlUmVjdChj
b25zdCBJbnRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgSW50UmVjdAogICAgIHJldHVybiBib3Vu
ZGluZ0JveChyb290TGF5ZXIpLmludGVyc2VjdHMoZGFtYWdlUmVjdCk7CiB9CiAKK1JlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6ZGVzY2VuZGFudE9ic2N1cmluZ1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCwgUmVuZGVyTGF5ZXIqIHJvb3QpIGNvbnN0Cit7CisgICAgaW50IHhPZmZzZXQ7CisgICAg
aW50IHlPZmZzZXQ7CisgICAgLy8gQmVnaW4gYnkgd2Fsa2luZyBvdXIgbGlzdCBvZiBwb3NpdGl2
ZSBsYXllcnMgZnJvbSBoaWdoZXN0IHotaW5kZXggZG93biB0byB0aGUgbG93ZXN0IHotaW5kZXgu
CisgICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkgeworICAgICAgICBmb3IgKGludCBpID0gbV9wb3Na
T3JkZXJMaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgUmVuZGVy
TGF5ZXIqIGN1cnJMYXllciA9IG1fcG9zWk9yZGVyTGlzdC0+YXQoaSk7CisgICAgICAgICAgICB4
T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIHlPZmZzZXQgPSAwOworICAgICAgICAgICAgY3Vyckxh
eWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyh0aGlzLCB4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICAg
ICAgICAgIEludFJlY3QgbG9jYWxSZWN0ID0gcmVjdDsKKyAgICAgICAgICAgIGxvY2FsUmVjdC5t
b3ZlKC14T2Zmc2V0LCAteU9mZnNldCk7CisgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIG9i
c2N1cmluZ0xheWVyID0gY3VyckxheWVyLT5kZXNjZW5kYW50T2JzY3VyaW5nUmVjdChsb2NhbFJl
Y3QsIHJvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBvYnNjdXJpbmdMYXllcjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIE5vdyBjaGVjayBvdXIgb3ZlcmZsb3cgb2JqZWN0cy4KKyAg
ICBpZiAobV9ub3JtYWxGbG93TGlzdCkgeworICAgICAgICBmb3IgKGludCBpID0gbV9ub3JtYWxG
bG93TGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIFJlbmRlckxh
eWVyKiBjdXJyTGF5ZXIgPSBtX25vcm1hbEZsb3dMaXN0LT5hdChpKTsKKyAgICAgICAgICAgIHhP
ZmZzZXQgPSAwOworICAgICAgICAgICAgeU9mZnNldCA9IDA7CisgICAgICAgICAgICBjdXJyTGF5
ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzKHRoaXMsIHhPZmZzZXQsIHlPZmZzZXQpOworICAgICAg
ICAgICAgSW50UmVjdCBsb2NhbFJlY3QgPSByZWN0OworICAgICAgICAgICAgbG9jYWxSZWN0Lm1v
dmUoLXhPZmZzZXQsIC15T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogb2Jz
Y3VyaW5nTGF5ZXIgPSBjdXJyTGF5ZXItPmRlc2NlbmRhbnRPYnNjdXJpbmdSZWN0KGxvY2FsUmVj
dCwgcm9vdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9ic2N1cmluZ0xheWVyOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIC8vIGNoZWNrIGZvcmVncm91bmQKKworICAgIC8vIE5vdyBj
aGVjayBvdXIgbmVnYXRpdmUgei1pbmRleCBjaGlsZHJlbi4KKyAgICBpZiAobV9uZWdaT3JkZXJM
aXN0KSB7CisgICAgICAgIGZvciAoaW50IGkgPSBtX25lZ1pPcmRlckxpc3QtPnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyckxheWVyID0gbV9u
ZWdaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAgIHhPZmZzZXQgPSAwOworICAgICAgICAg
ICAgeU9mZnNldCA9IDA7CisgICAgICAgICAgICBjdXJyTGF5ZXItPmNvbnZlcnRUb0xheWVyQ29v
cmRzKHRoaXMsIHhPZmZzZXQsIHlPZmZzZXQpOworICAgICAgICAgICAgSW50UmVjdCBsb2NhbFJl
Y3QgPSByZWN0OworICAgICAgICAgICAgbG9jYWxSZWN0Lm1vdmUoLXhPZmZzZXQsIC15T2Zmc2V0
KTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogb2JzY3VyaW5nTGF5ZXIgPSBjdXJyTGF5
ZXItPmRlc2NlbmRhbnRPYnNjdXJpbmdSZWN0KGxvY2FsUmVjdCwgcm9vdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG9ic2N1cmluZ0xheWVyOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IC8vIGNoZWNrIGJhY2tncm91bmQKKyAgICBpZiAodGhpcyAhPSByb290ICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIoKSAmJiByZW5kZXJlcigpLT5pc09wYXF1ZUluUmVjdChyZWN0KSkKKyAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKTsKKworICAgIHJldHVybiAwOwor
fQorCitib29sIFJlbmRlckxheWVyOjppc09wYXF1ZUluUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiB3YWxrIGFsbCBub24tbGF5ZXIgY2hpbGRyZW4gdG9v
CisgICAgcmV0dXJuIHJlbmRlcmVyKCktPmlzT3BhcXVlSW5SZWN0KHJlY3QpOworfQorCiBJbnRS
ZWN0IFJlbmRlckxheWVyOjpsb2NhbEJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICAvLyBUaGVy
ZSBhcmUgdGhyZWUgc3BlY2lhbCBjYXNlcyB3ZSBuZWVkIHRvIGNvbnNpZGVyLgpAQCAtMzkxMSw3
ICszOTc4LDcgQEAgdm9pZCBzaG93TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlckxheWVy
KiBsYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZSA9IGxheWVyLT5yZW5kZXJlcigpLT5mcmFtZSgpKSB7Ci0gICAgICAgIFdURjo6U3RyaW5nIG91
dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oZnJhbWUsIFdlYkNvcmU6OlJlbmRlckFzVGV4
dFNob3dBbGxMYXllcnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93TGF5ZXJOZXN0aW5nIHwg
V2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0NvbXBvc2l0ZWRMYXllcnMgfCBXZWJDb3JlOjpSZW5k
ZXJBc1RleHRTaG93QWRkcmVzc2VzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0lEQW5kQ2xh
c3MpOworICAgICAgICBXVEY6OlN0cmluZyBvdXRwdXQgPSBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KGZyYW1lLCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93QWxsTGF5ZXJzIHwgV2ViQ29yZTo6UmVu
ZGVyQXNUZXh0U2hvd0xheWVyTmVzdGluZyB8IFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dDb21w
b3NpdGVkTGF5ZXJzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0FkZHJlc3NlcyB8IFdlYkNv
cmU6OlJlbmRlckFzVGV4dFNob3dJREFuZENsYXNzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0RG9u
dFVwZGF0ZUxheW91dCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG91dHB1dC51
dGY4KCkuZGF0YSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3ZTY3
MTE1Li5jNzZlYTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTM3Nyw2ICszNzcsMTAg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBJbnRSZWN0
JiBsYXllckJvdW5kcywgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5
ZXIqIHJvb3RMYXllcikgY29uc3Q7CiAKKyAgICAvLyBSZXR1cm4gdGhlIGZyb250bW9zdCBkZXNj
ZW5kYW50IHdoaWNoIGZ1bGx5IG9ic2N1cmVzIHRoZSBnaXZlbiByZWN0LiBSZXR1cm5zIDAgaWYg
bm9uZSBmb3VuZC4KKyAgICBSZW5kZXJMYXllciogZGVzY2VuZGFudE9ic2N1cmluZ1JlY3QoY29u
c3QgSW50UmVjdCYsIFJlbmRlckxheWVyKiByb290KSBjb25zdDsKKyAgICBib29sIGlzT3BhcXVl
SW5SZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKwogICAgIC8vIEJvdW5kaW5nIGJveCByZWxh
dGl2ZSB0byBzb21lIGFuY2VzdG9yIGxheWVyLgogICAgIEludFJlY3QgYm91bmRpbmdCb3goY29u
c3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikgY29uc3Q7CiAgICAgLy8gQm91bmRpbmcgYm94IGlu
IHRoZSBjb29yZGluYXRlcyBvZiB0aGlzIGxheWVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73208</attachid>
            <date>2010-11-07 20:41:06 -0800</date>
            <delta_ts>2010-11-07 22:40:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49135-20101107204104.patch</filename>
            <type>text/plain</type>
            <size>28442</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTQxOGNkYTQ1NzY3NWI3OWU2M2IxMDM0N2YwNWRmN2ZjZTRjN2VmZS4uZjZjZDE0MGUwOWJkM2Yy
YmE2NzNiNDgwYWUyNmM3NmJlNTExOTIxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0wNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBwYWludGluZyB0byBhdm9pZCBy
ZW5kZXJpbmcgYXJlYXMgdGhhdCBhcmUgY29tcGxldGVseSBvYnNjdXJlZCBieSBvdGhlciBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkx
MzUKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5k
SXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmZvcmVncm91bmRJc09wYXF1ZUluUmVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpmb3JlZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRQ
YWdpbmF0ZWRDaGlsZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dENoaWxkTGF5ZXJJbnRvQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
ZGVzY2VuZGFudE9ic2N1cmluZ1JlY3QpOgorICAgICAgICAoc2hvd0xheWVyVHJlZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaDoK
KwogMjAxMC0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBKdXN0IHB1dCB0aGluZ3MgYmFjayB0aGUgd2F5IHRoZXkgd2VyZS4gVG9vIG1hbnkg
bXlzdGVyaW91cyBsaW5rZXIgZXJyb3JzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNjI1
YTY0M2E4M2E2MDNiNmMwNmQ4N2U2MGIyOTExNDhkYjZkOTNhNy4uZTQ4MmU5NDViZmI5YWE4YmE0
MTU5MGQyYzgwZTg2ZWM4MmJlNWJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjUw
LDYgKzEyNTAsMjEgQEAgSW50U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGMKICAgICByZXR1cm4gb2Zmc2V0
OwogfQogCitib29sIFJlbmRlckJveDo6YmFja2dyb3VuZElzT3BhcXVlSW5SZWN0KGludCB0eCwg
aW50IHR5LCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIENvbG9yIGJhY2tncm91
bmRDb2xvciA9IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CisgICAgYm9vbCBoYXNPcGFxdWVCYWNrZ3JvdW5kID0gYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSAmJiAhYmFja2dyb3VuZENvbG9yLmhhc0FscGhhKCk7CisgICAgaWYgKCFo
YXNPcGFxdWVCYWNrZ3JvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0eCArPSB4
KCk7CisgICAgdHkgKz0geSgpOworICAgIAorICAgIC8vIEZJWE1FOiBjaGVjayBmb3IgYm9yZGVy
IHJhZGl1cy4KKyAgICBJbnRSZWN0IGJhY2tncm91bmRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVp
Z2h0KCkpOworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVjdC5jb250YWlucyhyZWN0KTsKK30KKwog
SW5saW5lQm94KiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCgpCiB7CiAgICAgcmV0dXJuIG5l
dyAocmVuZGVyQXJlbmEoKSkgSW5saW5lQm94KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCBmMWI1N2EyMTFjMjUwZWE0Nzg5ZmEyOWEyZDRjN2Y1YzI2MDRkYWFiLi5kOTU0Yjc3ODY3NmNk
ZWQ0NjkxOWE1MThkZDhiNDNhMDhhY2YzMTg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDA4
LDYgKzQwOCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3Vu
ZElzT3BhcXVlSW5SZWN0KGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgYm9vbCBpbmNsdWRlVmVydGljYWxTY3JvbGxiYXJTaXplKCkgY29uc3Qg
eyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9T
Q1JPTEwgfHwgc3R5bGUoKS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8pOyB9CiAgICAgYm9vbCBpbmNs
dWRlSG9yaXpvbnRhbFNjcm9sbGJhclNpemUoKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0Ns
aXAoKSAmJiAoc3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCB8fCBzdHlsZSgpLT5vdmVy
Zmxvd1goKSA9PSBPQVVUTyk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCmluZGV4IDEyMTYwMWZkMGMzNjJiNWE3YzY1YmQxMGU1ZWIxMGYxMTZmNjQ1YWUuLmYxM2I2
Y2NiZjc3ZDk5NmZjYTNjYWY0OWE0YjY2MGQ5ODQ2ZGQ0NDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMTE0LDYgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgaW50
IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1
ZSk7CiAgICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwg
aW50IGhlaWdodCwgSW5saW5lRmxvd0JveCogPSAwLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOwogCisg
ICAgLy8gUmVjdCBpcyBpbiBjb29yZHMgbG9jYWwgdG8gdGhlIHJlbmRlcmVyCisgICAgdmlydHVh
bCBib29sIGJhY2tncm91bmRJc09wYXF1ZUluUmVjdChpbnQgLyp0eCovLCBpbnQgLyp0eSovLCBj
b25zdCBJbnRSZWN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Zm9yZWdyb3VuZElzT3BhcXVlSW5SZWN0KGludCAvKnR4Ki8sIGludCAvKnR5Ki8sIGNvbnN0IElu
dFJlY3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAogICAgIC8vIFRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gdGhpcyBpbmxpbmUncyBiYXNlbGluZSBwb3NpdGlvbiBhbmQgdGhlIGxpbmUn
cyBiYXNlbGluZSBwb3NpdGlvbi4KICAgICBpbnQgdmVydGljYWxQb3NpdGlvbihib29sIGZpcnN0
TGluZSkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODRmZWIw
ZjFiYmU4OTQ4ZGVmNmIwOWZmODViZWJkOWZjY2VlMDVjYy4uM2E1YjQ3MWVkNGEzM2I5ZjA0MDFm
NTk3MjAwNzllNGIzMDE3ODIyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTA0
LDQgKzUwNCwzMiBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0xvZ2ljYWxIZWln
aHQoKSBjb25zdAogICAgIHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aCgpICogaW50cmluc2ljSGVpZ2h0IC8gaW50cmluc2ljV2lkdGg7CiB9CiAKK2Jvb2wgUmVu
ZGVySW1hZ2U6OmZvcmVncm91bmRJc09wYXF1ZUluUmVjdChpbnQgdHgsIGludCB0eSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0odHgpOworICAgIFVOVVNF
RF9QQVJBTSh0eSk7CisgICAgVU5VU0VEX1BBUkFNKHJlY3QpOworLyoKKyAgICBpZiAoIW1faW1h
Z2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50
IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOworICAgIGludCBjSGVpZ2h0ID0gY29udGVudEhlaWdo
dCgpOworICAgIGludCBsZWZ0Qm9yZGVyID0gYm9yZGVyTGVmdCgpOworICAgIGludCB0b3BCb3Jk
ZXIgPSBib3JkZXJUb3AoKTsKKyAgICBpbnQgbGVmdFBhZCA9IHBhZGRpbmdMZWZ0KCk7CisgICAg
aW50IHRvcFBhZCA9IHBhZGRpbmdUb3AoKTsKKworICAgIEltYWdlKiBpbWcgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW50U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOworICAgIEludFJlY3QgcmVjdChJbnRQb2ludCh0eCArIGxlZnRCb3Jk
ZXIgKyBsZWZ0UGFkLCB0eSArIHRvcEJvcmRlciArIHRvcFBhZCksIGNvbnRlbnRTaXplKTsKKyov
CisgICAgLy8gY2FsbCBmcmFtZUhhc0FscGhhQXRJbmRleAorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCAz
MDhjODYzODg4NTQwZjEzMjhhZjRhNDVkNDkxZTJiM2U2NjRjN2UxLi5hYmQzMGQwODE2N2FiNDQy
ZTc1MjgzOTIzZWY1ZGEwMTg4ZDI4NTJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg2
LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvTG9naWNhbFdpZHRo
KCkgY29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgYm9vbCBmb3JlZ3JvdW5kSXNPcGFxdWVJblJlY3QoaW50IHR4LCBpbnQg
dHksIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRp
c3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBt
X2FsdFRleHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGU4Y2VlYzg5OTc4NTYz
OTE5ZjEyYTUzNzYyN2RhMjM5YTEyZWMwZi4uNWIwYmRmOWNhNjQyYmQ2ZjVjNzc0MTMzZjMyNTc0
YWVmNzk4YjQ4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjI5MSw4ICsyMjkx
LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QgKnBhaW50aW5nUm9vdCkKIHsKKyAgICBS
ZW5kZXJMYXllciogbGF5ZXJUb1N0YXJ0UGFpbnRpbmcgPSBkZXNjZW5kYW50T2JzY3VyaW5nUmVj
dCh0aGlzLCBkYW1hZ2VSZWN0KTsKKy8vICAgIGlmIChsYXllclRvU3RhcnRQYWludGluZykKKy8v
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkhpdCBwYWludGluZyBvcHRpbWl6YXRpb24gZm9yIGxh
eWVyICVwICVkeCVkXG4iLCBsYXllclRvU3RhcnRQYWludGluZywgbGF5ZXJUb1N0YXJ0UGFpbnRp
bmctPndpZHRoKCksIGxheWVyVG9TdGFydFBhaW50aW5nLT5oZWlnaHQoKSk7CisgICAgICAgIAog
ICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCBvdmVybGFwVGVzdFJlcXVlc3RzOwotICAgIHBhaW50
TGF5ZXIodGhpcywgcCwgZGFtYWdlUmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCAm
b3ZlcmxhcFRlc3RSZXF1ZXN0cyk7CisgICAgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MgPSBs
YXllclRvU3RhcnRQYWludGluZyA/IFBhaW50TGF5ZXJDaGVja0ZpcnN0TGF5ZXJUb1BhaW50IDog
MDsKKyAgICBwYWludExheWVyKHRoaXMsIHAsIGRhbWFnZVJlY3QsIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgbGF5ZXJUb1N0YXJ0UGFpbnRpbmcsICZvdmVybGFwVGVzdFJlcXVlc3RzLCBw
YWludEZsYWdzKTsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGVuZCA9IG92
ZXJsYXBUZXN0UmVxdWVzdHMuZW5kKCk7CiAgICAgZm9yIChPdmVybGFwVGVzdFJlcXVlc3RNYXA6
Oml0ZXJhdG9yIGl0ID0gb3ZlcmxhcFRlc3RSZXF1ZXN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCiAgICAgICAgIGl0LT5maXJzdC0+c2V0T3ZlcmxhcFRlc3RSZXN1bHQoZmFsc2UpOwpAQCAt
MjMzNyw5ICsyMzQyLDExIEBAIHN0YXRpYyBib29sIHNob3VsZERvU29mdHdhcmVQYWludChjb25z
dCBSZW5kZXJMYXllciogbGF5ZXIsIGJvb2wgcGFpbnRpbmdSZWZsZWN0CiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0
KiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJl
Y3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJs
YXBUZXN0UmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRp
bmdSb290LCBSZW5kZXJMYXllciogZmlyc3RMYXllclRvUGFpbnQsIE92ZXJsYXBUZXN0UmVxdWVz
dE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50
TGF5ZXJGbGFncyYgcGFpbnRGbGFncykKIHsKKyAgICBQYWludExheWVyRmxhZ3MgbG9jYWxQYWlu
dEZsYWdzID0gcGFpbnRGbGFnczsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJv
bFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLApA
QCAtMjQwMSw3ICsyNDA4LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAgIHAtPmNvbmNhdENU
TSh0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CiAKICAgICAgICAgLy8gTm93IGRvIGEg
cGFpbnQgd2l0aCB0aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgotICAgICAgICBwYWlu
dExheWVyKHRoaXMsIHAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwYWludERpcnR5UmVj
dCksIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFp
bnRGbGFncyB8IFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKTsKKyAgICAgICAgbG9jYWxQYWlu
dEZsYWdzIHw9IFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtOworICAgICAgICBwYWludExheWVy
KHRoaXMsIHAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwYWludERpcnR5UmVjdCksIHBh
aW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgZmlyc3RMYXllclRvUGFpbnQsIG92ZXJsYXBUZXN0
UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgcC0+cmVzdG9yZSgpOwogICAg
ICAgICAKQEAgLTI0MTEsMTQgKzI0MTksMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
cihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBQYWludExheWVyRmxhZ3MgbG9jYWxQYWludEZsYWdzID0gcGFp
bnRGbGFncyAmIH5QYWludExheWVyQXBwbGllZFRyYW5zZm9ybTsKKyAgICBsb2NhbFBhaW50Rmxh
Z3MgJj0gflBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtOwogICAgIGJvb2wgaGF2ZVRyYW5zcGFy
ZW5jeSA9IGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5OwogCiAg
ICAgLy8gUGFpbnQgdGhlIHJlZmxlY3Rpb24gZmlyc3QgaWYgd2UgaGF2ZSBvbmUuCiAgICAgaWYg
KG1fcmVmbGVjdGlvbiAmJiAhbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24pIHsKICAgICAgICAg
Ly8gTWFyayB0aGF0IHdlIGFyZSBub3cgaW5zaWRlIHJlcGxpY2EgcGFpbnRpbmcuCiAgICAgICAg
IG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgcmVmbGVjdGlvbkxh
eWVyKCktPnBhaW50TGF5ZXIocm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhh
dmlvciwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3Mg
fCBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKTsKKyAgICAgICAgUGFpbnRMYXllckZsYWdz
IHBhaW50UmVmbGVjdGlvbkZsYWdzID0gbG9jYWxQYWludEZsYWdzIHwgUGFpbnRMYXllclBhaW50
aW5nUmVmbGVjdGlvbjsKKyAgICAgICAgcmVmbGVjdGlvbkxheWVyKCktPnBhaW50TGF5ZXIocm9v
dExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCBm
aXJzdExheWVyVG9QYWludCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRSZWZsZWN0aW9uRmxh
Z3MpOwogICAgICAgICBtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbiA9IGZhbHNlOwogICAgIH0K
IApAQCAtMjQ0Nyw4ICsyNDU2LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgIGlmIChvdmVybGFw
VGVzdFJlcXVlc3RzICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkKICAgICAgICAgcGVyZm9ybU92
ZXJsYXBUZXN0cygqb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbGF5ZXJCb3VuZHMpOwogCi0gICAgLy8g
V2Ugd2FudCB0byBwYWludCBvdXIgbGF5ZXIsIGJ1dCBvbmx5IGlmIHdlIGludGVyc2VjdCB0aGUg
ZGFtYWdlIHJlY3QuCi0gICAgYm9vbCBzaG91bGRQYWludCA9IGludGVyc2VjdHNEYW1hZ2VSZWN0
KGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCByb290TGF5ZXIpICYmIG1faGFzVmlzaWJsZUNvbnRl
bnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpOworICAgIGJvb2wgc2tpcFBhaW50aW5nID0gZmFs
c2U7CisgICAgaWYgKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJDaGVja0ZpcnN0TGF5ZXJU
b1BhaW50KSB7CisgICAgICAgIEFTU0VSVChmaXJzdExheWVyVG9QYWludCk7CisgICAgICAgIGlm
IChmaXJzdExheWVyVG9QYWludCA9PSB0aGlzKSB7CisgICAgICAgICAgICBsb2NhbFBhaW50Rmxh
Z3MgJj0gflBhaW50TGF5ZXJDaGVja0ZpcnN0TGF5ZXJUb1BhaW50OworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHNraXBQYWludGluZyA9IHRydWU7CisgICAgfQorICAgIAorICAgIC8vIFdl
IHdhbnQgdG8gcGFpbnQgb3VyIGxheWVyLCBidXQgb25seSBpZiB3ZSBpbnRlcnNlY3QgdGhlIGRh
bWFnZSByZWN0LCBhbmQgd2UncmUgbm90IHNraXBwZWQuCisgICAgYm9vbCBzaG91bGRQYWludCA9
ICFza2lwUGFpbnRpbmcgJiYgaW50ZXJzZWN0c0RhbWFnZVJlY3QobGF5ZXJCb3VuZHMsIGRhbWFn
ZVJlY3QsIHJvb3RMYXllcikgJiYgbV9oYXNWaXNpYmxlQ29udGVudCAmJiBpc1NlbGZQYWludGlu
Z0xheWVyKCk7CiAgICAgaWYgKHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1h
Z2VSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBCZWdpbiB0cmFuc3BhcmVuY3kgbGF5ZXJz
IGxhemlseSBub3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgdG8gcGFpbnQgc29tZXRoaW5nLgogICAg
ICAgICBpZiAoaGF2ZVRyYW5zcGFyZW5jeSkKQEAgLTI0NjcsNyArMjQ4NSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250
ZXh0KiBwLAogICAgIH0KIAogICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQgbGlzdCBvZiBjaGls
ZHJlbiB3aXRoIG5lZ2F0aXZlIHotaW5kaWNlcy4KLSAgICBwYWludExpc3QobV9uZWdaT3JkZXJM
aXN0LCByb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGlu
Z1Jvb3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyk7CisgICAgcGFpbnRM
aXN0KG1fbmVnWk9yZGVyTGlzdCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290LCBmaXJzdExheWVyVG9QYWludCwgb3ZlcmxhcFRlc3RSZXF1
ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKIAogICAgIC8vIE5vdyBlc3RhYmxpc2ggdGhlIGFwcHJv
cHJpYXRlIGNsaXAgYW5kIHBhaW50IG91ciBjaGlsZCBSZW5kZXJPYmplY3RzLgogICAgIGlmIChz
aG91bGRQYWludCAmJiAhY2xpcFJlY3RUb0FwcGx5LmlzRW1wdHkoKSkgewpAQCAtMjUwNCwxMCAr
MjUyMiwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290
TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICB9CiAgICAgCiAgICAgLy8gUGFpbnQgYW55
IGNoaWxkIGxheWVycyB0aGF0IGhhdmUgb3ZlcmZsb3cuCi0gICAgcGFpbnRMaXN0KG1fbm9ybWFs
Rmxvd0xpc3QsIHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKKyAgICBw
YWludExpc3QobV9ub3JtYWxGbG93TGlzdCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwg
cGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCBmaXJzdExheWVyVG9QYWludCwgb3ZlcmxhcFRl
c3RSZXF1ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICAvLyBOb3cgd2FsayB0aGUg
c29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgcGFp
bnRMaXN0KG1fcG9zWk9yZGVyTGlzdCwgcm9vdExheWVyLCBwLCBwYWludERpcnR5UmVjdCwgcGFp
bnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50
RmxhZ3MpOworICAgIHBhaW50TGlzdChtX3Bvc1pPcmRlckxpc3QsIHJvb3RMYXllciwgcCwgcGFp
bnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgZmlyc3RMYXllclRvUGFp
bnQsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgICAgIAogICAg
IGlmIChyZW5kZXJlcigpLT5oYXNNYXNrKCkgJiYgc2hvdWxkUGFpbnQgJiYgIXNlbGVjdGlvbk9u
bHkgJiYgIWRhbWFnZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNldENsaXAocCwgcGFpbnRE
aXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwpAQCAtMjUyNiwyMSArMjU0NCwyNSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4
dCogcCwKICAgICAgICAgcC0+cmVzdG9yZSgpOwogICAgICAgICBtX3VzZWRUcmFuc3BhcmVuY3kg
PSBmYWxzZTsKICAgICB9CisgICAgCisgICAgLy8gSWYgd2Ugd2VyZSBza2lwcGluZyBsYXllcnMs
IGNsZWFyIHRoZSBQYWludExheWVyQ2hlY2tGaXJzdExheWVyVG9QYWludCBiaXQgaW4gdGhlIGNh
bGxlcidzIHBhaW50RmxhZ3MuCisgICAgaWYgKGZpcnN0TGF5ZXJUb1BhaW50ICYmICEobG9jYWxQ
YWludEZsYWdzICYgUGFpbnRMYXllckNoZWNrRmlyc3RMYXllclRvUGFpbnQpKQorICAgICAgICBw
YWludEZsYWdzICY9IH5QYWludExheWVyQ2hlY2tGaXJzdExheWVyVG9QYWludDsKIH0KIAogdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHBhaW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdz
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
LCBSZW5kZXJMYXllciogZmlyc3RMYXllclRvUGFpbnQsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCog
b3ZlcmxhcFRlc3RSZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludExh
eWVyRmxhZ3MmIHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgewog
ICAgICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkpOwotICAgICAgICBp
ZiAoIWNoaWxkTGF5ZXItPmlzUGFnaW5hdGVkKCkpCi0gICAgICAgICAgICBjaGlsZExheWVyLT5w
YWludExheWVyKHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgaWYgKCFjaGlsZExheWVyLT5pc1BhZ2luYXRlZCgpKSB7CisgICAgICAgICAg
ICBjaGlsZExheWVyLT5wYWludExheWVyKHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBh
aW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgZmlyc3RMYXllclRvUGFpbnQsIG92ZXJsYXBUZXN0
UmVxdWVzdHMsIHBhaW50RmxhZ3MpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhaW50
UGFnaW5hdGVkQ2hpbGRMYXllcihjaGlsZExheWVyLCByb290TGF5ZXIsIHAsIHBhaW50RGlydHlS
ZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIHBh
aW50RmxhZ3MpOwogICAgIH0KIH0KQEAgLTI1NDgsNyArMjU3MCw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UGFnaW5hdGVkQ2hpbGRMYXllcihSZW5k
ZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhh
dmlvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRl
ck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0
UmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyYgcGFpbnRGbGFncykKIHsKICAgICAvLyBX
ZSBuZWVkIHRvIGRvIG11bHRpcGxlIHBhc3NlcywgYnJlYWtpbmcgdXAgb3VyIGNoaWxkIGxheWVy
IGludG8gc3RyaXBzLgogICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+aXNQb3NpdGlvbmVkKCkpOwpA
QCAtMjU2OSw3ICsyNTkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRQYWdpbmF0ZWRDaGls
ZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXJMYXllcioKIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVy
LCBSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBw
YWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jv
b3QsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWlu
dEZsYWdzLCBjb25zdCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiYgY29sdW1uTGF5ZXJzLCBzaXplX3Qg
Y29sSW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YWludExheWVyRmxhZ3MmIHBhaW50RmxhZ3MsIGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBj
b2x1bW5MYXllcnMsIHNpemVfdCBjb2xJbmRleCkKIHsKICAgICBSZW5kZXJCbG9jayogY29sdW1u
QmxvY2sgPSB0b1JlbmRlckJsb2NrKGNvbHVtbkxheWVyc1tjb2xJbmRleF0tPnJlbmRlcmVyKCkp
OwogCkBAIC0yNjEwLDcgKzI2MzIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkTGF5
ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZQogICAgICAg
ICAgICAgICAgIG5ld1RyYW5zZm9ybS50cmFuc2xhdGVSaWdodChjdXJyWE9mZnNldCwgY3VycllP
ZmZzZXQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPm1f
dHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgobmV3VHJhbnNmb3JtKSk7Ci0g
ICAgICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihyb290TGF5ZXIsIGNvbnRleHQs
IGxvY2FsRGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIG92ZXJsYXBUZXN0
UmVxdWVzdHMsIHBhaW50RmxhZ3MpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXItPnBhaW50
TGF5ZXIocm9vdExheWVyLCBjb250ZXh0LCBsb2NhbERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwg
cGFpbnRpbmdSb290LCAwIC8qZmlyc3RMYXllclRvUGFpbnQqLywgb3ZlcmxhcFRlc3RSZXF1ZXN0
cywgcGFpbnRGbGFncyk7CiAgICAgICAgICAgICAgICAgaWYgKG9sZEhhc1RyYW5zZm9ybSkKICAg
ICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0uc2V0KG5ldyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChvbGRUcmFuc2Zvcm0pKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC0z
MzQ2LDYgKzMzNjgsNTIgQEAgYm9vbCBSZW5kZXJMYXllcjo6aW50ZXJzZWN0c0RhbWFnZVJlY3Qo
Y29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGNvbnN0IEludFJlY3QKICAgICByZXR1cm4gYm91
bmRpbmdCb3gocm9vdExheWVyKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpOwogfQogCitSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OmRlc2NlbmRhbnRPYnNjdXJpbmdSZWN0KFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0KSBjb25zdAoreworICAgIC8v
IEZJWE1FOiB0aGlzIGNvbnZlcnRzIGZyb20gZXZlcnkgbGF5ZXIgdG8gdGhlIHJvb3QgZXZlcnkg
dGltZS4KKyAgICBJbnRSZWN0IGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBw
bHksIG91dGxpbmVSZWN0OworICAgIGNhbGN1bGF0ZVJlY3RzKHJvb3RMYXllciwgcGFpbnREaXJ0
eVJlY3QsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCBjbGlwUmVjdFRvQXBwbHksIG91dGxpbmVS
ZWN0LCBmYWxzZSk7CisgICAgaW50IHggPSBsYXllckJvdW5kcy54KCk7CisgICAgaW50IHkgPSBs
YXllckJvdW5kcy55KCk7CisgICAgaW50IHR4ID0geCAtIHJlbmRlckJveFgoKTsKKyAgICBpbnQg
dHkgPSB5IC0gcmVuZGVyQm94WSgpOworCisgICAgLy8gQmVnaW4gYnkgd2Fsa2luZyBvdXIgbGlz
dCBvZiBwb3NpdGl2ZSBsYXllcnMgZnJvbSBoaWdoZXN0IHotaW5kZXggZG93biB0byB0aGUgbG93
ZXN0IHotaW5kZXguCisgICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkgeworICAgICAgICBmb3IgKGlu
dCBpID0gbV9wb3NaT3JkZXJMaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAg
ICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJMYXllciA9IG1fcG9zWk9yZGVyTGlzdC0+YXQoaSk7Cisg
ICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIG9ic2N1cmluZ0xheWVyID0gY3VyckxheWVyLT5k
ZXNjZW5kYW50T2JzY3VyaW5nUmVjdChyb290TGF5ZXIsIHBhaW50RGlydHlSZWN0KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gb2JzY3VyaW5nTGF5ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBOb3cgY2hlY2sgb3VyIG92ZXJmbG93IG9iamVjdHMuCisgICAgaWYgKG1fbm9ybWFsRmxv
d0xpc3QpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fbm9ybWFsRmxvd0xpc3QtPnNpemUoKSAt
IDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyckxheWVyID0g
bV9ub3JtYWxGbG93TGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIG9i
c2N1cmluZ0xheWVyID0gY3VyckxheWVyLT5kZXNjZW5kYW50T2JzY3VyaW5nUmVjdChyb290TGF5
ZXIsIHBhaW50RGlydHlSZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JzY3VyaW5nTGF5
ZXI7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKHRoaXMgIT0gcm9vdExheWVyICYm
IGlzU2VsZlBhaW50aW5nTGF5ZXIoKSAmJiByZW5kZXJlcigpLT5mb3JlZ3JvdW5kSXNPcGFxdWVJ
blJlY3QodHgsIHR5LCBwYWludERpcnR5UmVjdCkpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0
PFJlbmRlckxheWVyKj4odGhpcyk7CisKKyAgICAvLyBOb3cgY2hlY2sgb3VyIG5lZ2F0aXZlIHot
aW5kZXggY2hpbGRyZW4uCisgICAgaWYgKG1fbmVnWk9yZGVyTGlzdCkgeworICAgICAgICBmb3Ig
KGludCBpID0gbV9uZWdaT3JkZXJMaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAg
ICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJMYXllciA9IG1fbmVnWk9yZGVyTGlzdC0+YXQoaSk7
CisgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIG9ic2N1cmluZ0xheWVyID0gY3VyckxheWVy
LT5kZXNjZW5kYW50T2JzY3VyaW5nUmVjdChyb290TGF5ZXIsIHBhaW50RGlydHlSZWN0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gb2JzY3VyaW5nTGF5ZXI7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgaWYgKHRoaXMgIT0gcm9vdExheWVyICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSAm
JiByZW5kZXJlcigpLT5iYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QodHgsIHR5LCBwYWludERpcnR5
UmVjdCkpCisgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlckxheWVyKj4odGhpcyk7CisK
KyAgICByZXR1cm4gMDsKK30KKwogSW50UmVjdCBSZW5kZXJMYXllcjo6bG9jYWxCb3VuZGluZ0Jv
eCgpIGNvbnN0CiB7CiAgICAgLy8gVGhlcmUgYXJlIHRocmVlIHNwZWNpYWwgY2FzZXMgd2UgbmVl
ZCB0byBjb25zaWRlci4KQEAgLTM5MTEsNyArMzk3OSw3IEBAIHZvaWQgc2hvd0xheWVyVHJlZShj
b25zdCBXZWJDb3JlOjpSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBsYXllci0+cmVuZGVyZXIoKS0+ZnJhbWUoKSkg
ewotICAgICAgICBXVEY6OlN0cmluZyBvdXRwdXQgPSBleHRlcm5hbFJlcHJlc2VudGF0aW9uKGZy
YW1lLCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93QWxsTGF5ZXJzIHwgV2ViQ29yZTo6UmVuZGVy
QXNUZXh0U2hvd0xheWVyTmVzdGluZyB8IFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dDb21wb3Np
dGVkTGF5ZXJzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0FkZHJlc3NlcyB8IFdlYkNvcmU6
OlJlbmRlckFzVGV4dFNob3dJREFuZENsYXNzKTsKKyAgICAgICAgV1RGOjpTdHJpbmcgb3V0cHV0
ID0gZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihmcmFtZSwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hv
d0FsbExheWVycyB8IFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dMYXllck5lc3RpbmcgfCBXZWJD
b3JlOjpSZW5kZXJBc1RleHRTaG93Q29tcG9zaXRlZExheWVycyB8IFdlYkNvcmU6OlJlbmRlckFz
VGV4dFNob3dBZGRyZXNzZXMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93SURBbmRDbGFzcyB8
IFdlYkNvcmU6OlJlbmRlckFzVGV4dERvbnRVcGRhdGVMYXlvdXQpOwogICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIiVzXG4iLCBvdXRwdXQudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKaW5kZXggN2U2NzExNTAwMTlhZGM1NGNhYmFmNGRiMmIwNmM1YjE1MzZk
M2YxOC4uOWQ0OGJjZWU2MTY0NzhjZTFkNTNhOTZjZWQ0ZmRlYTc2MGIxNDVhNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCkBAIC00NjEsMzEgKzQ2MSwzNSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5n
QW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisKKyAgICAvLyBSZXR1cm4gdGhlIGZyb250bW9zdCBk
ZXNjZW5kYW50IHdoaWNoIGZ1bGx5IG9ic2N1cmVzIHRoZSBnaXZlbiByZWN0LiBSZXR1cm5zIDAg
aWYgbm9uZSBmb3VuZC4KKyAgICBSZW5kZXJMYXllciogZGVzY2VuZGFudE9ic2N1cmluZ1JlY3Qo
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QpIGNv
bnN0OwogICAgIAogICAgIGVudW0gUGFpbnRMYXllckZsYWcgewogICAgICAgICBQYWludExheWVy
SGF2ZVRyYW5zcGFyZW5jeSA9IDEsCiAgICAgICAgIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3Jt
ID0gMSA8PCAxLAogICAgICAgICBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzID0gMSA8PCAy
LAotICAgICAgICBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uID0gMSA8PCAzCisgICAgICAg
IFBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24gPSAxIDw8IDMsCisgICAgICAgIFBhaW50TGF5
ZXJDaGVja0ZpcnN0TGF5ZXJUb1BhaW50ID0gMSA8PCA0CiAgICAgfTsKICAgICAKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIFBhaW50TGF5ZXJGbGFnczsKIAogICAgIHZvaWQgcGFpbnRMYXllcihSZW5k
ZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBwYWlu
dERpcnR5UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2Jq
ZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogPSAwLAotICAgICAgICAg
ICAgICAgICAgICBQYWludExheWVyRmxhZ3MgPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgUGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIFJlbmRlckxheWVyKiBmaXJz
dExheWVyVG9QYWludCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiwKKyAgICAgICAgICAgICAgICAg
ICAgUGFpbnRMYXllckZsYWdzJik7CiAgICAgdm9pZCBwYWludExpc3QoVmVjdG9yPFJlbmRlckxh
eWVyKj4qLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZp
b3IsCi0gICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJs
YXBUZXN0UmVxdWVzdE1hcCosCi0gICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzKTsK
KyAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyTGF5
ZXIqIGZpcnN0TGF5ZXJUb1BhaW50LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqLAorICAgICAgICAg
ICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyYpOwogICAgIHZvaWQgcGFpbnRQYWdpbmF0ZWRDaGls
ZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBH
cmFwaGljc0NvbnRleHQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVybGFwVGVz
dFJlcXVlc3RNYXAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5
ZXJGbGFncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZs
YWdzJik7CiAgICAgdm9pZCBwYWludENoaWxkTGF5ZXJJbnRvQ29sdW1ucyhSZW5kZXJMYXllciog
Y2hpbGRMYXllciwgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGly
dHlSZWN0LCBQYWludEJlaGF2aW9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCosCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MsIGNvbnN0
IFZlY3RvcjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5JbmRleCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MmLCBj
b25zdCBWZWN0b3I8UmVuZGVyTGF5ZXIqPiYgY29sdW1uTGF5ZXJzLCBzaXplX3QgY29sdW1uSW5k
ZXgpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQ
b2ludCwgYm9vbCBhcHBsaWVkVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggNzc3ZDA3ZjNiMTdmNjIzNDUwZjBiYzQ2Y2M1YWYzMTZiYzRhNTcx
MC4uNDdiMDUwNGZkYzQ0NGYxZGNkN2I4M2Q1MzdhNzQxMGQ4MmNlZDQzYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC05ODEsNiArOTgxLDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IEdyYXBoaWNzQ29udGV4dCoKICAgICBpZiAocGFpbnRpbmdSb290ICYmICFyZW5kZXJlcigpLT5p
c0Rlc2NlbmRhbnRPZihwYWludGluZ1Jvb3QpKQogICAgICAgICBwYWludGluZ1Jvb3RGb3JSZW5k
ZXJlciA9IHBhaW50aW5nUm9vdDsKIAorICAgIFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncyA9IDA7CiAgICAgYm9vbCBzaG91bGRQYWludCA9IChtX293bmluZ0xheWVyLT5o
YXNWaXNpYmxlQ29udGVudCgpIHx8IG1fb3duaW5nTGF5ZXItPmhhc1Zpc2libGVEZXNjZW5kYW50
KCkpICYmIG1fb3duaW5nTGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKTsKIAogICAgIGlmIChz
aG91bGRQYWludCAmJiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludEJhY2tncm91
bmQpKSB7CkBAIC0xMDAwLDcgKzEwMDEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFp
bnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogICAg
ICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAK
ICAgICAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVn
YXRpdmUgei1pbmRpY2VzLiBPbmx5IFJlbmRlckxheWVycyB3aXRob3V0IGNvbXBvc2l0aW5nIGxh
eWVycyB3aWxsIHBhaW50LgotICAgICAgICBtX293bmluZ0xheWVyLT5wYWludExpc3QobV9vd25p
bmdMYXllci0+bmVnWk9yZGVyTGlzdCgpLCByb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlS
ZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIDAsIDApOworICAgICAgICBtX293bmlu
Z0xheWVyLT5wYWludExpc3QobV9vd25pbmdMYXllci0+bmVnWk9yZGVyTGlzdCgpLCByb290TGF5
ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3Qs
IDAsIDAsIHBhaW50RmxhZ3MpOwogICAgIH0KICAgICAgICAgICAgICAgICAKICAgICBib29sIGZv
cmNlQmxhY2tUZXh0ID0gcGFpbnRCZWhhdmlvciAmIFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4
dDsKQEAgLTEwMzcsMTAgKzEwMzgsMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMgdGhhdCBoYXZlIG92ZXJm
bG93LgotICAgICAgICBtX293bmluZ0xheWVyLT5wYWludExpc3QobV9vd25pbmdMYXllci0+bm9y
bWFsRmxvd0xpc3QoKSwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290LCAwLCAwKTsKKyAgICAgICAgbV9vd25pbmdMYXllci0+cGFp
bnRMaXN0KG1fb3duaW5nTGF5ZXItPm5vcm1hbEZsb3dMaXN0KCksIHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwgcGFp
bnRGbGFncyk7CiAKICAgICAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxk
cmVuIHdpdGggcG9zaXRpdmUgei1pbmRpY2VzLgotICAgICAgICBtX293bmluZ0xheWVyLT5wYWlu
dExpc3QobV9vd25pbmdMYXllci0+cG9zWk9yZGVyTGlzdCgpLCByb290TGF5ZXIsIGNvbnRleHQs
IHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIDAsIDApOworICAg
ICAgICBtX293bmluZ0xheWVyLT5wYWludExpc3QobV9vd25pbmdMYXllci0+cG9zWk9yZGVyTGlz
dCgpLCByb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBw
YWludGluZ1Jvb3QsIDAsIDAsIHBhaW50RmxhZ3MpOwogICAgIH0KICAgICAKICAgICBpZiAoc2hv
dWxkUGFpbnQgJiYgKHBhaW50aW5nUGhhc2UgJiBHcmFwaGljc0xheWVyUGFpbnRNYXNrKSkgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAppbmRleCA0YjExZjQwZTkxY2FjNzRiNjY1NGEy
MGJlYTkxNzVhMWY0OWIxYzA3Li45ZDIzZGFlYjRjZDZiMDdmOTRhYjZmMWQzY2QzNjVjNTdkMDEz
YTcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApAQCAtNjcsMTQgKzY3LDE0IEBA
IHZvaWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KQogICAgIHR4ICs9IHgoKTsKICAgICB0eSArPSB5KCk7CiAKLSAgICBpZiAocGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlmIChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKICAgICAgICAgLy8gVHVybiBhcm91bmQgYW5k
IHBhaW50IHRoZSBwYXJlbnQgbGF5ZXIuIFVzZSB0ZW1wb3JhcnkgY2xpcFJlY3RzLCBzbyB0aGF0
IHRoZSBsYXllciBkb2Vzbid0IGVuZCB1cCBjYWNoaW5nIGNsaXAgcmVjdHMKICAgICAgICAgLy8g
Y29tcHV0aW5nIHVzaW5nIHRoZSB3cm9uZyByb290TGF5ZXIKKyAgICAgICAgUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzID0gUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJIYXZl
VHJhbnNwYXJlbmN5IHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtIHwg
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMgfCBSZW5kZXJMYXllcjo6
UGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbjsKICAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCkt
PnBhaW50TGF5ZXIobGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxh
eWVyKCktPmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yTm9ybWFs
LCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJMYXll
cjo6UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFw
cGxpZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0
cyB8IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uKTsKLSAgICBlbHNl
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhaW50QmVoYXZpb3JOb3JtYWwsIDAsIDAsIDAsIHBhaW50
RmxhZ3MpOworICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNr
KQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCB0eCwgdHkpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGVjMzZiN2U0MzdhOTg2MzhhY2ExZTVkMGVm
ZTc3MDFmODhkNGU0N2QuLjdkMTdjZWMxMzA0OGI1ZDUxMTgxOWRhNGE3OTY2MTM3MzJmN2YxZTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC02OTEsNyArNjkxLDgg
QEAgU3RyaW5nIGV4dGVybmFsUmVwcmVzZW50YXRpb24oRnJhbWUqIGZyYW1lLCBSZW5kZXJBc1Rl
eHRCZWhhdmlvciBiZWhhdmlvcikKICAgICAgICAgcHJpbnRDb250ZXh0LmJlZ2luKGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKS0+d2lkdGgoKSk7CiAgICAgfQogCi0gICAgZnJhbWUtPmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOworICAgIGlmICghKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0RG9u
dFVwZGF0ZUxheW91dCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQo
KTsKIAogICAgIFJlbmRlck9iamVjdCogbyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKICAg
ICBpZiAoIW8pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmgKaW5kZXggNTlhMGFiYjI1
NmQ5NTRkYWE3OGJkZGQ1ZjE2MDhmYWM2YTczMDI4Zi4uYmVmOGViZDc0MWYzMzY1ZGJlZWJjMDlk
M2MxNjg4OTM4MWZkODU0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaApAQCAt
NDgsNyArNDgsOCBAQCBlbnVtIFJlbmRlckFzVGV4dEJlaGF2aW9yRmxhZ3MgewogICAgIFJlbmRl
ckFzVGV4dFNob3dDb21wb3NpdGVkTGF5ZXJzID0gMSA8PCAyLCAvLyBTaG93IHdoaWNoIGxheWVy
cyBhcmUgY29tcG9zaXRlZC4KICAgICBSZW5kZXJBc1RleHRTaG93QWRkcmVzc2VzID0gMSA8PCAz
LCAvLyBTaG93IGxheWVyIGFuZCByZW5kZXJlciBhZGRyZXNzZXMuCiAgICAgUmVuZGVyQXNUZXh0
U2hvd0lEQW5kQ2xhc3MgPSAxIDw8IDQsIC8vIFNob3cgaWQgYW5kIGNsYXNzIGF0dHJpYnV0ZXMK
LSAgICBSZW5kZXJBc1RleHRQcmludGluZ01vZGUgPSAxIDw8IDUgLy8gRHVtcCB0aGUgdHJlZSBp
biBwcmludGluZyBtb2RlLgorICAgIFJlbmRlckFzVGV4dFByaW50aW5nTW9kZSA9IDEgPDwgNSwg
Ly8gRHVtcCB0aGUgdHJlZSBpbiBwcmludGluZyBtb2RlLgorICAgIFJlbmRlckFzVGV4dERvbnRV
cGRhdGVMYXlvdXQgPSAxIDw8IDYgLy8gRG9uJ3QgdXBkYXRlIGxheW91dCwgdG8gYXZvaWQgaXNz
dWVzIGNhbGxpbmcgc2hvd0xheWVyVHJlZSgpIGZyb20gZ2RiIGZyb20gbGF5b3V0IG9yIHBhaW50
aW5nIGNvZGUuCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBSZW5kZXJBc1RleHRCZWhhdmlvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73214</attachid>
            <date>2010-11-07 22:41:02 -0800</date>
            <delta_ts>2010-11-07 22:41:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49135-20101107224100.patch</filename>
            <type>text/plain</type>
            <size>30817</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmEwYmMwMTY2YTg3NmQyZDNkYmI5ODhlMmQxZTU0MmI5NGQxZWNiOS4uMDVhNDE4ZmZjMGE2MTVh
ZjI4ZmI1ZDJjYzNkY2Y3OWMyM2VjOGZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0wNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRpbWl6ZSBwYWludGluZyB0byBhdm9pZCBy
ZW5kZXJpbmcgYXJlYXMgdGhhdCBhcmUgY29tcGxldGVseSBvYnNjdXJlZCBieSBvdGhlciBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkx
MzUKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpiYWNrZ3JvdW5k
SXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmZvcmVncm91bmRJc09wYXF1ZUluUmVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpmb3JlZ3JvdW5kSXNPcGFxdWVJblJlY3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRQ
YWdpbmF0ZWRDaGlsZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dENoaWxkTGF5ZXJJbnRvQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
ZGVzY2VuZGFudE9ic2N1cmluZ1JlY3QpOgorICAgICAgICAoc2hvd0xheWVyVHJlZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaDoK
KwogMjAxMC0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGQy
YTdiZTdlODM3NzY2ODlhN2EzMGUwYjYwMDMzMDZkM2I3NmQ0MC4uZDQwOGExZThkNWU4NWZlMWVl
MjExZDE0ZmYxMzlmMzI1NmE0NzE0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjUw
LDYgKzEyNTAsMjEgQEAgSW50U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGMKICAgICByZXR1cm4gb2Zmc2V0
OwogfQogCitib29sIFJlbmRlckJveDo6YmFja2dyb3VuZElzT3BhcXVlSW5SZWN0KGludCB0eCwg
aW50IHR5LCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIENvbG9yIGJhY2tncm91
bmRDb2xvciA9IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CisgICAgYm9vbCBoYXNPcGFxdWVCYWNrZ3JvdW5kID0gYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSAmJiAhYmFja2dyb3VuZENvbG9yLmhhc0FscGhhKCk7CisgICAgaWYgKCFo
YXNPcGFxdWVCYWNrZ3JvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0eCArPSB4
KCk7CisgICAgdHkgKz0geSgpOworICAgIAorICAgIC8vIEZJWE1FOiBjaGVjayBmb3IgYm9yZGVy
IHJhZGl1cy4KKyAgICBJbnRSZWN0IGJhY2tncm91bmRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVp
Z2h0KCkpOworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVjdC5jb250YWlucyhyZWN0KTsKK30KKwog
SW5saW5lQm94KiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCgpCiB7CiAgICAgcmV0dXJuIG5l
dyAocmVuZGVyQXJlbmEoKSkgSW5saW5lQm94KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCA0NGQ4NGJhNjdkMzFkYTAzMzkxZWRmZTE4MGVmYmRiMzA2MjU0NDZmLi5mMGVhY2FmMjY4NmJh
YWM0YTU4MzY4MzJjYmFiMGZjODgwMjBkOThiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDEw
LDYgKzQxMCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCwg
Ym9vbCB1c2VUcmFuc2Zvcm1zLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChib29sIGZpeGVkLCBib29sIHVzZVRyYW5zZm9y
bXMsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgYmFja2dyb3Vu
ZElzT3BhcXVlSW5SZWN0KGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgYm9vbCBpbmNsdWRlVmVydGljYWxTY3JvbGxiYXJTaXplKCkgY29uc3Qg
eyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9T
Q1JPTEwgfHwgc3R5bGUoKS0+b3ZlcmZsb3dZKCkgPT0gT0FVVE8pOyB9CiAgICAgYm9vbCBpbmNs
dWRlSG9yaXpvbnRhbFNjcm9sbGJhclNpemUoKSBjb25zdCB7IHJldHVybiBoYXNPdmVyZmxvd0Ns
aXAoKSAmJiAoc3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCB8fCBzdHlsZSgpLT5vdmVy
Zmxvd1goKSA9PSBPQVVUTyk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCmluZGV4IDEyMTYwMWZkMGMzNjJiNWE3YzY1YmQxMGU1ZWIxMGYxMTZmNjQ1YWUuLmYxM2I2
Y2NiZjc3ZDk5NmZjYTNjYWY0OWE0YjY2MGQ5ODQ2ZGQ0NDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMTE0LDYgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYWludEJveFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgaW50
IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1
ZSk7CiAgICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwg
aW50IGhlaWdodCwgSW5saW5lRmxvd0JveCogPSAwLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOwogCisg
ICAgLy8gUmVjdCBpcyBpbiBjb29yZHMgbG9jYWwgdG8gdGhlIHJlbmRlcmVyCisgICAgdmlydHVh
bCBib29sIGJhY2tncm91bmRJc09wYXF1ZUluUmVjdChpbnQgLyp0eCovLCBpbnQgLyp0eSovLCBj
b25zdCBJbnRSZWN0JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Zm9yZWdyb3VuZElzT3BhcXVlSW5SZWN0KGludCAvKnR4Ki8sIGludCAvKnR5Ki8sIGNvbnN0IElu
dFJlY3QmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAogICAgIC8vIFRoZSBkaWZmZXJl
bmNlIGJldHdlZW4gdGhpcyBpbmxpbmUncyBiYXNlbGluZSBwb3NpdGlvbiBhbmQgdGhlIGxpbmUn
cyBiYXNlbGluZSBwb3NpdGlvbi4KICAgICBpbnQgdmVydGljYWxQb3NpdGlvbihib29sIGZpcnN0
TGluZSkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODRmZWIw
ZjFiYmU4OTQ4ZGVmNmIwOWZmODViZWJkOWZjY2VlMDVjYy4uM2E1YjQ3MWVkNGEzM2I5ZjA0MDFm
NTk3MjAwNzllNGIzMDE3ODIyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTA0
LDQgKzUwNCwzMiBAQCBpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0xvZ2ljYWxIZWln
aHQoKSBjb25zdAogICAgIHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aCgpICogaW50cmluc2ljSGVpZ2h0IC8gaW50cmluc2ljV2lkdGg7CiB9CiAKK2Jvb2wgUmVu
ZGVySW1hZ2U6OmZvcmVncm91bmRJc09wYXF1ZUluUmVjdChpbnQgdHgsIGludCB0eSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0odHgpOworICAgIFVOVVNF
RF9QQVJBTSh0eSk7CisgICAgVU5VU0VEX1BBUkFNKHJlY3QpOworLyoKKyAgICBpZiAoIW1faW1h
Z2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50
IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOworICAgIGludCBjSGVpZ2h0ID0gY29udGVudEhlaWdo
dCgpOworICAgIGludCBsZWZ0Qm9yZGVyID0gYm9yZGVyTGVmdCgpOworICAgIGludCB0b3BCb3Jk
ZXIgPSBib3JkZXJUb3AoKTsKKyAgICBpbnQgbGVmdFBhZCA9IHBhZGRpbmdMZWZ0KCk7CisgICAg
aW50IHRvcFBhZCA9IHBhZGRpbmdUb3AoKTsKKworICAgIEltYWdlKiBpbWcgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKGNXaWR0aCwgY0hlaWdodCk7CisgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSW50U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOworICAgIEludFJlY3QgcmVjdChJbnRQb2ludCh0eCArIGxlZnRCb3Jk
ZXIgKyBsZWZ0UGFkLCB0eSArIHRvcEJvcmRlciArIHRvcFBhZCksIGNvbnRlbnRTaXplKTsKKyov
CisgICAgLy8gY2FsbCBmcmFtZUhhc0FscGhhQXRJbmRleAorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCAz
MDhjODYzODg4NTQwZjEzMjhhZjRhNDVkNDkxZTJiM2U2NjRjN2UxLi5hYmQzMGQwODE2N2FiNDQy
ZTc1MjgzOTIzZWY1ZGEwMTg4ZDI4NTJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg2
LDYgKzg2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgY2FsY0FzcGVjdFJhdGlvTG9naWNhbFdpZHRo
KCkgY29uc3Q7CiAgICAgaW50IGNhbGNBc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgYm9vbCBmb3JlZ3JvdW5kSXNPcGFxdWVJblJlY3QoaW50IHR4LCBpbnQg
dHksIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBUZXh0IHRvIGRp
c3BsYXkgYXMgbG9uZyBhcyB0aGUgaW1hZ2UgaXNuJ3QgYXZhaWxhYmxlLgogICAgIFN0cmluZyBt
X2FsdFRleHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGU4Y2VlYzg5OTc4NTYz
OTE5ZjEyYTUzNzYyN2RhMjM5YTEyZWMwZi4uMjkwZWZhMGI2NjQ5MmY4ZTA5ZGVkYTczYzhkNDBi
MzRkOTIxMGQ2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjI5MSw4ICsyMjkx
LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRCZWhh
dmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QgKnBhaW50aW5nUm9vdCkKIHsKKyAgICBS
ZW5kZXJMYXllciogbGF5ZXJUb1N0YXJ0UGFpbnRpbmcgPSBkZXNjZW5kYW50T2JzY3VyaW5nUmVj
dCh0aGlzLCBkYW1hZ2VSZWN0KTsKKyAgICBpZiAobGF5ZXJUb1N0YXJ0UGFpbnRpbmcpCisgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiSGl0IHBhaW50aW5nIG9wdGltaXphdGlvbiBmb3IgbGF5ZXIg
JXAgJWR4JWRcbiIsIGxheWVyVG9TdGFydFBhaW50aW5nLCBsYXllclRvU3RhcnRQYWludGluZy0+
d2lkdGgoKSwgbGF5ZXJUb1N0YXJ0UGFpbnRpbmctPmhlaWdodCgpKTsKKyAgICAgICAgCiAgICAg
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7Ci0gICAgcGFpbnRMYXll
cih0aGlzLCBwLCBkYW1hZ2VSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsICZvdmVy
bGFwVGVzdFJlcXVlc3RzKTsKKyAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncyA9IGxheWVy
VG9TdGFydFBhaW50aW5nID8gUGFpbnRMYXllckNoZWNrRmlyc3RMYXllclRvUGFpbnQgOiAwOwor
ICAgIHBhaW50TGF5ZXIodGhpcywgcCwgZGFtYWdlUmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRp
bmdSb290LCBsYXllclRvU3RhcnRQYWludGluZywgJm92ZXJsYXBUZXN0UmVxdWVzdHMsIHBhaW50
RmxhZ3MpOwogICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRlcmF0b3IgZW5kID0gb3Zlcmxh
cFRlc3RSZXF1ZXN0cy5lbmQoKTsKICAgICBmb3IgKE92ZXJsYXBUZXN0UmVxdWVzdE1hcDo6aXRl
cmF0b3IgaXQgPSBvdmVybGFwVGVzdFJlcXVlc3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
ICAgICAgICAgaXQtPmZpcnN0LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CkBAIC0yMzM3
LDE1ICsyMzQyLDE3IEBAIHN0YXRpYyBib29sIHNob3VsZERvU29mdHdhcmVQYWludChjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIsIGJvb2wgcGFpbnRpbmdSZWZsZWN0CiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBw
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3Qs
IFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogcGFpbnRpbmdSb290LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBU
ZXN0UmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdS
b290LCBSZW5kZXJMYXllciogZmlyc3RMYXllclRvUGFpbnQsIE92ZXJsYXBUZXN0UmVxdWVzdE1h
cCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBhaW50TGF5
ZXJGbGFncyYgcGFpbnRGbGFncykKIHsKKyAgICBQYWludExheWVyRmxhZ3MgbG9jYWxQYWludEZs
YWdzID0gcGFpbnRGbGFnczsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRp
bnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAg
ICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJl
Y3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4gdGhpcyBjYXNlLgogICAgICAgICBp
ZiAocC0+dXBkYXRpbmdDb250cm9sVGludHMoKSB8fCAocGFpbnRCZWhhdmlvciAmIFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpKQotICAgICAgICAgICAgcGFpbnRGbGFncyB8
PSBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzOworICAgICAgICAgICAgbG9jYWxQYWludEZs
YWdzIHw9IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFi
YWNraW5nKCktPnBhaW50aW5nR29lc1RvV2luZG93KCkgJiYgIXNob3VsZERvU29mdHdhcmVQYWlu
dCh0aGlzLCBwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nUmVmbGVjdGlvbikpIHsKICAg
ICAgICAgICAgIC8vIElmIHRoaXMgUmVuZGVyTGF5ZXIgc2hvdWxkIHBhaW50IGludG8gaXRzIGJh
Y2tpbmcsIHRoYXQgd2lsbCBiZSBkb25lIHZpYSBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50
b0xheWVyKCkuCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzY0LDEwICsyMzcxLDEwIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhp
Y3NDb250ZXh0KiBwLAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRzV2l0aFRyYW5z
cGFyZW5jeShwYWludEJlaGF2aW9yKSkKLSAgICAgICAgcGFpbnRGbGFncyB8PSBQYWludExheWVy
SGF2ZVRyYW5zcGFyZW5jeTsKKyAgICAgICAgbG9jYWxQYWludEZsYWdzIHw9IFBhaW50TGF5ZXJI
YXZlVHJhbnNwYXJlbmN5OwogCiAgICAgLy8gQXBwbHkgYSB0cmFuc2Zvcm0gaWYgd2UgaGF2ZSBv
bmUuICBBIHJlZmxlY3Rpb24gaXMgY29uc2lkZXJlZCB0byBiZSBhIHRyYW5zZm9ybSwgc2luY2Ug
aXQgaXMgYSBmbGlwIGFuZCBhIHRyYW5zbGF0ZS4KLSAgICBpZiAocGFpbnRzV2l0aFRyYW5zZm9y
bShwYWludEJlaGF2aW9yKSAmJiAhKHBhaW50RmxhZ3MgJiBQYWludExheWVyQXBwbGllZFRyYW5z
Zm9ybSkpIHsKKyAgICBpZiAocGFpbnRzV2l0aFRyYW5zZm9ybShwYWludEJlaGF2aW9yKSAmJiAh
KGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtKSkgewogICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybSA9IHJlbmRlcmFibGVUcmFuc2Zv
cm0ocGFpbnRCZWhhdmlvcik7CiAgICAgICAgIC8vIElmIHRoZSB0cmFuc2Zvcm0gY2FuJ3QgYmUg
aW52ZXJ0ZWQsIHRoZW4gZG9uJ3QgcGFpbnQgYW55dGhpbmcuCiAgICAgICAgIGlmICghbGF5ZXJU
cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCkBAIC0yMzc1LDEzICsyMzgyLDEzIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250
ZXh0KiBwLAogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB0cmFuc3BhcmVuY3kgbGF5ZXIgZW5j
bG9zaW5nIHVzIGFuZCB3ZSBhcmUgdGhlIHJvb3Qgb2YgYSB0cmFuc2Zvcm0sIHRoZW4gd2UgbmVl
ZCB0byBlc3RhYmxpc2ggdGhlIHRyYW5zcGFyZW5jeQogICAgICAgICAvLyBsYXllciBmcm9tIHRo
ZSBwYXJlbnQgbm93LgotICAgICAgICBpZiAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJIYXZlVHJh
bnNwYXJlbmN5KQorICAgICAgICBpZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllckhhdmVU
cmFuc3BhcmVuY3kpCiAgICAgICAgICAgICBwYXJlbnQoKS0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cnMocCwgcm9vdExheWVyLCBwYWludEJlaGF2aW9yKTsKICAgCiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgcGFyZW50J3MgY2xpcCByZWN0cyBoYXZlIGJlZW4gY2FsY3VsYXRlZC4KICAgICAgICAg
SW50UmVjdCBjbGlwUmVjdCA9IHBhaW50RGlydHlSZWN0OwogICAgICAgICBpZiAocGFyZW50KCkp
IHsKLSAgICAgICAgICAgIGNsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KHJvb3RMYXllciwg
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOworICAgICAgICAgICAg
Y2xpcFJlY3QgPSBiYWNrZ3JvdW5kQ2xpcFJlY3Qocm9vdExheWVyLCBsb2NhbFBhaW50RmxhZ3Mg
JiBQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzKTsKICAgICAgICAgICAgIGNsaXBSZWN0Lmlu
dGVyc2VjdChwYWludERpcnR5UmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDAxLDcg
KzI0MDgsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290
TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICAgICAgcC0+Y29uY2F0Q1RNKHRyYW5zZm9y
bS50b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAvLyBOb3cgZG8gYSBwYWludCB3aXRo
IHRoZSByb290IGxheWVyIHNoaWZ0ZWQgdG8gYmUgdXMuCi0gICAgICAgIHBhaW50TGF5ZXIodGhp
cywgcCwgdHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50RGlydHlSZWN0KSwgcGFpbnRC
ZWhhdmlvciwgcGFpbnRpbmdSb290LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzIHwg
UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0pOworICAgICAgICBsb2NhbFBhaW50RmxhZ3MgfD0g
UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm07CisgICAgICAgIHBhaW50TGF5ZXIodGhpcywgcCwg
dHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBhaW50RGlydHlSZWN0KSwgcGFpbnRCZWhhdmlv
ciwgcGFpbnRpbmdSb290LCBmaXJzdExheWVyVG9QYWludCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywg
bG9jYWxQYWludEZsYWdzKTsKIAogICAgICAgICBwLT5yZXN0b3JlKCk7CiAgICAgICAgIApAQCAt
MjQxMSwxNCArMjQxOSwxNSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFBhaW50TGF5ZXJGbGFncyBsb2NhbFBhaW50RmxhZ3MgPSBwYWludEZsYWdzICYg
flBhaW50TGF5ZXJBcHBsaWVkVHJhbnNmb3JtOworICAgIGxvY2FsUGFpbnRGbGFncyAmPSB+UGFp
bnRMYXllckFwcGxpZWRUcmFuc2Zvcm07CiAgICAgYm9vbCBoYXZlVHJhbnNwYXJlbmN5ID0gbG9j
YWxQYWludEZsYWdzICYgUGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3k7CiAKICAgICAvLyBQYWlu
dCB0aGUgcmVmbGVjdGlvbiBmaXJzdCBpZiB3ZSBoYXZlIG9uZS4KICAgICBpZiAobV9yZWZsZWN0
aW9uICYmICFtX3BhaW50aW5nSW5zaWRlUmVmbGVjdGlvbikgewogICAgICAgICAvLyBNYXJrIHRo
YXQgd2UgYXJlIG5vdyBpbnNpZGUgcmVwbGljYSBwYWludGluZy4KICAgICAgICAgbV9wYWludGlu
Z0luc2lkZVJlZmxlY3Rpb24gPSB0cnVlOwotICAgICAgICByZWZsZWN0aW9uTGF5ZXIoKS0+cGFp
bnRMYXllcihyb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWlu
dGluZ1Jvb3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyB8IFBhaW50TGF5
ZXJQYWludGluZ1JlZmxlY3Rpb24pOworICAgICAgICBQYWludExheWVyRmxhZ3MgcGFpbnRSZWZs
ZWN0aW9uRmxhZ3MgPSBsb2NhbFBhaW50RmxhZ3MgfCBQYWludExheWVyUGFpbnRpbmdSZWZsZWN0
aW9uOworICAgICAgICByZWZsZWN0aW9uTGF5ZXIoKS0+cGFpbnRMYXllcihyb290TGF5ZXIsIHAs
IHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIGZpcnN0TGF5ZXJU
b1BhaW50LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludFJlZmxlY3Rpb25GbGFncyk7CiAgICAg
ICAgIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uID0gZmFsc2U7CiAgICAgfQogCkBAIC0yNDQ3
LDggKzI0NTYsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciog
cm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgaWYgKG92ZXJsYXBUZXN0UmVxdWVz
dHMgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKQogICAgICAgICBwZXJmb3JtT3ZlcmxhcFRlc3Rz
KCpvdmVybGFwVGVzdFJlcXVlc3RzLCBsYXllckJvdW5kcyk7CiAKLSAgICAvLyBXZSB3YW50IHRv
IHBhaW50IG91ciBsYXllciwgYnV0IG9ubHkgaWYgd2UgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVj
dC4KLSAgICBib29sIHNob3VsZFBhaW50ID0gaW50ZXJzZWN0c0RhbWFnZVJlY3QobGF5ZXJCb3Vu
ZHMsIGRhbWFnZVJlY3QsIHJvb3RMYXllcikgJiYgbV9oYXNWaXNpYmxlQ29udGVudCAmJiBpc1Nl
bGZQYWludGluZ0xheWVyKCk7CisgICAgYm9vbCBza2lwUGFpbnRpbmcgPSBmYWxzZTsKKyAgICBp
ZiAobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllckNoZWNrRmlyc3RMYXllclRvUGFpbnQpIHsK
KyAgICAgICAgQVNTRVJUKGZpcnN0TGF5ZXJUb1BhaW50KTsKKyAgICAgICAgaWYgKGZpcnN0TGF5
ZXJUb1BhaW50ID09IHRoaXMpCisgICAgICAgICAgICBsb2NhbFBhaW50RmxhZ3MgJj0gflBhaW50
TGF5ZXJDaGVja0ZpcnN0TGF5ZXJUb1BhaW50OworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
a2lwUGFpbnRpbmcgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICAvLyBXZSB3YW50IHRvIHBhaW50
IG91ciBsYXllciwgYnV0IG9ubHkgaWYgd2UgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCwgYW5k
IHdlJ3JlIG5vdCBza2lwcGVkLgorICAgIGJvb2wgc2hvdWxkUGFpbnQgPSAhc2tpcFBhaW50aW5n
ICYmIGludGVyc2VjdHNEYW1hZ2VSZWN0KGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LCByb290TGF5
ZXIpICYmIG1faGFzVmlzaWJsZUNvbnRlbnQgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpOwogICAg
IGlmIChzaG91bGRQYWludCAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdlUmVjdC5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gQmVnaW4gdHJhbnNwYXJlbmN5IGxheWVycyBsYXppbHkgbm93IHRo
YXQgd2Uga25vdyB3ZSBoYXZlIHRvIHBhaW50IHNvbWV0aGluZy4KICAgICAgICAgaWYgKGhhdmVU
cmFuc3BhcmVuY3kpCkBAIC0yNDY3LDcgKzI0ODUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICB9
CiAKICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBuZWdh
dGl2ZSB6LWluZGljZXMuCi0gICAgcGFpbnRMaXN0KG1fbmVnWk9yZGVyTGlzdCwgcm9vdExheWVy
LCBwLCBwYWludERpcnR5UmVjdCwgcGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCBvdmVybGFw
VGVzdFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MpOworICAgIHBhaW50TGlzdChtX25lZ1pPcmRl
ckxpc3QsIHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50
aW5nUm9vdCwgZmlyc3RMYXllclRvUGFpbnQsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFp
bnRGbGFncyk7CiAKICAgICAvLyBOb3cgZXN0YWJsaXNoIHRoZSBhcHByb3ByaWF0ZSBjbGlwIGFu
ZCBwYWludCBvdXIgY2hpbGQgUmVuZGVyT2JqZWN0cy4KICAgICBpZiAoc2hvdWxkUGFpbnQgJiYg
IWNsaXBSZWN0VG9BcHBseS5pc0VtcHR5KCkpIHsKQEAgLTI1MDQsMTAgKzI1MjIsMTAgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGlj
c0NvbnRleHQqIHAsCiAgICAgfQogICAgIAogICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMg
dGhhdCBoYXZlIG92ZXJmbG93LgotICAgIHBhaW50TGlzdChtX25vcm1hbEZsb3dMaXN0LCByb290
TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIG92
ZXJsYXBUZXN0UmVxdWVzdHMsIGxvY2FsUGFpbnRGbGFncyk7CisgICAgcGFpbnRMaXN0KG1fbm9y
bWFsRmxvd0xpc3QsIHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3Is
IHBhaW50aW5nUm9vdCwgZmlyc3RMYXllclRvUGFpbnQsIG92ZXJsYXBUZXN0UmVxdWVzdHMsIGxv
Y2FsUGFpbnRGbGFncyk7CiAgICAgCiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9m
IGNoaWxkcmVuIHdpdGggcG9zaXRpdmUgei1pbmRpY2VzLgotICAgIHBhaW50TGlzdChtX3Bvc1pP
cmRlckxpc3QsIHJvb3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBh
aW50aW5nUm9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgbG9jYWxQYWludEZsYWdzKTsKKyAgICBw
YWludExpc3QobV9wb3NaT3JkZXJMaXN0LCByb290TGF5ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBw
YWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIGZpcnN0TGF5ZXJUb1BhaW50LCBvdmVybGFwVGVz
dFJlcXVlc3RzLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKICAgICBpZiAocmVuZGVyZXIo
KS0+aGFzTWFzaygpICYmIHNob3VsZFBhaW50ICYmICFzZWxlY3Rpb25Pbmx5ICYmICFkYW1hZ2VS
ZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBzZXRDbGlwKHAsIHBhaW50RGlydHlSZWN0LCBkYW1h
Z2VSZWN0KTsKQEAgLTI1MjYsMTIgKzI1NDQsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAg
IHAtPnJlc3RvcmUoKTsKICAgICAgICAgbV91c2VkVHJhbnNwYXJlbmN5ID0gZmFsc2U7CiAgICAg
fQorICAgIAorICAgIC8vIElmIHdlIHdlcmUgc2tpcHBpbmcgbGF5ZXJzLCBjbGVhciB0aGUgUGFp
bnRMYXllckNoZWNrRmlyc3RMYXllclRvUGFpbnQgYml0IGluIHRoZSBjYWxsZXIncyBwYWludEZs
YWdzLgorICAgIGlmIChmaXJzdExheWVyVG9QYWludCAmJiAhKGxvY2FsUGFpbnRGbGFncyAmIFBh
aW50TGF5ZXJDaGVja0ZpcnN0TGF5ZXJUb1BhaW50KSkKKyAgICAgICAgcGFpbnRGbGFncyAmPSB+
UGFpbnRMYXllckNoZWNrRmlyc3RMYXllclRvUGFpbnQ7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHJvb3RM
YXllciwgR3JhcGhpY3NDb250ZXh0KiBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3Qs
IE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyTGF5ZXIq
IGZpcnN0TGF5ZXJUb1BhaW50LCBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVx
dWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzJiBwYWlu
dEZsYWdzKQogewogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUzOSw3ICsy
NTYxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+
KiBsaXN0LCBSZW5kZXJMYXllciogcm9vdExheWVyLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGlzdC0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIg
PSBsaXN0LT5hdChpKTsKICAgICAgICAgaWYgKCFjaGlsZExheWVyLT5pc1BhZ2luYXRlZCgpKQot
ICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihyb290TGF5ZXIsIHAsIHBhaW50RGly
dHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIG92ZXJsYXBUZXN0UmVxdWVzdHMs
IHBhaW50RmxhZ3MpOworICAgICAgICAgICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihyb290TGF5
ZXIsIHAsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIGZpcnN0
TGF5ZXJUb1BhaW50LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcGFpbnRQYWdpbmF0ZWRDaGlsZExheWVyKGNoaWxkTGF5ZXIsIHJv
b3RMYXllciwgcCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwg
b3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7CiAgICAgfQpAQCAtMjU0OCw3ICsyNTcw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBs
aXN0LCBSZW5kZXJMYXllciogcm9vdExheWVyLAogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRQYWdp
bmF0ZWRDaGlsZExheWVyKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXJMYXllciogcm9v
dExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFp
bnRCZWhhdmlvciBwYWludEJlaGF2aW9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0UmVx
dWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzJiBwYWlu
dEZsYWdzKQogewogICAgIC8vIFdlIG5lZWQgdG8gZG8gbXVsdGlwbGUgcGFzc2VzLCBicmVha2lu
ZyB1cCBvdXIgY2hpbGQgbGF5ZXIgaW50byBzdHJpcHMuCiAgICAgQVNTRVJUKCFyZW5kZXJlcigp
LT5pc1Bvc2l0aW9uZWQoKSk7CkBAIC0yNTY5LDcgKzI1OTEsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRl
ckxheWVyKgogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMoUmVu
ZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVz
dFJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBj
b2x1bW5MYXllcnMsIHNpemVfdCBjb2xJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyYgcGFpbnRGbGFncywgY29uc3QgVmVj
dG9yPFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbEluZGV4KQogewogICAg
IFJlbmRlckJsb2NrKiBjb2x1bW5CbG9jayA9IHRvUmVuZGVyQmxvY2soY29sdW1uTGF5ZXJzW2Nv
bEluZGV4XS0+cmVuZGVyZXIoKSk7CiAKQEAgLTI2MTAsNyArMjYzMiw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVy
LCBSZW5kZXJMYXllCiAgICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0
KGN1cnJYT2Zmc2V0LCBjdXJyWU9mZnNldCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgY2hpbGRMYXllci0+bV90cmFuc2Zvcm0uc2V0KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eChuZXdUcmFuc2Zvcm0pKTsKLSAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5wYWludExheWVy
KHJvb3RMYXllciwgY29udGV4dCwgbG9jYWxEaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50
aW5nUm9vdCwgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgcGFpbnRGbGFncyk7CisgICAgICAgICAgICAg
ICAgY2hpbGRMYXllci0+cGFpbnRMYXllcihyb290TGF5ZXIsIGNvbnRleHQsIGxvY2FsRGlydHlS
ZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QsIDAgLypmaXJzdExheWVyVG9QYWludCov
LCBvdmVybGFwVGVzdFJlcXVlc3RzLCBwYWludEZsYWdzKTsKICAgICAgICAgICAgICAgICBpZiAo
b2xkSGFzVHJhbnNmb3JtKQogICAgICAgICAgICAgICAgICAgICBjaGlsZExheWVyLT5tX3RyYW5z
Zm9ybS5zZXQobmV3IFRyYW5zZm9ybWF0aW9uTWF0cml4KG9sZFRyYW5zZm9ybSkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKQEAgLTMzNDYsNiArMzM2OCw1OCBAQCBib29sIFJlbmRlckxheWVyOjpp
bnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgSW50
UmVjdAogICAgIHJldHVybiBib3VuZGluZ0JveChyb290TGF5ZXIpLmludGVyc2VjdHMoZGFtYWdl
UmVjdCk7CiB9CiAKK1JlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZGVzY2VuZGFudE9ic2N1cmlu
Z1JlY3QoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJl
Y3QpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgY29udmVydHMgZnJvbSBldmVyeSBsYXll
ciB0byB0aGUgcm9vdCBldmVyeSB0aW1lLgorICAgIEludFJlY3QgbGF5ZXJCb3VuZHMsIGRhbWFn
ZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJlY3Q7CisgICAgY2FsY3VsYXRlUmVjdHMo
cm9vdExheWVyLCBwYWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBS
ZWN0VG9BcHBseSwgb3V0bGluZVJlY3QsIGZhbHNlKTsKKyAgICBpbnQgeCA9IGxheWVyQm91bmRz
LngoKTsKKyAgICBpbnQgeSA9IGxheWVyQm91bmRzLnkoKTsKKyAgICBpbnQgdHggPSB4IC0gcmVu
ZGVyQm94WCgpOworICAgIGludCB0eSA9IHkgLSByZW5kZXJCb3hZKCk7CisgICAgCisgICAgLy8g
RklYTUU6IG90aGVyIHRoaW5ncyB0byBjaGVjayBmb3I6CisgICAgLy8gb3BhY2l0eQorICAgIC8v
IHRyYW5zZm9ybXMKKyAgICAvLyBjb21wb3NpdGluZworICAgIC8vIHBhZ2luYXRlZCBsYXllcnMK
KyAgICAKKyAgICAvLyBCZWdpbiBieSB3YWxraW5nIG91ciBsaXN0IG9mIHBvc2l0aXZlIGxheWVy
cyBmcm9tIGhpZ2hlc3Qgei1pbmRleCBkb3duIHRvIHRoZSBsb3dlc3Qgei1pbmRleC4KKyAgICBp
ZiAobV9wb3NaT3JkZXJMaXN0KSB7CisgICAgICAgIGZvciAoaW50IGkgPSBtX3Bvc1pPcmRlckxp
c3QtPnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBSZW5kZXJMYXllciog
Y3VyckxheWVyID0gbV9wb3NaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAgIGlmIChSZW5k
ZXJMYXllciogb2JzY3VyaW5nTGF5ZXIgPSBjdXJyTGF5ZXItPmRlc2NlbmRhbnRPYnNjdXJpbmdS
ZWN0KHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBv
YnNjdXJpbmdMYXllcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyBjaGVjayBvdXIg
b3ZlcmZsb3cgb2JqZWN0cy4KKyAgICBpZiAobV9ub3JtYWxGbG93TGlzdCkgeworICAgICAgICBm
b3IgKGludCBpID0gbV9ub3JtYWxGbG93TGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsK
KyAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJyTGF5ZXIgPSBtX25vcm1hbEZsb3dMaXN0LT5h
dChpKTsKKyAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogb2JzY3VyaW5nTGF5ZXIgPSBjdXJy
TGF5ZXItPmRlc2NlbmRhbnRPYnNjdXJpbmdSZWN0KHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3Qp
KQorICAgICAgICAgICAgICAgIHJldHVybiBvYnNjdXJpbmdMYXllcjsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBpZiAodGhpcyAhPSByb290TGF5ZXIgJiYgaXNTZWxmUGFpbnRpbmdMYXll
cigpICYmIHJlbmRlcmVyKCktPmZvcmVncm91bmRJc09wYXF1ZUluUmVjdCh0eCwgdHksIHBhaW50
RGlydHlSZWN0KSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlz
KTsKKworICAgIC8vIE5vdyBjaGVjayBvdXIgbmVnYXRpdmUgei1pbmRleCBjaGlsZHJlbi4KKyAg
ICBpZiAobV9uZWdaT3JkZXJMaXN0KSB7CisgICAgICAgIGZvciAoaW50IGkgPSBtX25lZ1pPcmRl
ckxpc3QtPnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBSZW5kZXJMYXll
ciogY3VyckxheWVyID0gbV9uZWdaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAgIGlmIChS
ZW5kZXJMYXllciogb2JzY3VyaW5nTGF5ZXIgPSBjdXJyTGF5ZXItPmRlc2NlbmRhbnRPYnNjdXJp
bmdSZWN0KHJvb3RMYXllciwgcGFpbnREaXJ0eVJlY3QpKQorICAgICAgICAgICAgICAgIHJldHVy
biBvYnNjdXJpbmdMYXllcjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAodGhpcyAh
PSByb290TGF5ZXIgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpICYmIHJlbmRlcmVyKCktPmJhY2tn
cm91bmRJc09wYXF1ZUluUmVjdCh0eCwgdHksIHBhaW50RGlydHlSZWN0KSkKKyAgICAgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKTsKKworICAgIHJldHVybiAwOworfQor
CiBJbnRSZWN0IFJlbmRlckxheWVyOjpsb2NhbEJvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICAv
LyBUaGVyZSBhcmUgdGhyZWUgc3BlY2lhbCBjYXNlcyB3ZSBuZWVkIHRvIGNvbnNpZGVyLgpAQCAt
MzkxMSw3ICszOTg1LDcgQEAgdm9pZCBzaG93TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRl
ckxheWVyKiBsYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IGxheWVyLT5yZW5kZXJlcigpLT5mcmFtZSgpKSB7Ci0gICAgICAgIFdURjo6U3Ry
aW5nIG91dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oZnJhbWUsIFdlYkNvcmU6OlJlbmRl
ckFzVGV4dFNob3dBbGxMYXllcnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93TGF5ZXJOZXN0
aW5nIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0NvbXBvc2l0ZWRMYXllcnMgfCBXZWJDb3Jl
OjpSZW5kZXJBc1RleHRTaG93QWRkcmVzc2VzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0lE
QW5kQ2xhc3MpOworICAgICAgICBXVEY6OlN0cmluZyBvdXRwdXQgPSBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKGZyYW1lLCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93QWxsTGF5ZXJzIHwgV2ViQ29y
ZTo6UmVuZGVyQXNUZXh0U2hvd0xheWVyTmVzdGluZyB8IFdlYkNvcmU6OlJlbmRlckFzVGV4dFNo
b3dDb21wb3NpdGVkTGF5ZXJzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0FkZHJlc3NlcyB8
IFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dJREFuZENsYXNzIHwgV2ViQ29yZTo6UmVuZGVyQXNU
ZXh0RG9udFVwZGF0ZUxheW91dCk7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIG91
dHB1dC51dGY4KCkuZGF0YSgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCA3ZTY3MTE1MDAxOWFkYzU0Y2FiYWY0ZGIyYjA2YzViMTUzNmQzZjE4Li45ZDQ4YmNlZTYxNjQ3
OGNlMWQ1M2E5NmNlZDRmZGVhNzYwYjE0NWE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTQ2MSwzMSArNDYxLDM1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVk
ZWQoKTsKKworICAgIC8vIFJldHVybiB0aGUgZnJvbnRtb3N0IGRlc2NlbmRhbnQgd2hpY2ggZnVs
bHkgb2JzY3VyZXMgdGhlIGdpdmVuIHJlY3QuIFJldHVybnMgMCBpZiBub25lIGZvdW5kLgorICAg
IFJlbmRlckxheWVyKiBkZXNjZW5kYW50T2JzY3VyaW5nUmVjdChSZW5kZXJMYXllciogcm9vdExh
eWVyLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCkgY29uc3Q7CiAgICAgCiAgICAgZW51
bSBQYWludExheWVyRmxhZyB7CiAgICAgICAgIFBhaW50TGF5ZXJIYXZlVHJhbnNwYXJlbmN5ID0g
MSwKICAgICAgICAgUGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gPSAxIDw8IDEsCiAgICAgICAg
IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMgPSAxIDw8IDIsCi0gICAgICAgIFBhaW50TGF5
ZXJQYWludGluZ1JlZmxlY3Rpb24gPSAxIDw8IDMKKyAgICAgICAgUGFpbnRMYXllclBhaW50aW5n
UmVmbGVjdGlvbiA9IDEgPDwgMywKKyAgICAgICAgUGFpbnRMYXllckNoZWNrRmlyc3RMYXllclRv
UGFpbnQgPSAxIDw8IDQKICAgICB9OwogICAgIAogICAgIHR5cGVkZWYgdW5zaWduZWQgUGFpbnRM
YXllckZsYWdzOwogCiAgICAgdm9pZCBwYWludExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LAotICAgICAg
ICAgICAgICAgICAgICBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwg
T3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiA9IDAsCi0gICAgICAgICAgICAgICAgICAgIFBhaW50TGF5
ZXJGbGFncyA9IDApOworICAgICAgICAgICAgICAgICAgICBQYWludEJlaGF2aW9yLCBSZW5kZXJP
YmplY3QqIHBhaW50aW5nUm9vdCwgUmVuZGVyTGF5ZXIqIGZpcnN0TGF5ZXJUb1BhaW50LCBPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqLAorICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3Mm
KTsKICAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIFJlbmRlckxheWVy
KiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogcCwKICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwKLSAgICAgICAgICAgICAg
ICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiwK
LSAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MpOworICAgICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290LCBSZW5kZXJMYXllciogZmlyc3RMYXllclRvUGFp
bnQsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCosCisgICAgICAgICAgICAgICAgICAgUGFpbnRMYXll
ckZsYWdzJik7CiAgICAgdm9pZCBwYWludFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIq
IGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIFBhaW50QmVoYXZpb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QsIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCosCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFpbnRMYXllckZsYWdzKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYWludExheWVyRmxhZ3MmKTsKICAgICB2b2lkIHBh
aW50Q2hpbGRMYXllckludG9Db2x1bW5zKFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZp
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBh
aW50aW5nUm9vdCwgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncywgY29uc3QgVmVjdG9yPFJlbmRlckxheWVy
Kj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbHVtbkluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhaW50TGF5ZXJGbGFncyYsIGNvbnN0IFZlY3RvcjxSZW5kZXJM
YXllcio+JiBjb2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5JbmRleCk7CiAKICAgICBSZW5kZXJM
YXllciogaGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBj
b250YWluZXJMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IGhpdFRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LCBib29sIGFwcGxpZWRU
cmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA3
NzdkMDdmM2IxN2Y2MjM0NTBmMGJjNDZjYzVhZjMxNmJjNGE1NzEwLi40N2IwNTA0ZmRjNDQ0ZjFk
Y2Q3YjgzZDUzN2E3NDEwZDgyY2VkNDNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTk4MSw2ICs5ODEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0Kgog
ICAgIGlmIChwYWludGluZ1Jvb3QgJiYgIXJlbmRlcmVyKCktPmlzRGVzY2VuZGFudE9mKHBhaW50
aW5nUm9vdCkpCiAgICAgICAgIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyID0gcGFpbnRpbmdSb290
OwogCisgICAgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzID0gMDsKICAg
ICBib29sIHNob3VsZFBhaW50ID0gKG1fb3duaW5nTGF5ZXItPmhhc1Zpc2libGVDb250ZW50KCkg
fHwgbV9vd25pbmdMYXllci0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSkgJiYgbV9vd25pbmdMYXll
ci0+aXNTZWxmUGFpbnRpbmdMYXllcigpOwogCiAgICAgaWYgKHNob3VsZFBhaW50ICYmIChwYWlu
dGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50QmFja2dyb3VuZCkpIHsKQEAgLTEwMDAsNyAr
MTAwMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgIHJlc3RvcmVDbGlwKGNv
bnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsKIAogICAgICAgICAvLyBOb3cgd2Fs
ayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMuIE9u
bHkgUmVuZGVyTGF5ZXJzIHdpdGhvdXQgY29tcG9zaXRpbmcgbGF5ZXJzIHdpbGwgcGFpbnQuCi0g
ICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50TGlzdChtX293bmluZ0xheWVyLT5uZWdaT3JkZXJM
aXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3Is
IHBhaW50aW5nUm9vdCwgMCwgMCk7CisgICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50TGlzdCht
X293bmluZ0xheWVyLT5uZWdaT3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnRE
aXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwgcGFpbnRGbGFncyk7
CiAgICAgfQogICAgICAgICAgICAgICAgIAogICAgIGJvb2wgZm9yY2VCbGFja1RleHQgPSBwYWlu
dEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0OwpAQCAtMTAzNywxMCArMTAz
OCwxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogICAgICAgICB9CiAKICAgICAgICAgLy8g
UGFpbnQgYW55IGNoaWxkIGxheWVycyB0aGF0IGhhdmUgb3ZlcmZsb3cuCi0gICAgICAgIG1fb3du
aW5nTGF5ZXItPnBhaW50TGlzdChtX293bmluZ0xheWVyLT5ub3JtYWxGbG93TGlzdCgpLCByb290
TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jv
b3QsIDAsIDApOworICAgICAgICBtX293bmluZ0xheWVyLT5wYWludExpc3QobV9vd25pbmdMYXll
ci0+bm9ybWFsRmxvd0xpc3QoKSwgcm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwg
cGFpbnRCZWhhdmlvciwgcGFpbnRpbmdSb290LCAwLCAwLCBwYWludEZsYWdzKTsKIAogICAgICAg
ICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2ZSB6
LWluZGljZXMuCi0gICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50TGlzdChtX293bmluZ0xheWVy
LT5wb3NaT3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBh
aW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCk7CisgICAgICAgIG1fb3duaW5nTGF5ZXIt
PnBhaW50TGlzdChtX293bmluZ0xheWVyLT5wb3NaT3JkZXJMaXN0KCksIHJvb3RMYXllciwgY29u
dGV4dCwgcGFpbnREaXJ0eVJlY3QsIHBhaW50QmVoYXZpb3IsIHBhaW50aW5nUm9vdCwgMCwgMCwg
cGFpbnRGbGFncyk7CiAgICAgfQogICAgIAogICAgIGlmIChzaG91bGRQYWludCAmJiAocGFpbnRp
bmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1hc2spKSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuY3BwCmluZGV4IDRiMTFmNDBlOTFjYWM3NGI2NjU0YTIwYmVhOTE3NWExZjQ5YjFjMDcu
LjlkMjNkYWViNGNkNmIwN2Y5NGFiNmYxZDNjZDM2NWM1N2QwMTNhNzEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxpY2EuY3BwCkBAIC02NywxNCArNjcsMTQgQEAgdm9pZCBSZW5kZXJSZXBsaWNh
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgdHggKz0g
eCgpOwogICAgIHR5ICs9IHkoKTsKIAotICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQpCisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9y
ZWdyb3VuZCkgewogICAgICAgICAvLyBUdXJuIGFyb3VuZCBhbmQgcGFpbnQgdGhlIHBhcmVudCBs
YXllci4gVXNlIHRlbXBvcmFyeSBjbGlwUmVjdHMsIHNvIHRoYXQgdGhlIGxheWVyIGRvZXNuJ3Qg
ZW5kIHVwIGNhY2hpbmcgY2xpcCByZWN0cwogICAgICAgICAvLyBjb21wdXRpbmcgdXNpbmcgdGhl
IHdyb25nIHJvb3RMYXllcgorICAgICAgICBSZW5kZXJMYXllcjo6UGFpbnRMYXllckZsYWdzIHBh
aW50RmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5k
ZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFpbnRM
YXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdS
ZWZsZWN0aW9uOwogICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihsYXllcigp
LT50cmFuc2Zvcm0oKSA/IGxheWVyKCktPnBhcmVudCgpIDogbGF5ZXIoKS0+ZW5jbG9zaW5nVHJh
bnNmb3JtZWRBbmNlc3RvcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCwgcGFpbnRJbmZvLnJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhaW50QmVoYXZpb3JOb3JtYWwsIDAsIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlckxheWVyOjpQYWludExheWVySGF2ZVRy
YW5zcGFyZW5jeSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSB8IFJl
bmRlckxheWVyOjpQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwgUmVuZGVyTGF5ZXI6OlBh
aW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb24pOwotICAgIGVsc2UgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlTWFzaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFpbnRCZWhhdmlvck5vcm1hbCwgMCwgMCwgMCwgcGFpbnRGbGFncyk7CisgICAgfSBlbHNl
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHBhaW50TWFz
ayhwYWludEluZm8sIHR4LCB0eSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKaW5kZXggZWMzNmI3ZTQzN2E5ODYzOGFjYTFlNWQwZWZlNzcwMWY4OGQ0ZTQ3ZC4uN2Qx
N2NlYzEzMDQ4YjVkNTExODE5ZGE0YTc5NjYxMzczMmY3ZjFlMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY5MSw3ICs2OTEsOCBAQCBTdHJpbmcgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihGcmFtZSogZnJhbWUsIFJlbmRlckFzVGV4dEJlaGF2aW9yIGJlaGF2aW9y
KQogICAgICAgICBwcmludENvbnRleHQuYmVnaW4oZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT53
aWR0aCgpKTsKICAgICB9CiAKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
CisgICAgaWYgKCEoYmVoYXZpb3IgJiBSZW5kZXJBc1RleHREb250VXBkYXRlTGF5b3V0KSkKKyAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogCiAgICAgUmVuZGVyT2Jq
ZWN0KiBvID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghbykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuaAppbmRleCA1OWEwYWJiMjU2ZDk1NGRhYTc4YmRkZDVmMTYw
OGZhYzZhNzMwMjhmLi5iZWY4ZWJkNzQxZjMzNjVkYmVlYmMwOWQzYzE2ODg5MzgxZmQ4NTQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oCkBAIC00OCw3ICs0OCw4IEBAIGVudW0g
UmVuZGVyQXNUZXh0QmVoYXZpb3JGbGFncyB7CiAgICAgUmVuZGVyQXNUZXh0U2hvd0NvbXBvc2l0
ZWRMYXllcnMgPSAxIDw8IDIsIC8vIFNob3cgd2hpY2ggbGF5ZXJzIGFyZSBjb21wb3NpdGVkLgog
ICAgIFJlbmRlckFzVGV4dFNob3dBZGRyZXNzZXMgPSAxIDw8IDMsIC8vIFNob3cgbGF5ZXIgYW5k
IHJlbmRlcmVyIGFkZHJlc3Nlcy4KICAgICBSZW5kZXJBc1RleHRTaG93SURBbmRDbGFzcyA9IDEg
PDwgNCwgLy8gU2hvdyBpZCBhbmQgY2xhc3MgYXR0cmlidXRlcwotICAgIFJlbmRlckFzVGV4dFBy
aW50aW5nTW9kZSA9IDEgPDwgNSAvLyBEdW1wIHRoZSB0cmVlIGluIHByaW50aW5nIG1vZGUuCisg
ICAgUmVuZGVyQXNUZXh0UHJpbnRpbmdNb2RlID0gMSA8PCA1LCAvLyBEdW1wIHRoZSB0cmVlIGlu
IHByaW50aW5nIG1vZGUuCisgICAgUmVuZGVyQXNUZXh0RG9udFVwZGF0ZUxheW91dCA9IDEgPDwg
NiAvLyBEb24ndCB1cGRhdGUgbGF5b3V0LCB0byBhdm9pZCBpc3N1ZXMgY2FsbGluZyBzaG93TGF5
ZXJUcmVlKCkgZnJvbSBnZGIgZnJvbSBsYXlvdXQgb3IgcGFpbnRpbmcgY29kZS4KIH07CiB0eXBl
ZGVmIHVuc2lnbmVkIFJlbmRlckFzVGV4dEJlaGF2aW9yOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>