<?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>42002</bug_id>
          
          <creation_ts>2010-07-09 16:30:22 -0700</creation_ts>
          <short_desc>Avoid extra memcpy of character tokens</short_desc>
          <delta_ts>2010-07-14 18:14:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249344</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-09 16:30:22 -0700</bug_when>
    <thetext>Avoid extra memcpy of character tokens</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249346</commentid>
    <comment_count>1</comment_count>
      <attachid>61112</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-09 16:37:26 -0700</bug_when>
    <thetext>Created attachment 61112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249409</commentid>
    <comment_count>2</comment_count>
      <attachid>61112</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-09 18:13:42 -0700</bug_when>
    <thetext>Comment on attachment 61112
Patch

Would be nice to see perf numbers.

Would like to see this change split into two.  One which is just refactoring.  One which actually changes the memory management. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251511</commentid>
    <comment_count>3</comment_count>
      <attachid>61582</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-14 16:38:53 -0700</bug_when>
    <thetext>Created attachment 61582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251512</commentid>
    <comment_count>4</comment_count>
      <attachid>61582</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-14 16:41:45 -0700</bug_when>
    <thetext>Comment on attachment 61582
Patch

I like no functional change patches. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251513</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-14 16:44:15 -0700</bug_when>
    <thetext>Committed r63372: &lt;http://trac.webkit.org/changeset/63372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251514</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-14 16:45:34 -0700</bug_when>
    <thetext>With the old patch applied:
Running 20 times
Ignoring warm-up run (3283)
2896
2900
2897
2917
2909
2911
2945
2940
2920
2912
2913
2916
2965
2935
2924
2950
2959
3007
3017
3005

avg 2936.9
stdev 36.088640872163644

That&apos;s (maybe) 1% faster than the old parser:

avg 2970.4
stdev 15.954309762568855

Running 20 times
Ignoring warm-up run (3351)
2933
2949
2960
2974
2990
2984
2995
2991
2979
3008
2987
2989
2997
2998
3003
3005
2991
3016
3016
3020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251517</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-14 16:46:26 -0700</bug_when>
    <thetext>*** Bug 42302 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251554</commentid>
    <comment_count>8</comment_count>
      <attachid>61590</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-14 17:51:03 -0700</bug_when>
    <thetext>Created attachment 61590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251567</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-14 18:14:06 -0700</bug_when>
    <thetext>Committed r63387: &lt;http://trac.webkit.org/changeset/63387&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61112</attachid>
            <date>2010-07-09 16:37:26 -0700</date>
            <delta_ts>2010-07-14 16:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42002-20100709163725.patch</filename>
            <type>text/plain</type>
            <size>23178</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDkxYTczZWZkZjhhMDE0MDUxMWNhMmY4YzUwNDY2MGZiOWFlMTI1My4uNmQyOWJiOWIwMmE1MWYy
NjEwZmViYTNhZmY4MTcxZDc4NGYzZTkyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzOCBAQAogMjAxMC0wNy0wOSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIGV4dHJhIG1lbWNweSBvZiBjaGFyYWN0ZXIgdG9r
ZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjAw
MgorCisgICAgICAgIEluc3RlYWQgb2YgbWFraW5nIGEgY29weSBvZiB0aGUgY2hhcmFjdGVyIHRv
a2VuIGJ1ZmZlciBpbnRvCisgICAgICAgIEF0b21pY0hUTUxUb2tlbiwgd2UganVzdCBrZWVwIGEg
cG9pbnRlciB0byB0aGUgYnVmZmVyIGluIEhUTUxUb2tlbi4KKworICAgICAgICBJbiBvcmRlciB0
byBnZXQgdGhpcyB0byB3b3JrIGNsZWFubHksIEkgbmVlZGVkIHRvIGRvIGEgYml0IG9mCisgICAg
ICAgIHJlZmFjdG9yaW5nIHRoYXQgd2UndmUgd2FudGVkIHRvIGRvIGZvciBhIHdoaWxlLgorCisg
ICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvSFRNTFRva2VuLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmNoYXJhY3RlcnMpOgorICAgICAgICAq
IGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tl
bkJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hh
cmFjdGVyVG9rZW5CdWZmZXI6On5FeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZl
cjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFs
Q2hhcmFjdGVyVG9rZW5CdWZmZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OnRh
a2VMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OnRha2VSZW1haW5pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOjpn
aXZlUmVtYWluaW5nVG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFeHRl
cm5hbENoYXJhY3RlclRva2VuQnVmZmVyOjp0YWtlUmVtYWluaW5nV2hpdGVzcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VG9PbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
KToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgorCisyMDEwLTA3LTA5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwuCiAKICAgICAgICAgSFRNTDUgdHJlZSBidWlsZGVyIHNob3VsZCBwYXNzIHNvbWUgTGF5
b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaCBiL1dlYkNvcmUv
aHRtbC9IVE1MVG9rZW4uaAppbmRleCBjMmRiODdkNDA2YjVmNWRmY2ExMjc0NGFjMGFiMDE4ZDUy
NjE4MTllLi5kMjk4N2Y0ODU2MTRlMmM4NDA4NjZhZWE2YWI4YmE3OTc0ZWVlMDlmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tl
bi5oCkBAIC0zMzksNyArMzM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9kYXRhID0gU3Ry
aW5nKHRva2VuLmNvbW1lbnQoKS5kYXRhKCksIHRva2VuLmNvbW1lbnQoKS5zaXplKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6Ci0gICAg
ICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uY2hhcmFjdGVycygpLmRhdGEoKSwgdG9rZW4u
Y2hhcmFjdGVycygpLnNpemUoKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9
ICZ0b2tlbi5jaGFyYWN0ZXJzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KQEAgLTM1MiwxMiArMzUyLDYgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodXNlc05hbWUo
KSk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgQXRvbWljSFRNTFRva2VuKGNvbnN0IFN0cmluZyYg
Y2hhcmFjdGVycykKLSAgICAgICAgOiBtX3R5cGUoSFRNTFRva2VuOjpDaGFyYWN0ZXIpCi0gICAg
ICAgICwgbV9kYXRhKGNoYXJhY3RlcnMpCi0gICAgewotICAgIH0KLQogICAgIEhUTUxUb2tlbjo6
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUoKSBjb25zdApAQCAtMzk4LDEwICszOTIsMTAgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9hdHRyaWJ1dGVzLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHJp
bmcmIGNoYXJhY3RlcnMoKSBjb25zdAorICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYg
Y2hhcmFjdGVycygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlbjo6Q2hhcmFjdGVyKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICAgICAgcmV0dXJu
ICptX2V4dGVybmFsQ2hhcmFjdGVyczsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIGNvbW1l
bnQoKSBjb25zdApAQCAtNDQ2LDEwICs0NDAsMTkgQEAgcHJpdmF0ZToKICAgICAvLyAibmFtZSIg
Zm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCiAgICAgQXRvbWljU3RyaW5nIG1fbmFt
ZTsKIAotICAgIC8vICJjaGFyYWN0ZXJzIiBmb3IgQ2hhcmFjdGVyCiAgICAgLy8gImRhdGEiIGZv
ciBDb21tZW50CiAgICAgU3RyaW5nIG1fZGF0YTsKIAorICAgIC8vICJjaGFyYWN0ZXJzIiBmb3Ig
Q2hhcmFjdGVyCisgICAgLy8KKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvcHkgdGhlIHRoZSBj
aGFyYWN0ZXJzIG91dCBvZiB0aGUgSFRNTFRva2VuLCBzbyB3ZQorICAgIC8vIGtlZXAgYSBwb2lu
dGVyIHRvIGl0cyBidWZmZXIgaW5zdGVhZC4gIFRoaXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZQor
ICAgIC8vIEhUTUxUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3ZWVu
IHRoZXNlIG9iamVjdHMuCisgICAgLy8KKyAgICAvLyBGSVhNRTogQWRkIGEgbWVjaGFuaXNtIGZv
ciAiaW50ZXJuYWxpemluZyIgdGhlIGNoYXJhY3RlcnMgd2hlbiB0aGUKKyAgICAvLyAgICAgICAg
SFRNTFRva2VuIGlzIGRlc3RydWN0ZWQuCisgICAgY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9y
KiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKKwogICAgIC8vIEZvciBET0NUWVBFCiAgICAgT3duUHRy
PEhUTUxUb2tlbjo6RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVp
bGRlci5jcHAKaW5kZXggMTVjNGFlNTM2MTUxMDAyYzU2YTI0NGUxMWQyOTU2NjA4MGJhNWQ1MC4u
MGVjMmQxOWQ4Y2QxZjY5N2E3ZGQzZGMzNWFjY2IyOTVjNWM0NDlhNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVl
QnVpbGRlci5jcHAKQEAgLTY2LDc3ICs2Niw2IEBAIGlubGluZSBib29sIGlzVHJlZUJ1aWxkZXJX
aGl0ZXBhY2UoVUNoYXIgY2MpCiAgICAgcmV0dXJuIGNjID09ICdcdCcgfHwgY2MgPT0gJ1x4MEEn
IHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnXHgwRCcgfHwgY2MgPT0gJyAnOwogfQogCi1jbGFz
cyBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCi0gICAgICAgIDogbV9jdXJyZW50KHRva2VuLmNoYXJhY3RlcnMoKS5j
aGFyYWN0ZXJzKCkpCi0gICAgICAgICwgbV9lbmQobV9jdXJyZW50ICsgdG9rZW4uY2hhcmFjdGVy
cygpLmxlbmd0aCgpKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgIH0K
LQotICAgIH5FeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChpc0VtcHR5KCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudCA9PSBtX2VuZDsgfQotCi0gICAgdm9pZCBza2lwTGVhZGluZ1doaXRlc3Bh
Y2UoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICB3aGlsZSAo
aXNUcmVlQnVpbGRlcldoaXRlcGFjZSgqbV9jdXJyZW50KSkgewotICAgICAgICAgICAgaWYgKCsr
bV9jdXJyZW50ID09IG1fZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIFN0cmluZyB0YWtlTGVhZGluZ1doaXRlc3BhY2UoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBtX2N1
cnJlbnQ7Ci0gICAgICAgIHNraXBMZWFkaW5nV2hpdGVzcGFjZSgpOwotICAgICAgICBpZiAoc3Rh
cnQgPT0gbV9jdXJyZW50KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICBy
ZXR1cm4gU3RyaW5nKHN0YXJ0LCBtX2N1cnJlbnQgLSBzdGFydCk7Ci0gICAgfQotCi0gICAgU3Ry
aW5nIHRha2VSZW1haW5pbmcoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwot
ICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBtX2N1cnJlbnQ7Ci0gICAgICAgIG1fY3VycmVu
dCA9IG1fZW5kOwotICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXJ0LCBtX2N1cnJlbnQgLSBzdGFy
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBnaXZlUmVtYWluaW5nVG8oVmVjdG9yPFVDaGFyPiYgcmVj
aXBpZW50KQotICAgIHsKLSAgICAgICAgcmVjaXBpZW50LmFwcGVuZChtX2N1cnJlbnQsIG1fZW5k
IC0gbV9jdXJyZW50KTsKLSAgICAgICAgbV9jdXJyZW50ID0gbV9lbmQ7Ci0gICAgfQotCi0gICAg
U3RyaW5nIHRha2VSZW1haW5pbmdXaGl0ZXNwYWNlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCgh
aXNFbXB0eSgpKTsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiB3aGl0ZXNwYWNlOwotICAgICAgICBk
byB7Ci0gICAgICAgICAgICBVQ2hhciBjYyA9ICptX2N1cnJlbnQrKzsKLSAgICAgICAgICAgIGlm
IChpc1RyZWVCdWlsZGVyV2hpdGVwYWNlKGNjKSkKLSAgICAgICAgICAgICAgICB3aGl0ZXNwYWNl
LmFwcGVuZChjYyk7Ci0gICAgICAgIH0gd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kKTsKLSAgICAg
ICAgLy8gUmV0dXJuaW5nIHRoZSBudWxsIHN0cmluZyB3aGVuIHRoZXJlIGFyZW4ndCBhbnkgd2hp
dGVzcGFjZQotICAgICAgICAvLyBjaGFyYWN0ZXJzIGlzIHNsaWdodGx5IGNsZWFuZXIgc2VtYW50
aWNhbGx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudAotICAgICAgICAvLyB0byBpbnNlcnQgYSB0ZXh0
IG5vZGUgKGFzIG9wcG9zZWQgdG8gaW5zZXJ0aW5nIGFuIGVtcHR5IHRleHQgbm9kZSkuCi0gICAg
ICAgIGlmICh3aGl0ZXNwYWNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQod2hpdGVzcGFjZSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIGNvbnN0IFVDaGFyKiBtX2N1cnJlbnQ7Ci0gICAgY29uc3QgVUNoYXIqIG1f
ZW5kOwotfTsKLQogaW5saW5lIGJvb2wgaGFzTm9uV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJz
KCk7CkBAIC0zMTksNiArMjQ4LDg0IEBAIGJvb2wgaXNOb3RGb3JtYXR0aW5nQW5kTm90UGhyYXNp
bmcoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIAogfSAvLyBuYW1lc3BhY2UKIAorY2xhc3MgSFRN
TFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCisgICAgICAgIDogbV9jdXJyZW50KHRva2VuLmNo
YXJhY3RlcnMoKS5kYXRhKCkpCisgICAgICAgICwgbV9lbmQobV9jdXJyZW50ICsgdG9rZW4uY2hh
cmFjdGVycygpLnNpemUoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAg
ICB9CisKKyAgICBleHBsaWNpdCBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorICAgICAgICA6IG1fY3VycmVudChzdHJpbmcuY2hhcmFjdGVycygpKQor
ICAgICAgICAsIG1fZW5kKG1fY3VycmVudCArIHN0cmluZy5sZW5ndGgoKSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICB+RXh0ZXJuYWxDaGFyYWN0ZXJU
b2tlbkJ1ZmZlcigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKKyAgICB9CisK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQgPT0gbV9lbmQ7IH0K
KworICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCghaXNFbXB0eSgpKTsKKyAgICAgICAgd2hpbGUgKGlzVHJlZUJ1aWxkZXJXaGl0ZXBhY2UoKm1f
Y3VycmVudCkpIHsKKyAgICAgICAgICAgIGlmICgrK21fY3VycmVudCA9PSBtX2VuZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTdHJpbmcgdGFrZUxl
YWRpbmdXaGl0ZXNwYWNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gbV9jdXJyZW50OworICAgICAgICBza2lwTGVhZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKHN0YXJ0ID09IG1fY3VycmVudCkKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhzdGFydCwgbV9jdXJy
ZW50IC0gc3RhcnQpOworICAgIH0KKworICAgIFN0cmluZyB0YWtlUmVtYWluaW5nKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0
ID0gbV9jdXJyZW50OworICAgICAgICBtX2N1cnJlbnQgPSBtX2VuZDsKKyAgICAgICAgcmV0dXJu
IFN0cmluZyhzdGFydCwgbV9jdXJyZW50IC0gc3RhcnQpOworICAgIH0KKworICAgIHZvaWQgZ2l2
ZVJlbWFpbmluZ1RvKFZlY3RvcjxVQ2hhcj4mIHJlY2lwaWVudCkKKyAgICB7CisgICAgICAgIHJl
Y2lwaWVudC5hcHBlbmQobV9jdXJyZW50LCBtX2VuZCAtIG1fY3VycmVudCk7CisgICAgICAgIG1f
Y3VycmVudCA9IG1fZW5kOworICAgIH0KKworICAgIFN0cmluZyB0YWtlUmVtYWluaW5nV2hpdGVz
cGFjZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CisgICAgICAgIFZlY3Rv
cjxVQ2hhcj4gd2hpdGVzcGFjZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgVUNoYXIgY2Mg
PSAqbV9jdXJyZW50Kys7CisgICAgICAgICAgICBpZiAoaXNUcmVlQnVpbGRlcldoaXRlcGFjZShj
YykpCisgICAgICAgICAgICAgICAgd2hpdGVzcGFjZS5hcHBlbmQoY2MpOworICAgICAgICB9IHdo
aWxlIChtX2N1cnJlbnQgPCBtX2VuZCk7CisgICAgICAgIC8vIFJldHVybmluZyB0aGUgbnVsbCBz
dHJpbmcgd2hlbiB0aGVyZSBhcmVuJ3QgYW55IHdoaXRlc3BhY2UKKyAgICAgICAgLy8gY2hhcmFj
dGVycyBpcyBzbGlnaHRseSBjbGVhbmVyIHNlbWFudGljYWxseSBiZWNhdXNlIHdlIGRvbid0IHdh
bnQKKyAgICAgICAgLy8gdG8gaW5zZXJ0IGEgdGV4dCBub2RlIChhcyBvcHBvc2VkIHRvIGluc2Vy
dGluZyBhbiBlbXB0eSB0ZXh0IG5vZGUpLgorICAgICAgICBpZiAod2hpdGVzcGFjZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmFkb3B0KHdoaXRlc3BhY2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBVQ2hhciog
bV9jdXJyZW50OworICAgIGNvbnN0IFVDaGFyKiBtX2VuZDsKK307CisKIEhUTUxUcmVlQnVpbGRl
cjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAgOiBtX2ZyYW1lc2V0T2sodHJ1ZSkK
ICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCkBAIC0zODksNyArMzk2LDcgQEAgc3RhdGljIHZv
aWQgY29udmVydFRvT2xkU3R5bGUoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwgVG9rZW4mIG9sZFN0
eWxlVG9rZW4pCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6
CiAgICAgICAgIG9sZFN0eWxlVG9rZW4udGFnTmFtZSA9IHRleHRBdG9tOwotICAgICAgICBvbGRT
dHlsZVRva2VuLnRleHQgPSB0b2tlbi5jaGFyYWN0ZXJzKCkuaW1wbCgpOworICAgICAgICBvbGRT
dHlsZVRva2VuLnRleHQgPSBTdHJpbmdJbXBsOjpjcmVhdGUodG9rZW4uY2hhcmFjdGVycygpLmRh
dGEoKSwgdG9rZW4uY2hhcmFjdGVycygpLnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KQEAgLTU0NSw3ICs1NTIsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5
cGVUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5UYWJsZVRleHRNb2RlKSB7Ci0gICAgICAgIHBy
b2Nlc3NEZWZhdWx0Rm9ySW5UYWJsZVRleHRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZv
ckluVGFibGVUZXh0KCk7CiAgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4odG9rZW4pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNTY4LDggKzU3NSw5IEBAIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQogCiB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYg
Y2hhcmFjdGVycykKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRva2VuKGNoYXJhY3RlcnMp
OwotICAgIHByb2Nlc3NDaGFyYWN0ZXIoZmFrZVRva2VuKTsKKyAgICBBU1NFUlQoIWNoYXJhY3Rl
cnMuaXNFbXB0eSgpKTsKKyAgICBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyIGJ1ZmZlcihj
aGFyYWN0ZXJzKTsKKyAgICBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBFbmRUYWdJZlBJblNjb3BlKCkKQEAgLTEw
ODEsNyArMTA4OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAg
IGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5p
dGlhbE1vZGUpOwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckluaXRpYWxNb2RlKHRva2VuKTsK
KyAgICAgICAgZGVmYXVsdEZvckluaXRpYWwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgog
ICAgIGNhc2UgQmVmb3JlSFRNTE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkg
PT0gQmVmb3JlSFRNTE1vZGUpOwpAQCAtMTA5MCw3ICsxMDk4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShCZWZvcmVIZWFkTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIVE1MTW9kZSh0b2tl
bik7CisgICAgICAgIGRlZmF1bHRGb3JCZWZvcmVIVE1MKCk7CiAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaC4KICAgICBjYXNlIEJlZm9yZUhlYWRNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEJlZm9yZUhlYWRNb2RlKTsKQEAgLTExMDMsMTMgKzExMTEsMTMgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbkhlYWRNb2RlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckJlZm9yZUhlYWRNb2Rl
KHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoLgogICAgIGNhc2UgSW5IZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbkhlYWRNb2RlKTsKICAgICAgICAgaWYgKHByb2Nlc3NTdGFydFRhZ0Zvcklu
SGVhZCh0b2tlbikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0
Rm9ySW5IZWFkTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAgICAg
ICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIGNhc2UgQWZ0ZXJIZWFkTW9kZToKICAgICAgICAgQVNT
RVJUKGluc2VydGlvbk1vZGUoKSA9PSBBZnRlckhlYWRNb2RlKTsKQEAgLTExNDYsNyArMTE1NCw3
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQWZ0ZXJIZWFkTW9kZSh0
b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JBZnRlckhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0
aHJvdWdoCiAgICAgY2FzZSBJbkJvZHlNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluQm9keU1vZGUpOwpAQCAtMTI4Niw3ICsxMjk0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWROb3NjcmlwdE1vZGUodG9rZW4pOworICAgICAg
ICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKICAgICAgICAgcHJvY2Vzc1Rva2VuKHRva2Vu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbkZyYW1lc2V0TW9kZToKQEAgLTEzODUsNyAr
MTM5Myw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluVGFi
bGVUZXh0TW9kZToKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUodG9r
ZW4pOworICAgICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vzc1N0
YXJ0VGFnKHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbkZvcmVpZ25Db250ZW50
TW9kZTogewpAQCAtMTk3Myw3ICsxOTgxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBzd2l0Y2ggKGluc2VydGlvbk1v
ZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25N
b2RlKCkgPT0gSW5pdGlhbE1vZGUpOwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckluaXRpYWxN
b2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckluaXRpYWwoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoLgogICAgIGNhc2UgQmVmb3JlSFRNTE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNl
cnRpb25Nb2RlKCkgPT0gQmVmb3JlSFRNTE1vZGUpOwpAQCAtMTk4MSw3ICsxOTg5LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQmVmb3JlSFRNTE1vZGUodG9rZW4pOwor
ICAgICAgICBkZWZhdWx0Rm9yQmVmb3JlSFRNTCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2gu
CiAgICAgY2FzZSBCZWZvcmVIZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUo
KSA9PSBCZWZvcmVIZWFkTW9kZSk7CkBAIC0xOTg5LDcgKzE5OTcsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIZWFkTW9kZSh0b2tlbik7CisgICAgICAgIGRl
ZmF1bHRGb3JCZWZvcmVIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICBjYXNl
IEluSGVhZE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5IZWFkTW9k
ZSk7CkBAIC0yMDAyLDcgKzIwMTAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tl
bik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcHJvY2Vzc0RlZmF1
bHRGb3JJbkhlYWRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckluSGVhZCgpOwogICAg
ICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAgY2FzZSBBZnRlckhlYWRNb2RlOgogICAgICAgICBB
U1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVySGVhZE1vZGUpOwpAQCAtMjAxMCw3ICsyMDE4
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQWZ0ZXJIZWFkTW9kZSh0
b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JBZnRlckhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0
aHJvdWdoCiAgICAgY2FzZSBJbkJvZHlNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9k
ZSgpID09IEluQm9keU1vZGUpOwpAQCAtMjEwNSw3ICsyMTEzLDcgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAg
IHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKHRva2VuKTsKKyAgICAgICAg
ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KCk7CiAgICAgICAgIHByb2Nlc3NUb2tlbih0b2tlbik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dE1vZGU6CkBAIC0yMTg5LDcgKzIxOTcsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5UYWJsZVRleHRNb2Rl
OgotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckluVGFibGVUZXh0TW9kZSh0b2tlbik7CisgICAg
ICAgIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgpOwogICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2Vu
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbkZvcmVpZ25Db250ZW50TW9kZToKQEAgLTIy
NzIsNyArMjI4MCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX2lu
c2VydGlvbk1vZGUgPT0gSW5UYWJsZVRleHRNb2RlKSB7Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0
Rm9ySW5UYWJsZVRleHRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckluVGFibGVUZXh0
KCk7CiAgICAgICAgIHByb2Nlc3NDb21tZW50KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTIyODIsMTMgKzIyOTAsMTIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
b21tZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwotCi0gICAgLy8gRklYTUU6IEN1cnJl
bnRseSB0aGlzIGRlc2lnbiBoYXMgYW4gZXh0cmEgbWVtY3B5IGJlY2F1c2Ugd2UgY29weSB0aGUK
LSAgICAvLyBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgSFRNTFRva2VuaXplcidzIGJ1ZmZlciBpbnRv
IHRoZSBBdG9taWNIVE1MVG9rZW4KLSAgICAvLyBhbmQgdGhlbiBpbnRvIHRoZSB0ZXh0IG5vZGUu
ICBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgaXMgdG8gY29weSBkaXJlY3RseQotICAgIC8vIGZyb20g
dGhlIEhUTUxUb2tlbml6ZXIncyBidWZmZXIgaW50byB0aGUgdGV4dCBub2RlLgogICAgIEV4dGVy
bmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2VuKTsKKyAgICBwcm9jZXNzQ2hhcmFj
dGVyQnVmZmVyKGJ1ZmZlcik7Cit9CiAKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hh
cmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZlcikKK3sKIFJl
cHJvY2Vzc0J1ZmZlcjoKICAgICBzd2l0Y2ggKGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2Ug
SW5pdGlhbE1vZGU6IHsKQEAgLTIyOTYsNyArMjMwMyw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAg
ICAgICAgYnVmZmVyLnNraXBMZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRG
b3JJbml0aWFsTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbml0aWFsKCk7CiAgICAg
ICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICB9CiAgICAgY2FzZSBCZWZvcmVIVE1MTW9kZTogewpA
QCAtMjMwNCw3ICsyMzExLDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgICAgICBidWZmZXIuc2tp
cExlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckJlZm9yZUhUTUxNb2Rl
KHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhUTUwoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoLgogICAgIH0KICAgICBjYXNlIEJlZm9yZUhlYWRNb2RlOiB7CkBAIC0yMzEyLDcg
KzIzMTksNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIGJ1ZmZlci5za2lwTGVhZGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQmVmb3JlSGVhZE1vZGUodG9rZW4pOwor
ICAgICAgICBkZWZhdWx0Rm9yQmVmb3JlSGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2gu
CiAgICAgfQogICAgIGNhc2UgSW5IZWFkTW9kZTogewpAQCAtMjMyMiw3ICsyMzI5LDcgQEAgUmVw
cm9jZXNzQnVmZmVyOgogICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdX
aGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5IZWFkTW9kZSh0b2tlbik7CisgICAg
ICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIH0K
ICAgICBjYXNlIEFmdGVySGVhZE1vZGU6IHsKQEAgLTIzMzIsNyArMjMzOSw3IEBAIFJlcHJvY2Vz
c0J1ZmZlcjoKICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShsZWFkaW5nV2hpdGVz
cGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckFmdGVySGVhZE1vZGUodG9rZW4pOworICAgICAg
ICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICB9
CiAgICAgY2FzZSBJbkJvZHlNb2RlOgpAQCAtMjM3NSw3ICsyMzgyLDcgQEAgUmVwcm9jZXNzQnVm
ZmVyOgogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICBjYXNlIEFmdGVyQWZ0ZXJCb2R5TW9k
ZTogewogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQm9keU1vZGUgfHwg
aW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJCb2R5TW9kZSk7Ci0gICAgICAgIHBhcnNlRXJy
b3IodG9rZW4pOworICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJyb3IKICAgICAgICAgc2V0SW5z
ZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKICAgICAgICAgZ290byBSZXByb2Nlc3NCdWZmZXI7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMjM5Miw3ICsyMzk5LDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAg
ICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlKTsKICAgICAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHBy
b2Nlc3NEZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVs
dEZvckluSGVhZE5vc2NyaXB0KCk7CiAgICAgICAgIGdvdG8gUmVwcm9jZXNzQnVmZmVyOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0yNDM5LDIzICsyNDQ2LDIzIEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgc3dp
dGNoIChpbnNlcnRpb25Nb2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBB
U1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluaXRpYWxNb2RlKTsKLSAgICAgICAgcHJvY2Vzc0Rl
ZmF1bHRGb3JJbml0aWFsTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbml0aWFsKCk7
CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICBjYXNlIEJlZm9yZUhUTUxNb2RlOgogICAg
ICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEJlZm9yZUhUTUxNb2RlKTsKLSAgICAgICAg
cHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIVE1MTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRG
b3JCZWZvcmVIVE1MKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICBjYXNlIEJlZm9y
ZUhlYWRNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEJlZm9yZUhlYWRN
b2RlKTsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIZWFkTW9kZSh0b2tlbik7Cisg
ICAgICAgIGRlZmF1bHRGb3JCZWZvcmVIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4K
ICAgICBjYXNlIEluSGVhZE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
SW5IZWFkTW9kZSk7Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5IZWFkTW9kZSh0b2tlbik7
CisgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgog
ICAgIGNhc2UgQWZ0ZXJIZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9
PSBBZnRlckhlYWRNb2RlKTsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JBZnRlckhlYWRNb2Rl
KHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwogICAgICAgICAvLyBGYWxs
IHRocm91Z2gKICAgICBjYXNlIEluQm9keU1vZGU6CiAgICAgY2FzZSBJbkNlbGxNb2RlOgpAQCAt
MjQ2OSw3ICsyNDc2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUo
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbkhlYWRO
b3NjcmlwdE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5IZWFkTm9z
Y3JpcHRNb2RlKTsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWROb3NjcmlwdE1vZGUo
dG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKICAgICAgICAgcHJv
Y2Vzc1Rva2VuKHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBZnRlckZyYW1lc2V0
TW9kZToKQEAgLTI1MDksNyArMjUxNiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIHByb2Nlc3NFbmRPZkZp
bGUodG9rZW4pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluVGFibGVUZXh0TW9kZToKLSAg
ICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUodG9rZW4pOworICAgICAgICBk
ZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vzc0VuZE9mRmlsZSh0b2tlbik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dE1vZGU6CkBAIC0yNTIwLDUwICsyNTI3LDUw
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEF0b21pY0hUTUxUb2tl
biYgdG9rZW4pCiAgICAgfQogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RlZmF1
bHRGb3JJbml0aWFsTW9kZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OmRlZmF1bHRGb3JJbml0aWFsKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHBhcnNlRXJyb3IodG9rZW4pOworICAgIC8vIEZJWE1FOiBwYXJzZSBlcnJvcgogICAgIHNldElu
c2VydGlvbk1vZGUoQmVmb3JlSFRNTE1vZGUpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIVE1MTW9kZShBdG9taWNIVE1MVG9rZW4mKQordm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKCkKIHsKICAgICBBdG9taWNIVE1M
VG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGh0bWxUYWcubG9jYWxOYW1lKCkp
OwogICAgIG1fdHJlZS5pbnNlcnRIVE1MSHRtbFN0YXJ0VGFnQmVmb3JlSFRNTChzdGFydEhUTUwp
OwogICAgIHNldEluc2VydGlvbk1vZGUoQmVmb3JlSGVhZE1vZGUpOwogfQogCi12b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVIZWFkTW9kZShBdG9taWNIVE1MVG9r
ZW4mKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKCkKIHsKICAg
ICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRUYWcu
bG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEhlYWQpOwogfQogCi12b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWRNb2RlKEF0b21pY0hUTUxU
b2tlbiYpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZCgpCiB7CiAgICAg
QXRvbWljSFRNTFRva2VuIGVuZEhlYWQoSFRNTFRva2VuOjpFbmRUYWcsIGhlYWRUYWcubG9jYWxO
YW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoZW5kSGVhZCk7CiB9CiAKLXZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRGVmYXVsdEZvckluSGVhZE5vc2NyaXB0TW9kZShBdG9taWNIVE1MVG9r
ZW4mKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJbkhlYWROb3NjcmlwdCgpCiB7
CiAgICAgQXRvbWljSFRNTFRva2VuIGVuZE5vc2NyaXB0KEhUTUxUb2tlbjo6RW5kVGFnLCBub3Nj
cmlwdFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc0VuZFRhZyhlbmROb3NjcmlwdCk7CiB9
CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRGVmYXVsdEZvckFmdGVySGVhZE1vZGUo
QXRvbWljSFRNTFRva2VuJikKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9yQWZ0ZXJI
ZWFkKCkKIHsKICAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRCb2R5KEhUTUxUb2tlbjo6U3RhcnRU
YWcsIGJvZHlUYWcubG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhzdGFydEJvZHkp
OwogICAgIG1fZnJhbWVzZXRPayA9IHRydWU7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRGVmYXVsdEZvckluVGFibGVUZXh0TW9kZShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQor
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCgpCiB7CiAgICAgU3Ry
aW5nIGNoYXJhY3RlcnMgPSBTdHJpbmc6OmFkb3B0KG1fcGVuZGluZ1RhYmxlQ2hhcmFjdGVycyk7
CiAgICAgaWYgKGhhc05vbldoaXRlc3BhY2UoY2hhcmFjdGVycykpIHsKLSAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7CisgICAgICAgIC8vIEZJWE1FOiBwYXJzZSBlcnJvcgogICAgICAgICBIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6UmVkaXJlY3RUb0Zvc3RlclBhcmVudEd1YXJkIHJlZGlyZWN0ZXIo
bV90cmVlLCByZXF1aXJlc1JlZGlyZWN0VG9Gb3N0ZXJQYXJlbnQobV90cmVlLmN1cnJlbnRFbGVt
ZW50KCkpKTsKICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0Vs
ZW1lbnRzKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MVHJlZUJ1aWxkZXIuaAppbmRleCA1Nzg0MjE3Njk0ODVmNWQzYjNmZTlmNzgwMTBmYzAxZDdi
NDg3ZTliLi44YTdhODY2MjZhNGZkOTFjMWVlYTcwMzQ2OGQyMDJiZDdjZDVkM2I0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxUcmVlQnVpbGRlci5oCkBAIC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBjbGFzcyBGYWtlSW5zZXJ0aW9uTW9kZTsKKyAgICBjbGFzcyBFeHRlcm5hbENoYXJhY3RlclRv
a2VuQnVmZmVyOwogICAgIC8vIFJlcHJlc2VudHMgSFRNTDUgImluc2VydGlvbiBtb2RlIgogICAg
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVs
dGlwYWdlL3BhcnNpbmcuaHRtbCNpbnNlcnRpb24tbW9kZQogICAgIGVudW0gSW5zZXJ0aW9uTW9k
ZSB7CkBAIC0xMzQsNiArMTM1LDggQEAgcHJpdmF0ZToKICAgICAvLyBuZWVkcyB0byBhc3NlcnQg
d2hpY2ggdG9rZW5zIGl0IGNhbiBiZSBjYWxsZWQgd2l0aC4KICAgICB2b2lkIHByb2Nlc3NBbnlP
dGhlckVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mKTsKIAorICAgIHZvaWQgcHJvY2Vz
c0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJik7CisKICAgICB2
b2lkIHByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYsIFBhc3NSZWZQdHI8
TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVzID0gMCk7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRh
Zyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUNoYXJhY3RlcnMo
Y29uc3QgU3RyaW5nJik7CkBAIC0xNDQsMTQgKzE0NywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYpOwogCiAgICAgLy8gRGVmYXVs
dCBwcm9jZXNzaW5nIGZvciB0aGUgZGlmZmVyZW50IGluc2VydGlvbiBtb2Rlcy4KLSAgICAvLyBG
SVhNRTogVGhlc2UgZnVuY3Rpb25zIG5lZWQgdG8gYmUgcmVuYW1lZCB0byByZW1vdmUgInByb2Nl
c3MiIGZyb20gdGhlaXIgbmFtZXMuCi0gICAgdm9pZCBwcm9jZXNzRGVmYXVsdEZvckluaXRpYWxN
b2RlKEF0b21pY0hUTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0RlZmF1bHRGb3JCZWZvcmVI
VE1MTW9kZShBdG9taWNIVE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NEZWZhdWx0Rm9yQmVm
b3JlSGVhZE1vZGUoQXRvbWljSFRNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzRGVmYXVsdEZv
ckluSGVhZE1vZGUoQXRvbWljSFRNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzRGVmYXVsdEZv
ckluSGVhZE5vc2NyaXB0TW9kZShBdG9taWNIVE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NE
ZWZhdWx0Rm9yQWZ0ZXJIZWFkTW9kZShBdG9taWNIVE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nl
c3NEZWZhdWx0Rm9ySW5UYWJsZVRleHRNb2RlKEF0b21pY0hUTUxUb2tlbiYpOworICAgIHZvaWQg
ZGVmYXVsdEZvckluaXRpYWwoKTsKKyAgICB2b2lkIGRlZmF1bHRGb3JCZWZvcmVIVE1MKCk7Cisg
ICAgdm9pZCBkZWZhdWx0Rm9yQmVmb3JlSGVhZCgpOworICAgIHZvaWQgZGVmYXVsdEZvckluSGVh
ZCgpOworICAgIHZvaWQgZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KCk7CisgICAgdm9pZCBkZWZh
dWx0Rm9yQWZ0ZXJIZWFkKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKIAog
ICAgIHZvaWQgcHJvY2Vzc0VuZFRhZ1VzaW5nU2Vjb25kYXJ5SW5zZXJ0aW9uTW9kZUFuZEFkanVz
dEluc2VydGlvbk1vZGUoQXRvbWljSFRNTFRva2VuJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61582</attachid>
            <date>2010-07-14 16:38:53 -0700</date>
            <delta_ts>2010-07-14 16:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42002-20100714163852.patch</filename>
            <type>text/plain</type>
            <size>19928</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzM3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDctMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9p
ZCBleHRyYSBtZW1jcHkgb2YgY2hhcmFjdGVyIHRva2VucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwMDIKKworICAgICAgICBUaGlzIHBhdGNoIGlz
IGp1c3Qgc29tZSBjbGVhbnVwIHRvIG1ha2UgZml4aW5nIHRoaXMgYnVnIGVhc2llci4KKworICAg
ICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6RXh0ZXJuYWxDaGFyYWN0
ZXJUb2tlbkJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVy
bmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6On5FeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tl
bkJ1ZmZlcjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4
dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXI6OnRha2VMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OnRha2VSZW1haW5pbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVm
ZmVyOjpnaXZlUmVtYWluaW5nVG8pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyOjp0YWtlUmVtYWluaW5nV2hpdGVzcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5pdGlhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIVE1MKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JJblRhYmxlVGV4dCk6
CisgICAgICAgICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaDoKKwogMjAxMC0wNy0xNCAgQW5kcmVh
cyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJldmlzaW9uIDYz
MzUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDc3ICs2NSw2IEBAIGlubGluZSBib29sIGlzVHJlZUJ1aWxkZXJXaGl0ZXBhY2UoVUNo
YXIKICAgICByZXR1cm4gY2MgPT0gJ1x0JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMn
IHx8IGNjID09ICdceDBEJyB8fCBjYyA9PSAnICc7CiB9CiAKLWNsYXNzIEV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIGV4cGxp
Y2l0IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
LSAgICAgICAgOiBtX2N1cnJlbnQodG9rZW4uY2hhcmFjdGVycygpLmNoYXJhY3RlcnMoKSkKLSAg
ICAgICAgLCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0ZXJzKCkubGVuZ3RoKCkpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0gICAgfQotCi0gICAgfkV4dGVybmFs
Q2hhcmFjdGVyVG9rZW5CdWZmZXIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzRW1wdHkoKSk7
Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50ID09
IG1fZW5kOyB9Ci0KLSAgICB2b2lkIHNraXBMZWFkaW5nV2hpdGVzcGFjZSgpCi0gICAgewotICAg
ICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0gICAgICAgIHdoaWxlIChpc1RyZWVCdWlsZGVyV2hp
dGVwYWNlKCptX2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBpZiAoKyttX2N1cnJlbnQgPT0gbV9l
bmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgU3Ry
aW5nIHRha2VMZWFkaW5nV2hpdGVzcGFjZSgpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzRW1w
dHkoKSk7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IG1fY3VycmVudDsKLSAgICAgICAg
c2tpcExlYWRpbmdXaGl0ZXNwYWNlKCk7Ci0gICAgICAgIGlmIChzdGFydCA9PSBtX2N1cnJlbnQp
Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoc3Rh
cnQsIG1fY3VycmVudCAtIHN0YXJ0KTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdGFrZVJlbWFpbmlu
ZygpCi0gICAgewotICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0gICAgICAgIGNvbnN0IFVD
aGFyKiBzdGFydCA9IG1fY3VycmVudDsKLSAgICAgICAgbV9jdXJyZW50ID0gbV9lbmQ7Ci0gICAg
ICAgIHJldHVybiBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGdpdmVSZW1haW5pbmdUbyhWZWN0b3I8VUNoYXI+JiByZWNpcGllbnQpCi0gICAgewot
ICAgICAgICByZWNpcGllbnQuYXBwZW5kKG1fY3VycmVudCwgbV9lbmQgLSBtX2N1cnJlbnQpOwot
ICAgICAgICBtX2N1cnJlbnQgPSBtX2VuZDsKLSAgICB9Ci0KLSAgICBTdHJpbmcgdGFrZVJlbWFp
bmluZ1doaXRlc3BhY2UoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOwotICAg
ICAgICBWZWN0b3I8VUNoYXI+IHdoaXRlc3BhY2U7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAg
IFVDaGFyIGNjID0gKm1fY3VycmVudCsrOwotICAgICAgICAgICAgaWYgKGlzVHJlZUJ1aWxkZXJX
aGl0ZXBhY2UoY2MpKQotICAgICAgICAgICAgICAgIHdoaXRlc3BhY2UuYXBwZW5kKGNjKTsKLSAg
ICAgICAgfSB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQpOwotICAgICAgICAvLyBSZXR1cm5pbmcg
dGhlIG51bGwgc3RyaW5nIHdoZW4gdGhlcmUgYXJlbid0IGFueSB3aGl0ZXNwYWNlCi0gICAgICAg
IC8vIGNoYXJhY3RlcnMgaXMgc2xpZ2h0bHkgY2xlYW5lciBzZW1hbnRpY2FsbHkgYmVjYXVzZSB3
ZSBkb24ndCB3YW50Ci0gICAgICAgIC8vIHRvIGluc2VydCBhIHRleHQgbm9kZSAoYXMgb3Bwb3Nl
ZCB0byBpbnNlcnRpbmcgYW4gZW1wdHkgdGV4dCBub2RlKS4KLSAgICAgICAgaWYgKHdoaXRlc3Bh
Y2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1
cm4gU3RyaW5nOjphZG9wdCh3aGl0ZXNwYWNlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY29u
c3QgVUNoYXIqIG1fY3VycmVudDsKLSAgICBjb25zdCBVQ2hhciogbV9lbmQ7Ci19OwotCiBpbmxp
bmUgYm9vbCBoYXNOb25XaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKQEAgLTMxNiw2ICsy
NDUsNzggQEAgYm9vbCBpc05vdEZvcm1hdHRpbmdBbmROb3RQaHJhc2luZyhjb25zdAogCiB9IC8v
IG5hbWVzcGFjZQogCitjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIGV4cGxpY2l0IEV4
dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKKyAgICAg
ICAgOiBtX2N1cnJlbnQodG9rZW4uY2hhcmFjdGVycygpLmNoYXJhY3RlcnMoKSkKKyAgICAgICAg
LCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0ZXJzKCkubGVuZ3RoKCkpCisgICAgewor
ICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CisgICAgfQorCisgICAgfkV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXIoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW1wdHkoKSk7CisgICAg
fQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50ID09IG1fZW5k
OyB9CisKKyAgICB2b2lkIHNraXBMZWFkaW5nV2hpdGVzcGFjZSgpCisgICAgeworICAgICAgICBB
U1NFUlQoIWlzRW1wdHkoKSk7CisgICAgICAgIHdoaWxlIChpc1RyZWVCdWlsZGVyV2hpdGVwYWNl
KCptX2N1cnJlbnQpKSB7CisgICAgICAgICAgICBpZiAoKyttX2N1cnJlbnQgPT0gbV9lbmQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIHRh
a2VMZWFkaW5nV2hpdGVzcGFjZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7
CisgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IG1fY3VycmVudDsKKyAgICAgICAgc2tpcExl
YWRpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgIGlmIChzdGFydCA9PSBtX2N1cnJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBTdHJpbmcoc3RhcnQsIG1f
Y3VycmVudCAtIHN0YXJ0KTsKKyAgICB9CisKKyAgICBTdHJpbmcgdGFrZVJlbWFpbmluZygpCisg
ICAgeworICAgICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBz
dGFydCA9IG1fY3VycmVudDsKKyAgICAgICAgbV9jdXJyZW50ID0gbV9lbmQ7CisgICAgICAgIHJl
dHVybiBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsKKyAgICB9CisKKyAgICB2b2lk
IGdpdmVSZW1haW5pbmdUbyhWZWN0b3I8VUNoYXI+JiByZWNpcGllbnQpCisgICAgeworICAgICAg
ICByZWNpcGllbnQuYXBwZW5kKG1fY3VycmVudCwgbV9lbmQgLSBtX2N1cnJlbnQpOworICAgICAg
ICBtX2N1cnJlbnQgPSBtX2VuZDsKKyAgICB9CisKKyAgICBTdHJpbmcgdGFrZVJlbWFpbmluZ1do
aXRlc3BhY2UoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5KCkpOworICAgICAgICBW
ZWN0b3I8VUNoYXI+IHdoaXRlc3BhY2U7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFVDaGFy
IGNjID0gKm1fY3VycmVudCsrOworICAgICAgICAgICAgaWYgKGlzVHJlZUJ1aWxkZXJXaGl0ZXBh
Y2UoY2MpKQorICAgICAgICAgICAgICAgIHdoaXRlc3BhY2UuYXBwZW5kKGNjKTsKKyAgICAgICAg
fSB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQpOworICAgICAgICAvLyBSZXR1cm5pbmcgdGhlIG51
bGwgc3RyaW5nIHdoZW4gdGhlcmUgYXJlbid0IGFueSB3aGl0ZXNwYWNlCisgICAgICAgIC8vIGNo
YXJhY3RlcnMgaXMgc2xpZ2h0bHkgY2xlYW5lciBzZW1hbnRpY2FsbHkgYmVjYXVzZSB3ZSBkb24n
dCB3YW50CisgICAgICAgIC8vIHRvIGluc2VydCBhIHRleHQgbm9kZSAoYXMgb3Bwb3NlZCB0byBp
bnNlcnRpbmcgYW4gZW1wdHkgdGV4dCBub2RlKS4KKyAgICAgICAgaWYgKHdoaXRlc3BhY2UuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICByZXR1cm4gU3Ry
aW5nOjphZG9wdCh3aGl0ZXNwYWNlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgVUNo
YXIqIG1fY3VycmVudDsKKyAgICBjb25zdCBVQ2hhciogbV9lbmQ7Cit9OworCisKIEhUTUxUcmVl
QnVpbGRlcjo6SFRNTFRyZWVCdWlsZGVyKEhUTUxUb2tlbml6ZXIqIHRva2VuaXplciwgSFRNTERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAgOiBtX2ZyYW1lc2V0T2so
dHJ1ZSkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCkBAIC01NDIsNyArNTQzLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5UYWJsZVRleHRNb2RlKSB7Ci0gICAg
ICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5UYWJsZVRleHRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVm
YXVsdEZvckluVGFibGVUZXh0KCk7CiAgICAgICAgIHByb2Nlc3NEb2N0eXBlVG9rZW4odG9rZW4p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTE3OCw3ICsxMTc5LDcgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdAogICAgIHN3aXRjaCAoaW5zZXJ0aW9uTW9k
ZSgpKSB7CiAgICAgY2FzZSBJbml0aWFsTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1v
ZGUoKSA9PSBJbml0aWFsTW9kZSk7Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5pdGlhbE1v
ZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9ySW5pdGlhbCgpOwogICAgICAgICAvLyBGYWxs
IHRocm91Z2guCiAgICAgY2FzZSBCZWZvcmVIVE1MTW9kZToKICAgICAgICAgQVNTRVJUKGluc2Vy
dGlvbk1vZGUoKSA9PSBCZWZvcmVIVE1MTW9kZSk7CkBAIC0xMTg3LDcgKzExODgsNyBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0CiAgICAgICAgICAgICBzZXRJbnNl
cnRpb25Nb2RlKEJlZm9yZUhlYWRNb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckJlZm9yZUhUTUxNb2RlKHRva2VuKTsKKyAgICAg
ICAgZGVmYXVsdEZvckJlZm9yZUhUTUwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAg
IGNhc2UgQmVmb3JlSGVhZE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0g
QmVmb3JlSGVhZE1vZGUpOwpAQCAtMTIwMCwxMyArMTIwMSwxMyBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0CiAgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKElu
SGVhZE1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHByb2Nl
c3NEZWZhdWx0Rm9yQmVmb3JlSGVhZE1vZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9yQmVm
b3JlSGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAgY2FzZSBJbkhlYWRNb2Rl
OgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluSGVhZE1vZGUpOwogICAgICAg
ICBpZiAocHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKHRva2VuKSkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWRNb2RlKHRva2VuKTsKKyAgICAgICAg
ZGVmYXVsdEZvckluSGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAgY2FzZSBB
ZnRlckhlYWRNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVySGVh
ZE1vZGUpOwpAQCAtMTI0Myw3ICsxMjQ0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTdGFydFRhZyhBdAogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JBZnRlckhlYWRN
b2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckFmdGVySGVhZCgpOwogICAgICAgICAvLyBG
YWxsIHRocm91Z2gKICAgICBjYXNlIEluQm9keU1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRp
b25Nb2RlKCkgPT0gSW5Cb2R5TW9kZSk7CkBAIC0xMzgzLDcgKzEzODQsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRv
a2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBwcm9jZXNzRGVm
YXVsdEZvckluSGVhZE5vc2NyaXB0TW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbkhl
YWROb3NjcmlwdCgpOwogICAgICAgICBwcm9jZXNzVG9rZW4odG9rZW4pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEluRnJhbWVzZXRNb2RlOgpAQCAtMTQ4Miw3ICsxNDgzLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdAogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSW5UYWJsZVRleHRNb2RlOgotICAgICAgICBwcm9jZXNzRGVmYXVsdEZv
ckluVGFibGVUZXh0TW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgp
OwogICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEluRm9yZWlnbkNvbnRlbnRNb2RlOiB7CkBAIC0yMTA0LDcgKzIxMDUsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9tCiAgICAgc3dpdGNoIChpbnNlcnRpb25N
b2RlKCkpIHsKICAgICBjYXNlIEluaXRpYWxNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9u
TW9kZSgpID09IEluaXRpYWxNb2RlKTsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbml0aWFs
TW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbml0aWFsKCk7CiAgICAgICAgIC8vIEZh
bGwgdGhyb3VnaC4KICAgICBjYXNlIEJlZm9yZUhUTUxNb2RlOgogICAgICAgICBBU1NFUlQoaW5z
ZXJ0aW9uTW9kZSgpID09IEJlZm9yZUhUTUxNb2RlKTsKQEAgLTIxMTIsNyArMjExMyw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b20KICAgICAgICAgICAgIHBhcnNl
RXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHBy
b2Nlc3NEZWZhdWx0Rm9yQmVmb3JlSFRNTE1vZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9y
QmVmb3JlSFRNTCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAgY2FzZSBCZWZvcmVI
ZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBCZWZvcmVIZWFkTW9k
ZSk7CkBAIC0yMTIwLDcgKzIxMjEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyhBdG9tCiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckJlZm9yZUhlYWRNb2Rl
KHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoLgogICAgIGNhc2UgSW5IZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlv
bk1vZGUoKSA9PSBJbkhlYWRNb2RlKTsKQEAgLTIxMzMsNyArMjEzNCw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b20KICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9r
ZW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHByb2Nlc3NEZWZh
dWx0Rm9ySW5IZWFkTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIGNhc2UgQWZ0ZXJIZWFkTW9kZToKICAgICAgICAg
QVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBBZnRlckhlYWRNb2RlKTsKQEAgLTIxNDEsNyArMjE0
Miw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b20KICAgICAgICAg
ICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQWZ0ZXJIZWFkTW9kZSh0b2tlbik7CisgICAgICAgIGRl
ZmF1bHRGb3JBZnRlckhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCiAgICAgY2FzZSBJ
bkJvZHlNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEluQm9keU1vZGUp
OwpAQCAtMjIzNiw3ICsyMjM3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWcoQXRvbQogICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWROb3NjcmlwdE1v
ZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKICAgICAgICAg
cHJvY2Vzc1Rva2VuKHRva2VuKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0TW9kZToK
QEAgLTIzMjEsNyArMjMyMiw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
KEF0b20KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEluVGFibGVUZXh0TW9k
ZToKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUodG9rZW4pOworICAg
ICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tl
bik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5Gb3JlaWduQ29udGVudE1vZGU6CkBAIC0y
NDEwLDcgKzI0MTEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1faW5zZXJ0aW9uTW9kZSA9PSBJblRh
YmxlVGV4dE1vZGUpIHsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUo
dG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vz
c0NvbW1lbnQodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQyMCwxMyArMjQy
MSwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoQXRvCiB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlcihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOwotCiAg
ICAgLy8gRklYTUU6IEN1cnJlbnRseSB0aGlzIGRlc2lnbiBoYXMgYW4gZXh0cmEgbWVtY3B5IGJl
Y2F1c2Ugd2UgY29weSB0aGUKICAgICAvLyBjaGFyYWN0ZXJzIG91dCBvZiB0aGUgSFRNTFRva2Vu
aXplcidzIGJ1ZmZlciBpbnRvIHRoZSBBdG9taWNIVE1MVG9rZW4KICAgICAvLyBhbmQgdGhlbiBp
bnRvIHRoZSB0ZXh0IG5vZGUuICBXaGF0IHdlJ2QgcmVhbGx5IGxpa2UgaXMgdG8gY29weSBkaXJl
Y3RseQogICAgIC8vIGZyb20gdGhlIEhUTUxUb2tlbml6ZXIncyBidWZmZXIgaW50byB0aGUgdGV4
dCBub2RlLgogICAgIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgYnVmZmVyKHRva2VuKTsK
KyAgICBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7Cit9CiAKK3ZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXImIGJ1ZmZlcikKK3sKIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICBzd2l0Y2ggKGluc2VydGlvbk1v
ZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6IHsKQEAgLTI0MzQsNyArMjQzOCw3IEBAIFJl
cHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgYnVmZmVyLnNraXBMZWFkaW5nV2hpdGVzcGFjZSgpOwog
ICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgcHJvY2Vzc0RlZmF1bHRGb3JJbml0aWFsTW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRG
b3JJbml0aWFsKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaC4KICAgICB9CiAgICAgY2FzZSBC
ZWZvcmVIVE1MTW9kZTogewpAQCAtMjQ0Miw3ICsyNDQ2LDcgQEAgUmVwcm9jZXNzQnVmZmVyOgog
ICAgICAgICBidWZmZXIuc2tpcExlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwcm9jZXNzRGVmYXVs
dEZvckJlZm9yZUhUTUxNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckJlZm9yZUhUTUwo
KTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIH0KICAgICBjYXNlIEJlZm9yZUhlYWRN
b2RlOiB7CkBAIC0yNDUwLDcgKzI0NTQsNyBAQCBSZXByb2Nlc3NCdWZmZXI6CiAgICAgICAgIGJ1
ZmZlci5za2lwTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9yQmVmb3Jl
SGVhZE1vZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9yQmVmb3JlSGVhZCgpOwogICAgICAg
ICAvLyBGYWxsIHRocm91Z2guCiAgICAgfQogICAgIGNhc2UgSW5IZWFkTW9kZTogewpAQCAtMjQ2
MCw3ICsyNDY0LDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgICAgICAgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKGxlYWRpbmdXaGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5IZWFk
TW9kZSh0b2tlbik7CisgICAgICAgIGRlZmF1bHRGb3JJbkhlYWQoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoLgogICAgIH0KICAgICBjYXNlIEFmdGVySGVhZE1vZGU6IHsKQEAgLTI0NzAsNyAr
MjQ3NCw3IEBAIFJlcHJvY2Vzc0J1ZmZlcjoKICAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShsZWFkaW5nV2hpdGVzcGFjZSk7CiAgICAgICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckFmdGVySGVhZE1v
ZGUodG9rZW4pOworICAgICAgICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAgICAgICAgIC8vIEZh
bGwgdGhyb3VnaC4KICAgICB9CiAgICAgY2FzZSBJbkJvZHlNb2RlOgpAQCAtMjUxMyw3ICsyNTE3
LDcgQEAgUmVwcm9jZXNzQnVmZmVyOgogICAgIGNhc2UgQWZ0ZXJCb2R5TW9kZToKICAgICBjYXNl
IEFmdGVyQWZ0ZXJCb2R5TW9kZTogewogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEFmdGVyQm9keU1vZGUgfHwgaW5zZXJ0aW9uTW9kZSgpID09IEFmdGVyQWZ0ZXJCb2R5TW9kZSk7
Ci0gICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOworICAgICAgICAvLyBGSVhNRTogcGFyc2UgZXJy
b3IKICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbkJvZHlNb2RlKTsKICAgICAgICAgZ290byBS
ZXByb2Nlc3NCdWZmZXI7CiAgICAgICAgIGJyZWFrOwpAQCAtMjUzMCw3ICsyNTM0LDcgQEAgUmVw
cm9jZXNzQnVmZmVyOgogICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGxlYWRpbmdX
aGl0ZXNwYWNlKTsKICAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHByb2Nlc3NEZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKHRva2Vu
KTsKKyAgICAgICAgZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KCk7CiAgICAgICAgIGdvdG8gUmVw
cm9jZXNzQnVmZmVyOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNTc3LDIzICsyNTgxLDIz
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEEKICAgICBzd2l0Y2gg
KGluc2VydGlvbk1vZGUoKSkgewogICAgIGNhc2UgSW5pdGlhbE1vZGU6CiAgICAgICAgIEFTU0VS
VChpbnNlcnRpb25Nb2RlKCkgPT0gSW5pdGlhbE1vZGUpOwotICAgICAgICBwcm9jZXNzRGVmYXVs
dEZvckluaXRpYWxNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckluaXRpYWwoKTsKICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIGNhc2UgQmVmb3JlSFRNTE1vZGU6CiAgICAgICAg
IEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQmVmb3JlSFRNTE1vZGUpOwotICAgICAgICBwcm9j
ZXNzRGVmYXVsdEZvckJlZm9yZUhUTUxNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZvckJl
Zm9yZUhUTUwoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAgIGNhc2UgQmVmb3JlSGVh
ZE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gQmVmb3JlSGVhZE1vZGUp
OwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckJlZm9yZUhlYWRNb2RlKHRva2VuKTsKKyAgICAg
ICAgZGVmYXVsdEZvckJlZm9yZUhlYWQoKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoLgogICAg
IGNhc2UgSW5IZWFkTW9kZToKICAgICAgICAgQVNTRVJUKGluc2VydGlvbk1vZGUoKSA9PSBJbkhl
YWRNb2RlKTsKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJbkhlYWRNb2RlKHRva2VuKTsKKyAg
ICAgICAgZGVmYXVsdEZvckluSGVhZCgpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCiAgICAg
Y2FzZSBBZnRlckhlYWRNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09IEFm
dGVySGVhZE1vZGUpOwotICAgICAgICBwcm9jZXNzRGVmYXVsdEZvckFmdGVySGVhZE1vZGUodG9r
ZW4pOworICAgICAgICBkZWZhdWx0Rm9yQWZ0ZXJIZWFkKCk7CiAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaAogICAgIGNhc2UgSW5Cb2R5TW9kZToKICAgICBjYXNlIEluQ2VsbE1vZGU6CkBAIC0yNjA3
LDcgKzI2MTEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5IZWFkTm9zY3JpcHRNb2RlOgogICAgICAgICBBU1NF
UlQoaW5zZXJ0aW9uTW9kZSgpID09IEluSGVhZE5vc2NyaXB0TW9kZSk7Ci0gICAgICAgIHByb2Nl
c3NEZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKHRva2VuKTsKKyAgICAgICAgZGVmYXVsdEZv
ckluSGVhZE5vc2NyaXB0KCk7CiAgICAgICAgIHByb2Nlc3NUb2tlbih0b2tlbik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQWZ0ZXJGcmFtZXNldE1vZGU6CkBAIC0yNjQzLDcgKzI2NDcsNyBA
QCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZE9mRmlsZShBCiAgICAgICAgIHByb2Nl
c3NFbmRPZkZpbGUodG9rZW4pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluVGFibGVUZXh0
TW9kZToKLSAgICAgICAgcHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUodG9rZW4pOwor
ICAgICAgICBkZWZhdWx0Rm9ySW5UYWJsZVRleHQoKTsKICAgICAgICAgcHJvY2Vzc0VuZE9mRmls
ZSh0b2tlbik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dE1vZGU6CkBAIC0yNjU0LDUw
ICsyNjU4LDUwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZGaWxlKEEKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRGVmYXVsdEZvckluaXRpYWxN
b2RlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVs
dEZvckluaXRpYWwoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcGFyc2VFcnJvcih0
b2tlbik7CisgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgc2V0SW5zZXJ0aW9uTW9kZShC
ZWZvcmVIVE1MTW9kZSk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRGVmYXVs
dEZvckJlZm9yZUhUTUxNb2RlKEF0b21pY0hUTUxUb2tlbiYpCit2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6ZGVmYXVsdEZvckJlZm9yZUhUTUwoKQogewogICAgIEF0b21pY0hUTUxUb2tlbiBzdGFydEhU
TUwoSFRNTFRva2VuOjpTdGFydFRhZywgaHRtbFRhZy5sb2NhbE5hbWUoKSk7CiAgICAgbV90cmVl
Lmluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKHN0YXJ0SFRNTCk7CiAgICAgc2V0SW5z
ZXJ0aW9uTW9kZShCZWZvcmVIZWFkTW9kZSk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzRGVmYXVsdEZvckJlZm9yZUhlYWRNb2RlKEF0b21pY0hUTUxUb2tlbiYpCit2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJlZm9yZUhlYWQoKQogewogICAgIEF0b21pY0hUTUxU
b2tlbiBzdGFydEhlYWQoSFRNTFRva2VuOjpTdGFydFRhZywgaGVhZFRhZy5sb2NhbE5hbWUoKSk7
CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0SGVhZCk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzRGVmYXVsdEZvckluSGVhZE1vZGUoQXRvbWljSFRNTFRva2VuJikKK3ZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKCkKIHsKICAgICBBdG9taWNIVE1MVG9r
ZW4gZW5kSGVhZChIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRhZy5sb2NhbE5hbWUoKSk7CiAgICAg
cHJvY2Vzc0VuZFRhZyhlbmRIZWFkKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NEZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKEF0b21pY0hUTUxUb2tlbiYpCit2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckluSGVhZE5vc2NyaXB0KCkKIHsKICAgICBBdG9taWNI
VE1MVG9rZW4gZW5kTm9zY3JpcHQoSFRNTFRva2VuOjpFbmRUYWcsIG5vc2NyaXB0VGFnLmxvY2Fs
TmFtZSgpKTsKICAgICBwcm9jZXNzRW5kVGFnKGVuZE5vc2NyaXB0KTsKIH0KIAotdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NEZWZhdWx0Rm9yQWZ0ZXJIZWFkTW9kZShBdG9taWNIVE1MVG9r
ZW4mKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JBZnRlckhlYWQoKQogewogICAg
IEF0b21pY0hUTUxUb2tlbiBzdGFydEJvZHkoSFRNTFRva2VuOjpTdGFydFRhZywgYm9keVRhZy5s
b2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKHN0YXJ0Qm9keSk7CiAgICAgbV9mcmFt
ZXNldE9rID0gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEZWZhdWx0
Rm9ySW5UYWJsZVRleHRNb2RlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCit2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVUZXh0KCkKIHsKICAgICBTdHJpbmcgY2hhcmFjdGVy
cyA9IFN0cmluZzo6YWRvcHQobV9wZW5kaW5nVGFibGVDaGFyYWN0ZXJzKTsKICAgICBpZiAoaGFz
Tm9uV2hpdGVzcGFjZShjaGFyYWN0ZXJzKSkgewotICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsK
KyAgICAgICAgLy8gRklYTUU6IHBhcnNlIGVycm9yCiAgICAgICAgIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpSZWRpcmVjdFRvRm9zdGVyUGFyZW50R3VhcmQgcmVkaXJlY3RlcihtX3RyZWUsIHJlcXVp
cmVzUmVkaXJlY3RUb0Zvc3RlclBhcmVudChtX3RyZWUuY3VycmVudEVsZW1lbnQoKSkpOwogICAg
ICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsKICAg
ICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOwpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxUcmVlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVHJl
ZUJ1aWxkZXIuaAkocmV2aXNpb24gNjMzNTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGNsYXNzIEZha2VJbnNlcnRpb25Nb2RlOworICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFj
dGVyVG9rZW5CdWZmZXI7CiAgICAgLy8gUmVwcmVzZW50cyBIVE1MNSAiaW5zZXJ0aW9uIG1vZGUi
CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2luc2VydGlvbi1tb2RlCiAgICAgZW51bSBJbnNlcnRp
b25Nb2RlIHsKQEAgLTEzNCw2ICsxMzUsOCBAQCBwcml2YXRlOgogICAgIC8vIG5lZWRzIHRvIGFz
c2VydCB3aGljaCB0b2tlbnMgaXQgY2FuIGJlIGNhbGxlZCB3aXRoLgogICAgIHZvaWQgcHJvY2Vz
c0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYpOwogCisgICAgdm9pZCBw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImKTsKKwog
ICAgIHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgUGFzc1Jl
ZlB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZXMgPSAwKTsKICAgICB2b2lkIHByb2Nlc3NGYWtl
RW5kVGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2b2lkIHByb2Nlc3NGYWtlQ2hhcmFj
dGVycyhjb25zdCBTdHJpbmcmKTsKQEAgLTE0NCwxNCArMTQ3LDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwcm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJik7CiAKICAgICAvLyBE
ZWZhdWx0IHByb2Nlc3NpbmcgZm9yIHRoZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG1vZGVzLgotICAg
IC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgbmVlZCB0byBiZSByZW5hbWVkIHRvIHJlbW92ZSAi
cHJvY2VzcyIgZnJvbSB0aGVpciBuYW1lcy4KLSAgICB2b2lkIHByb2Nlc3NEZWZhdWx0Rm9ySW5p
dGlhbE1vZGUoQXRvbWljSFRNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzRGVmYXVsdEZvckJl
Zm9yZUhUTUxNb2RlKEF0b21pY0hUTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0RlZmF1bHRG
b3JCZWZvcmVIZWFkTW9kZShBdG9taWNIVE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NEZWZh
dWx0Rm9ySW5IZWFkTW9kZShBdG9taWNIVE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NEZWZh
dWx0Rm9ySW5IZWFkTm9zY3JpcHRNb2RlKEF0b21pY0hUTUxUb2tlbiYpOwotICAgIHZvaWQgcHJv
Y2Vzc0RlZmF1bHRGb3JBZnRlckhlYWRNb2RlKEF0b21pY0hUTUxUb2tlbiYpOwotICAgIHZvaWQg
cHJvY2Vzc0RlZmF1bHRGb3JJblRhYmxlVGV4dE1vZGUoQXRvbWljSFRNTFRva2VuJik7CisgICAg
dm9pZCBkZWZhdWx0Rm9ySW5pdGlhbCgpOworICAgIHZvaWQgZGVmYXVsdEZvckJlZm9yZUhUTUwo
KTsKKyAgICB2b2lkIGRlZmF1bHRGb3JCZWZvcmVIZWFkKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9y
SW5IZWFkKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9ySW5IZWFkTm9zY3JpcHQoKTsKKyAgICB2b2lk
IGRlZmF1bHRGb3JBZnRlckhlYWQoKTsKKyAgICB2b2lkIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgp
OwogCiAgICAgdm9pZCBwcm9jZXNzVXNpbmdTZWNvbmRhcnlJbnNlcnRpb25Nb2RlQW5kQWRqdXN0
SW5zZXJ0aW9uTW9kZShBdG9taWNIVE1MVG9rZW4mKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61590</attachid>
            <date>2010-07-14 17:51:03 -0700</date>
            <delta_ts>2010-07-14 17:53:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42002-20100714175101.patch</filename>
            <type>text/plain</type>
            <size>4464</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzM4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDctMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9p
ZCBleHRyYSBtZW1jcHkgb2YgY2hhcmFjdGVyIHRva2VucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIwMDIKKworICAgICAgICBFcmljIHRlbGxzIG1l
IHRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5ldyB0cmVlIGJ1aWxkZXIgMSUgZmFzdGVyIHRoYW4gdGhl
CisgICAgICAgIG9sZCB0cmVlIGJ1aWxkZXIgb24gb3VyIHBhcnNlciBiZW5jaG1hcmsuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRv
a2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2Vu
OjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZm
ZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFRvT2xkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRmFrZUNoYXJhY3RlcnMpOgorCiAyMDEwLTA3LTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFRva2VuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tl
bi5oCShyZXZpc2lvbiA2MzM3MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZGF0YSA9
IFN0cmluZyh0b2tlbi5jb21tZW50KCkuZGF0YSgpLCB0b2tlbi5jb21tZW50KCkuc2l6ZSgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgot
ICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksIHRv
a2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOworICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3Rl
cnMgPSAmdG9rZW4uY2hhcmFjdGVycygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0zNTIsMTIgKzM1Miw2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHVzZXNO
YW1lKCkpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEF0b21pY0hUTUxUb2tlbihjb25zdCBTdHJp
bmcmIGNoYXJhY3RlcnMpCi0gICAgICAgIDogbV90eXBlKEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQot
ICAgICAgICAsIG1fZGF0YShjaGFyYWN0ZXJzKQotICAgIHsKLSAgICB9Ci0KICAgICBIVE1MVG9r
ZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKCkgY29uc3QKQEAgLTM5OCwxMCArMzkyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fYXR0cmlidXRlcy5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgY29uc3Qg
U3RyaW5nJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICBjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0
b3ImIGNoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBI
VE1MVG9rZW46OkNoYXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7CisgICAgICAgIHJl
dHVybiAqbV9leHRlcm5hbENoYXJhY3RlcnM7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBj
b21tZW50KCkgY29uc3QKQEAgLTQ0NiwxMCArNDQwLDE5IEBAIHByaXZhdGU6CiAgICAgLy8gIm5h
bWUiIGZvciBET0NUWVBFLCBTdGFydFRhZywgYW5kIEVuZFRhZwogICAgIEF0b21pY1N0cmluZyBt
X25hbWU7CiAKLSAgICAvLyAiY2hhcmFjdGVycyIgZm9yIENoYXJhY3RlcgogICAgIC8vICJkYXRh
IiBmb3IgQ29tbWVudAogICAgIFN0cmluZyBtX2RhdGE7CiAKKyAgICAvLyAiY2hhcmFjdGVycyIg
Zm9yIENoYXJhY3RlcgorICAgIC8vCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSB0
aGUgY2hhcmFjdGVycyBvdXQgb2YgdGhlIEhUTUxUb2tlbiwgc28gd2UKKyAgICAvLyBrZWVwIGEg
cG9pbnRlciB0byBpdHMgYnVmZmVyIGluc3RlYWQuICBUaGlzIGJ1ZmZlciBpcyBvd25lZCBieSB0
aGUKKyAgICAvLyBIVE1MVG9rZW4gYW5kIGNhdXNlcyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0
d2VlbiB0aGVzZSBvYmplY3RzLgorICAgIC8vCisgICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlz
bSBmb3IgImludGVybmFsaXppbmciIHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlCisgICAgLy8gICAg
ICAgIEhUTUxUb2tlbiBpcyBkZXN0cnVjdGVkLgorICAgIGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZl
Y3RvciogbV9leHRlcm5hbENoYXJhY3RlcnM7CisKICAgICAvLyBGb3IgRE9DVFlQRQogICAgIE93
blB0cjxIVE1MVG9rZW46OkRvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwogCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFRyZWVCdWlsZGVyLmNwcAkocmV2aXNpb24gNjMzNzIpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TFRyZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDggKzI0OCwxNSBAQCBib29s
IGlzTm90Rm9ybWF0dGluZ0FuZE5vdFBocmFzaW5nKGNvbnN0CiBjbGFzcyBIVE1MVHJlZUJ1aWxk
ZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewog
cHVibGljOgogICAgIGV4cGxpY2l0IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBtX2N1cnJlbnQodG9rZW4uY2hhcmFjdGVycygp
LmNoYXJhY3RlcnMoKSkKLSAgICAgICAgLCBtX2VuZChtX2N1cnJlbnQgKyB0b2tlbi5jaGFyYWN0
ZXJzKCkubGVuZ3RoKCkpCisgICAgICAgIDogbV9jdXJyZW50KHRva2VuLmNoYXJhY3RlcnMoKS5k
YXRhKCkpCisgICAgICAgICwgbV9lbmQobV9jdXJyZW50ICsgdG9rZW4uY2hhcmFjdGVycygpLnNp
emUoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICBl
eHBsaWNpdCBFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQorICAgICAgICA6IG1fY3VycmVudChzdHJpbmcuY2hhcmFjdGVycygpKQorICAgICAgICAsIG1f
ZW5kKG1fY3VycmVudCArIHN0cmluZy5sZW5ndGgoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
aXNFbXB0eSgpKTsKICAgICB9CkBAIC0zODcsNyArMzk0LDcgQEAgc3RhdGljIHZvaWQgY29udmVy
dFRvT2xkU3R5bGUoQXRvbWljSFRNTAogICAgICAgICBicmVhazsKICAgICBjYXNlIEhUTUxUb2tl
bjo6Q2hhcmFjdGVyOgogICAgICAgICBvbGRTdHlsZVRva2VuLnRhZ05hbWUgPSB0ZXh0QXRvbTsK
LSAgICAgICAgb2xkU3R5bGVUb2tlbi50ZXh0ID0gdG9rZW4uY2hhcmFjdGVycygpLmltcGwoKTsK
KyAgICAgICAgb2xkU3R5bGVUb2tlbi50ZXh0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHRva2VuLmNo
YXJhY3RlcnMoKS5kYXRhKCksIHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CkBAIC01NjYsOCArNTczLDkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NGYWtlRW5kVGFnKAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VD
aGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycykKIHsKLSAgICBBdG9taWNIVE1MVG9r
ZW4gZmFrZVRva2VuKGNoYXJhY3RlcnMpOwotICAgIHByb2Nlc3NDaGFyYWN0ZXIoZmFrZVRva2Vu
KTsKKyAgICBBU1NFUlQoIWNoYXJhY3RlcnMuaXNFbXB0eSgpKTsKKyAgICBFeHRlcm5hbENoYXJh
Y3RlclRva2VuQnVmZmVyIGJ1ZmZlcihjaGFyYWN0ZXJzKTsKKyAgICBwcm9jZXNzQ2hhcmFjdGVy
QnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVBF
bmRUYWdJZlBJblNjb3BlKCkK
</data>
<flag name="review"
          id="49644"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="49646"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>