<?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>62779</bug_id>
          
          <creation_ts>2011-06-15 22:47:09 -0700</creation_ts>
          <short_desc>[Chromium] Update forked ScrollAnimatorChromiumMac.mm/h</short_desc>
          <delta_ts>2011-06-16 14:21:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>62789</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sailesh Agrawal">sail</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>mihaip</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421782</commentid>
    <comment_count>0</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-15 22:47:09 -0700</bug_when>
    <thetext>[Chromium] Update forked ScrollAnimatorChromiumMac.mm/h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421784</commentid>
    <comment_count>1</comment_count>
      <attachid>97404</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-15 22:48:04 -0700</bug_when>
    <thetext>Created attachment 97404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421790</commentid>
    <comment_count>2</comment_count>
      <attachid>97404</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-15 23:09:13 -0700</bug_when>
    <thetext>Comment on attachment 97404
Patch

OK.  What does the delta look like between ScrollAnimatorChromiumMac vs ScrollAnimatorMac currently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421791</commentid>
    <comment_count>3</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-15 23:12:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 97404 [details])
&gt; OK.  What does the delta look like between ScrollAnimatorChromiumMac vs ScrollAnimatorMac currently?

Do you mean after this patch? It&apos;s not much:
  - change compile time #if USE(WK_SCROLLBAR_PAINTER) to runtime if (isScrollbarOverlayAPIAvailable())
  - early out in ScrollAnimatorChromiumMac::scroll if smooth scrolling is disabled
  - rename ScrollbarThemeMac to ScrollbarThemeChromiumMac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421797</commentid>
    <comment_count>4</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-15 23:26:16 -0700</bug_when>
    <thetext>Layout try bots look good:
http://build.chromium.org/p/tryserver.chromium/builders/mac_layout_rel/builds/208
http://build.chromium.org/p/tryserver.chromium/builders/linux_layout_rel/builds/273

(windows one is still pending).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421818</commentid>
    <comment_count>5</comment_count>
      <attachid>97404</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 00:12:06 -0700</bug_when>
    <thetext>Comment on attachment 97404
Patch

Clearing flags on attachment: 97404

Committed r89011: &lt;http://trac.webkit.org/changeset/89011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421819</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 00:12:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422111</commentid>
    <comment_count>7</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-16 11:41:14 -0700</bug_when>
    <thetext>Re-opening since the original change got backed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422115</commentid>
    <comment_count>8</comment_count>
      <attachid>97473</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-16 11:42:30 -0700</bug_when>
    <thetext>Created attachment 97473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422117</commentid>
    <comment_count>9</comment_count>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-06-16 11:45:03 -0700</bug_when>
    <thetext>Merged latest changes from this revision:
https://trac.webkit.org/changeset/88982

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422164</commentid>
    <comment_count>10</comment_count>
      <attachid>97473</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-06-16 13:28:09 -0700</bug_when>
    <thetext>Comment on attachment 97473
Patch

Rubber-stamping since James is out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422223</commentid>
    <comment_count>11</comment_count>
      <attachid>97473</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 14:21:04 -0700</bug_when>
    <thetext>Comment on attachment 97473
Patch

Clearing flags on attachment: 97473

Committed r89066: &lt;http://trac.webkit.org/changeset/89066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422224</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 14:21:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97404</attachid>
            <date>2011-06-15 22:48:04 -0700</date>
            <delta_ts>2011-06-16 11:42:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62779-20110615224803.patch</filename>
            <type>text/plain</type>
            <size>25778</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg5NzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2VhMGQ0ZjIxMWFiNTJj
NTNhMjJhYTQ4ZGU2Njc2NTNkZDA1MzU0Li5kM2EwZDczZTc4MzE0MzU2Nzg3OWE4ZGVlZmI5Nzll
NjA2NTVhMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMTUgIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBkYXRlIGZvcmtlZCBTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjLm1tL2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNzc5CisKKyAgICAgICAgVXBkYXRlZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjLm1tL2ggd2l0aCB0aGUgbGF0ZXN0IGNvZGUgaW4gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0vaAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6c2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Om5lZWRzU2Nyb2xsZXJTdHlsZVVw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYy5tbToKKyAgICAgICAgKC1bU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgX2ltbWVk
aWF0ZVNjcm9sbFRvUG9pbnQ6XSk6CisgICAgICAgICgtW1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXBQYWlyOnVwZGF0ZVNjcm9sbGVyU3R5bGVGb3JOZXdSZWNv
bW1lbmRlZFNjcm9sbGVyU3R5bGU6XSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjppbW1lZGlhdGVTY3JvbGxUb1BvaW50Rm9yU2Ny
b2xsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsaW5nTGVmdEFuZFNob3Vs
ZE5vdFJ1YmJlckJhbmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxpbmdSaWdodEFuZFNo
b3VsZE5vdFJ1YmJlckJhbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjpzbW9vdGhTY3JvbGxXaXRoRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6YmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiZXJCYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiZXJC
YW5kVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9t
aXVtTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW06Cisg
ICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUpOgorCiAyMDExLTA2LTE1
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmgKaW5kZXgg
M2QwZDVhMTJjODM2NWVhZDIyZGJhNjRiZGE1YmIyNWU2OTViNjQ4MC4uZjExM2Q4YzllZDhlMzY3
YzllMTQ0NzlkODA0ODIzYjExM2NjYWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaApAQCAt
NzEsMTIgKzcxLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFY
KGZsb2F0IGRlbHRhWCk7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeURlbHRhWShmbG9hdCBk
ZWx0YVkpOwogCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb1BvaW50Rm9yU2Nyb2xsQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKTsKKwogICAgIHZvaWQgc2V0SXNEcmF3
aW5nSW50b0xheWVyKGJvb2wgYikgeyBtX2RyYXdpbmdJbnRvTGF5ZXIgPSBiOyB9CiAgICAgYm9v
bCBpc0RyYXdpbmdJbnRvTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdJbnRvTGF5ZXI7
IH0KIAogICAgIGJvb2wgaGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1faGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZDsgfQogCisgICAgdmlydHVhbCB2b2lkIHNldElz
QWN0aXZlKGJvb2wpOworCiAjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQorICAgIHZvaWQg
dXBkYXRlU2Nyb2xsZXJTdHlsZSgpOworCiAgICAgYm9vbCBzY3JvbGxiYXJQYWludFRpbWVySXNB
Y3RpdmUoKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0U2Nyb2xsYmFyUGFpbnRUaW1lcigpOwogICAg
IHZvaWQgc3RvcFNjcm9sbGJhclBhaW50VGltZXIoKTsKQEAgLTExNSw2ICsxMjEsOSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJh
ciopOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3Jv
bGxiYXIqKTsKIAorICAgIHZvaWQgc2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKGJvb2wgbmVl
ZHNVcGRhdGUpIHsgbV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUgPSBuZWVkc1VwZGF0ZTsgfQor
ICAgIGJvb2wgbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c1Njcm9sbGVyU3R5bGVVcGRhdGU7IH0KKwogICAgIGZsb2F0IGFkanVzdFNjcm9sbFhQb3NpdGlv
bklmTmVjZXNzYXJ5KGZsb2F0KSBjb25zdDsKICAgICBmbG9hdCBhZGp1c3RTY3JvbGxZUG9zaXRp
b25JZk5lY2Vzc2FyeShmbG9hdCkgY29uc3Q7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RTY3JvbGxQ
b3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKQEAgLTEzMiw4ICsx
NDEsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5TY3JvbGxHZXN0dXJlOwogICAgIGJvb2wg
bV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3M7CiAgICAgYm9vbCBtX2lnbm9yZU1vbWVudHVtU2Ny
b2xsczsKLSAgICAKLSAgICBDRlRpbWVJbnRlcnZhbCBtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVz
dGFtcDsKKworICAgIGJvb2wgbV9zY3JvbGxlckluaXRpYWxseVBpbm5lZE9uTGVmdDsKKyAgICBi
b29sIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPblJpZ2h0OworICAgIGludCBtX2N1bXVsYXRp
dmVIb3Jpem9udGFsU2Nyb2xsOworICAgIGJvb2wgbV9kaWRDdW11bGF0aXZlSG9yaXpvbnRhbFNj
cm9sbEV2ZXJTd2l0Y2hUb09wcG9zaXRlRGlyZWN0aW9uT2ZQaW47CisKKyAgICBDRlRpbWVJbnRl
cnZhbCBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcDsKICAgICBGbG9hdFNpemUgbV9vdmVy
Zmxvd1Njcm9sbERlbHRhOwogICAgIEZsb2F0U2l6ZSBtX3N0cmV0Y2hTY3JvbGxGb3JjZTsKICAg
ICBGbG9hdFNpemUgbV9tb21lbnR1bVZlbG9jaXR5OwpAQCAtMTQ3LDYgKzE2MSw3IEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICBib29sIG1fZHJhd2luZ0ludG9MYXllcjsKICAgICBib29sIG1faGF2
ZVNjcm9sbGVkU2luY2VQYWdlTG9hZDsKKyAgICBib29sIG1fbmVlZHNTY3JvbGxlclN0eWxlVXBk
YXRlOwogICAgIEludFJlY3QgbV92aXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3Q7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYy5tbQppbmRleCAzODBlMzZmMmU2NzY1NjYzNTMxZDNiMDM5MGNjOTJi
OTAzOTcxMWE0Li5kMDE0ODI4MDBlYzU0MTQwYTlhYzM1NzdhOGNmOWMzMmYyNDZiNjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bEFuaW1hdG9yQ2hyb21pdW1NYWMubW0KQEAgLTU2LDYgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIC0gKHZvaWQpX3N0b3BSdW47CiAtIChCT09MKV9pc0FuaW1hdGluZzsKIC0gKE5TUG9p
bnQpdGFyZ2V0T3JpZ2luOworLSAoQ0dGbG9hdClfcHJvZ3Jlc3M7CiBAZW5kCiAKIEBpbnRlcmZh
Y2UgU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgOiBOU09iamVjdApAQCAtMTA1LDcgKzEw
Niw3IEBAIHN0YXRpYyBOU1NpemUgYWJzKE5TU2l6ZSBzaXplKQogewogICAgIGlmICghX2FuaW1h
dG9yKQogICAgICAgICByZXR1cm47Ci0gICAgX2FuaW1hdG9yLT5pbW1lZGlhdGVTY3JvbGxUb1Bv
aW50KG5ld1Bvc2l0aW9uKTsKKyAgICBfYW5pbWF0b3ItPmltbWVkaWF0ZVNjcm9sbFRvUG9pbnRG
b3JTY3JvbGxBbmltYXRpb24obmV3UG9zaXRpb24pOwogfQogCiAtIChOU1BvaW50KV9waXhlbEFs
aWduUHJvcG9zZWRTY3JvbGxQb3NpdGlvbjooTlNQb2ludCluZXdPcmlnaW4KQEAgLTI0Miw0NyAr
MjQzLDggQEAgc3RhdGljIE5TU2l6ZSBhYnMoTlNTaXplIHNpemUpCiAgICAgaWYgKCFfYW5pbWF0
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYgcGFpbnRlckNvbnRyb2xsZXIgPSAoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZilz
Y3JvbGxlckltcFBhaXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyog
bWFjVGhlbWUgPSAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyopV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCk7Ci0KLSAgICBXS1Njcm9sbGJhclBhaW50ZXJS
ZWYgb2xkVmVydGljYWxQYWludGVyID0gd2tWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250
cm9sbGVyKHBhaW50ZXJDb250cm9sbGVyKTsKLSAgICBpZiAob2xkVmVydGljYWxQYWludGVyKSB7
Ci0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBfYW5pbWF0
b3ItPnNjcm9sbGFibGVBcmVhKCktPnZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgICAgIFdLU2Ny
b2xsYmFyUGFpbnRlclJlZiBuZXdWZXJ0aWNhbFBhaW50ZXIgPSB3a01ha2VTY3JvbGxiYXJSZXBs
YWNlbWVudFBhaW50ZXIob2xkVmVydGljYWxQYWludGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhci0+Y29udHJvbFNpemUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAgIG1hY1RoZW1lLT5zZXROZXdQYWludGVyRm9y
U2Nyb2xsYmFyKHZlcnRpY2FsU2Nyb2xsYmFyLCBuZXdWZXJ0aWNhbFBhaW50ZXIpOwotICAgICAg
ICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihwYWludGVyQ29udHJvbGxlciwgbmV3
VmVydGljYWxQYWludGVyLCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gVGhlIGRpZmZlcmVudCBzY3Jv
bGxiYXIgc3R5bGVzIGhhdmUgZGlmZmVyZW50IHRoaWNrbmVzc2VzLCBzbyB3ZSBtdXN0IHJlLXNl
dCB0aGUgCi0gICAgICAgIC8vIGZyYW1lUmVjdCB0byB0aGUgbmV3IHRoaWNrbmVzcywgYW5kIHRo
ZSByZS1sYXlvdXQgYmVsb3cgd2lsbCBlbnN1cmUgdGhlIHBvc2l0aW9uCi0gICAgICAgIC8vIGFu
ZCBsZW5ndGggYXJlIHByb3Blcmx5IHVwZGF0ZWQuCi0gICAgICAgIGludCB0aGlja25lc3MgPSBt
YWNUaGVtZS0+c2Nyb2xsYmFyVGhpY2tuZXNzKHZlcnRpY2FsU2Nyb2xsYmFyLT5jb250cm9sU2l6
ZSgpKTsKLSAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPnNldEZyYW1lUmVjdChXZWJDb3JlOjpJ
bnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7Ci0gICAgfQotCi0gICAgV0tTY3Jv
bGxiYXJQYWludGVyUmVmIG9sZEhvcml6b250YWxQYWludGVyID0gd2tIb3Jpem9udGFsU2Nyb2xs
YmFyUGFpbnRlckZvckNvbnRyb2xsZXIocGFpbnRlckNvbnRyb2xsZXIpOwotICAgIGlmIChvbGRI
b3Jpem9udGFsUGFpbnRlcikgewotICAgICAgICBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250
YWxTY3JvbGxiYXIgPSBfYW5pbWF0b3ItPnNjcm9sbGFibGVBcmVhKCktPmhvcml6b250YWxTY3Jv
bGxiYXIoKTsKLSAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIG5ld0hvcml6b250YWxQYWlu
dGVyID0gd2tNYWtlU2Nyb2xsYmFyUmVwbGFjZW1lbnRQYWludGVyKG9sZEhvcml6b250YWxQYWlu
dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVjb21tZW5kZWRTY3JvbGxl
clN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJh
ci0+Y29udHJvbFNpemUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwot
ICAgICAgICBtYWNUaGVtZS0+c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihob3Jpem9udGFsU2Ny
b2xsYmFyLCBuZXdIb3Jpem9udGFsUGFpbnRlcik7Ci0gICAgICAgIHdrU2V0UGFpbnRlckZvclBh
aW50ZXJDb250cm9sbGVyKHBhaW50ZXJDb250cm9sbGVyLCBuZXdIb3Jpem9udGFsUGFpbnRlciwg
dHJ1ZSk7Ci0KLSAgICAgICAgLy8gVGhlIGRpZmZlcmVudCBzY3JvbGxiYXIgc3R5bGVzIGhhdmUg
ZGlmZmVyZW50IHRoaWNrbmVzc2VzLCBzbyB3ZSBtdXN0IHJlLXNldCB0aGUgCi0gICAgICAgIC8v
IGZyYW1lUmVjdCB0byB0aGUgbmV3IHRoaWNrbmVzcywgYW5kIHRoZSByZS1sYXlvdXQgYmVsb3cg
d2lsbCBlbnN1cmUgdGhlIHBvc2l0aW9uCi0gICAgICAgIC8vIGFuZCBsZW5ndGggYXJlIHByb3Bl
cmx5IHVwZGF0ZWQuCi0gICAgICAgIGludCB0aGlja25lc3MgPSBtYWNUaGVtZS0+c2Nyb2xsYmFy
VGhpY2tuZXNzKGhvcml6b250YWxTY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgICAgICBo
b3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3QoV2ViQ29yZTo6SW50UmVjdCgwLCAwLCB0
aGlja25lc3MsIHRoaWNrbmVzcykpOwotICAgIH0KLQotICAgIHdrU2V0U2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXJTdHlsZShwYWludGVyQ29udHJvbGxlciwgbmV3UmVjb21tZW5kZWRTY3JvbGxl
clN0eWxlKTsKLQotICAgIC8vIFRoZSBkaWZmZXJlbnQgc2Nyb2xsYmFyIHN0eWxlcyBhZmZlY3Qg
bGF5b3V0LCBzbyB3ZSBtdXN0IHJlLWxheW91dCBldmVyeXRoaW5nLgotICAgIF9hbmltYXRvci0+
c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKCk7CisgICAgd2tTZXRTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclN0eWxlKChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
UmVmKXNjcm9sbGVySW1wUGFpciwgbmV3UmVjb21tZW5kZWRTY3JvbGxlclN0eWxlKTsKKyAgICBf
YW5pbWF0b3ItPnVwZGF0ZVNjcm9sbGVyU3R5bGUoKTsKIH0KIAogQGVuZApAQCAtNTA2LDEyICs0
NjgsMTMgQEAgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYyhTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUEKICAgICAsIG1faW5TY3JvbGxHZXN0dXJl
KGZhbHNlKQogICAgICwgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBt
X2lnbm9yZU1vbWVudHVtU2Nyb2xscyhmYWxzZSkKLSAgICAsIG1fbGFzdE1vbWVtdHVtU2Nyb2xs
VGltZXN0YW1wKDApCisgICAgLCBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCgwKQogICAg
ICwgbV9zdGFydFRpbWUoMCkKICAgICAsIG1fc25hcFJ1YmJlckJhbmRUaW1lcih0aGlzLCAmU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKQogI2VuZGlm
CiAgICAgLCBtX2RyYXdpbmdJbnRvTGF5ZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVTY3JvbGxlZFNp
bmNlUGFnZUxvYWQoZmFsc2UpCisgICAgLCBtX25lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0ZShmYWxz
ZSkKIHsKICAgICBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmFkb3B0TlMoW1tTY3Jv
bGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0
aGlzXSk7CiAgICAgbV9zY3JvbGxBbmltYXRpb25IZWxwZXIuYWRvcHROUyhbW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTlNTY3JvbGxBbmltYXRpb25IZWxwZXIiKSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0
ZTptX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmdldCgpXSk7CkBAIC01NTYsOSArNTE5
LDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c2Nyb2xsKFNjcm9sbGJhck9y
aWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHCiAgICAgaWYgKFttX3Njcm9sbEFuaW1hdGlv
bkhlbHBlci5nZXQoKSBfaXNBbmltYXRpbmddKSB7CiAgICAgICAgIE5TUG9pbnQgdGFyZ2V0T3Jp
Z2luID0gW21fc2Nyb2xsQW5pbWF0aW9uSGVscGVyLmdldCgpIHRhcmdldE9yaWdpbl07CiAgICAg
ICAgIG5ld1BvaW50ID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IE5TTWFr
ZVBvaW50KG5ld1BvcywgdGFyZ2V0T3JpZ2luLnkpIDogTlNNYWtlUG9pbnQodGFyZ2V0T3JpZ2lu
LngsIG5ld1Bvcyk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKICAgICAgICAgbmV3UG9pbnQg
PSBvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gTlNNYWtlUG9pbnQobmV3UG9z
LCBtX2N1cnJlbnRQb3NZKSA6IE5TTWFrZVBvaW50KG1fY3VycmVudFBvc1gsIG5ld1Bvcyk7Ci0K
KyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+ZGlkU3RhcnRBbmltYXRlZFNjcm9sbCgpOworICAg
IH0KICAgICBbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIuZ2V0KCkgc2Nyb2xsVG9Qb2ludDpuZXdQ
b2ludF07CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02MzAsNiArNTk0LDE3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlEZWx0YVkoZmxvYXQgZGVs
dGFZKQogICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOwogfQogCit2b2lkIFNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWM6OmltbWVkaWF0ZVNjcm9sbFRvUG9pbnRGb3JTY3JvbGxBbmltYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCit7CisgICAgQVNTRVJUKG1fc2Nyb2xsQW5p
bWF0aW9uSGVscGVyKTsKKyAgICBDR0Zsb2F0IHByb2dyZXNzID0gW21fc2Nyb2xsQW5pbWF0aW9u
SGVscGVyLmdldCgpIF9wcm9ncmVzc107CisgICAgCisgICAgaW1tZWRpYXRlU2Nyb2xsVG9Qb2lu
dChuZXdQb3NpdGlvbik7CisKKyAgICBpZiAocHJvZ3Jlc3MgPj0gMS4wKQorICAgICAgICBtX3Nj
cm9sbGFibGVBcmVhLT5kaWRDb21wbGV0ZUFuaW1hdGVkU2Nyb2xsKCk7Cit9CisKIHZvaWQgU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6bm90aXR5UG9zaXRpb25DaGFuZ2VkKCkKIHsKICAgICBp
ZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCkBAIC03OTQsNiArNzY5LDE2IEBA
IHN0YXRpYyBmbG9hdCBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKQogICAgIHJldHVybiBtdWx0aXBs
aWVyOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTY3JvbGxpbmdMZWZ0QW5kU2hvdWxkTm90
UnViYmVyQmFuZChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICByZXR1cm4gd2hlZWxFdmVudC5kZWx0YVgoKSA+IDAg
JiYgIXNjcm9sbGFibGVBcmVhLT5zaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsTGVm
dCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Njcm9sbGluZ1JpZ2h0QW5kU2hvdWxkTm90
UnViYmVyQmFuZChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICByZXR1cm4gd2hlZWxFdmVudC5kZWx0YVgoKSA8IDAg
JiYgIXNjcm9sbGFibGVBcmVhLT5zaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsUmln
aHQpOworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZVdoZWVsRXZl
bnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIG1faGF2ZVNjcm9sbGVk
U2luY2VQYWdlTG9hZCA9IHRydWU7CkBAIC04MTcsMTcgKzgwMiw0NyBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQogICAgICAgICAgICAgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQo
d2hlZWxFdmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigp
KSB7CisgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNjcm9sbGJhciwgd2UgYWdncmVnYXRl
IHRoZSB3aGVlbCBldmVudHMgdG8gZ2V0IGFuCisgICAgICAgICAgICAvLyBvdmVyYWxsIHRyZW5k
IG9mIHRoZSBzY3JvbGwuIElmIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNjcm9sbCBpcyBldmVyCisg
ICAgICAgICAgICAvLyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mIHRoZSBwaW4gbG9jYXRp
b24sIHRoZW4gd2Ugc3dpdGNoIHRoZQorICAgICAgICAgICAgLy8gYm9vbGVhbiwgYW5kIHJ1YmJl
ciBiYW5kLiBUaGF0IGlzLCBpZiB3ZSB3ZXJlIHBpbm5lZCB0byB0aGUgbGVmdCwKKyAgICAgICAg
ICAgIC8vIGFuZCB3ZSBlbmRlZCB1cCBzY3JvbGxpbmcgdG8gdGhlIHJpZ2h0LCB3ZSBydWJiZXIg
YmFuZC4KKyAgICAgICAgICAgIG1fY3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGwgKz0gd2hlZWxF
dmVudC5kZWx0YVgoKTsKKyAgICAgICAgICAgIGlmIChtX3Njcm9sbGVySW5pdGlhbGx5UGlubmVk
T25MZWZ0ICYmIG1fY3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGwgPCAwKQorICAgICAgICAgICAg
ICAgIG1fZGlkQ3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGxFdmVyU3dpdGNoVG9PcHBvc2l0ZURp
cmVjdGlvbk9mUGluID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChtX3Njcm9sbGVySW5pdGlhbGx5
UGlubmVkT25SaWdodCAmJiBtX2N1bXVsYXRpdmVIb3Jpem9udGFsU2Nyb2xsID4gMCkKKyAgICAg
ICAgICAgICAgICBtX2RpZEN1bXVsYXRpdmVIb3Jpem9udGFsU2Nyb2xsRXZlclN3aXRjaFRvT3Bw
b3NpdGVEaXJlY3Rpb25PZlBpbiA9IHRydWU7CisgICAgICAgIH0KIAotICAgIHdoZWVsRXZlbnQu
YWNjZXB0KCk7CisgICAgICAgIC8vIEFmdGVyIGEgZ2VzdHVyZSBiZWdpbnMsIHdlIGdvIHRocm91
Z2g6CisgICAgICAgIC8vIDErIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZQorICAgICAgICAv
LyAwKyBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQKKyAgICAgICAgLy8gMSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZUVuZGVkIGlmIHRoZXJlIHdhcyBhdCBsZWFzdCBvbmUgY2hhbmdlZCBl
dmVudAorICAgICAgICBpZiAod2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VOb25lICYmICFtX2RpZEN1bXVsYXRpdmVIb3Jpem9udGFsU2Nyb2xsRXZl
clN3aXRjaFRvT3Bwb3NpdGVEaXJlY3Rpb25PZlBpbikgeworICAgICAgICAgICAgaWYgKChpc1Nj
cm9sbGluZ0xlZnRBbmRTaG91bGROb3RSdWJiZXJCYW5kKHdoZWVsRXZlbnQsIG1fc2Nyb2xsYWJs
ZUFyZWEpICYmCisgICAgICAgICAgICAgICAgbV9zY3JvbGxlckluaXRpYWxseVBpbm5lZE9uTGVm
dCAmJgorICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmlzSG9yaXpvbnRhbFNjcm9s
bGVyUGlubmVkVG9NaW5pbXVtUG9zaXRpb24oKSkgfHwKKyAgICAgICAgICAgICAgICAoaXNTY3Jv
bGxpbmdSaWdodEFuZFNob3VsZE5vdFJ1YmJlckJhbmQod2hlZWxFdmVudCwgbV9zY3JvbGxhYmxl
QXJlYSkgJiYKKyAgICAgICAgICAgICAgICBtX3Njcm9sbGVySW5pdGlhbGx5UGlubmVkT25SaWdo
dCAmJgorICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmlzSG9yaXpvbnRhbFNjcm9s
bGVyUGlubmVkVG9NYXhpbXVtUG9zaXRpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBTY3JvbGxB
bmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICBib29sIGlzTW9t
ZXR1bVNjcm9sbEV2ZW50ID0gKHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpICE9IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlTm9uZSk7Ci0gICAgaWYgKG1faWdub3JlTW9tZW50dW1TY3JvbGxzICYm
IChpc01vbWV0dW1TY3JvbGxFdmVudCB8fCBtX3NuYXBSdWJiZXJCYW5kVGltZXIuaXNBY3RpdmUo
KSkpIHsKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlRW5kZWQpCisgICAgYm9vbCBpc01vbWVudHVtU2Nyb2xsRXZlbnQgPSAo
d2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgIT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25l
KTsKKyAgICBpZiAobV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgJiYgKGlzTW9tZW50dW1TY3JvbGxF
dmVudCB8fCBtX3NuYXBSdWJiZXJCYW5kVGltZXIuaXNBY3RpdmUoKSkpIHsKKyAgICAgICAgaWYg
KHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5k
ZWQpIHsKICAgICAgICAgICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gZmFsc2U7CisgICAg
ICAgICAgICB3aGVlbEV2ZW50LmFjY2VwdCgpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICB3aGVlbEV2ZW50LmFjY2VwdCgpOwogICAgIHNtb290aFNjcm9sbFdpdGhF
dmVudCh3aGVlbEV2ZW50KTsKIH0KIApAQCAtOTExLDExICs5MjYsMTEgQEAgdm9pZCBTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjpzbW9vdGhTY3JvbGxXaXRoRXZlbnQoUGxhdGZvcm1XaGVlbEV2
ZW50JiB3aGVlbEUKICAgICAvLyBSZXNldCBvdmVyZmxvdyB2YWx1ZXMgYmVjYXVzZSB3ZSBtYXkg
ZGVjaWRlIHRvIHJlbW92ZSBkZWx0YSBhdCB2YXJpb3VzIHBvaW50cyBhbmQgcHV0IGl0IGludG8g
b3ZlcmZsb3cuCiAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhID0gRmxvYXRTaXplKCk7CiAKLSAg
ICBmbG9hdCBldmVudENvYWxsZXNjZWREZWx0YVggPSAtd2hlZWxFdmVudC5kZWx0YVgoKTsKLSAg
ICBmbG9hdCBldmVudENvYWxsZXNjZWREZWx0YVkgPSAtd2hlZWxFdmVudC5kZWx0YVkoKTsKKyAg
ICBmbG9hdCBldmVudENvYWxlc2NlZERlbHRhWCA9IC13aGVlbEV2ZW50LmRlbHRhWCgpOworICAg
IGZsb2F0IGV2ZW50Q29hbGVzY2VkRGVsdGFZID0gLXdoZWVsRXZlbnQuZGVsdGFZKCk7CiAKLSAg
ICBkZWx0YVggKz0gZXZlbnRDb2FsbGVzY2VkRGVsdGFYOwotICAgIGRlbHRhWSArPSBldmVudENv
YWxsZXNjZWREZWx0YVk7CisgICAgZGVsdGFYICs9IGV2ZW50Q29hbGVzY2VkRGVsdGFYOworICAg
IGRlbHRhWSArPSBldmVudENvYWxlc2NlZERlbHRhWTsKIAogICAgIC8vIFNsaWdodGx5IHByZWZl
ciBzY3JvbGxpbmcgdmVydGljYWxseSBieSBhcHBseWluZyB0aGUgPSBjYXNlIHRvIGRlbHRhWQog
ICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpCkBAIC05MzgsMTQgKzk1Mywx
NCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNtb290aFNjcm9sbFdpdGhFdmVu
dChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRQogICAgIGlmICghbV9tb21lbnR1bVNjcm9sbElu
UHJvZ3Jlc3MgJiYgKHBoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4gfHwgcGhh
c2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkKSkKICAgICAgICAgbV9tb21lbnR1
bVNjcm9sbEluUHJvZ3Jlc3MgPSB0cnVlOwogCi0gICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRh
ID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKSAtIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1w
OworICAgIENGVGltZUludGVydmFsIHRpbWVEZWx0YSA9IHdoZWVsRXZlbnQudGltZXN0YW1wKCkg
LSBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcDsKICAgICBpZiAobV9pblNjcm9sbEdlc3R1
cmUgfHwgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAgICAgICAgaWYgKG1fbGFzdE1v
bWVtdHVtU2Nyb2xsVGltZXN0YW1wICYmIHRpbWVEZWx0YSA+IDAgJiYgdGltZURlbHRhIDwgc2Ny
b2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCkgewotICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9j
aXR5LnNldFdpZHRoKGV2ZW50Q29hbGxlc2NlZERlbHRhWCAvIChmbG9hdCl0aW1lRGVsdGEpOwot
ICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5LnNldEhlaWdodChldmVudENvYWxsZXNjZWRE
ZWx0YVkgLyAoZmxvYXQpdGltZURlbHRhKTsKLSAgICAgICAgICAgIG1fbGFzdE1vbWVtdHVtU2Ny
b2xsVGltZXN0YW1wID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKTsKKyAgICAgICAgaWYgKG1fbGFz
dE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wICYmIHRpbWVEZWx0YSA+IDAgJiYgdGltZURlbHRhIDwg
c2Nyb2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCkgeworICAgICAgICAgICAgbV9tb21lbnR1bVZl
bG9jaXR5LnNldFdpZHRoKGV2ZW50Q29hbGVzY2VkRGVsdGFYIC8gKGZsb2F0KXRpbWVEZWx0YSk7
CisgICAgICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkuc2V0SGVpZ2h0KGV2ZW50Q29hbGVzY2Vk
RGVsdGFZIC8gKGZsb2F0KXRpbWVEZWx0YSk7CisgICAgICAgICAgICBtX2xhc3RNb21lbnR1bVNj
cm9sbFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQudGltZXN0YW1wKCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQu
dGltZXN0YW1wKCk7CisgICAgICAgICAgICBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCA9
IHdoZWVsRXZlbnQudGltZXN0YW1wKCk7CiAgICAgICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkg
PSBGbG9hdFNpemUoKTsKICAgICAgICAgfQogCkBAIC05OTksNyArMTAxNCw3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c21vb3RoU2Nyb2xsV2l0aEV2ZW50KFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWxFCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWFsbG93
c0hvcml6b250YWxTdHJldGNoaW5nKCkpIHsKICAgICAgICAgICAgICAgICBkZWx0YVggPSAwOwot
ICAgICAgICAgICAgICAgIGV2ZW50Q29hbGxlc2NlZERlbHRhWCA9IDA7CisgICAgICAgICAgICAg
ICAgZXZlbnRDb2FsZXNjZWREZWx0YVggPSAwOwogICAgICAgICAgICAgfSBlbHNlIGlmICgoZGVs
dGFYICE9IDApICYmICFpc0hvcml6b250YWxseVN0cmV0Y2hlZCAmJiAhcGlubmVkSW5EaXJlY3Rp
b24oZGVsdGFYLCAwKSkgewogICAgICAgICAgICAgICAgIGRlbHRhWCAqPSBzY3JvbGxXaGVlbE11
bHRpcGxpZXIoKTsKIApAQCAtMTAxMiw3ICsxMDI3LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjOjpzbW9vdGhTY3JvbGxXaXRoRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEUKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hp
bmcoKSkgewogICAgICAgICAgICAgICAgIGRlbHRhWSA9IDA7Ci0gICAgICAgICAgICAgICAgZXZl
bnRDb2FsbGVzY2VkRGVsdGFZID0gMDsKKyAgICAgICAgICAgICAgICBldmVudENvYWxlc2NlZERl
bHRhWSA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChkZWx0YVkgIT0gMCkgJiYgIWlzVmVy
dGljYWxseVN0cmV0Y2hlZCAmJiAhcGlubmVkSW5EaXJlY3Rpb24oMCwgZGVsdGFZKSkgewogICAg
ICAgICAgICAgICAgIGRlbHRhWSAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKIApAQCAtMTAy
Niw3ICsxMDQxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzbW9vdGhTY3Jv
bGxXaXRoRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEUKICAgICAgICAgICAgIEludFNp
emUgc3RyZXRjaEFtb3VudCA9IG1fc2Nyb2xsYWJsZUFyZWEtPm92ZXJoYW5nQW1vdW50KCk7CiAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG1fbW9tZW50dW1TY3JvbGxJblByb2dyZXNzKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKChwaW5uZWRJbkRpcmVjdGlvbihldmVudENvYWxsZXNjZWREZWx0
YVgsIGV2ZW50Q29hbGxlc2NlZERlbHRhWSkgfHwgKGZhYnNmKGV2ZW50Q29hbGxlc2NlZERlbHRh
WCkgKyBmYWJzZihldmVudENvYWxsZXNjZWREZWx0YVkpIDw9IDApKSAmJiBtX2xhc3RNb21lbXR1
bVNjcm9sbFRpbWVzdGFtcCkgeworICAgICAgICAgICAgICAgIGlmICgocGlubmVkSW5EaXJlY3Rp
b24oZXZlbnRDb2FsZXNjZWREZWx0YVgsIGV2ZW50Q29hbGVzY2VkRGVsdGFZKSB8fCAoZmFic2Yo
ZXZlbnRDb2FsZXNjZWREZWx0YVgpICsgZmFic2YoZXZlbnRDb2FsZXNjZWREZWx0YVkpIDw9IDAp
KSAmJiBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCkgewogICAgICAgICAgICAgICAgICAg
ICBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG1f
bW9tZW50dW1TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIHNu
YXBSdWJiZXJCYW5kKCk7CkBAIC0xMDUxLDcgKzEwNjYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
Q2hyb21pdW1NYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRQogICAgIGlmIChtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyAmJiBwaGFzZSA9PSBQbGF0
Zm9ybVdoZWVsRXZlbnRQaGFzZUVuZGVkKSB7CiAgICAgICAgIG1fbW9tZW50dW1TY3JvbGxJblBy
b2dyZXNzID0gZmFsc2U7CiAgICAgICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gZmFsc2U7
Ci0gICAgICAgIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wID0gMDsKKyAgICAgICAgbV9s
YXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgPSAwOwogICAgIH0KIH0KIApAQCAtMTA2Myw5ICsx
MDc4LDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6YmVnaW5TY3JvbGxHZXN0
dXJlKCkKICAgICBtX2luU2Nyb2xsR2VzdHVyZSA9IHRydWU7CiAgICAgbV9tb21lbnR1bVNjcm9s
bEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyA9IGZhbHNl
OwotICAgIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wID0gMDsKKyAgICBtX2xhc3RNb21l
bnR1bVNjcm9sbFRpbWVzdGFtcCA9IDA7CiAgICAgbV9tb21lbnR1bVZlbG9jaXR5ID0gRmxvYXRT
aXplKCk7Ci0KKyAgICBtX3Njcm9sbGVySW5pdGlhbGx5UGlubmVkT25MZWZ0ID0gbV9zY3JvbGxh
YmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpOwor
ICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPblJpZ2h0ID0gbV9zY3JvbGxhYmxlQXJlYS0+
aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01heGltdW1Qb3NpdGlvbigpOworICAgIG1fY3Vt
dWxhdGl2ZUhvcml6b250YWxTY3JvbGwgPSAwOworICAgIG1fZGlkQ3VtdWxhdGl2ZUhvcml6b250
YWxTY3JvbGxFdmVyU3dpdGNoVG9PcHBvc2l0ZURpcmVjdGlvbk9mUGluID0gZmFsc2U7CisgICAg
CiAgICAgSW50U2l6ZSBzdHJldGNoQW1vdW50ID0gbV9zY3JvbGxhYmxlQXJlYS0+b3ZlcmhhbmdB
bW91bnQoKTsKICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRXaWR0aChyZWJvdW5kRGVsdGFG
b3JFbGFzdGljRGVsdGEoc3RyZXRjaEFtb3VudC53aWR0aCgpKSk7CiAgICAgbV9zdHJldGNoU2Ny
b2xsRm9yY2Uuc2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShzdHJldGNoQW1v
dW50LmhlaWdodCgpKSk7CkBAIC0xMDg1LDggKzExMDQsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
Q2hyb21pdW1NYWM6OmVuZFNjcm9sbEdlc3R1cmUoKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OnNuYXBSdWJiZXJCYW5kKCkKIHsKLSAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVs
dGEgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0gLSBtX2xhc3RN
b21lbXR1bVNjcm9sbFRpbWVzdGFtcDsKLSAgICBpZiAobV9sYXN0TW9tZW10dW1TY3JvbGxUaW1l
c3RhbXAgJiYgdGltZURlbHRhID49IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQpCisgICAg
Q0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRhID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBz
eXN0ZW1VcHRpbWVdIC0gbV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXA7CisgICAgaWYgKG1f
bGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wICYmIHRpbWVEZWx0YSA+PSBzY3JvbGxWZWxvY2l0
eVplcm9pbmdUaW1lb3V0KQogICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkgPSBGbG9hdFNpemUo
KTsKIAogICAgIG1faW5TY3JvbGxHZXN0dXJlID0gZmFsc2U7CkBAIC0xMTM0LDYgKzExNTMsOCBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiZXJCYW5kVGltZXJGaXJl
ZChUaW1lcjxTY3JvbGxBbmltYXRvckNocgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+ZGlkU3RhcnRSdWJiZXJC
YW5kKHJvdW5kZWRJbnRTaXplKG1fc3RhcnRTdHJldGNoKSk7CisKICAgICAgICAgICAgIG1fb3Jp
Z09yaWdpbiA9IChtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlv
bigpICsgbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsT3JpZ2luKCkpIC0gbV9zdGFydFN0cmV0Y2g7
CiAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IG1fbW9tZW50dW1WZWxvY2l0eTsKIApAQCAt
MTE4Niw3ICsxMjA3LDcxIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c25hcFJ1
YmJlckJhbmRUaW1lckZpcmVkKFRpbWVyPFNjcm9sbEFuaW1hdG9yQ2hyCiB9CiAjZW5kaWYKIAor
dm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkK
K3sKKyAgICBTY3JvbGxBbmltYXRvcjo6c2V0SXNBY3RpdmUoYWN0aXZlKTsKKworICAgIGlmIChp
c1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgeworICAgICAgICBpZiAobmVlZHNTY3Jv
bGxlclN0eWxlVXBkYXRlKCkpCisgICAgICAgICAgICB1cGRhdGVTY3JvbGxlclN0eWxlKCk7Cisg
ICAgfQorfQorCiAjaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQordm9pZCBTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKCkKK3sKKyAgICBpZiAoIWlzQWN0
aXZlKCkpIHsKKyAgICAgICAgc2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKHRydWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyogbWFj
VGhlbWUgPSAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyopU2Nyb2xsYmFyVGhlbWU6Om5hdGl2
ZVRoZW1lKCk7CisgICAgaW50IG5ld1N0eWxlID0gd2tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clN0eWxlKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCkpOworCisgICAgaWYgKFNj
cm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBzY3JvbGxhYmxlQXJlYSgpLT52ZXJ0aWNhbFNj
cm9sbGJhcigpKSB7CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CisK
KyAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIG9sZFZlcnRpY2FsUGFpbnRlciA9IHdrVmVy
dGljYWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcihtX3Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyLmdldCgpKTsKKyAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIG5ld1ZlcnRpY2Fs
UGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcihvbGRWZXJ0aWNhbFBh
aW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3R5bGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVydGljYWxTY3JvbGxiYXItPmNvbnRyb2xTaXplKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgICAgICBtYWNUaGVtZS0+c2V0TmV3
UGFpbnRlckZvclNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhciwgbmV3VmVydGljYWxQYWludGVy
KTsKKyAgICAgICAgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIobV9zY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlci5nZXQoKSwgbmV3VmVydGljYWxQYWludGVyLCBmYWxzZSk7CisKKyAg
ICAgICAgLy8gVGhlIGRpZmZlcmVudCBzY3JvbGxiYXIgc3R5bGVzIGhhdmUgZGlmZmVyZW50IHRo
aWNrbmVzc2VzLCBzbyB3ZSBtdXN0IHJlLXNldCB0aGUgCisgICAgICAgIC8vIGZyYW1lUmVjdCB0
byB0aGUgbmV3IHRoaWNrbmVzcywgYW5kIHRoZSByZS1sYXlvdXQgYmVsb3cgd2lsbCBlbnN1cmUg
dGhlIHBvc2l0aW9uCisgICAgICAgIC8vIGFuZCBsZW5ndGggYXJlIHByb3Blcmx5IHVwZGF0ZWQu
CisgICAgICAgIGludCB0aGlja25lc3MgPSBtYWNUaGVtZS0+c2Nyb2xsYmFyVGhpY2tuZXNzKHZl
cnRpY2FsU2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKKyAgICAgICAgdmVydGljYWxTY3JvbGxi
YXItPnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7Cisg
ICAgfQorCisgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IHNjcm9sbGFi
bGVBcmVhKCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkgeworICAgICAgICBob3Jpem9udGFsU2Ny
b2xsYmFyLT5pbnZhbGlkYXRlKCk7CisKKyAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIG9s
ZEhvcml6b250YWxQYWludGVyID0gd2tIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRy
b2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CisgICAgICAgIFdLU2Ny
b2xsYmFyUGFpbnRlclJlZiBuZXdIb3Jpem9udGFsUGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclJl
cGxhY2VtZW50UGFpbnRlcihvbGRIb3Jpem9udGFsUGFpbnRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9y
aXpvbnRhbFNjcm9sbGJhci0+Y29udHJvbFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUpOworICAgICAgICBtYWNUaGVtZS0+c2V0TmV3UGFpbnRlckZvclNjcm9sbGJh
cihob3Jpem9udGFsU2Nyb2xsYmFyLCBuZXdIb3Jpem9udGFsUGFpbnRlcik7CisgICAgICAgIHdr
U2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCksIG5ld0hvcml6b250YWxQYWludGVyLCB0cnVlKTsKKworICAgICAgICAvLyBUaGUg
ZGlmZmVyZW50IHNjcm9sbGJhciBzdHlsZXMgaGF2ZSBkaWZmZXJlbnQgdGhpY2tuZXNzZXMsIHNv
IHdlIG11c3QgcmUtc2V0IHRoZSAKKyAgICAgICAgLy8gZnJhbWVSZWN0IHRvIHRoZSBuZXcgdGhp
Y2tuZXNzLCBhbmQgdGhlIHJlLWxheW91dCBiZWxvdyB3aWxsIGVuc3VyZSB0aGUgcG9zaXRpb24K
KyAgICAgICAgLy8gYW5kIGxlbmd0aCBhcmUgcHJvcGVybHkgdXBkYXRlZC4KKyAgICAgICAgaW50
IHRoaWNrbmVzcyA9IG1hY1RoZW1lLT5zY3JvbGxiYXJUaGlja25lc3MoaG9yaXpvbnRhbFNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSk7CisgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXItPnNldEZy
YW1lUmVjdChJbnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7CisgICAgfQorCisg
ICAgLy8gSWYgbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKCkgaXMgdHJ1ZSwgdGhlbiB0aGUgcGFn
ZSBpcyByZXN0b3JpbmcgZnJvbSB0aGUgcGFnZSBjYWNoZSwgYW5kIAorICAgIC8vIGEgcmVsYXlv
dXQgd2lsbCBoYXBwZW4gb24gaXRzIG93bi4gT3RoZXJ3aXNlLCB3ZSBtdXN0IGluaXRpYXRlIGEg
cmUtbGF5b3V0IG91cnNlbHZlcy4KKyAgICBpZiAoIW5lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0ZSgp
KQorICAgICAgICBzY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJTdHlsZUNoYW5nZWQoKTsKKwor
ICAgIHNldE5lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0ZShmYWxzZSk7Cit9CisKIHZvaWQgU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYzo6c3RhcnRTY3JvbGxiYXJQYWludFRpbWVyKCkKIHsKICAgICBt
X2luaXRpYWxTY3JvbGxiYXJQYWludFRpbWVyLnN0YXJ0T25lU2hvdCgwLjEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxp
dGllc0Nocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMuaAppbmRleCAwNTdlMmY3YmNlMGYwZWU4
NzkwZTNhNmE2ODM5ZTMwYTNhYmY3MmJjLi4zODY1MmU3OTA4YzI2NWM3ODJkOTM2OThhYThkNDQ5
MmNlOTNlNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMu
aApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIHdrU2V0U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJT
dHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmLCBpbnQgbgogdm9pZCB3a1NldFBh
aW50ZXJGb3JQYWludGVyQ29udHJvbGxlcihXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVm
LCBXS1Njcm9sbGJhclBhaW50ZXJSZWYsIGJvb2wgaXNIb3Jpem9udGFsKTsKIFdLU2Nyb2xsYmFy
UGFpbnRlclJlZiB3a1ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRyb2xsZXIoV0tTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclJlZik7CiBXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tIb3Jp
em9udGFsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlclJlZik7CitOU1Njcm9sbGVyU3R5bGUgd2tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwogCiAjZW5kaWYgLy8gVVNF
KFdLX1NDUk9MTEJBUl9QQUlOVEVSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVz
Q2hyb21pdW1NYWMubW0KaW5kZXggODE2YWIzOWZiOGEwYjg4YWZmZDBkZjUwNWFhNTRjODllMWNk
YjM5Ni4uMjhiMzRiNTkwZmQ1YjQzZjFjNGY3MGEyMGVjY2FiYWI2ZDcyOGZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxp
dGllc0Nocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5tbQpAQCAtMjEzLDYgKzIxMywx
MSBAQCBXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlckZv
ckNvbnRyb2xsZXIoV0tTY3JvbGxiYXJQYWludAogICAgIHJldHVybiBbY29udHJvbGxlciBob3Jp
em9udGFsU2Nyb2xsZXJJbXBdOwogfQogCitOU1Njcm9sbGVyU3R5bGUgd2tTY3JvbGxiYXJQYWlu
dGVyQ29udHJvbGxlclN0eWxlKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYgY29udHJv
bGxlcikKK3sKKyAgICByZXR1cm4gW2NvbnRyb2xsZXIgc2Nyb2xsZXJTdHlsZV07Cit9CisKIFdL
U2Nyb2xsYmFyUGFpbnRlclJlZiB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIoV0tT
Y3JvbGxiYXJQYWludGVyUmVmIG9sZFBhaW50ZXIsIGludCBuZXdTdHlsZSwgaW50IGNvbnRyb2xT
aXplLCBib29sIGlzSG9yaXpvbnRhbCkKIHsKICAgICBpZiAoIWlzU2Nyb2xsYmFyT3ZlcmxheUFQ
SUF2YWlsYWJsZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97473</attachid>
            <date>2011-06-16 11:42:30 -0700</date>
            <delta_ts>2011-06-16 14:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62779-20110616114229.patch</filename>
            <type>text/plain</type>
            <size>25746</size>
            <attacher name="Sailesh Agrawal">sail</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwMjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjdlZDRhMzQzNTI5Nzg0
NTY0MTNmMTM3ZjMxMDFmNDk2OTY5YzhmLi4zZWY2MmRlNDBlNGFkMTlkMWI0ZTVlZGQwZmU0ZjNk
Y2QyNWU1ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMTYgIFNhaWxl
c2ggQWdyYXdhbCAgPHNhaWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBkYXRlIGZvcmtlZCBTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjLm1tL2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNzc5CisKKyAgICAgICAgVXBkYXRlZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjLm1tL2ggd2l0aCB0aGUgbGF0ZXN0IGNvZGUgaW4gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0vaAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6c2V0TmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6Om5lZWRzU2Nyb2xsZXJTdHlsZVVw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYy5tbToKKyAgICAgICAgKC1bU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgX2ltbWVk
aWF0ZVNjcm9sbFRvUG9pbnQ6XSk6CisgICAgICAgICgtW1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyRGVsZWdhdGUgc2Nyb2xsZXJJbXBQYWlyOnVwZGF0ZVNjcm9sbGVyU3R5bGVGb3JOZXdSZWNv
bW1lbmRlZFNjcm9sbGVyU3R5bGU6XSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjppbW1lZGlhdGVTY3JvbGxUb1BvaW50Rm9yU2Ny
b2xsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsaW5nTGVmdEFuZFNob3Vs
ZE5vdFJ1YmJlckJhbmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxpbmdSaWdodEFuZFNo
b3VsZE5vdFJ1YmJlckJhbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjpzbW9vdGhTY3JvbGxXaXRoRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6YmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiZXJCYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiZXJC
YW5kVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpzZXRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9t
aXVtTWFjOjp1cGRhdGVTY3JvbGxlclN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1NYWMubW06Cisg
ICAgICAgICh3a1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUpOgorCiAyMDExLTA2LTE2
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByODkwMjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmgKaW5k
ZXggM2QwZDVhMTJjODM2NWVhZDIyZGJhNjRiZGE1YmIyNWU2OTViNjQ4MC4uODMyYzU0M2VhNmJi
YjcxOTlmMWQ3OGYxY2EwZjUyODcxYTUyMjRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaApA
QCAtNzEsMTIgKzcxLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5RGVs
dGFYKGZsb2F0IGRlbHRhWCk7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeURlbHRhWShmbG9h
dCBkZWx0YVkpOwogCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb1BvaW50Rm9yU2Nyb2xsQW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKTsKKwogICAgIHZvaWQgc2V0SXNE
cmF3aW5nSW50b0xheWVyKGJvb2wgYikgeyBtX2RyYXdpbmdJbnRvTGF5ZXIgPSBiOyB9CiAgICAg
Ym9vbCBpc0RyYXdpbmdJbnRvTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdJbnRvTGF5
ZXI7IH0KIAogICAgIGJvb2wgaGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZDsgfQogCisgICAgdmlydHVhbCB2b2lkIHNl
dElzQWN0aXZlKCk7CisKICNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCisgICAgdm9pZCB1
cGRhdGVTY3JvbGxlclN0eWxlKCk7CisKICAgICBib29sIHNjcm9sbGJhclBhaW50VGltZXJJc0Fj
dGl2ZSgpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRTY3JvbGxiYXJQYWludFRpbWVyKCk7CiAgICAg
dm9pZCBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigpOwpAQCAtMTE1LDYgKzEyMSw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFy
Kik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9s
bGJhciopOwogCisgICAgdm9pZCBzZXROZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUoYm9vbCBuZWVk
c1VwZGF0ZSkgeyBtX25lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0ZSA9IG5lZWRzVXBkYXRlOyB9Cisg
ICAgYm9vbCBuZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
U2Nyb2xsZXJTdHlsZVVwZGF0ZTsgfQorCiAgICAgZmxvYXQgYWRqdXN0U2Nyb2xsWFBvc2l0aW9u
SWZOZWNlc3NhcnkoZmxvYXQpIGNvbnN0OwogICAgIGZsb2F0IGFkanVzdFNjcm9sbFlQb3NpdGlv
bklmTmVjZXNzYXJ5KGZsb2F0KSBjb25zdDsKICAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9sbFBv
c2l0aW9uSWZOZWNlc3NhcnkoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwpAQCAtMTMyLDggKzE0
MSwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pblNjcm9sbEdlc3R1cmU7CiAgICAgYm9vbCBt
X21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzczsKICAgICBib29sIG1faWdub3JlTW9tZW50dW1TY3Jv
bGxzOwotICAgIAotICAgIENGVGltZUludGVydmFsIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0
YW1wOworCisgICAgYm9vbCBtX3Njcm9sbGVySW5pdGlhbGx5UGlubmVkT25MZWZ0OworICAgIGJv
b2wgbV9zY3JvbGxlckluaXRpYWxseVBpbm5lZE9uUmlnaHQ7CisgICAgaW50IG1fY3VtdWxhdGl2
ZUhvcml6b250YWxTY3JvbGw7CisgICAgYm9vbCBtX2RpZEN1bXVsYXRpdmVIb3Jpem9udGFsU2Ny
b2xsRXZlclN3aXRjaFRvT3Bwb3NpdGVEaXJlY3Rpb25PZlBpbjsKKworICAgIENGVGltZUludGVy
dmFsIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wOwogICAgIEZsb2F0U2l6ZSBtX292ZXJm
bG93U2Nyb2xsRGVsdGE7CiAgICAgRmxvYXRTaXplIG1fc3RyZXRjaFNjcm9sbEZvcmNlOwogICAg
IEZsb2F0U2l6ZSBtX21vbWVudHVtVmVsb2NpdHk7CkBAIC0xNDcsNiArMTYxLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIGJvb2wgbV9kcmF3aW5nSW50b0xheWVyOwogICAgIGJvb2wgbV9oYXZl
U2Nyb2xsZWRTaW5jZVBhZ2VMb2FkOworICAgIGJvb2wgbV9uZWVkc1Njcm9sbGVyU3R5bGVVcGRh
dGU7CiAgICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjLm1tCmluZGV4IDM4MGUzNmYyZTY3NjU2NjM1MzFkM2IwMzkwY2M5MmI5
MDM5NzExYTQuLjdhYjcwZDgzNjMzMmUwM2E5ZmJkMmJhZmM3ZjNlYTRlZDgwMDliYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYy5tbQpAQCAtNTYsNiArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogLSAodm9pZClfc3RvcFJ1bjsKIC0gKEJPT0wpX2lzQW5pbWF0aW5nOwogLSAoTlNQb2lu
dCl0YXJnZXRPcmlnaW47CistIChDR0Zsb2F0KV9wcm9ncmVzczsKIEBlbmQKIAogQGludGVyZmFj
ZSBTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0CkBAIC0xMDUsNyArMTA2
LDcgQEAgc3RhdGljIE5TU2l6ZSBhYnMoTlNTaXplIHNpemUpCiB7CiAgICAgaWYgKCFfYW5pbWF0
b3IpCiAgICAgICAgIHJldHVybjsKLSAgICBfYW5pbWF0b3ItPmltbWVkaWF0ZVNjcm9sbFRvUG9p
bnQobmV3UG9zaXRpb24pOworICAgIF9hbmltYXRvci0+aW1tZWRpYXRlU2Nyb2xsVG9Qb2ludEZv
clNjcm9sbEFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiB9CiAKIC0gKE5TUG9pbnQpX3BpeGVsQWxp
Z25Qcm9wb3NlZFNjcm9sbFBvc2l0aW9uOihOU1BvaW50KW5ld09yaWdpbgpAQCAtMjQyLDQ3ICsy
NDMsOCBAQCBzdGF0aWMgTlNTaXplIGFicyhOU1NpemUgc2l6ZSkKICAgICBpZiAoIV9hbmltYXRv
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJl
ZiBwYWludGVyQ29udHJvbGxlciA9IChXS1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKXNj
cm9sbGVySW1wUGFpcjsKLSAgICBXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKiBt
YWNUaGVtZSA9IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKilXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKTsKLQotICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJl
ZiBvbGRWZXJ0aWNhbFBhaW50ZXIgPSB3a1ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRy
b2xsZXIocGFpbnRlckNvbnRyb2xsZXIpOwotICAgIGlmIChvbGRWZXJ0aWNhbFBhaW50ZXIpIHsK
LSAgICAgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IF9hbmltYXRv
ci0+c2Nyb2xsYWJsZUFyZWEoKS0+dmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICAgICAgV0tTY3Jv
bGxiYXJQYWludGVyUmVmIG5ld1ZlcnRpY2FsUGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclJlcGxh
Y2VtZW50UGFpbnRlcihvbGRWZXJ0aWNhbFBhaW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3UmVjb21tZW5kZWRTY3JvbGxlclN0eWxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhbHNlKTsKLSAgICAgICAgbWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JT
Y3JvbGxiYXIodmVydGljYWxTY3JvbGxiYXIsIG5ld1ZlcnRpY2FsUGFpbnRlcik7Ci0gICAgICAg
IHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKHBhaW50ZXJDb250cm9sbGVyLCBuZXdW
ZXJ0aWNhbFBhaW50ZXIsIGZhbHNlKTsKLQotICAgICAgICAvLyBUaGUgZGlmZmVyZW50IHNjcm9s
bGJhciBzdHlsZXMgaGF2ZSBkaWZmZXJlbnQgdGhpY2tuZXNzZXMsIHNvIHdlIG11c3QgcmUtc2V0
IHRoZSAKLSAgICAgICAgLy8gZnJhbWVSZWN0IHRvIHRoZSBuZXcgdGhpY2tuZXNzLCBhbmQgdGhl
IHJlLWxheW91dCBiZWxvdyB3aWxsIGVuc3VyZSB0aGUgcG9zaXRpb24KLSAgICAgICAgLy8gYW5k
IGxlbmd0aCBhcmUgcHJvcGVybHkgdXBkYXRlZC4KLSAgICAgICAgaW50IHRoaWNrbmVzcyA9IG1h
Y1RoZW1lLT5zY3JvbGxiYXJUaGlja25lc3ModmVydGljYWxTY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCkpOwotICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RnJhbWVSZWN0KFdlYkNvcmU6Oklu
dFJlY3QoMCwgMCwgdGhpY2tuZXNzLCB0aGlja25lc3MpKTsKLSAgICB9Ci0KLSAgICBXS1Njcm9s
bGJhclBhaW50ZXJSZWYgb2xkSG9yaXpvbnRhbFBhaW50ZXIgPSB3a0hvcml6b250YWxTY3JvbGxi
YXJQYWludGVyRm9yQ29udHJvbGxlcihwYWludGVyQ29udHJvbGxlcik7Ci0gICAgaWYgKG9sZEhv
cml6b250YWxQYWludGVyKSB7Ci0gICAgICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRh
bFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpOwotICAgICAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgbmV3SG9yaXpvbnRhbFBhaW50
ZXIgPSB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIob2xkSG9yaXpvbnRhbFBhaW50
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZWNvbW1lbmRlZFNjcm9sbGVy
U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Ci0g
ICAgICAgIG1hY1RoZW1lLT5zZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKGhvcml6b250YWxTY3Jv
bGxiYXIsIG5ld0hvcml6b250YWxQYWludGVyKTsKLSAgICAgICAgd2tTZXRQYWludGVyRm9yUGFp
bnRlckNvbnRyb2xsZXIocGFpbnRlckNvbnRyb2xsZXIsIG5ld0hvcml6b250YWxQYWludGVyLCB0
cnVlKTsKLQotICAgICAgICAvLyBUaGUgZGlmZmVyZW50IHNjcm9sbGJhciBzdHlsZXMgaGF2ZSBk
aWZmZXJlbnQgdGhpY2tuZXNzZXMsIHNvIHdlIG11c3QgcmUtc2V0IHRoZSAKLSAgICAgICAgLy8g
ZnJhbWVSZWN0IHRvIHRoZSBuZXcgdGhpY2tuZXNzLCBhbmQgdGhlIHJlLWxheW91dCBiZWxvdyB3
aWxsIGVuc3VyZSB0aGUgcG9zaXRpb24KLSAgICAgICAgLy8gYW5kIGxlbmd0aCBhcmUgcHJvcGVy
bHkgdXBkYXRlZC4KLSAgICAgICAgaW50IHRoaWNrbmVzcyA9IG1hY1RoZW1lLT5zY3JvbGxiYXJU
aGlja25lc3MoaG9yaXpvbnRhbFNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7Ci0gICAgICAgIGhv
cml6b250YWxTY3JvbGxiYXItPnNldEZyYW1lUmVjdChXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIHRo
aWNrbmVzcywgdGhpY2tuZXNzKSk7Ci0gICAgfQotCi0gICAgd2tTZXRTY3JvbGxiYXJQYWludGVy
Q29udHJvbGxlclN0eWxlKHBhaW50ZXJDb250cm9sbGVyLCBuZXdSZWNvbW1lbmRlZFNjcm9sbGVy
U3R5bGUpOwotCi0gICAgLy8gVGhlIGRpZmZlcmVudCBzY3JvbGxiYXIgc3R5bGVzIGFmZmVjdCBs
YXlvdXQsIHNvIHdlIG11c3QgcmUtbGF5b3V0IGV2ZXJ5dGhpbmcuCi0gICAgX2FuaW1hdG9yLT5z
Y3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJTdHlsZUNoYW5nZWQoKTsKKyAgICB3a1NldFNjcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUoKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJS
ZWYpc2Nyb2xsZXJJbXBQYWlyLCBuZXdSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUpOworICAgIF9h
bmltYXRvci0+dXBkYXRlU2Nyb2xsZXJTdHlsZSgpOwogfQogCiBAZW5kCkBAIC01MDYsMTIgKzQ2
OCwxMyBAQCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQQogICAgICwgbV9pblNjcm9sbEdlc3R1cmUo
ZmFsc2UpCiAgICAgLCBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1f
aWdub3JlTW9tZW50dW1TY3JvbGxzKGZhbHNlKQotICAgICwgbV9sYXN0TW9tZW10dW1TY3JvbGxU
aW1lc3RhbXAoMCkKKyAgICAsIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wKDApCiAgICAg
LCBtX3N0YXJ0VGltZSgwKQogICAgICwgbV9zbmFwUnViYmVyQmFuZFRpbWVyKHRoaXMsICZTY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjOjpzbmFwUnViYmVyQmFuZFRpbWVyRmlyZWQpCiAjZW5kaWYK
ICAgICAsIG1fZHJhd2luZ0ludG9MYXllcihmYWxzZSkKICAgICAsIG1faGF2ZVNjcm9sbGVkU2lu
Y2VQYWdlTG9hZChmYWxzZSkKKyAgICAsIG1fbmVlZHNTY3JvbGxlclN0eWxlVXBkYXRlKGZhbHNl
KQogewogICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuYWRvcHROUyhbW1Njcm9s
bEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRo
aXNdKTsKICAgICBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlci5hZG9wdE5TKFtbTlNDbGFzc0Zyb21T
dHJpbmcoQCJOU1Njcm9sbEFuaW1hdGlvbkhlbHBlciIpIGFsbG9jXSBpbml0V2l0aERlbGVnYXRl
Om1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUuZ2V0KCldKTsKQEAgLTU1Niw5ICs1MTks
MTAgQEAgYm9vbCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzY3JvbGwoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEcKICAgICBpZiAoW21fc2Nyb2xsQW5pbWF0aW9u
SGVscGVyLmdldCgpIF9pc0FuaW1hdGluZ10pIHsKICAgICAgICAgTlNQb2ludCB0YXJnZXRPcmln
aW4gPSBbbV9zY3JvbGxBbmltYXRpb25IZWxwZXIuZ2V0KCkgdGFyZ2V0T3JpZ2luXTsKICAgICAg
ICAgbmV3UG9pbnQgPSBvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gTlNNYWtl
UG9pbnQobmV3UG9zLCB0YXJnZXRPcmlnaW4ueSkgOiBOU01ha2VQb2ludCh0YXJnZXRPcmlnaW4u
eCwgbmV3UG9zKTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICBuZXdQb2ludCA9
IG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBOU01ha2VQb2ludChuZXdQb3Ms
IG1fY3VycmVudFBvc1kpIDogTlNNYWtlUG9pbnQobV9jdXJyZW50UG9zWCwgbmV3UG9zKTsKLQor
ICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5kaWRTdGFydEFuaW1hdGVkU2Nyb2xsKCk7CisgICAg
fQogICAgIFttX3Njcm9sbEFuaW1hdGlvbkhlbHBlci5nZXQoKSBzY3JvbGxUb1BvaW50Om5ld1Bv
aW50XTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTYzMCw2ICs1OTQsMTcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjOjppbW1lZGlhdGVTY3JvbGxCeURlbHRhWShmbG9hdCBkZWx0
YVkpCiAgICAgbm90aXR5UG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0
b3JDaHJvbWl1bU1hYzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb2ludEZvclNjcm9sbEFuaW1hdGlvbihj
b25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQobV9zY3JvbGxBbmlt
YXRpb25IZWxwZXIpOworICAgIENHRmxvYXQgcHJvZ3Jlc3MgPSBbbV9zY3JvbGxBbmltYXRpb25I
ZWxwZXIuZ2V0KCkgX3Byb2dyZXNzXTsKKyAgICAKKyAgICBpbW1lZGlhdGVTY3JvbGxUb1BvaW50
KG5ld1Bvc2l0aW9uKTsKKworICAgIGlmIChwcm9ncmVzcyA+PSAxLjApCisgICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWEtPmRpZENvbXBsZXRlQW5pbWF0ZWRTY3JvbGwoKTsKK30KKwogdm9pZCBTY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjOjpub3RpdHlQb3NpdGlvbkNoYW5nZWQoKQogewogICAgIGlm
IChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKQEAgLTc5NCw2ICs3NjksMTYgQEAg
c3RhdGljIGZsb2F0IHNjcm9sbFdoZWVsTXVsdGlwbGllcigpCiAgICAgcmV0dXJuIG11bHRpcGxp
ZXI7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Njcm9sbGluZ0xlZnRBbmRTaG91bGROb3RS
dWJiZXJCYW5kKFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQoreworICAgIHJldHVybiB3aGVlbEV2ZW50LmRlbHRhWCgpID4gMCAm
JiAhc2Nyb2xsYWJsZUFyZWEtPnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxMZWZ0
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzU2Nyb2xsaW5nUmlnaHRBbmRTaG91bGROb3RS
dWJiZXJCYW5kKFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQoreworICAgIHJldHVybiB3aGVlbEV2ZW50LmRlbHRhWCgpIDwgMCAm
JiAhc2Nyb2xsYWJsZUFyZWEtPnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxSaWdo
dCk7Cit9CisKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlV2hlZWxFdmVu
dChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgbV9oYXZlU2Nyb2xsZWRT
aW5jZVBhZ2VMb2FkID0gdHJ1ZTsKQEAgLTgxNywxNyArODAyLDQ3IEBAIHZvaWQgU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCiAgICAgICAgICAgICBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCh3
aGVlbEV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkp
IHsKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgc2Nyb2xsYmFyLCB3ZSBhZ2dyZWdhdGUg
dGhlIHdoZWVsIGV2ZW50cyB0byBnZXQgYW4KKyAgICAgICAgICAgIC8vIG92ZXJhbGwgdHJlbmQg
b2YgdGhlIHNjcm9sbC4gSWYgdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Nyb2xsIGlzIGV2ZXIKKyAg
ICAgICAgICAgIC8vIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhlIHBpbiBsb2NhdGlv
biwgdGhlbiB3ZSBzd2l0Y2ggdGhlCisgICAgICAgICAgICAvLyBib29sZWFuLCBhbmQgcnViYmVy
IGJhbmQuIFRoYXQgaXMsIGlmIHdlIHdlcmUgcGlubmVkIHRvIHRoZSBsZWZ0LAorICAgICAgICAg
ICAgLy8gYW5kIHdlIGVuZGVkIHVwIHNjcm9sbGluZyB0byB0aGUgcmlnaHQsIHdlIHJ1YmJlciBi
YW5kLgorICAgICAgICAgICAgbV9jdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbCArPSB3aGVlbEV2
ZW50LmRlbHRhWCgpOworICAgICAgICAgICAgaWYgKG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRP
bkxlZnQgJiYgbV9jdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbCA8IDApCisgICAgICAgICAgICAg
ICAgbV9kaWRDdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbEV2ZXJTd2l0Y2hUb09wcG9zaXRlRGly
ZWN0aW9uT2ZQaW4gPSB0cnVlOworICAgICAgICAgICAgaWYgKG1fc2Nyb2xsZXJJbml0aWFsbHlQ
aW5uZWRPblJpZ2h0ICYmIG1fY3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGwgPiAwKQorICAgICAg
ICAgICAgICAgIG1fZGlkQ3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGxFdmVyU3dpdGNoVG9PcHBv
c2l0ZURpcmVjdGlvbk9mUGluID0gdHJ1ZTsKKyAgICAgICAgfQogCi0gICAgd2hlZWxFdmVudC5h
Y2NlcHQoKTsKKyAgICAgICAgLy8gQWZ0ZXIgYSBnZXN0dXJlIGJlZ2lucywgd2UgZ28gdGhyb3Vn
aDoKKyAgICAgICAgLy8gMSsgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VOb25lCisgICAgICAgIC8v
IDArIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZAorICAgICAgICAvLyAxIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlRW5kZWQgaWYgdGhlcmUgd2FzIGF0IGxlYXN0IG9uZSBjaGFuZ2VkIGV2
ZW50CisgICAgICAgIGlmICh3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZU5vbmUgJiYgIW1fZGlkQ3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGxFdmVy
U3dpdGNoVG9PcHBvc2l0ZURpcmVjdGlvbk9mUGluKSB7CisgICAgICAgICAgICBpZiAoKGlzU2Ny
b2xsaW5nTGVmdEFuZFNob3VsZE5vdFJ1YmJlckJhbmQod2hlZWxFdmVudCwgbV9zY3JvbGxhYmxl
QXJlYSkgJiYKKyAgICAgICAgICAgICAgICBtX3Njcm9sbGVySW5pdGlhbGx5UGlubmVkT25MZWZ0
ICYmCisgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xs
ZXJQaW5uZWRUb01pbmltdW1Qb3NpdGlvbigpKSB8fAorICAgICAgICAgICAgICAgIChpc1Njcm9s
bGluZ1JpZ2h0QW5kU2hvdWxkTm90UnViYmVyQmFuZCh3aGVlbEV2ZW50LCBtX3Njcm9sbGFibGVB
cmVhKSAmJgorICAgICAgICAgICAgICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPblJpZ2h0
ICYmCisgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xs
ZXJQaW5uZWRUb01heGltdW1Qb3NpdGlvbigpKSkgeworICAgICAgICAgICAgICAgIFNjcm9sbEFu
aW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIGJvb2wgaXNNb21l
dHVtU2Nyb2xsRXZlbnQgPSAod2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgIT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VOb25lKTsKLSAgICBpZiAobV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgJiYg
KGlzTW9tZXR1bVNjcm9sbEV2ZW50IHx8IG1fc25hcFJ1YmJlckJhbmRUaW1lci5pc0FjdGl2ZSgp
KSkgewotICAgICAgICBpZiAod2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2VFbmRlZCkKKyAgICBib29sIGlzTW9tZW50dW1TY3JvbGxFdmVudCA9ICh3
aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSAhPSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUp
OworICAgIGlmIChtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyAmJiAoaXNNb21lbnR1bVNjcm9sbEV2
ZW50IHx8IG1fc25hcFJ1YmJlckJhbmRUaW1lci5pc0FjdGl2ZSgpKSkgeworICAgICAgICBpZiAo
d2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRl
ZCkgewogICAgICAgICAgICAgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHdoZWVsRXZlbnQuYWNjZXB0KCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIHdoZWVsRXZlbnQuYWNjZXB0KCk7CiAgICAgc21vb3RoU2Nyb2xsV2l0aEV2
ZW50KHdoZWVsRXZlbnQpOwogfQogCkBAIC05MTEsMTEgKzkyNiwxMSBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRQogICAgIC8vIFJlc2V0IG92ZXJmbG93IHZhbHVlcyBiZWNhdXNlIHdlIG1heSBk
ZWNpZGUgdG8gcmVtb3ZlIGRlbHRhIGF0IHZhcmlvdXMgcG9pbnRzIGFuZCBwdXQgaXQgaW50byBv
dmVyZmxvdy4KICAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9hdFNpemUoKTsKIAotICAg
IGZsb2F0IGV2ZW50Q29hbGxlc2NlZERlbHRhWCA9IC13aGVlbEV2ZW50LmRlbHRhWCgpOwotICAg
IGZsb2F0IGV2ZW50Q29hbGxlc2NlZERlbHRhWSA9IC13aGVlbEV2ZW50LmRlbHRhWSgpOworICAg
IGZsb2F0IGV2ZW50Q29hbGVzY2VkRGVsdGFYID0gLXdoZWVsRXZlbnQuZGVsdGFYKCk7CisgICAg
ZmxvYXQgZXZlbnRDb2FsZXNjZWREZWx0YVkgPSAtd2hlZWxFdmVudC5kZWx0YVkoKTsKIAotICAg
IGRlbHRhWCArPSBldmVudENvYWxsZXNjZWREZWx0YVg7Ci0gICAgZGVsdGFZICs9IGV2ZW50Q29h
bGxlc2NlZERlbHRhWTsKKyAgICBkZWx0YVggKz0gZXZlbnRDb2FsZXNjZWREZWx0YVg7CisgICAg
ZGVsdGFZICs9IGV2ZW50Q29hbGVzY2VkRGVsdGFZOwogCiAgICAgLy8gU2xpZ2h0bHkgcHJlZmVy
IHNjcm9sbGluZyB2ZXJ0aWNhbGx5IGJ5IGFwcGx5aW5nIHRoZSA9IGNhc2UgdG8gZGVsdGFZCiAg
ICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVsdGFYKSkKQEAgLTkzOCwxNCArOTUzLDE0
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c21vb3RoU2Nyb2xsV2l0aEV2ZW50
KFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFCiAgICAgaWYgKCFtX21vbWVudHVtU2Nyb2xsSW5Q
cm9ncmVzcyAmJiAocGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiB8fCBwaGFz
ZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQpKQogICAgICAgICBtX21vbWVudHVt
U2Nyb2xsSW5Qcm9ncmVzcyA9IHRydWU7CiAKLSAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEg
PSB3aGVlbEV2ZW50LnRpbWVzdGFtcCgpIC0gbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXA7
CisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRhID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKSAt
IG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wOwogICAgIGlmIChtX2luU2Nyb2xsR2VzdHVy
ZSB8fCBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICBpZiAobV9sYXN0TW9t
ZW10dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRhID4gMCAmJiB0aW1lRGVsdGEgPCBzY3Jv
bGxWZWxvY2l0eVplcm9pbmdUaW1lb3V0KSB7Ci0gICAgICAgICAgICBtX21vbWVudHVtVmVsb2Np
dHkuc2V0V2lkdGgoZXZlbnRDb2FsbGVzY2VkRGVsdGFYIC8gKGZsb2F0KXRpbWVEZWx0YSk7Ci0g
ICAgICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkuc2V0SGVpZ2h0KGV2ZW50Q29hbGxlc2NlZERl
bHRhWSAvIChmbG9hdCl0aW1lRGVsdGEpOwotICAgICAgICAgICAgbV9sYXN0TW9tZW10dW1TY3Jv
bGxUaW1lc3RhbXAgPSB3aGVlbEV2ZW50LnRpbWVzdGFtcCgpOworICAgICAgICBpZiAobV9sYXN0
TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRhID4gMCAmJiB0aW1lRGVsdGEgPCBz
Y3JvbGxWZWxvY2l0eVplcm9pbmdUaW1lb3V0KSB7CisgICAgICAgICAgICBtX21vbWVudHVtVmVs
b2NpdHkuc2V0V2lkdGgoZXZlbnRDb2FsZXNjZWREZWx0YVggLyAoZmxvYXQpdGltZURlbHRhKTsK
KyAgICAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eS5zZXRIZWlnaHQoZXZlbnRDb2FsZXNjZWRE
ZWx0YVkgLyAoZmxvYXQpdGltZURlbHRhKTsKKyAgICAgICAgICAgIG1fbGFzdE1vbWVudHVtU2Ny
b2xsVGltZXN0YW1wID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wID0gd2hlZWxFdmVudC50
aW1lc3RhbXAoKTsKKyAgICAgICAgICAgIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wID0g
d2hlZWxFdmVudC50aW1lc3RhbXAoKTsKICAgICAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9
IEZsb2F0U2l6ZSgpOwogICAgICAgICB9CiAKQEAgLTk5OSw3ICsxMDE0LDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjOjpzbW9vdGhTY3JvbGxXaXRoRXZlbnQoUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEUKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghYWxsb3dz
SG9yaXpvbnRhbFN0cmV0Y2hpbmcoKSkgewogICAgICAgICAgICAgICAgIGRlbHRhWCA9IDA7Ci0g
ICAgICAgICAgICAgICAgZXZlbnRDb2FsbGVzY2VkRGVsdGFYID0gMDsKKyAgICAgICAgICAgICAg
ICBldmVudENvYWxlc2NlZERlbHRhWCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChkZWx0
YVggIT0gMCkgJiYgIWlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkICYmICFwaW5uZWRJbkRpcmVjdGlv
bihkZWx0YVgsIDApKSB7CiAgICAgICAgICAgICAgICAgZGVsdGFYICo9IHNjcm9sbFdoZWVsTXVs
dGlwbGllcigpOwogCkBAIC0xMDEyLDcgKzEwMjcsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWFsbG93c1ZlcnRpY2FsU3RyZXRjaGlu
ZygpKSB7CiAgICAgICAgICAgICAgICAgZGVsdGFZID0gMDsKLSAgICAgICAgICAgICAgICBldmVu
dENvYWxsZXNjZWREZWx0YVkgPSAwOworICAgICAgICAgICAgICAgIGV2ZW50Q29hbGVzY2VkRGVs
dGFZID0gMDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRlbHRhWSAhPSAwKSAmJiAhaXNWZXJ0
aWNhbGx5U3RyZXRjaGVkICYmICFwaW5uZWRJbkRpcmVjdGlvbigwLCBkZWx0YVkpKSB7CiAgICAg
ICAgICAgICAgICAgZGVsdGFZICo9IHNjcm9sbFdoZWVsTXVsdGlwbGllcigpOwogCkBAIC0xMDI2
LDcgKzEwNDEsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNtb290aFNjcm9s
bFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRQogICAgICAgICAgICAgSW50U2l6
ZSBzdHJldGNoQW1vdW50ID0gbV9zY3JvbGxhYmxlQXJlYS0+b3ZlcmhhbmdBbW91bnQoKTsKICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAobV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoKHBpbm5lZEluRGlyZWN0aW9uKGV2ZW50Q29hbGxlc2NlZERlbHRh
WCwgZXZlbnRDb2FsbGVzY2VkRGVsdGFZKSB8fCAoZmFic2YoZXZlbnRDb2FsbGVzY2VkRGVsdGFY
KSArIGZhYnNmKGV2ZW50Q29hbGxlc2NlZERlbHRhWSkgPD0gMCkpICYmIG1fbGFzdE1vbWVtdHVt
U2Nyb2xsVGltZXN0YW1wKSB7CisgICAgICAgICAgICAgICAgaWYgKChwaW5uZWRJbkRpcmVjdGlv
bihldmVudENvYWxlc2NlZERlbHRhWCwgZXZlbnRDb2FsZXNjZWREZWx0YVkpIHx8IChmYWJzZihl
dmVudENvYWxlc2NlZERlbHRhWCkgKyBmYWJzZihldmVudENvYWxlc2NlZERlbHRhWSkgPD0gMCkp
ICYmIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wKSB7CiAgICAgICAgICAgICAgICAgICAg
IG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbV9t
b21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgc25h
cFJ1YmJlckJhbmQoKTsKQEAgLTEwNTEsNyArMTA2Niw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYzo6c21vb3RoU2Nyb2xsV2l0aEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFCiAgICAgaWYgKG1fbW9tZW50dW1TY3JvbGxJblByb2dyZXNzICYmIHBoYXNlID09IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlRW5kZWQpIHsKICAgICAgICAgbV9tb21lbnR1bVNjcm9sbEluUHJv
Z3Jlc3MgPSBmYWxzZTsKICAgICAgICAgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgPSBmYWxzZTsK
LSAgICAgICAgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXAgPSAwOworICAgICAgICBtX2xh
c3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCA9IDA7CiAgICAgfQogfQogCkBAIC0xMDYzLDkgKzEw
NzgsMTMgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpiZWdpblNjcm9sbEdlc3R1
cmUoKQogICAgIG1faW5TY3JvbGxHZXN0dXJlID0gdHJ1ZTsKICAgICBtX21vbWVudHVtU2Nyb2xs
SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gZmFsc2U7
Ci0gICAgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXAgPSAwOworICAgIG1fbGFzdE1vbWVu
dHVtU2Nyb2xsVGltZXN0YW1wID0gMDsKICAgICBtX21vbWVudHVtVmVsb2NpdHkgPSBGbG9hdFNp
emUoKTsKLQorICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPbkxlZnQgPSBtX3Njcm9sbGFi
bGVBcmVhLT5pc0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRvTWluaW11bVBvc2l0aW9uKCk7Cisg
ICAgbV9zY3JvbGxlckluaXRpYWxseVBpbm5lZE9uUmlnaHQgPSBtX3Njcm9sbGFibGVBcmVhLT5p
c0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRvTWF4aW11bVBvc2l0aW9uKCk7CisgICAgbV9jdW11
bGF0aXZlSG9yaXpvbnRhbFNjcm9sbCA9IDA7CisgICAgbV9kaWRDdW11bGF0aXZlSG9yaXpvbnRh
bFNjcm9sbEV2ZXJTd2l0Y2hUb09wcG9zaXRlRGlyZWN0aW9uT2ZQaW4gPSBmYWxzZTsKKyAgICAK
ICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQgPSBtX3Njcm9sbGFibGVBcmVhLT5vdmVyaGFuZ0Ft
b3VudCgpOwogICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldFdpZHRoKHJlYm91bmREZWx0YUZv
ckVsYXN0aWNEZWx0YShzdHJldGNoQW1vdW50LndpZHRoKCkpKTsKICAgICBtX3N0cmV0Y2hTY3Jv
bGxGb3JjZS5zZXRIZWlnaHQocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKHN0cmV0Y2hBbW91
bnQuaGVpZ2h0KCkpKTsKQEAgLTEwODUsOCArMTEwNCw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYzo6ZW5kU2Nyb2xsR2VzdHVyZSgpCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6c25hcFJ1YmJlckJhbmQoKQogewotICAgIENGVGltZUludGVydmFsIHRpbWVEZWx0
YSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSAtIG1fbGFzdE1v
bWVtdHVtU2Nyb2xsVGltZXN0YW1wOwotICAgIGlmIChtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVz
dGFtcCAmJiB0aW1lRGVsdGEgPj0gc2Nyb2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCkKKyAgICBD
RlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5
c3RlbVVwdGltZV0gLSBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcDsKKyAgICBpZiAobV9s
YXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRhID49IHNjcm9sbFZlbG9jaXR5
WmVyb2luZ1RpbWVvdXQpCiAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgp
OwogCiAgICAgbV9pblNjcm9sbEdlc3R1cmUgPSBmYWxzZTsKQEAgLTExMzQsNiArMTE1Myw4IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c25hcFJ1YmJlckJhbmRUaW1lckZpcmVk
KFRpbWVyPFNjcm9sbEFuaW1hdG9yQ2hyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogCisgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5kaWRTdGFydFJ1YmJlckJh
bmQocm91bmRlZEludFNpemUobV9zdGFydFN0cmV0Y2gpKTsKKwogICAgICAgICAgICAgbV9vcmln
T3JpZ2luID0gKG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9u
KCkgKyBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxPcmlnaW4oKSkgLSBtX3N0YXJ0U3RyZXRjaDsK
ICAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5ID0gbV9tb21lbnR1bVZlbG9jaXR5OwogCkBAIC0x
MTg2LDcgKzEyMDcsNjkgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzbmFwUnVi
YmVyQmFuZFRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JDaHIKIH0KICNlbmRpZgogCit2
b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNldElzQWN0aXZlKCkKK3sKKyAgICBpZiAo
aXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgaWYgKG5lZWRzU2Ny
b2xsZXJTdHlsZVVwZGF0ZSgpKQorICAgICAgICAgICAgdXBkYXRlU2Nyb2xsZXJTdHlsZSgpOwor
ICAgIH0KK30KKwogI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKK3ZvaWQgU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6dXBkYXRlU2Nyb2xsZXJTdHlsZSgpCit7CisgICAgaWYgKCFzY3Jv
bGxhYmxlQXJlYSgpLT5pc09uQWN0aXZlUGFnZSgpKSB7CisgICAgICAgIHNldE5lZWRzU2Nyb2xs
ZXJTdHlsZVVwZGF0ZSh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMqIG1hY1RoZW1lID0gKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMqKVNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpOworICAgIGludCBuZXdTdHlsZSA9IHdr
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJTdHlsZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyLmdldCgpKTsKKworICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gc2Ny
b2xsYWJsZUFyZWEoKS0+dmVydGljYWxTY3JvbGxiYXIoKSkgeworICAgICAgICB2ZXJ0aWNhbFNj
cm9sbGJhci0+aW52YWxpZGF0ZSgpOworCisgICAgICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBv
bGRWZXJ0aWNhbFBhaW50ZXIgPSB3a1ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRyb2xs
ZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7CisgICAgICAgIFdLU2Nyb2xs
YmFyUGFpbnRlclJlZiBuZXdWZXJ0aWNhbFBhaW50ZXIgPSB3a01ha2VTY3JvbGxiYXJSZXBsYWNl
bWVudFBhaW50ZXIob2xkVmVydGljYWxQYWludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsK
KyAgICAgICAgbWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIodmVydGljYWxTY3Jv
bGxiYXIsIG5ld1ZlcnRpY2FsUGFpbnRlcik7CisgICAgICAgIHdrU2V0UGFpbnRlckZvclBhaW50
ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIG5ld1ZlcnRp
Y2FsUGFpbnRlciwgZmFsc2UpOworCisgICAgICAgIC8vIFRoZSBkaWZmZXJlbnQgc2Nyb2xsYmFy
IHN0eWxlcyBoYXZlIGRpZmZlcmVudCB0aGlja25lc3Nlcywgc28gd2UgbXVzdCByZS1zZXQgdGhl
IAorICAgICAgICAvLyBmcmFtZVJlY3QgdG8gdGhlIG5ldyB0aGlja25lc3MsIGFuZCB0aGUgcmUt
bGF5b3V0IGJlbG93IHdpbGwgZW5zdXJlIHRoZSBwb3NpdGlvbgorICAgICAgICAvLyBhbmQgbGVu
Z3RoIGFyZSBwcm9wZXJseSB1cGRhdGVkLgorICAgICAgICBpbnQgdGhpY2tuZXNzID0gbWFjVGhl
bWUtPnNjcm9sbGJhclRoaWNrbmVzcyh2ZXJ0aWNhbFNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7
CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCB0
aGlja25lc3MsIHRoaWNrbmVzcykpOworICAgIH0KKworICAgIGlmIChTY3JvbGxiYXIqIGhvcml6
b250YWxTY3JvbGxiYXIgPSBzY3JvbGxhYmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkp
IHsKKyAgICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOworCisgICAgICAg
IFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBvbGRIb3Jpem9udGFsUGFpbnRlciA9IHdrSG9yaXpvbnRh
bFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCkpOworICAgICAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgbmV3SG9yaXpvbnRhbFBh
aW50ZXIgPSB3a01ha2VTY3JvbGxiYXJSZXBsYWNlbWVudFBhaW50ZXIob2xkSG9yaXpvbnRhbFBh
aW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdHlsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXItPmNvbnRyb2xTaXplKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgbWFjVGhlbWUt
PnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9sbGJhciwgbmV3SG9yaXpv
bnRhbFBhaW50ZXIpOworICAgICAgICB3a1NldFBhaW50ZXJGb3JQYWludGVyQ29udHJvbGxlciht
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpLCBuZXdIb3Jpem9udGFsUGFpbnRlciwg
dHJ1ZSk7CisKKyAgICAgICAgLy8gVGhlIGRpZmZlcmVudCBzY3JvbGxiYXIgc3R5bGVzIGhhdmUg
ZGlmZmVyZW50IHRoaWNrbmVzc2VzLCBzbyB3ZSBtdXN0IHJlLXNldCB0aGUgCisgICAgICAgIC8v
IGZyYW1lUmVjdCB0byB0aGUgbmV3IHRoaWNrbmVzcywgYW5kIHRoZSByZS1sYXlvdXQgYmVsb3cg
d2lsbCBlbnN1cmUgdGhlIHBvc2l0aW9uCisgICAgICAgIC8vIGFuZCBsZW5ndGggYXJlIHByb3Bl
cmx5IHVwZGF0ZWQuCisgICAgICAgIGludCB0aGlja25lc3MgPSBtYWNUaGVtZS0+c2Nyb2xsYmFy
VGhpY2tuZXNzKGhvcml6b250YWxTY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOworICAgICAgICBo
b3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCB0aGlja25lc3Ms
IHRoaWNrbmVzcykpOworICAgIH0KKworICAgIC8vIElmIG5lZWRzU2Nyb2xsZXJTdHlsZVVwZGF0
ZSgpIGlzIHRydWUsIHRoZW4gdGhlIHBhZ2UgaXMgcmVzdG9yaW5nIGZyb20gdGhlIHBhZ2UgY2Fj
aGUsIGFuZCAKKyAgICAvLyBhIHJlbGF5b3V0IHdpbGwgaGFwcGVuIG9uIGl0cyBvd24uIE90aGVy
d2lzZSwgd2UgbXVzdCBpbml0aWF0ZSBhIHJlLWxheW91dCBvdXJzZWx2ZXMuCisgICAgaWYgKCFu
ZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUoKSkKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEoKS0+c2Ny
b2xsYmFyU3R5bGVDaGFuZ2VkKCk7CisKKyAgICBzZXROZWVkc1Njcm9sbGVyU3R5bGVVcGRhdGUo
ZmFsc2UpOworfQorCiB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnN0YXJ0U2Nyb2xs
YmFyUGFpbnRUaW1lcigpCiB7CiAgICAgbV9pbml0aWFsU2Nyb2xsYmFyUGFpbnRUaW1lci5zdGFy
dE9uZVNob3QoMC4xKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFj
LmgKaW5kZXggMDU3ZTJmN2JjZTBmMGVlODc5MGUzYTZhNjgzOWUzMGEzYWJmNzJiYy4uMzg2NTJl
NzkwOGMyNjVjNzgyZDkzNjk4YWE4ZDQ0OTJjZTkzZTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVt
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3Zl
cmxheVV0aWxpdGllc0Nocm9taXVtTWFjLmgKQEAgLTk1LDYgKzk1LDcgQEAgdm9pZCB3a1NldFNj
cm9sbGJhclBhaW50ZXJDb250cm9sbGVyU3R5bGUoV0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
clJlZiwgaW50IG4KIHZvaWQgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIoV0tTY3Jv
bGxiYXJQYWludGVyQ29udHJvbGxlclJlZiwgV0tTY3JvbGxiYXJQYWludGVyUmVmLCBib29sIGlz
SG9yaXpvbnRhbCk7CiBXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tWZXJ0aWNhbFNjcm9sbGJhclBh
aW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOwogV0tT
Y3JvbGxiYXJQYWludGVyUmVmIHdrSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9s
bGVyKFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWYpOworTlNTY3JvbGxlclN0eWxlIHdr
U2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJTdHlsZShXS1Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyUmVmKTsKIAogI2VuZGlmIC8vIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc0Nocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc0Nocm9taXVtTWFjLm1tCmluZGV4IDgxNmFiMzlmYjhh
MGI4OGFmZmQwZGY1MDVhYTU0Yzg5ZTFjZGIzOTYuLjI4YjM0YjU5MGZkNWI0M2YxYzRmNzBhMjBl
Y2NhYmFiNmQ3MjhmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21p
dW1NYWMubW0KQEAgLTIxMyw2ICsyMTMsMTEgQEAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHdrSG9y
aXpvbnRhbFNjcm9sbGJhclBhaW50ZXJGb3JDb250cm9sbGVyKFdLU2Nyb2xsYmFyUGFpbnQKICAg
ICByZXR1cm4gW2NvbnRyb2xsZXIgaG9yaXpvbnRhbFNjcm9sbGVySW1wXTsKIH0KIAorTlNTY3Jv
bGxlclN0eWxlIHdrU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJTdHlsZShXS1Njcm9sbGJhclBh
aW50ZXJDb250cm9sbGVyUmVmIGNvbnRyb2xsZXIpCit7CisgICAgcmV0dXJuIFtjb250cm9sbGVy
IHNjcm9sbGVyU3R5bGVdOworfQorCiBXS1Njcm9sbGJhclBhaW50ZXJSZWYgd2tNYWtlU2Nyb2xs
YmFyUmVwbGFjZW1lbnRQYWludGVyKFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBvbGRQYWludGVyLCBp
bnQgbmV3U3R5bGUsIGludCBjb250cm9sU2l6ZSwgYm9vbCBpc0hvcml6b250YWwpCiB7CiAgICAg
aWYgKCFpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>