<?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>63659</bug_id>
          
          <creation_ts>2011-06-29 14:29:06 -0700</creation_ts>
          <short_desc>Switch offsetFromContainer and related to to new layout types</short_desc>
          <delta_ts>2011-07-06 19:32:45 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429884</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-29 14:29:06 -0700</bug_when>
    <thetext>Convert offsetFromContainer and related methods to new layout types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429908</commentid>
    <comment_count>1</comment_count>
      <attachid>99156</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-29 14:52:06 -0700</bug_when>
    <thetext>Created attachment 99156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430658</commentid>
    <comment_count>2</comment_count>
      <attachid>99363</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-30 13:51:28 -0700</bug_when>
    <thetext>Created attachment 99363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430664</commentid>
    <comment_count>3</comment_count>
      <attachid>99363</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-30 13:54:20 -0700</bug_when>
    <thetext>Comment on attachment 99363
Patch

He&apos;s making you do all the hard ones. Same fears about it not being clear when it&apos;s OK to call these roudning methods and if they&apos;ll do anything in the float world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432954</commentid>
    <comment_count>4</comment_count>
      <attachid>99363</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-06 13:01:39 -0700</bug_when>
    <thetext>Comment on attachment 99363
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432973</commentid>
    <comment_count>5</comment_count>
      <attachid>99363</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 13:22:00 -0700</bug_when>
    <thetext>Comment on attachment 99363
Patch

Rejecting attachment 99363 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-03&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
7ec0184a9c980a8e2331273567200b5d59ad76fd
r90485 = f78dec6e464c457097927d81bdecf1728a8d1c4f
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8995112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433125</commentid>
    <comment_count>6</comment_count>
      <attachid>99902</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-06 17:04:53 -0700</bug_when>
    <thetext>Created attachment 99902
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433139</commentid>
    <comment_count>7</comment_count>
      <attachid>99902</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 17:37:32 -0700</bug_when>
    <thetext>Comment on attachment 99902
Patch for landing

Rejecting attachment 99902 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
268f45cc-cd09-0410-ab3c-d52691b4dbfc
	M	Tools/Scripts/webkitpy/common/config/committers.py
	M	Tools/ChangeLog
r90519 = c331ee11f781cbef19b6e2428504514bdbcd18ef (refs/remotes/origin/master)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.
Updating chromium port dependencies using gclient...

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/8987885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433155</commentid>
    <comment_count>8</comment_count>
      <attachid>99912</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-06 18:50:37 -0700</bug_when>
    <thetext>Created attachment 99912
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433173</commentid>
    <comment_count>9</comment_count>
      <attachid>99912</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 19:32:40 -0700</bug_when>
    <thetext>Comment on attachment 99912
Patch for landing

Clearing flags on attachment: 99912

Committed r90525: &lt;http://trac.webkit.org/changeset/90525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433174</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 19:32:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99156</attachid>
            <date>2011-06-29 14:52:06 -0700</date>
            <delta_ts>2011-06-30 13:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63659-20110629145204.patch</filename>
            <type>text/plain</type>
            <size>17355</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMjkgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBvZmZzZXRGcm9tQ29udGFpbmVyIGFuZCByZWxhdGVk
IHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYzNjU5CisKKyAgICAgICAgU3dpdGNoIG9mZnNldEZyb21Db250YWlu
ZXIgYW5kIHJlbGF0ZWQgbWFwcGluZyBtZXRob2RzIHRvIG5ldyBsYXlvdXQgdW5pdAorICAgICAg
ICBhYnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkg
Y2hhbmdlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAo
V2ViQ29yZTo6ZW5jbG9zaW5nTGF5b3V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZGVk
TGF5b3V0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZExheW91dFVuaXQpOgorICAg
ICAgICBBZGQgTGF5b3V0VW5pdCB2ZXJzaW9ucyBvZiBlbmNsb3NpbmdJbnRSZWN0LCByb3VuZGVk
SW50UG9pbnQgYW5kIGxyb3VuZGYuCisgICAgICAgIEZvciBub3cgdGhlc2UgbWFwIHRvIHRoZWly
IGludCBjb3VudGVycGFydCBidXQgb25jZSB3ZSBzd2l0Y2ggdG8gZmxvYXQgb3IKKyAgICAgICAg
Zml4ZWQgcG9pbnQgdGhleSdsbCBiZSBuby1vcHMgYW5kIGV2ZW50dWFsbHkgd2lsbCBiZSByZW1v
dmVkLiAKKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRU
b1BhaW50aW5nUmVjdCk6CisKIDIwMTEtMDYtMjkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDkwMDMyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDggQEAKICNpZm5kZWYgTGF5b3V0VHlwZXNfaAogI2RlZmluZSBMYXlvdXRUeXBlc19oCiAK
KyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw2ICs0NywyMSBAQCB0
eXBlZGVmIEludFBvaW50IExheW91dFBvaW50OwogdHlwZWRlZiBJbnRTaXplIExheW91dFNpemU7
CiB0eXBlZGVmIEludFJlY3QgTGF5b3V0UmVjdDsKIAoraW5saW5lIExheW91dFJlY3QgZW5jbG9z
aW5nTGF5b3V0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QocmVjdCk7Cit9CisKK2lubGluZSBMYXlvdXRQb2ludCByb3VuZGVkTGF5b3V0
UG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkKK3sKKyAgICByZXR1cm4gcm91bmRlZEludFBvaW50
KHApOworfQorCitpbmxpbmUgTGF5b3V0VW5pdCByb3VuZGVkTGF5b3V0VW5pdChmbG9hdCB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gbHJvdW5kZih2YWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIExheW91dFR5cGVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA5MDAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM0LDcgKzEyMzQsNyBA
QCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kCiAgICAgaWYgKHdhc0Zp
eGVkKQogICAgICAgICAqd2FzRml4ZWQgPSBmaXhlZDsKICAgICAKLSAgICBJbnRTaXplIGNvbnRh
aW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZEludFBvaW50KHRyYW5z
Zm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNl
dCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0
YXRlLm1hcHBlZFBvaW50KCkpKTsKICAgICAKICAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFu
c2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZl
czNEKCkpOwogICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21D
b250YWluZXIobykpIHsKQEAgLTEyNDcsNyArMTI0Nyw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBM
b2NhbFRvQ29udGFpbmVyKFJlbmQKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAg
ICAvLyBUaGVyZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIg
YW5kIG8sIGJlY2F1c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hvdWxk
IGJlIHNhZmUKICAgICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2VlbiB0
aGUgcmVwYWludENvbnRhaW5lciBhbmQgby4KLSAgICAgICAgSW50U2l6ZSBjb250YWluZXJPZmZz
ZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIobyk7Cisg
ICAgICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zm
c2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKG8pOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3Zl
KC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJl
c2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3Jt
U3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI3
NSw3ICsxMjc1LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KAog
CiAgICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRy
YW5zZm9ybVN0YXRlKTsKIAotICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJv
bUNvbnRhaW5lcihvLCBJbnRQb2ludCgpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNl
dCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7CiAKICAgICBib29sIHBy
ZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8
IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwogICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3Vs
ZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKQEAgLTEyODYsMjAgKzEyODYsMjAgQEAg
dm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KAogICAgICAgICB0cmFuc2Zv
cm1TdGF0ZS5tb3ZlKC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5o
ZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3Jt
IDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogfQogCi1JbnRTaXplIFJlbmRl
ckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKK0xheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVy
KFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAg
IEFTU0VSVChvID09IGNvbnRhaW5lcigpKTsKIAotICAgIEludFNpemUgb2Zmc2V0OyAgICAKKyAg
ICBMYXlvdXRTaXplIG9mZnNldDsgICAgCiAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQogICAg
ICAgICBvZmZzZXQgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwogCiAgICAgaWYgKCFpc0lu
bGluZSgpIHx8IGlzUmVwbGFjZWQoKSkgewogICAgICAgICBpZiAoc3R5bGUoKS0+cG9zaXRpb24o
KSAhPSBBYnNvbHV0ZVBvc2l0aW9uICYmIHN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3Np
dGlvbikgewogICAgICAgICAgICAgaWYgKG8tPmhhc0NvbHVtbnMoKSkgewotICAgICAgICAgICAg
ICAgIEludFJlY3QgY29sdW1uUmVjdChmcmFtZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgTGF5
b3V0UmVjdCBjb2x1bW5SZWN0KGZyYW1lUmVjdCgpKTsKICAgICAgICAgICAgICAgICB0b1JlbmRl
ckJsb2NrKG8pLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKGNvbHVtblJlY3Qp
OwotICAgICAgICAgICAgICAgIG9mZnNldCArPSBJbnRTaXplKGNvbHVtblJlY3QubG9jYXRpb24o
KS54KCksIGNvbHVtblJlY3QubG9jYXRpb24oKS55KCkpOworICAgICAgICAgICAgICAgIG9mZnNl
dCArPSBMYXlvdXRTaXplKGNvbHVtblJlY3QubG9jYXRpb24oKS54KCksIGNvbHVtblJlY3QubG9j
YXRpb24oKS55KCkpOwogICAgICAgICAgICAgICAgIGNvbHVtblJlY3QubW92ZUJ5KHBvaW50KTsK
ICAgICAgICAgICAgICAgICBvLT5hZGp1c3RGb3JDb2x1bW5zKG9mZnNldCwgY29sdW1uUmVjdC5s
b2NhdGlvbigpKTsKICAgICAgICAgICAgIH0gZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gOTAwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6
CiAgICAgaW50IG92ZXJyaWRlSGVpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE92
ZXJyaWRlU2l6ZShpbnQpOwogCi0gICAgdmlydHVhbCBJbnRTaXplIG9mZnNldEZyb21Db250YWlu
ZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExh
eW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGNvbnN0OwogICAgIAogICAgIExheW91dFVuaXQgY29tcHV0ZUJvcmRlckJveExvZ2lj
YWxXaWR0aChMYXlvdXRVbml0IHdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVC
b3JkZXJCb3hMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA5MDAzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MzksMTQgKzczOSwxNCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpw
b3NpdGlvbkZvCiAgICAgcmV0dXJuIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpwb3NpdGlvbkZvclBv
aW50KHBvaW50KTsKIH0KIAotSW50UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzQm91bmRpbmdCb3go
KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzQm91bmRpbmdCb3goKSBjb25z
dAogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpIHsKICAgICAgICAgQVNTRVJU
KCFmaXJzdExpbmVCb3goKSk7Ci0gICAgICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGN1bGxl
ZElubGluZUJvdW5kaW5nQm94KHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91
dFJlY3QoY3VsbGVkSW5saW5lQm91bmRpbmdCb3godGhpcykpOwogICAgIH0KIAotICAgIEludFJl
Y3QgcmVzdWx0OworICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIAogICAgIC8vIFNlZSA8cmRh
cjovL3Byb2JsZW0vNTI4OTcyMT4sIGZvciBhbiB1bmtub3duIHJlYXNvbiB0aGUgbGlua2VkIGxp
c3QgaGVyZSBpcyBzb21ldGltZXMgaW5jb25zaXN0ZW50LCBmaXJzdCBpcyBub24temVybyBhbmQg
bGFzdCBpcyB6ZXJvLiAgV2UgaGF2ZSBiZWVuCiAgICAgLy8gdW5hYmxlIHRvIHJlcHJvZHVjZSB0
aGlzIGF0IGFsbCAoYW5kIGNvbnNlcXVlbnRseSB1bmFibGUgdG8gZmlndXJlIG90IHdoeSB0aGlz
IGlzIGhhcHBlbmluZykuICBUaGUgYXNzZXJ0IHdpbGwgaG9wZWZ1bGx5IGNhdGNoIHRoZSBwcm9i
bGVtIGluIGRlYnVnCkBAIC03NjksNyArNzY5LDcgQEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6Omxp
bmVzQm91bmRpbmdCb3goKQogICAgICAgICBmbG9hdCB5ID0gaXNIb3Jpem9udGFsID8gZmlyc3RM
aW5lQm94KCktPnkoKSA6IGxvZ2ljYWxMZWZ0U2lkZTsKICAgICAgICAgZmxvYXQgd2lkdGggPSBp
c0hvcml6b250YWwgPyBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlIDogbGFzdExp
bmVCb3goKS0+bG9naWNhbEJvdHRvbSgpIC0geDsKICAgICAgICAgZmxvYXQgaGVpZ2h0ID0gaXNI
b3Jpem9udGFsID8gbGFzdExpbmVCb3goKS0+bG9naWNhbEJvdHRvbSgpIC0geSA6IGxvZ2ljYWxS
aWdodFNpZGUgLSBsb2dpY2FsTGVmdFNpZGU7Ci0gICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0lu
dFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgcmVzdWx0ID0g
ZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAg
IH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDk0LDExICsxMDk0LDExIEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQKICAgICBvLT5jb21wdXRlUmVjdEZvclJl
cGFpbnQocmVwYWludENvbnRhaW5lciwgcmVjdCwgZml4ZWQpOwogfQogCi1JbnRTaXplIFJlbmRl
cklubGluZTo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNl
dEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQoY29udGFpbmVyID09IHRoaXMtPmNvbnRhaW5l
cigpKTsKICAgICAKLSAgICBJbnRTaXplIG9mZnNldDsgICAgCisgICAgTGF5b3V0U2l6ZSBvZmZz
ZXQ7ICAgIAogICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IHJl
bGF0aXZlUG9zaXRpb25PZmZzZXQoKTsKIApAQCAtMTEzNSw3ICsxMTM1LDcgQEAgdm9pZCBSZW5k
ZXJJbmxpbmU6Om1hcExvY2FsVG9Db250YWluZXIoUgogICAgIGlmIChvLT5pc0JveCgpICYmIG8t
PnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHRyYW5zZm9y
bVN0YXRlLm1vdmUodG9SZW5kZXJCb3gobyktPmZsaXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0Nv
bHVtbnMocm91bmRlZEludFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNl
bnRlclBvaW50KTsKIAotICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNv
bnRhaW5lcihvLCByb3VuZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkp
OworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihv
LCByb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogCiAg
ICAgYm9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2Vy
dmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKICAgICBpZiAodXNlVHJhbnNmb3Jt
cyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CkBAIC0xMTY3LDcgKzEx
NjcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pCiAKICAgICBv
LT5tYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3Jt
U3RhdGUpOwogCi0gICAgSW50U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFp
bmVyKG8sIEludFBvaW50KCkpOworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zm
c2V0RnJvbUNvbnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKIAogICAgIGJvb2wgcHJlc2VydmUz
RCA9IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUo
KS0+cHJlc2VydmVzM0QoKSk7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJh
bnNmb3JtRnJvbUNvbnRhaW5lcihvKSkgewpAQCAtMTI4NiwyMyArMTI4NiwyMyBAQCBpbnQgUmVu
ZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCCiAgICAgcmV0dXJuIGZvbnRNZXRyaWNz
LmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24s
IGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIAotSW50
U2l6ZSBSZW5kZXJJbmxpbmU6OnJlbGF0aXZlUG9zaXRpb25lZElubGluZU9mZnNldChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkKSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6OnJlbGF0aXZl
UG9zaXRpb25lZElubGluZU9mZnNldChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzbid0IHJpZ2h0IHdpdGggbWl4ZWQgd3JpdGlu
ZyBtb2Rlcy4KIAogICAgIEFTU0VSVChpc1JlbFBvc2l0aW9uZWQoKSk7CiAgICAgaWYgKCFpc1Jl
bFBvc2l0aW9uZWQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAgICAgcmV0dXJu
IExheW91dFNpemUoKTsKIAogICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNsb3NpbmcgcmVscG9z
aXRpb25lZCBpbmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0
IGxpbmUKICAgICAvLyBib3ggZnJvbSB0aGUgcmVzdCBvZiB0aGUgY29udGVudCwgYnV0IG9ubHkg
aW4gdGhlIGNhc2VzIHdoZXJlIHdlIGtub3cgd2UncmUgcG9zaXRpb25lZAogICAgIC8vIHJlbGF0
aXZlIHRvIHRoZSBpbmxpbmUgaXRzZWxmLgogCi0gICAgSW50U2l6ZSBsb2dpY2FsT2Zmc2V0Owot
ICAgIGludCBpbmxpbmVQb3NpdGlvbjsKLSAgICBpbnQgYmxvY2tQb3NpdGlvbjsKKyAgICBMYXlv
dXRTaXplIGxvZ2ljYWxPZmZzZXQ7CisgICAgTGF5b3V0VW5pdCBpbmxpbmVQb3NpdGlvbjsKKyAg
ICBMYXlvdXRVbml0IGJsb2NrUG9zaXRpb247CiAgICAgaWYgKGZpcnN0TGluZUJveCgpKSB7Ci0g
ICAgICAgIGlubGluZVBvc2l0aW9uID0gbHJvdW5kZihmaXJzdExpbmVCb3goKS0+bG9naWNhbExl
ZnQoKSk7CisgICAgICAgIGlubGluZVBvc2l0aW9uID0gcm91bmRlZExheW91dFVuaXQoZmlyc3RM
aW5lQm94KCktPmxvZ2ljYWxMZWZ0KCkpOwogICAgICAgICBibG9ja1Bvc2l0aW9uID0gZmlyc3RM
aW5lQm94KCktPmxvZ2ljYWxUb3AoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpbmxpbmVQb3Np
dGlvbiA9IGxheWVyKCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCShyZXZpc2lvbiA5MDAzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogCi0gICAgdmlydHVhbCBJ
bnRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5k
ZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCi0gICAgSW50UmVjdCBsaW5l
c0JvdW5kaW5nQm94KCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBsaW5lc0JvdW5kaW5nQm94KCkg
Y29uc3Q7CiAgICAgSW50UmVjdCBsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25z
dDsKIAogICAgIElubGluZUZsb3dCb3gqIGNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKTsK
QEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdT
dGF0ZShib29sIGRyYWdPbik7CiAgICAgCi0gICAgSW50U2l6ZSByZWxhdGl2ZVBvc2l0aW9uZWRJ
bmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CisgICAgTGF5b3V0U2l6
ZSByZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRQb2ludCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDkwMDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjMsMTEgKzE5MjMs
MTEgQEAgRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lcgogICAgIHJldHVy
biB0cmFuc2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1JbnRTaXplIFJlbmRlck9i
amVjdDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKK0xheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewog
ICAgIEFTU0VSVChvID09IGNvbnRhaW5lcigpKTsKIAotICAgIEludFNpemUgb2Zmc2V0OworICAg
IExheW91dFNpemUgb2Zmc2V0OwogCiAgICAgby0+YWRqdXN0Rm9yQ29sdW1ucyhvZmZzZXQsIHBv
aW50KTsKIApAQCAtMTkzNywxMCArMTkzNywxMCBAQCBJbnRTaXplIFJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUNvbnRhaW5lCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotSW50U2l6ZSBSZW5kZXJP
YmplY3Q6Om9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5l
cikgY29uc3QKK0xheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250
YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBvZmZz
ZXQ7Ci0gICAgSW50UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7
CisgICAgTGF5b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0
KiBjdXJyQ29udGFpbmVyID0gdGhpczsKICAgICBkbyB7CiAgICAgICAgIFJlbmRlck9iamVjdCog
bmV4dENvbnRhaW5lciA9IGN1cnJDb250YWluZXItPmNvbnRhaW5lcigpOwpAQCAtMTk0OCw3ICsx
OTQ4LDcgQEAgSW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21BbmNlc3RvcgogICAgICAg
ICBpZiAoIW5leHRDb250YWluZXIpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgQVNTRVJU
KCFjdXJyQ29udGFpbmVyLT5oYXNUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIEludFNpemUgY3VycmVu
dE9mZnNldCA9IGN1cnJDb250YWluZXItPm9mZnNldEZyb21Db250YWluZXIobmV4dENvbnRhaW5l
ciwgcmVmZXJlbmNlUG9pbnQpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBj
dXJyQ29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5j
ZVBvaW50KTsKICAgICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7CiAgICAgICAgIHJlZmVy
ZW5jZVBvaW50Lm1vdmUoY3VycmVudE9mZnNldCk7CiAgICAgICAgIGN1cnJDb250YWluZXIgPSBu
ZXh0Q29udGFpbmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAkocmV2aXNpb24gOTAwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw5ICs1ODksOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVk
aW5nIHRyYW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVu
dCBvZmZzZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0
IHRoYXQgYXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBJbnRTaXplIG9m
ZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3Qq
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZy
b20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUg
b2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KLSAgICBJbnRTaXpl
IG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBM
YXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25z
dDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBjb25zdCBJbnRQb2ludCYpIHsgfQogICAgIC8vIEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3Vs
ZCBnbyBhd2F5IGV2ZW50dWFsbHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA5MDAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTEgKzIy
NCwxMSBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2V0T3ZlcnJpZGVTaXplRnJvCiAgICAgUmVu
ZGVyQmxvY2s6OnNldE92ZXJyaWRlU2l6ZShtYXgoMCwgcm93SGVpZ2h0IC0gYm9yZGVyQmVmb3Jl
KCkgLSBwYWRkaW5nQmVmb3JlKCkgLSBib3JkZXJBZnRlcigpIC0gcGFkZGluZ0FmdGVyKCkpKTsK
IH0KIAotSW50U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRl
clRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7
CiAKLSAgICBJbnRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tQ29udGFpbmVy
KG8sIHBvaW50KTsKKyAgICBMYXlvdXRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrOjpvZmZzZXRG
cm9tQ29udGFpbmVyKG8sIHBvaW50KTsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIG9mZnNl
dC5leHBhbmQoLXBhcmVudEJveCgpLT54KCksIC1wYXJlbnRCb3goKS0+eSgpKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gOTAw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwog
Ci0gICAgdmlydHVhbCBJbnRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJv
bUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVS
ZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50
UmVjdCYsIGJvb2wgZml4ZWQgPSBmYWxzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDkwMDMyKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNyAr
NTU0LDcgQEAgRmxvYXRSZWN0IFJlbmRlclRoZW1lTWFjOjpjb252ZXJ0VG9QYWludAogICAgIGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJ0UmVuZGVyZXI7CiAgICAgd2hpbGUgKHJl
bmRlcmVyICYmIHJlbmRlcmVyICE9IGlucHV0UmVuZGVyZXIpIHsKICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7Ci0gICAgICAg
IG9mZnNldEZyb21JbnB1dFJlbmRlcmVyIC09IHJlbmRlcmVyLT5vZmZzZXRGcm9tQ29udGFpbmVy
KGNvbnRhaW5pbmdSZW5kZXJlciwgSW50UG9pbnQoKSk7CisgICAgICAgIG9mZnNldEZyb21JbnB1
dFJlbmRlcmVyIC09IHJlbmRlcmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRhaW5pbmdSZW5k
ZXJlciwgTGF5b3V0UG9pbnQoKSk7CiAgICAgICAgIHJlbmRlcmVyID0gY29udGFpbmluZ1JlbmRl
cmVyOwogICAgIH0KICAgICAvLyBJZiB0aGUgaW5wdXQgcmVuZGVyZXIgd2FzIG5vdCBhIGNvbnRh
aW5lciwgc29tZXRoaW5nIHdlbnQgd3JvbmcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99363</attachid>
            <date>2011-06-30 13:51:28 -0700</date>
            <delta_ts>2011-07-06 17:04:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63659-20110630135127.patch</filename>
            <type>text/plain</type>
            <size>17392</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMTU1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDYtMzAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBvZmZzZXRGcm9tQ29udGFpbmVyIGFuZCByZWxhdGVk
IHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYzNjU5CisKKyAgICAgICAgU3dpdGNoIG9mZnNldEZyb21Db250YWlu
ZXIgYW5kIHJlbGF0ZWQgbWFwcGluZyBtZXRob2RzIHRvIG5ldyBsYXlvdXQgdW5pdAorICAgICAg
ICBhYnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkg
Y2hhbmdlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAo
V2ViQ29yZTo6ZW5jbG9zaW5nTGF5b3V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZGVk
TGF5b3V0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZExheW91dFVuaXQpOgorICAg
ICAgICBBZGQgTGF5b3V0VW5pdCB2ZXJzaW9ucyBvZiBlbmNsb3NpbmdJbnRSZWN0LCByb3VuZGVk
SW50UG9pbnQgYW5kIGxyb3VuZGYuCisgICAgICAgIEZvciBub3cgdGhlc2UgbWFwIHRvIHRoZWly
IGludCBjb3VudGVycGFydCBidXQgb25jZSB3ZSBzd2l0Y2ggdG8gZmxvYXQgb3IKKyAgICAgICAg
Zml4ZWQgcG9pbnQgdGhleSdsbCBiZSBuby1vcHMgYW5kIGV2ZW50dWFsbHkgd2lsbCBiZSByZW1v
dmVkLiAKKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRU
b1BhaW50aW5nUmVjdCk6CisKIDIwMTEtMDYtMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yICFFTkFCTEUo
REFUQUJBU0UpIGFmdGVyIHI4NDc4OS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRUeXBlcy5oCShyZXZpc2lvbiA5MDE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAjaWZuZGVmIExh
eW91dFR5cGVzX2gKICNkZWZpbmUgTGF5b3V0VHlwZXNfaAogCisjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNiArNDcsMjEgQEAgdHlwZWRlZiBJbnRQb2ludCBMYXlv
dXRQb2ludDsKIHR5cGVkZWYgSW50U2l6ZSBMYXlvdXRTaXplOwogdHlwZWRlZiBJbnRSZWN0IExh
eW91dFJlY3Q7CiAKK2lubGluZSBMYXlvdXRSZWN0IGVuY2xvc2luZ0xheW91dFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwor
fQorCitpbmxpbmUgTGF5b3V0UG9pbnQgcm91bmRlZExheW91dFBvaW50KGNvbnN0IEZsb2F0UG9p
bnQmIHApCit7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwKTsKK30KKworaW5saW5lIExh
eW91dFVuaXQgcm91bmRlZExheW91dFVuaXQoZmxvYXQgdmFsdWUpCit7CisgICAgcmV0dXJuIGxy
b3VuZGYodmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBM
YXlvdXRUeXBlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
cmV2aXNpb24gOTAxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw3ICsxMjM0LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1h
cExvY2FsVG9Db250YWluZXIoUmVuZAogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0Zp
eGVkID0gZml4ZWQ7CiAgICAgCi0gICAgSW50U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRG
cm9tQ29udGFpbmVyKG8sIHJvdW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2lu
dCgpKSk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFp
bmVyKG8sIHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7
CiAgICAgCiAgICAgYm9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUo
KS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKICAgICBpZiAodXNl
VHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CkBAIC0x
MjQ3LDcgKzEyNDcsNyBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5k
CiAgICAgaWYgKGNvbnRhaW5lclNraXBwZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUg
YSB0cmFuc2Zvcm0gYmV0d2VlbiByZXBhaW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5z
Zm9ybXMgY3JlYXRlIGNvbnRhaW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8v
IHRvIGp1c3Qgc3VidHJhY3QgdGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIg
YW5kIG8uCi0gICAgICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5l
ci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKG8pOworICAgICAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRh
aW5lcihvKTsKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFpbmVyT2Zmc2V0Lndp
ZHRoKCksIC1jb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1T
dGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNm
b3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNzUsNyArMTI3NSw3IEBAIHZvaWQg
UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCgKIAogICAgIG8tPm1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiAKLSAg
ICBJbnRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgSW50UG9p
bnQoKSk7CisgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFp
bmVyKG8sIExheW91dFBvaW50KCkpOwogCiAgICAgYm9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNm
b3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMz
RCgpKTsKICAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKG8pKSB7CkBAIC0xMjg2LDIwICsxMjg2LDIwIEBAIHZvaWQgUmVuZGVyQm94OjptYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludCgKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFp
bmVyT2Zmc2V0LndpZHRoKCksIC1jb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0Qg
PyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpG
bGF0dGVuVHJhbnNmb3JtKTsKIH0KIAotSW50U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlv
dXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250YWlu
ZXIoKSk7CiAKLSAgICBJbnRTaXplIG9mZnNldDsgICAgCisgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7
ICAgIAogICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IHJlbGF0
aXZlUG9zaXRpb25PZmZzZXQoKTsKIAogICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgaWYgKHN0eWxlKCktPnBvc2l0aW9uKCkgIT0gQWJzb2x1dGVQb3NpdGlv
biAmJiBzdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKICAgICAgICAgICAg
IGlmIChvLT5oYXNDb2x1bW5zKCkpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGNvbHVtblJl
Y3QoZnJhbWVSZWN0KCkpOworICAgICAgICAgICAgICAgIExheW91dFJlY3QgY29sdW1uUmVjdChm
cmFtZVJlY3QoKSk7CiAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhvKS0+ZmxpcEZvcldy
aXRpbmdNb2RlSW5jbHVkaW5nQ29sdW1ucyhjb2x1bW5SZWN0KTsKLSAgICAgICAgICAgICAgICBv
ZmZzZXQgKz0gSW50U2l6ZShjb2x1bW5SZWN0LmxvY2F0aW9uKCkueCgpLCBjb2x1bW5SZWN0Lmxv
Y2F0aW9uKCkueSgpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gTGF5b3V0U2l6ZShjb2x1
bW5SZWN0LmxvY2F0aW9uKCkueCgpLCBjb2x1bW5SZWN0LmxvY2F0aW9uKCkueSgpKTsKICAgICAg
ICAgICAgICAgICBjb2x1bW5SZWN0Lm1vdmVCeShwb2ludCk7CiAgICAgICAgICAgICAgICAgby0+
YWRqdXN0Rm9yQ29sdW1ucyhvZmZzZXQsIGNvbHVtblJlY3QubG9jYXRpb24oKSk7CiAgICAgICAg
ICAgICB9IGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDkwMTU1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIGludCBvdmVycmlkZUhl
aWdodCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlkZVNpemUoaW50KTsKIAot
ICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNv
bnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICAK
ICAgICBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCB3
aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQm9yZGVyQm94TG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGhlaWdodCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gOTAxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM5LDE0ICs3Mzks
MTQgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlcklubGluZTo6cG9zaXRpb25GbwogICAgIHJldHVy
biBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CiB9CiAKLUlu
dFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKK0xheW91dFJlY3Qg
UmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5
c0NyZWF0ZUxpbmVCb3hlcygpKSB7CiAgICAgICAgIEFTU0VSVCghZmlyc3RMaW5lQm94KCkpOwot
ICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChjdWxsZWRJbmxpbmVCb3VuZGluZ0JveCh0
aGlzKSk7CisgICAgICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KGN1bGxlZElubGluZUJv
dW5kaW5nQm94KHRoaXMpKTsKICAgICB9CiAKLSAgICBJbnRSZWN0IHJlc3VsdDsKKyAgICBMYXlv
dXRSZWN0IHJlc3VsdDsKICAgICAKICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUyODk3MjE+
LCBmb3IgYW4gdW5rbm93biByZWFzb24gdGhlIGxpbmtlZCBsaXN0IGhlcmUgaXMgc29tZXRpbWVz
IGluY29uc2lzdGVudCwgZmlyc3QgaXMgbm9uLXplcm8gYW5kIGxhc3QgaXMgemVyby4gIFdlIGhh
dmUgYmVlbgogICAgIC8vIHVuYWJsZSB0byByZXByb2R1Y2UgdGhpcyBhdCBhbGwgKGFuZCBjb25z
ZXF1ZW50bHkgdW5hYmxlIHRvIGZpZ3VyZSBvdCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcpLiAgVGhl
IGFzc2VydCB3aWxsIGhvcGVmdWxseSBjYXRjaCB0aGUgcHJvYmxlbSBpbiBkZWJ1ZwpAQCAtNzY5
LDcgKzc2OSw3IEBAIEludFJlY3QgUmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkKICAg
ICAgICAgZmxvYXQgeSA9IGlzSG9yaXpvbnRhbCA/IGZpcnN0TGluZUJveCgpLT55KCkgOiBsb2dp
Y2FsTGVmdFNpZGU7CiAgICAgICAgIGZsb2F0IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNh
bFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0U2lkZSA6IGxhc3RMaW5lQm94KCktPmxvZ2ljYWxCb3R0
b20oKSAtIHg7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9IGlzSG9yaXpvbnRhbCA/IGxhc3RMaW5l
Qm94KCktPmxvZ2ljYWxCb3R0b20oKSAtIHkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExl
ZnRTaWRlOwotICAgICAgICByZXN1bHQgPSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0xheW91dFJlY3Qo
RmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMTA5NCwxMSArMTA5NCwxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50CiAgICAgby0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWlu
ZXIsIHJlY3QsIGZpeGVkKTsKIH0KIAotSW50U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKK0xheW91dFNpemUgUmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRl
ck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGNvbnRhaW5lciA9PSB0aGlzLT5jb250YWluZXIoKSk7CiAgICAgCi0gICAgSW50
U2l6ZSBvZmZzZXQ7ICAgIAorICAgIExheW91dFNpemUgb2Zmc2V0OyAgICAKICAgICBpZiAoaXNS
ZWxQb3NpdGlvbmVkKCkpCiAgICAgICAgIG9mZnNldCArPSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0
KCk7CiAKQEAgLTExMzUsNyArMTEzNSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRv
Q29udGFpbmVyKFIKICAgICBpZiAoby0+aXNCb3goKSAmJiBvLT5zdHlsZSgpLT5pc0ZsaXBwZWRC
bG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKHRvUmVuZGVy
Qm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKHJvdW5kZWRJbnRQb2lu
dCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSkgLSBjZW50ZXJQb2ludCk7CiAKLSAgICBJ
bnRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZElu
dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50
KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKIAogICAgIGJvb2wgcHJlc2VydmUzRCA9
IHVzZVRyYW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+
cHJlc2VydmVzM0QoKSk7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNm
b3JtRnJvbUNvbnRhaW5lcihvKSkgewpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6Om1hcEFic29sdXRlVG9Mb2NhbFBvaQogCiAgICAgby0+bWFwQWJzb2x1dGVUb0xvY2Fs
UG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKIAotICAgIEludFNp
emUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBJbnRQb2ludCgpKTsK
KyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywg
TGF5b3V0UG9pbnQoKSk7CiAKICAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYm
IChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwog
ICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIo
bykpIHsKQEAgLTEyODYsMjMgKzEyODYsMjMgQEAgaW50IFJlbmRlcklubGluZTo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QgogICAgIHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBl
KSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAt
IGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7CiB9CiAKLUludFNpemUgUmVuZGVySW5saW5lOjpy
ZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QKK0xheW91dFNpemUgUmVuZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZz
ZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBm
dW5jdGlvbiBpc24ndCByaWdodCB3aXRoIG1peGVkIHdyaXRpbmcgbW9kZXMuCiAKICAgICBBU1NF
UlQoaXNSZWxQb3NpdGlvbmVkKCkpOwogICAgIGlmICghaXNSZWxQb3NpdGlvbmVkKCkpCi0gICAg
ICAgIHJldHVybiBJbnRTaXplKCk7CisgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CiAKICAg
ICAvLyBXaGVuIHdlIGhhdmUgYW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5saW5lLCB3ZSBu
ZWVkIHRvIGFkZCBpbiB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBsaW5lCiAgICAgLy8gYm94IGZy
b20gdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQsIGJ1dCBvbmx5IGluIHRoZSBjYXNlcyB3aGVyZSB3
ZSBrbm93IHdlJ3JlIHBvc2l0aW9uZWQKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgaW5saW5lIGl0
c2VsZi4KIAotICAgIEludFNpemUgbG9naWNhbE9mZnNldDsKLSAgICBpbnQgaW5saW5lUG9zaXRp
b247Ci0gICAgaW50IGJsb2NrUG9zaXRpb247CisgICAgTGF5b3V0U2l6ZSBsb2dpY2FsT2Zmc2V0
OworICAgIExheW91dFVuaXQgaW5saW5lUG9zaXRpb247CisgICAgTGF5b3V0VW5pdCBibG9ja1Bv
c2l0aW9uOwogICAgIGlmIChmaXJzdExpbmVCb3goKSkgewotICAgICAgICBpbmxpbmVQb3NpdGlv
biA9IGxyb3VuZGYoZmlyc3RMaW5lQm94KCktPmxvZ2ljYWxMZWZ0KCkpOworICAgICAgICBpbmxp
bmVQb3NpdGlvbiA9IHJvdW5kZWRMYXlvdXRVbml0KGZpcnN0TGluZUJveCgpLT5sb2dpY2FsTGVm
dCgpKTsKICAgICAgICAgYmxvY2tQb3NpdGlvbiA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9w
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5saW5lUG9zaXRpb24gPSBsYXllcigpLT5zdGF0
aWNJbmxpbmVQb3NpdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuaAkocmV2aXNpb24gOTAxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mKTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29u
dGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBjb25zdDsKIAotICAgIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0
OworICAgIExheW91dFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIEludFJlY3Qg
bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3Q7CiAKICAgICBJbmxpbmVGbG93
Qm94KiBjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94KCk7CkBAIC03Myw3ICs3Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pOwog
ICAgIAotICAgIEludFNpemUgcmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zmc2V0KGNvbnN0IFJl
bmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIExheW91dFNpemUgcmVsYXRpdmVQb3NpdGlvbmVk
SW5saW5lT2Zmc2V0KGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBvaW50
Jik7CiAgICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9p
bnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShy
ZXZpc2lvbiA5MDE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIzLDExICsxOTIzLDExIEBAIEZsb2F0UXVhZCBSZW5k
ZXJPYmplY3Q6OmxvY2FsVG9Db250YWluZXIKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFz
dFBsYW5hclF1YWQoKTsKIH0KIAotSW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlv
dXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250
YWluZXIoKSk7CiAKLSAgICBJbnRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRTaXplIG9mZnNldDsK
IAogICAgIG8tPmFkanVzdEZvckNvbHVtbnMob2Zmc2V0LCBwb2ludCk7CiAKQEAgLTE5MzcsMTAg
KzE5MzcsMTAgQEAgSW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZQogICAg
IHJldHVybiBvZmZzZXQ7CiB9CiAKLUludFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5j
ZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CitMYXlvdXRTaXpl
IFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCog
Y29udGFpbmVyKSBjb25zdAogewotICAgIEludFNpemUgb2Zmc2V0OwotICAgIEludFBvaW50IHJl
ZmVyZW5jZVBvaW50OworICAgIExheW91dFNpemUgb2Zmc2V0OworICAgIExheW91dFBvaW50IHJl
ZmVyZW5jZVBvaW50OwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogY3VyckNvbnRhaW5lciA9IHRo
aXM7CiAgICAgZG8gewogICAgICAgICBSZW5kZXJPYmplY3QqIG5leHRDb250YWluZXIgPSBjdXJy
Q29udGFpbmVyLT5jb250YWluZXIoKTsKQEAgLTE5NDgsNyArMTk0OCw3IEBAIEludFNpemUgUmVu
ZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3IKICAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVy
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIEFTU0VSVCghY3VyckNvbnRhaW5lci0+aGFz
VHJhbnNmb3JtKCkpOwotICAgICAgICBJbnRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyQ29udGFp
bmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsK
KyAgICAgICAgTGF5b3V0U2l6ZSBjdXJyZW50T2Zmc2V0ID0gY3VyckNvbnRhaW5lci0+b2Zmc2V0
RnJvbUNvbnRhaW5lcihuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQb2ludCk7CiAgICAgICAgIG9m
ZnNldCArPSBjdXJyZW50T2Zmc2V0OwogICAgICAgICByZWZlcmVuY2VQb2ludC5tb3ZlKGN1cnJl
bnRPZmZzZXQpOwogICAgICAgICBjdXJyQ29udGFpbmVyID0gbmV4dENvbnRhaW5lcjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDkwMTU1KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01ODksOSArNTg5LDkgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQg
ZnJvbSB0aGUgY29udGFpbmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4g
bXVsdGktY29sdW1uIGxheW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBk
aWZmZXJlbnQgcG9pbnRzLCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhl
IGdpdmVuIHBvaW50LgotICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRT
aXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQm
KSBjb25zdDsKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0aGUg
Y29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlhdGUg
b2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCi0gICAgSW50U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3JD
b250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
QW5jZXN0b3JDb250YWluZXIoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmKSB7
IH0KICAgICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAko
cmV2aXNpb24gOTAxNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDExICsyMjQsMTEgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnNldE92ZXJyaWRlU2l6ZUZybwogICAgIFJlbmRlckJsb2NrOjpzZXRPdmVycmlk
ZVNpemUobWF4KDAsIHJvd0hlaWdodCAtIGJvcmRlckJlZm9yZSgpIC0gcGFkZGluZ0JlZm9yZSgp
IC0gYm9yZGVyQWZ0ZXIoKSAtIHBhZGRpbmdBZnRlcigpKSk7CiB9CiAKLUludFNpemUgUmVuZGVy
VGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZy
b21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG8gPT0gY29udGFpbmVyKCkpOwogCi0gICAgSW50U2l6ZSBvZmZz
ZXQgPSBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBwb2ludCk7CisgICAgTGF5
b3V0U2l6ZSBvZmZzZXQgPSBSZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBwb2lu
dCk7CiAgICAgaWYgKHBhcmVudCgpKQogICAgICAgICBvZmZzZXQuZXhwYW5kKC1wYXJlbnRCb3go
KS0+eCgpLCAtcGFyZW50Qm94KCktPnkoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHJldmlzaW9uIDkwMTU1KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1h
c2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgSW50U2l6
ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmLCBib29sIGZpeGVkID0g
ZmFsc2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiA5MDE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTU0LDcgKzU1NCw3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJUaGVtZU1hYzo6Y29udmVydFRvUGFpbnQKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gcGFydFJlbmRlcmVyOwogICAgIHdoaWxlIChyZW5kZXJlciAmJiByZW5kZXJlciAh
PSBpbnB1dFJlbmRlcmVyKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmluZ1JlbmRl
cmVyID0gcmVuZGVyZXItPmNvbnRhaW5lcigpOwotICAgICAgICBvZmZzZXRGcm9tSW5wdXRSZW5k
ZXJlciAtPSByZW5kZXJlci0+b2Zmc2V0RnJvbUNvbnRhaW5lcihjb250YWluaW5nUmVuZGVyZXIs
IEludFBvaW50KCkpOworICAgICAgICBvZmZzZXRGcm9tSW5wdXRSZW5kZXJlciAtPSByZW5kZXJl
ci0+b2Zmc2V0RnJvbUNvbnRhaW5lcihjb250YWluaW5nUmVuZGVyZXIsIExheW91dFBvaW50KCkp
OwogICAgICAgICByZW5kZXJlciA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKICAgICB9CiAgICAgLy8g
SWYgdGhlIGlucHV0IHJlbmRlcmVyIHdhcyBub3QgYSBjb250YWluZXIsIHNvbWV0aGluZyB3ZW50
IHdyb25nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99902</attachid>
            <date>2011-07-06 17:04:53 -0700</date>
            <delta_ts>2011-07-06 18:50:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-63659-20110706170452.patch</filename>
            <type>text/plain</type>
            <size>15094</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiA5MDUx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjZGVmaW5lIExheW91dFR5cGVzX2gKIAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDExIEBAIHR5cGVkZWYgSW50
UG9pbnQgTGF5b3V0UG9pbnQ7CiB0eXBlZGVmIEludFNpemUgTGF5b3V0U2l6ZTsKIHR5cGVkZWYg
SW50UmVjdCBMYXlvdXRSZWN0OwogCitpbmxpbmUgTGF5b3V0UmVjdCBlbmNsb3NpbmdMYXlvdXRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVj
dChyZWN0KTsKK30KKwogaW5saW5lIExheW91dFBvaW50IHJvdW5kZWRMYXlvdXRQb2ludChjb25z
dCBGbG9hdFBvaW50JiBwKQogewogICAgIHJldHVybiByb3VuZGVkSW50UG9pbnQocCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gOTA1MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIo
UmVuZAogICAgIGlmICh3YXNGaXhlZCkKICAgICAgICAgKndhc0ZpeGVkID0gZml4ZWQ7CiAgICAg
Ci0gICAgSW50U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIHJv
dW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CisgICAgTGF5b3V0
U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIHJvdW5kZWRMYXlv
dXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CiAgICAgCiAgICAgYm9vbCBw
cmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8
fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKICAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CkBAIC0xMjUxLDcgKzEyNTEsNyBAQCB2
b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kCiAgICAgaWYgKGNvbnRhaW5l
clNraXBwZWQpIHsKICAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2Vl
biByZXBhaW50Q29udGFpbmVyIGFuZCBvLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCiAgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIG8uCi0gICAgICAgIElu
dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2Vz
dG9yQ29udGFpbmVyKG8pOworICAgICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJl
cGFpbnRDb250YWluZXItPm9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihvKTsKICAgICAgICAg
dHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIC1jb250YWluZXJP
ZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRy
YW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludCgKIAogICAgIG8tPm1hcEFic29sdXRlVG9Mb2NhbFBvaW50KGZpeGVk
LCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSk7CiAKLSAgICBJbnRTaXplIGNvbnRhaW5l
ck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgSW50UG9pbnQoKSk7CisgICAgTGF5b3V0
U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIExheW91dFBvaW50
KCkpOwogCiAgICAgYm9vbCBwcmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUo
KS0+cHJlc2VydmVzM0QoKSB8fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKICAgICBpZiAodXNl
VHJhbnNmb3JtcyAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CkBAIC0x
MjkwLDIwICsxMjkwLDIwIEBAIHZvaWQgUmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2lu
dCgKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCks
IC1jb250YWluZXJPZmZzZXQuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6
QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsK
IH0KIAotSW50U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlckJveDo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CiAKLSAgICBJbnRT
aXplIG9mZnNldDsgICAgCisgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7ICAgIAogICAgIGlmIChpc1Jl
bFBvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IHJlbGF0aXZlUG9zaXRpb25PZmZzZXQo
KTsKIAogICAgIGlmICghaXNJbmxpbmUoKSB8fCBpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgaWYg
KHN0eWxlKCktPnBvc2l0aW9uKCkgIT0gQWJzb2x1dGVQb3NpdGlvbiAmJiBzdHlsZSgpLT5wb3Np
dGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKICAgICAgICAgICAgIGlmIChvLT5oYXNDb2x1bW5z
KCkpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IGNvbHVtblJlY3QoZnJhbWVSZWN0KCkpOwor
ICAgICAgICAgICAgICAgIExheW91dFJlY3QgY29sdW1uUmVjdChmcmFtZVJlY3QoKSk7CiAgICAg
ICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhvKS0+ZmxpcEZvcldyaXRpbmdNb2RlSW5jbHVkaW5n
Q29sdW1ucyhjb2x1bW5SZWN0KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgKz0gSW50U2l6ZShj
b2x1bW5SZWN0LmxvY2F0aW9uKCkueCgpLCBjb2x1bW5SZWN0LmxvY2F0aW9uKCkueSgpKTsKKyAg
ICAgICAgICAgICAgICBvZmZzZXQgKz0gTGF5b3V0U2l6ZShjb2x1bW5SZWN0LmxvY2F0aW9uKCku
eCgpLCBjb2x1bW5SZWN0LmxvY2F0aW9uKCkueSgpKTsKICAgICAgICAgICAgICAgICBjb2x1bW5S
ZWN0Lm1vdmVCeShwb2ludCk7CiAgICAgICAgICAgICAgICAgby0+YWRqdXN0Rm9yQ29sdW1ucyhv
ZmZzZXQsIGNvbHVtblJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgICAgICB9IGVsc2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDkwNTE1KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDks
NyArMjQ5LDcgQEAgcHVibGljOgogICAgIGludCBvdmVycmlkZUhlaWdodCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBzZXRPdmVycmlkZVNpemUoaW50KTsKIAotICAgIHZpcnR1YWwgSW50U2l6
ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICAKICAgICBMYXlvdXRVbml0IGNv
bXB1dGVCb3JkZXJCb3hMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlQm9yZGVyQm94TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGhlaWdo
dCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAkocmV2aXNpb24gOTA1MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM4LDE0ICs3MzgsMTQgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlcklubGluZTo6cG9zaXRpb25GbwogICAgIHJldHVybiBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CiB9CiAKLUludFJlY3QgUmVuZGVySW5saW5l
OjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpsaW5l
c0JvdW5kaW5nQm94KCkgY29uc3QKIHsKICAgICBpZiAoIWFsd2F5c0NyZWF0ZUxpbmVCb3hlcygp
KSB7CiAgICAgICAgIEFTU0VSVCghZmlyc3RMaW5lQm94KCkpOwotICAgICAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdChjdWxsZWRJbmxpbmVCb3VuZGluZ0JveCh0aGlzKSk7CisgICAgICAgIHJl
dHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KGN1bGxlZElubGluZUJvdW5kaW5nQm94KHRoaXMpKTsK
ICAgICB9CiAKLSAgICBJbnRSZWN0IHJlc3VsdDsKKyAgICBMYXlvdXRSZWN0IHJlc3VsdDsKICAg
ICAKICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUyODk3MjE+LCBmb3IgYW4gdW5rbm93biBy
ZWFzb24gdGhlIGxpbmtlZCBsaXN0IGhlcmUgaXMgc29tZXRpbWVzIGluY29uc2lzdGVudCwgZmly
c3QgaXMgbm9uLXplcm8gYW5kIGxhc3QgaXMgemVyby4gIFdlIGhhdmUgYmVlbgogICAgIC8vIHVu
YWJsZSB0byByZXByb2R1Y2UgdGhpcyBhdCBhbGwgKGFuZCBjb25zZXF1ZW50bHkgdW5hYmxlIHRv
IGZpZ3VyZSBvdCB3aHkgdGhpcyBpcyBoYXBwZW5pbmcpLiAgVGhlIGFzc2VydCB3aWxsIGhvcGVm
dWxseSBjYXRjaCB0aGUgcHJvYmxlbSBpbiBkZWJ1ZwpAQCAtNzY4LDcgKzc2OCw3IEBAIEludFJl
Y3QgUmVuZGVySW5saW5lOjpsaW5lc0JvdW5kaW5nQm94KCkKICAgICAgICAgZmxvYXQgeSA9IGlz
SG9yaXpvbnRhbCA/IGZpcnN0TGluZUJveCgpLT55KCkgOiBsb2dpY2FsTGVmdFNpZGU7CiAgICAg
ICAgIGZsb2F0IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2lj
YWxMZWZ0U2lkZSA6IGxhc3RMaW5lQm94KCktPmxvZ2ljYWxCb3R0b20oKSAtIHg7CiAgICAgICAg
IGZsb2F0IGhlaWdodCA9IGlzSG9yaXpvbnRhbCA/IGxhc3RMaW5lQm94KCktPmxvZ2ljYWxCb3R0
b20oKSAtIHkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwotICAgICAgICBy
ZXN1bHQgPSBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
CisgICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTA5MywxMSAr
MTA5MywxMSBAQCB2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAg
by0+Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlY3QsIGZpeGVkKTsK
IH0KIAotSW50U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2Jq
ZWN0KiBjb250YWluZXIsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK0xheW91dFNpemUg
UmVuZGVySW5saW5lOjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNvbnRhaW5l
ciA9PSB0aGlzLT5jb250YWluZXIoKSk7CiAgICAgCi0gICAgSW50U2l6ZSBvZmZzZXQ7ICAgIAor
ICAgIExheW91dFNpemUgb2Zmc2V0OyAgICAKICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCiAg
ICAgICAgIG9mZnNldCArPSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCk7CiAKQEAgLTExMzQsNyAr
MTEzNCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKFIKICAgICBp
ZiAoby0+aXNCb3goKSAmJiBvLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
KQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8pLT5mbGlwRm9yV3Jp
dGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKHJvdW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5t
YXBwZWRQb2ludCgpKSkgLSBjZW50ZXJQb2ludCk7CiAKLSAgICBJbnRTaXplIGNvbnRhaW5lck9m
ZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZEludFBvaW50KHRyYW5zZm9ybVN0
YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9m
ZnNldEZyb21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1h
cHBlZFBvaW50KCkpKTsKIAogICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRyYW5zZm9ybXMgJiYg
KG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2VydmVzM0QoKSk7CiAg
ICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihv
KSkgewpAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6Om1hcEFic29sdXRl
VG9Mb2NhbFBvaQogCiAgICAgby0+bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRy
YW5zZm9ybXMsIHRyYW5zZm9ybVN0YXRlKTsKIAotICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0
ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBJbnRQb2ludCgpKTsKKyAgICBMYXlvdXRTaXplIGNv
bnRhaW5lck9mZnNldCA9IG9mZnNldEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7CiAK
ICAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVz
ZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwogICAgIGlmICh1c2VUcmFuc2Zv
cm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIobykpIHsKQEAgLTEyODUsMjMg
KzEyODUsMjMgQEAgaW50IFJlbmRlcklubGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QgogICAg
IHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDI7CiB9CiAKLUludFNpemUgUmVuZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJ
bmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK0xheW91dFNpemUgUmVu
ZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94
KiBjaGlsZCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpc24ndCByaWdo
dCB3aXRoIG1peGVkIHdyaXRpbmcgbW9kZXMuCiAKICAgICBBU1NFUlQoaXNSZWxQb3NpdGlvbmVk
KCkpOwogICAgIGlmICghaXNSZWxQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CisgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CiAKICAgICAvLyBXaGVuIHdlIGhhdmUg
YW4gZW5jbG9zaW5nIHJlbHBvc2l0aW9uZWQgaW5saW5lLCB3ZSBuZWVkIHRvIGFkZCBpbiB0aGUg
b2Zmc2V0IG9mIHRoZSBmaXJzdCBsaW5lCiAgICAgLy8gYm94IGZyb20gdGhlIHJlc3Qgb2YgdGhl
IGNvbnRlbnQsIGJ1dCBvbmx5IGluIHRoZSBjYXNlcyB3aGVyZSB3ZSBrbm93IHdlJ3JlIHBvc2l0
aW9uZWQKICAgICAvLyByZWxhdGl2ZSB0byB0aGUgaW5saW5lIGl0c2VsZi4KIAotICAgIEludFNp
emUgbG9naWNhbE9mZnNldDsKLSAgICBpbnQgaW5saW5lUG9zaXRpb247Ci0gICAgaW50IGJsb2Nr
UG9zaXRpb247CisgICAgTGF5b3V0U2l6ZSBsb2dpY2FsT2Zmc2V0OworICAgIExheW91dFVuaXQg
aW5saW5lUG9zaXRpb247CisgICAgTGF5b3V0VW5pdCBibG9ja1Bvc2l0aW9uOwogICAgIGlmIChm
aXJzdExpbmVCb3goKSkgewotICAgICAgICBpbmxpbmVQb3NpdGlvbiA9IGxyb3VuZGYoZmlyc3RM
aW5lQm94KCktPmxvZ2ljYWxMZWZ0KCkpOworICAgICAgICBpbmxpbmVQb3NpdGlvbiA9IHJvdW5k
ZWRMYXlvdXRVbml0KGZpcnN0TGluZUJveCgpLT5sb2dpY2FsTGVmdCgpKTsKICAgICAgICAgYmxv
Y2tQb3NpdGlvbiA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9wKCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaW5saW5lUG9zaXRpb24gPSBsYXllcigpLT5zdGF0aWNJbmxpbmVQb3NpdGlvbigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkocmV2aXNpb24g
OTA1MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4m
KTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVj
dCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNl
dEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsK
IAotICAgIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0OworICAgIExheW91dFJlY3Qg
bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0OwogICAgIEludFJlY3QgbGluZXNWaXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KCkgY29uc3Q7CiAKICAgICBJbmxpbmVGbG93Qm94KiBjcmVhdGVBbmRBcHBl
bmRJbmxpbmVGbG93Qm94KCk7CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pOwogICAgIAotICAgIEludFNpemUg
cmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zmc2V0KGNvbnN0IFJlbmRlckJveCogY2hpbGQpIGNv
bnN0OworICAgIExheW91dFNpemUgcmVsYXRpdmVQb3NpdGlvbmVkSW5saW5lT2Zmc2V0KGNvbnN0
IFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmlu
Z1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBwYWlu
dE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5MDUxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTMxLDExICsxOTMxLDExIEBAIEZsb2F0UXVhZCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9D
b250YWluZXIKICAgICByZXR1cm4gdHJhbnNmb3JtU3RhdGUubGFzdFBsYW5hclF1YWQoKTsKIH0K
IAotSW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0
KiBvLCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlck9iamVj
dDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CiAKLSAgICBJ
bnRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRTaXplIG9mZnNldDsKIAogICAgIG8tPmFkanVzdEZv
ckNvbHVtbnMob2Zmc2V0LCBwb2ludCk7CiAKQEAgLTE5NDUsMTAgKzE5NDUsMTAgQEAgSW50U2l6
ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZQogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLUludFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoUmVu
ZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdAog
ewotICAgIEludFNpemUgb2Zmc2V0OwotICAgIEludFBvaW50IHJlZmVyZW5jZVBvaW50OworICAg
IExheW91dFNpemUgb2Zmc2V0OworICAgIExheW91dFBvaW50IHJlZmVyZW5jZVBvaW50OwogICAg
IGNvbnN0IFJlbmRlck9iamVjdCogY3VyckNvbnRhaW5lciA9IHRoaXM7CiAgICAgZG8gewogICAg
ICAgICBSZW5kZXJPYmplY3QqIG5leHRDb250YWluZXIgPSBjdXJyQ29udGFpbmVyLT5jb250YWlu
ZXIoKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIEludFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRG
cm9tQW5jZXN0b3IKICAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIEFTU0VSVCghY3VyckNvbnRhaW5lci0+aGFzVHJhbnNmb3JtKCkpOwotICAg
ICAgICBJbnRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyQ29udGFpbmVyLT5vZmZzZXRGcm9tQ29u
dGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKKyAgICAgICAgTGF5b3V0U2l6
ZSBjdXJyZW50T2Zmc2V0ID0gY3VyckNvbnRhaW5lci0+b2Zmc2V0RnJvbUNvbnRhaW5lcihuZXh0
Q29udGFpbmVyLCByZWZlcmVuY2VQb2ludCk7CiAgICAgICAgIG9mZnNldCArPSBjdXJyZW50T2Zm
c2V0OwogICAgICAgICByZWZlcmVuY2VQb2ludC5tb3ZlKGN1cnJlbnRPZmZzZXQpOwogICAgICAg
ICBjdXJyQ29udGFpbmVyID0gbmV4dENvbnRhaW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDkwNTE1KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODgsOSArNTg4LDkg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFpbmVy
KCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxheW91
dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRzLCBz
byByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50LgotICAg
IHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0
IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICAvLyBS
ZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0aGUgY29udGFpbmVyKCkgY2hhaW4u
IEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlhdGUgb2JqZWN0cyBoYXZlIHRyYW5z
Zm9ybXMuCi0gICAgSW50U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoUmVuZGVyT2Jq
ZWN0KikgY29uc3Q7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIo
UmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAgICAvLyBGSVhNRTog
dXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gOTA1MTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDExICsyMjQsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNldE92ZXJy
aWRlU2l6ZUZybwogICAgIFJlbmRlckJsb2NrOjpzZXRPdmVycmlkZVNpemUobWF4KDAsIHJvd0hl
aWdodCAtIGJvcmRlckJlZm9yZSgpIC0gcGFkZGluZ0JlZm9yZSgpIC0gYm9yZGVyQWZ0ZXIoKSAt
IHBhZGRpbmdBZnRlcigpKSk7CiB9CiAKLUludFNpemUgUmVuZGVyVGFibGVDZWxsOjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCogbywgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAorTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG8gPT0gY29udGFpbmVyKCkpOwogCi0gICAgSW50U2l6ZSBvZmZzZXQgPSBSZW5kZXJCbG9jazo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBwb2ludCk7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXQgPSBS
ZW5kZXJCbG9jazo6b2Zmc2V0RnJvbUNvbnRhaW5lcihvLCBwb2ludCk7CiAgICAgaWYgKHBhcmVu
dCgpKQogICAgICAgICBvZmZzZXQuZXhwYW5kKC1wYXJlbnRCb3goKS0+eCgpLCAtcGFyZW50Qm94
KCktPnkoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgJKHJldmlzaW9uIDkwNTE1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFp
bmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiA5MDUx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTU0LDcgKzU1NCw3IEBAIEZsb2F0UmVjdCBSZW5kZXJUaGVtZU1hYzo6Y29u
dmVydFRvUGFpbnQKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFydFJlbmRl
cmVyOwogICAgIHdoaWxlIChyZW5kZXJlciAmJiByZW5kZXJlciAhPSBpbnB1dFJlbmRlcmVyKSB7
CiAgICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmluZ1JlbmRlcmVyID0gcmVuZGVyZXItPmNv
bnRhaW5lcigpOwotICAgICAgICBvZmZzZXRGcm9tSW5wdXRSZW5kZXJlciAtPSByZW5kZXJlci0+
b2Zmc2V0RnJvbUNvbnRhaW5lcihjb250YWluaW5nUmVuZGVyZXIsIEludFBvaW50KCkpOworICAg
ICAgICBvZmZzZXRGcm9tSW5wdXRSZW5kZXJlciAtPSByZW5kZXJlci0+b2Zmc2V0RnJvbUNvbnRh
aW5lcihjb250YWluaW5nUmVuZGVyZXIsIExheW91dFBvaW50KCkpOwogICAgICAgICByZW5kZXJl
ciA9IGNvbnRhaW5pbmdSZW5kZXJlcjsKICAgICB9CiAgICAgLy8gSWYgdGhlIGlucHV0IHJlbmRl
cmVyIHdhcyBub3QgYSBjb250YWluZXIsIHNvbWV0aGluZyB3ZW50IHdyb25nCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99912</attachid>
            <date>2011-07-06 18:50:37 -0700</date>
            <delta_ts>2011-07-06 19:32:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-63659-20110706185036.patch</filename>
            <type>text/plain</type>
            <size>17232</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNTIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDctMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIFN3aXRjaCBvZmZzZXRGcm9tQ29udGFpbmVyIGFuZCByZWxhdGVkIHRv
IHRvIG5ldyBsYXlvdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYzNjU5CisKKyAgICAgICAgU3dpdGNoIG9mZnNldEZyb21Db250YWluZXIg
YW5kIHJlbGF0ZWQgbWFwcGluZyBtZXRob2RzIHRvIG5ldyBsYXlvdXQgdW5pdAorICAgICAgICBh
YnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hh
bmdlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6ZW5jbG9zaW5nTGF5b3V0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZGVkTGF5
b3V0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZExheW91dFVuaXQpOgorICAgICAg
ICBBZGQgTGF5b3V0VW5pdCB2ZXJzaW9ucyBvZiBlbmNsb3NpbmdJbnRSZWN0LCByb3VuZGVkSW50
UG9pbnQgYW5kIGxyb3VuZGYuCisgICAgICAgIEZvciBub3cgdGhlc2UgbWFwIHRvIHRoZWlyIGlu
dCBjb3VudGVycGFydCBidXQgb25jZSB3ZSBzd2l0Y2ggdG8gZmxvYXQgb3IKKyAgICAgICAgZml4
ZWQgcG9pbnQgdGhleSdsbCBiZSBuby1vcHMgYW5kIGV2ZW50dWFsbHkgd2lsbCBiZSByZW1vdmVk
LiAKKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0JveCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW5saW5lOjptYXBMb2NhbFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW5saW5lOjpyZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0
RnJvbUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om9mZnNldEZy
b21BbmNlc3RvckNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpvZmZzZXRGcm9tQ29udGFpbmVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmNvbnZlcnRUb1Bh
aW50aW5nUmVjdCk6CisKIDIwMTEtMDctMDYgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFN3aXRjaCBPdmVyZmxvdyBhbmQgRnJhbWVSZWN0IG1ldGhvZHMg
aW4gSW5saW5lQm94IHRvIExheW91dCBVbml0cwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDkwNTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNkZWZp
bmUgTGF5b3V0VHlwZXNfaAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDYsNiArNDcsMTEgQEAgdHlwZWRlZiBJbnRQb2ludCBMYXlvdXRQb2ludDsKIHR5cGVkZWYg
SW50U2l6ZSBMYXlvdXRTaXplOwogdHlwZWRlZiBJbnRSZWN0IExheW91dFJlY3Q7CiAKK2lubGlu
ZSBMYXlvdXRSZWN0IGVuY2xvc2luZ0xheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
eworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOworfQorCiBpbmxpbmUgTGF5b3V0
UG9pbnQgcm91bmRlZExheW91dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHApCiB7CiAgICAgcmV0
dXJuIHJvdW5kZWRJbnRQb2ludChwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCShyZXZpc2lvbiA5MDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM4LDcgKzEyMzgsNyBAQCB2b2lkIFJl
bmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kCiAgICAgaWYgKHdhc0ZpeGVkKQogICAg
ICAgICAqd2FzRml4ZWQgPSBmaXhlZDsKICAgICAKLSAgICBJbnRTaXplIGNvbnRhaW5lck9mZnNl
dCA9IG9mZnNldEZyb21Db250YWluZXIobywgcm91bmRlZEludFBvaW50KHRyYW5zZm9ybVN0YXRl
Lm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNl
dEZyb21Db250YWluZXIobywgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBl
ZFBvaW50KCkpKTsKICAgICAKICAgICBib29sIHByZXNlcnZlM0QgPSB1c2VUcmFuc2Zvcm1zICYm
IChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCktPnByZXNlcnZlczNEKCkpOwog
ICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIo
bykpIHsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29u
dGFpbmVyKFJlbmQKICAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewogICAgICAgICAvLyBUaGVy
ZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIG8sIGJl
Y2F1c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFpbmVycywgc28gaXQgc2hvdWxkIGJlIHNhZmUK
ICAgICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcmVwYWlu
dENvbnRhaW5lciBhbmQgby4KLSAgICAgICAgSW50U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBh
aW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIobyk7CisgICAgICAgIExh
eW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFu
Y2VzdG9yQ29udGFpbmVyKG8pOwogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWlu
ZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/
IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZs
YXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI3OSw3ICsxMjc5
LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KAogCiAgICAgby0+
bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoZml4ZWQsIHVzZVRyYW5zZm9ybXMsIHRyYW5zZm9ybVN0
YXRlKTsKIAotICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5l
cihvLCBJbnRQb2ludCgpKTsKKyAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IG9mZnNl
dEZyb21Db250YWluZXIobywgTGF5b3V0UG9pbnQoKSk7CiAKICAgICBib29sIHByZXNlcnZlM0Qg
PSB1c2VUcmFuc2Zvcm1zICYmIChvLT5zdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpIHx8IHN0eWxlKCkt
PnByZXNlcnZlczNEKCkpOwogICAgIGlmICh1c2VUcmFuc2Zvcm1zICYmIHNob3VsZFVzZVRyYW5z
Zm9ybUZyb21Db250YWluZXIobykpIHsKQEAgLTEyOTAsMjAgKzEyOTAsMjAgQEAgdm9pZCBSZW5k
ZXJCb3g6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KAogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5t
b3ZlKC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwg
cHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNm
b3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogfQogCi1JbnRTaXplIFJlbmRlckJveDo6b2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKK0xheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9i
amVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFTU0VSVChv
ID09IGNvbnRhaW5lcigpKTsKIAotICAgIEludFNpemUgb2Zmc2V0OyAgICAKKyAgICBMYXlvdXRT
aXplIG9mZnNldDsgICAgCiAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQogICAgICAgICBvZmZz
ZXQgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpOwogCiAgICAgaWYgKCFpc0lubGluZSgpIHx8
IGlzUmVwbGFjZWQoKSkgewogICAgICAgICBpZiAoc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBBYnNv
bHV0ZVBvc2l0aW9uICYmIHN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgewog
ICAgICAgICAgICAgaWYgKG8tPmhhc0NvbHVtbnMoKSkgewotICAgICAgICAgICAgICAgIEludFJl
Y3QgY29sdW1uUmVjdChmcmFtZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBj
b2x1bW5SZWN0KGZyYW1lUmVjdCgpKTsKICAgICAgICAgICAgICAgICB0b1JlbmRlckJsb2NrKG8p
LT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKGNvbHVtblJlY3QpOwotICAgICAg
ICAgICAgICAgIG9mZnNldCArPSBJbnRTaXplKGNvbHVtblJlY3QubG9jYXRpb24oKS54KCksIGNv
bHVtblJlY3QubG9jYXRpb24oKS55KCkpOworICAgICAgICAgICAgICAgIG9mZnNldCArPSBMYXlv
dXRTaXplKGNvbHVtblJlY3QubG9jYXRpb24oKS54KCksIGNvbHVtblJlY3QubG9jYXRpb24oKS55
KCkpOwogICAgICAgICAgICAgICAgIGNvbHVtblJlY3QubW92ZUJ5KHBvaW50KTsKICAgICAgICAg
ICAgICAgICBvLT5hZGp1c3RGb3JDb2x1bW5zKG9mZnNldCwgY29sdW1uUmVjdC5sb2NhdGlvbigp
KTsKICAgICAgICAgICAgIH0gZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaAkocmV2aXNpb24gOTA1MjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksNyBAQCBwdWJsaWM6CiAgICAgaW50
IG92ZXJyaWRlSGVpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJyaWRlU2l6
ZShpbnQpOwogCi0gICAgdmlydHVhbCBJbnRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
T2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUg
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNv
bnN0OwogICAgIAogICAgIExheW91dFVuaXQgY29tcHV0ZUJvcmRlckJveExvZ2ljYWxXaWR0aChM
YXlvdXRVbml0IHdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJCb3hM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA5MDUyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzgsMTQgKzczOCwxNCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZv
CiAgICAgcmV0dXJuIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewogICAg
IGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpIHsKICAgICAgICAgQVNTRVJUKCFmaXJzdExp
bmVCb3goKSk7Ci0gICAgICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGN1bGxlZElubGluZUJv
dW5kaW5nQm94KHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoY3Vs
bGVkSW5saW5lQm91bmRpbmdCb3godGhpcykpOwogICAgIH0KIAotICAgIEludFJlY3QgcmVzdWx0
OworICAgIExheW91dFJlY3QgcmVzdWx0OwogICAgIAogICAgIC8vIFNlZSA8cmRhcjovL3Byb2Js
ZW0vNTI4OTcyMT4sIGZvciBhbiB1bmtub3duIHJlYXNvbiB0aGUgbGlua2VkIGxpc3QgaGVyZSBp
cyBzb21ldGltZXMgaW5jb25zaXN0ZW50LCBmaXJzdCBpcyBub24temVybyBhbmQgbGFzdCBpcyB6
ZXJvLiAgV2UgaGF2ZSBiZWVuCiAgICAgLy8gdW5hYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGF0IGFs
bCAoYW5kIGNvbnNlcXVlbnRseSB1bmFibGUgdG8gZmlndXJlIG90IHdoeSB0aGlzIGlzIGhhcHBl
bmluZykuICBUaGUgYXNzZXJ0IHdpbGwgaG9wZWZ1bGx5IGNhdGNoIHRoZSBwcm9ibGVtIGluIGRl
YnVnCkBAIC03NjgsNyArNzY4LDcgQEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzQm91bmRp
bmdCb3goKQogICAgICAgICBmbG9hdCB5ID0gaXNIb3Jpem9udGFsID8gZmlyc3RMaW5lQm94KCkt
PnkoKSA6IGxvZ2ljYWxMZWZ0U2lkZTsKICAgICAgICAgZmxvYXQgd2lkdGggPSBpc0hvcml6b250
YWwgPyBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlIDogbGFzdExpbmVCb3goKS0+
bG9naWNhbEJvdHRvbSgpIC0geDsKICAgICAgICAgZmxvYXQgaGVpZ2h0ID0gaXNIb3Jpem9udGFs
ID8gbGFzdExpbmVCb3goKS0+bG9naWNhbEJvdHRvbSgpIC0geSA6IGxvZ2ljYWxSaWdodFNpZGUg
LSBsb2dpY2FsTGVmdFNpZGU7Ci0gICAgICAgIHJlc3VsdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxv
YXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgcmVzdWx0ID0gZW5jbG9zaW5n
TGF5b3V0UmVjdChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgIH0KIAogICAg
IHJldHVybiByZXN1bHQ7CkBAIC0xMDkzLDExICsxMDkzLDExIEBAIHZvaWQgUmVuZGVySW5saW5l
Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQKICAgICBvLT5jb21wdXRlUmVjdEZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lciwgcmVjdCwgZml4ZWQpOwogfQogCi1JbnRTaXplIFJlbmRlcklubGluZTo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lciwgY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoY29udGFpbmVyID09IHRoaXMtPmNvbnRhaW5lcigpKTsKICAg
ICAKLSAgICBJbnRTaXplIG9mZnNldDsgICAgCisgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7ICAgIAog
ICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKICAgICAgICAgb2Zmc2V0ICs9IHJlbGF0aXZlUG9z
aXRpb25PZmZzZXQoKTsKIApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
Om1hcExvY2FsVG9Db250YWluZXIoUgogICAgIGlmIChvLT5pc0JveCgpICYmIG8tPnN0eWxlKCkt
PmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1v
dmUodG9SZW5kZXJCb3gobyktPmZsaXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMocm91
bmRlZEludFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRlclBvaW50
KTsKIAotICAgIEludFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihv
LCByb3VuZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOworICAgIExh
eW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNvbnRhaW5lcihvLCByb3VuZGVk
TGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogCiAgICAgYm9vbCBw
cmVzZXJ2ZTNEID0gdXNlVHJhbnNmb3JtcyAmJiAoby0+c3R5bGUoKS0+cHJlc2VydmVzM0QoKSB8
fCBzdHlsZSgpLT5wcmVzZXJ2ZXMzRCgpKTsKICAgICBpZiAodXNlVHJhbnNmb3JtcyAmJiBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG8pKSB7CkBAIC0xMTY2LDcgKzExNjYsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pCiAKICAgICBvLT5tYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludChmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUpOwog
Ci0gICAgSW50U2l6ZSBjb250YWluZXJPZmZzZXQgPSBvZmZzZXRGcm9tQ29udGFpbmVyKG8sIElu
dFBvaW50KCkpOworICAgIExheW91dFNpemUgY29udGFpbmVyT2Zmc2V0ID0gb2Zmc2V0RnJvbUNv
bnRhaW5lcihvLCBMYXlvdXRQb2ludCgpKTsKIAogICAgIGJvb2wgcHJlc2VydmUzRCA9IHVzZVRy
YW5zZm9ybXMgJiYgKG8tPnN0eWxlKCktPnByZXNlcnZlczNEKCkgfHwgc3R5bGUoKS0+cHJlc2Vy
dmVzM0QoKSk7CiAgICAgaWYgKHVzZVRyYW5zZm9ybXMgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJv
bUNvbnRhaW5lcihvKSkgewpAQCAtMTI4NSwyMyArMTI4NSwyMyBAQCBpbnQgUmVuZGVySW5saW5l
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCCiAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChi
YXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3Np
dGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKIH0KIAotSW50U2l6ZSBSZW5k
ZXJJbmxpbmU6OnJlbGF0aXZlUG9zaXRpb25lZElubGluZU9mZnNldChjb25zdCBSZW5kZXJCb3gq
IGNoaWxkKSBjb25zdAorTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6OnJlbGF0aXZlUG9zaXRpb25l
ZElubGluZU9mZnNldChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGZ1bmN0aW9uIGlzbid0IHJpZ2h0IHdpdGggbWl4ZWQgd3JpdGluZyBtb2Rlcy4K
IAogICAgIEFTU0VSVChpc1JlbFBvc2l0aW9uZWQoKSk7CiAgICAgaWYgKCFpc1JlbFBvc2l0aW9u
ZWQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFNp
emUoKTsKIAogICAgIC8vIFdoZW4gd2UgaGF2ZSBhbiBlbmNsb3NpbmcgcmVscG9zaXRpb25lZCBp
bmxpbmUsIHdlIG5lZWQgdG8gYWRkIGluIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGxpbmUKICAg
ICAvLyBib3ggZnJvbSB0aGUgcmVzdCBvZiB0aGUgY29udGVudCwgYnV0IG9ubHkgaW4gdGhlIGNh
c2VzIHdoZXJlIHdlIGtub3cgd2UncmUgcG9zaXRpb25lZAogICAgIC8vIHJlbGF0aXZlIHRvIHRo
ZSBpbmxpbmUgaXRzZWxmLgogCi0gICAgSW50U2l6ZSBsb2dpY2FsT2Zmc2V0OwotICAgIGludCBp
bmxpbmVQb3NpdGlvbjsKLSAgICBpbnQgYmxvY2tQb3NpdGlvbjsKKyAgICBMYXlvdXRTaXplIGxv
Z2ljYWxPZmZzZXQ7CisgICAgTGF5b3V0VW5pdCBpbmxpbmVQb3NpdGlvbjsKKyAgICBMYXlvdXRV
bml0IGJsb2NrUG9zaXRpb247CiAgICAgaWYgKGZpcnN0TGluZUJveCgpKSB7Ci0gICAgICAgIGlu
bGluZVBvc2l0aW9uID0gbHJvdW5kZihmaXJzdExpbmVCb3goKS0+bG9naWNhbExlZnQoKSk7Cisg
ICAgICAgIGlubGluZVBvc2l0aW9uID0gcm91bmRlZExheW91dFVuaXQoZmlyc3RMaW5lQm94KCkt
PmxvZ2ljYWxMZWZ0KCkpOwogICAgICAgICBibG9ja1Bvc2l0aW9uID0gZmlyc3RMaW5lQm94KCkt
PmxvZ2ljYWxUb3AoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpbmxpbmVQb3NpdGlvbiA9IGxh
eWVyKCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCShyZXZpc2lvbiA5MDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+Jiwg
Y29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogCi0gICAgdmlydHVhbCBJbnRTaXplIG9m
ZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3Qq
LCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCi0gICAgSW50UmVjdCBsaW5lc0JvdW5kaW5n
Qm94KCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBsaW5lc0JvdW5kaW5nQm94KCkgY29uc3Q7CiAg
ICAgSW50UmVjdCBsaW5lc1Zpc3VhbE92ZXJmbG93Qm91bmRpbmdCb3goKSBjb25zdDsKIAogICAg
IElubGluZUZsb3dCb3gqIGNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKTsKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdTdGF0ZShib29s
IGRyYWdPbik7CiAgICAgCi0gICAgSW50U2l6ZSByZWxhdGl2ZVBvc2l0aW9uZWRJbmxpbmVPZmZz
ZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CisgICAgTGF5b3V0U2l6ZSByZWxhdGl2
ZVBvc2l0aW9uZWRJbmxpbmVPZmZzZXQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29u
c3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRQb2ludCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAJKHJldmlzaW9uIDkwNTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzEsMTEgKzE5MzEsMTEgQEAgRmxv
YXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxUb0NvbnRhaW5lcgogICAgIHJldHVybiB0cmFuc2Zv
cm1TdGF0ZS5sYXN0UGxhbmFyUXVhZCgpOwogfQogCi1JbnRTaXplIFJlbmRlck9iamVjdDo6b2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKK0xheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRl
ck9iamVjdCogbywgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEFTU0VS
VChvID09IGNvbnRhaW5lcigpKTsKIAotICAgIEludFNpemUgb2Zmc2V0OworICAgIExheW91dFNp
emUgb2Zmc2V0OwogCiAgICAgby0+YWRqdXN0Rm9yQ29sdW1ucyhvZmZzZXQsIHBvaW50KTsKIApA
QCAtMTk0NSwxMCArMTk0NSwxMCBAQCBJbnRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUNv
bnRhaW5lCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotSW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9m
ZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqIGNvbnRhaW5lcikgY29uc3QK
K0xheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoUmVu
ZGVyT2JqZWN0KiBjb250YWluZXIpIGNvbnN0CiB7Ci0gICAgSW50U2l6ZSBvZmZzZXQ7Ci0gICAg
SW50UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXQ7CisgICAgTGF5
b3V0UG9pbnQgcmVmZXJlbmNlUG9pbnQ7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyQ29u
dGFpbmVyID0gdGhpczsKICAgICBkbyB7CiAgICAgICAgIFJlbmRlck9iamVjdCogbmV4dENvbnRh
aW5lciA9IGN1cnJDb250YWluZXItPmNvbnRhaW5lcigpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAg
SW50U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21BbmNlc3RvcgogICAgICAgICBpZiAoIW5l
eHRDb250YWluZXIpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgQVNTRVJUKCFjdXJyQ29u
dGFpbmVyLT5oYXNUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIEludFNpemUgY3VycmVudE9mZnNldCA9
IGN1cnJDb250YWluZXItPm9mZnNldEZyb21Db250YWluZXIobmV4dENvbnRhaW5lciwgcmVmZXJl
bmNlUG9pbnQpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyQ29udGFp
bmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKG5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsK
ICAgICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7CiAgICAgICAgIHJlZmVyZW5jZVBvaW50
Lm1vdmUoY3VycmVudE9mZnNldCk7CiAgICAgICAgIGN1cnJDb250YWluZXIgPSBuZXh0Q29udGFp
bmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gOTA1MjApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4OCw5ICs1ODgsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm4g
dGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5z
Zm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRz
IGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBw
bGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBJbnRTaXplIG9mZnNldEZyb21D
b250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0
dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBM
YXlvdXRQb2ludCYpIGNvbnN0OwogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2Jq
ZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGlu
dGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KLSAgICBJbnRTaXplIG9mZnNldEZy
b21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBMYXlvdXRTaXpl
IG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJ
bnRQb2ludCYpIHsgfQogICAgIC8vIEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5
IGV2ZW50dWFsbHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCShyZXZpc2lvbiA5MDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6c2V0T3ZlcnJpZGVTaXplRnJvCiAgICAgUmVuZGVyQmxvY2s6
OnNldE92ZXJyaWRlU2l6ZShtYXgoMCwgcm93SGVpZ2h0IC0gYm9yZGVyQmVmb3JlKCkgLSBwYWRk
aW5nQmVmb3JlKCkgLSBib3JkZXJBZnRlcigpIC0gcGFkZGluZ0FmdGVyKCkpKTsKIH0KIAotSW50
U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CitMYXlvdXRTaXplIFJlbmRlclRhYmxlQ2Vs
bDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBBU1NFUlQobyA9PSBjb250YWluZXIoKSk7CiAKLSAgICBJ
bnRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tQ29udGFpbmVyKG8sIHBvaW50
KTsKKyAgICBMYXlvdXRTaXplIG9mZnNldCA9IFJlbmRlckJsb2NrOjpvZmZzZXRGcm9tQ29udGFp
bmVyKG8sIHBvaW50KTsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIG9mZnNldC5leHBhbmQo
LXBhcmVudEJveCgpLT54KCksIC1wYXJlbnRCb3goKS0+eSgpKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gOTA1MjApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgdmly
dHVhbCBJbnRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
SW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVw
YWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYsIGJv
b2wgZml4ZWQgPSBmYWxzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDkwNTIwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNyArNTU0LDcgQEAg
RmxvYXRSZWN0IFJlbmRlclRoZW1lTWFjOjpjb252ZXJ0VG9QYWludAogICAgIGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBwYXJ0UmVuZGVyZXI7CiAgICAgd2hpbGUgKHJlbmRlcmVyICYm
IHJlbmRlcmVyICE9IGlucHV0UmVuZGVyZXIpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250
YWluaW5nUmVuZGVyZXIgPSByZW5kZXJlci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIG9mZnNldEZy
b21JbnB1dFJlbmRlcmVyIC09IHJlbmRlcmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRhaW5p
bmdSZW5kZXJlciwgSW50UG9pbnQoKSk7CisgICAgICAgIG9mZnNldEZyb21JbnB1dFJlbmRlcmVy
IC09IHJlbmRlcmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKGNvbnRhaW5pbmdSZW5kZXJlciwgTGF5
b3V0UG9pbnQoKSk7CiAgICAgICAgIHJlbmRlcmVyID0gY29udGFpbmluZ1JlbmRlcmVyOwogICAg
IH0KICAgICAvLyBJZiB0aGUgaW5wdXQgcmVuZGVyZXIgd2FzIG5vdCBhIGNvbnRhaW5lciwgc29t
ZXRoaW5nIHdlbnQgd3JvbmcK
</data>

          </attachment>
      

    </bug>

</bugzilla>