<?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>84454</bug_id>
          
          <creation_ts>2012-04-20 08:18:20 -0700</creation_ts>
          <short_desc>[chromium] Add support for animation finished events.</short_desc>
          <delta_ts>2012-04-25 14:13: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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606581</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-04-20 08:18:20 -0700</bug_when>
    <thetext>These events are not currently used by anyone, but will be useful for wjmaclean@ shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606585</commentid>
    <comment_count>1</comment_count>
      <attachid>138097</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-20 08:23:43 -0700</bug_when>
    <thetext>Created attachment 138097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606592</commentid>
    <comment_count>2</comment_count>
      <attachid>138098</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-20 08:48:48 -0700</bug_when>
    <thetext>Created attachment 138098
Patch

Plumbs the animation finished event out through the layer animation delegate.
Adds a unit test to ensure that the notification is actually sent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606594</commentid>
    <comment_count>3</comment_count>
      <attachid>138098</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-04-20 08:51:20 -0700</bug_when>
    <thetext>Comment on attachment 138098
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=138098&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationDelegate.h:34
&gt; +    virtual void notifyAnimationFinished(double time) = 0;

LGTM. Thanks for adding this to the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609490</commentid>
    <comment_count>4</comment_count>
      <attachid>138098</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-24 23:32:26 -0700</bug_when>
    <thetext>Comment on attachment 138098
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=138098&amp;action=review

Solution seems a bit overboard for the problem as I understand it, and a few function names aren&apos;t clear. Could you provide a bit more background (the ChangeLogs being empty does not help)?  Gonna leave r? alone for now.

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:250
&gt; +    virtual void setAnimationEvent(const CCAnimationEvent&amp;, double wallClockTime);

what does it mean to &quot;set&quot; an event? there&apos;s no m_animationEvent member, so it&apos;s not clear what exactly this is supposed to do

&gt; Source/WebCore/platform/graphics/chromium/cc/CCAnimationEvents.h:38
&gt; +class CCAnimationEvent {

are we going to start having more animation types than started/finished? if it&apos;s just 2 types then i think having this virtual type system is way too much overhead - it&apos;d be better to just have different functions for started vs finished

or is the problem that we need to preserve relative order of started vs finished events in the queue? do these things have such an order?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.h:91
&gt; +    void notifyAnimationStarted(const CCAnimationEvent&amp;);

does this only take CCAnimationStartedEvent instances? if so, can you tighten the type up? if not, can you update the name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609912</commentid>
    <comment_count>5</comment_count>
      <attachid>138845</attachid>
    <who name="">vollick</who>
    <bug_when>2012-04-25 11:01:42 -0700</bug_when>
    <thetext>Created attachment 138845
Patch

(In reply to comment #4)
&gt; (From update of attachment 138098 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138098&amp;action=review
&gt;
&gt; Solution seems a bit overboard for the problem as I understand it, and a few function names aren&apos;t clear. Could you provide a bit more background (the ChangeLogs being empty does not help)?  Gonna leave r? alone for now.
It&apos;s true. We used to have animation finished events, but they were removed. It used to be the case that the animation events carried different information (the finished events had the final values), so I used virtual type system, but you&apos;re right -- that&apos;s way overboard now.

&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:250
&gt; &gt; +    virtual void setAnimationEvent(const CCAnimationEvent&amp;, double wallClockTime);
&gt;
&gt; what does it mean to &quot;set&quot; an event? there&apos;s no m_animationEvent member, so it&apos;s not clear what exactly this is supposed to do
Switched this to two functions, notifyAnimationStarted and notifyAnimationFinished, as you&apos;d suggested below.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCAnimationEvents.h:38
&gt; &gt; +class CCAnimationEvent {
&gt;
&gt; are we going to start having more animation types than started/finished? if it&apos;s just 2 types then i think having this virtual type system is way too much overhead - it&apos;d be better to just have different functions for started vs finished
Agreed. Got rid of the virtual type system, and changed the interface of LayerChromium to two functions rather than setAnimationEvents(...).
&gt;
&gt; or is the problem that we need to preserve relative order of started vs finished events in the queue? do these things have such an order?
Nope, the order doesn&apos;t matter.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.h:91
&gt; &gt; +    void notifyAnimationStarted(const CCAnimationEvent&amp;);
&gt;
&gt; does this only take CCAnimationStartedEvent instances? if so, can you tighten the type up? if not, can you update the name?
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610005</commentid>
    <comment_count>6</comment_count>
      <attachid>138845</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-25 13:31:39 -0700</bug_when>
    <thetext>Comment on attachment 138845
Patch

Cool, much better. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610034</commentid>
    <comment_count>7</comment_count>
      <attachid>138845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 14:12:54 -0700</bug_when>
    <thetext>Comment on attachment 138845
Patch

Clearing flags on attachment: 138845

Committed r115243: &lt;http://trac.webkit.org/changeset/115243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610035</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 14:13:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138097</attachid>
            <date>2012-04-20 08:23:43 -0700</date>
            <delta_ts>2012-04-20 08:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84454-20120420112341.patch</filename>
            <type>text/plain</type>
            <size>24485</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI5YzlhYThiZDNhOWYz
NzY5YjNmZGJlNjVmMDZiOWVlOWEwMDI0OS4uZTRmZGQ5NTBhNDM3OWYwNTcwZjFjZWQzMzNlNGI2
YjMzZDhjYTgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA0LTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IHN1cHBvcnQgZm9yIGFuaW1hdGlvbiBmaW5pc2hlZCBldmVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEFuaW1h
dGlvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZlQW5pbWF0aW9uOjpDQ0FjdGl2ZUFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6c2V0U3RhcnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgIChDQ0FjdGl2ZUFuaW1hdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVu
dHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NB
bmltYXRpb25FdmVudDo6Q0NBbmltYXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0Fu
aW1hdGlvbkV2ZW50Ojp+Q0NBbmltYXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0Fu
aW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6On5DQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OkNDQW5pbWF0
aW9uRmluaXNoZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVk
RXZlbnQ6On5DQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NB
bmltYXRpb25GaW5pc2hlZEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9u
RXZlbnQ6OmxheWVySWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25FdmVudDo6Z3Jv
dXBJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojp0YXJnZXRQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojptb25vdG9uaWNUaW1lKToK
KyAgICAgICAgKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAgKENDQW5pbWF0aW9u
RmluaXNoZWRFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JOZXh0VGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clRhcmdldEF2YWlsYWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAg
ICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKToKKwogMjAxMi0w
NC0xOCAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRm9s
bG93dXAgdG8gIkNhbGwgaW5jcmVtZW50U3RhdHNDb3VudGVyIGRpcmVjdGx5IgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA0NjkxOWU0ZDkzZTc0Yjc4YWMwNDM3ZjA4Njc4MDcxNDZmYjgx
MzQzLi5mMWNiZmNjY2NmYzY0ZjE0MWY2MzI4MjkyNzY0MjFkN2JjNWZmOTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTIwICBJYW4gVm9sbGlj
ayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBv
cnQgZm9yIGFuaW1hdGlvbiBmaW5pc2hlZCBldmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNC0xOCAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJv
bWl1bV0gUkVHUkVTU0lPTjogUG9wdXAgc2hyaW5rcyBiZWNhdXNlIG9mIGF1dG9jb21wbGV0ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDQ5YTcyMWMwNzBiYmIwOTZjN2JhYmM1NDY2ZDdhZDNlZDAzOTI2
M2UuLmFhYjMxMDlmOTg4NGI3NjJiYmNjZDQ3NGM5NmRmMTQzYjJjNTk2NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTM2MDIsNiArMzYwMiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZl
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0
aW9uRXZlbnRzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25FdmVudHMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDExMmIwM2FiZjBjMjk5NjEwZDE5MjdhMjIzNjU4OTRj
Nzc4ZDc2YTUuLjFkZWFmYzdiY2FkNDQ5MWJjNGQzODVkODUwNTg0OTZjZmE4ZTFkZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MzUsMTAgKzYzNSwxOCBAQCBib29sIExheWVyQ2hyb21p
dW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGF5ZXJBbmltYXRp
b25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKIH0KIAotdm9pZCBMYXllckNocm9t
aXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
JiBldmVudCwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCit2b2lkIExheWVyQ2hyb21pdW06OnNldEFu
aW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50LCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKLSAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChldmVudCk7Ci0gICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlB
bmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSgp
KSB7CisgICAgY2FzZSBDQ0FuaW1hdGlvbkV2ZW50OjpTdGFydGVkOgorICAgICAgICBtX2xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChldmVudCk7CisgICAg
ICAgIG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxs
Q2xvY2tUaW1lKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6
OkZpbmlzaGVkOgorICAgICAgICAvLyBEbyBub3RoaW5nLgorICAgICAgICBicmVhazsKKyAgICB9
CiB9CiAKIFJlZ2lvbiBMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNmU2MjI2MTc5NTBkNzhkZWZlZDY4NDQzMDhi
YjZkMTk2MzM3OGJmNy4uNjk4N2I0NGFkN2Y4YzgwZjI2MzMxYmEzODA3ZGUzMDg1OGZmZTcyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNTYsNyArNTYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0cnVjdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDsKK2NsYXNzIENDQW5pbWF0aW9u
RXZlbnQ7CiBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBub3RpZnlB
bmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50JiwgZG91YmxlIHdh
bGxDbG9ja1RpbWUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25FdmVudChjb25zdCBD
Q0FuaW1hdGlvbkV2ZW50JiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCiAgICAgdmlydHVhbCBS
ZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBY3RpdmVBbmltYXRpb24uY3BwCmluZGV4IDI2MGQ3ZDQ3ZTNiMzFiNjJmNTliMWRhODA2MGFj
ZDViNzg3MzcyYWMuLjRiMjEwMmRjYWZiZTY1ZjFkZWU3OTJhNDQyMmUwZWYxMGMzYzMwY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QWN0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgQ0NB
Y3RpdmVBbmltYXRpb246OkNDQWN0aXZlQW5pbWF0aW9uKFBhc3NPd25QdHI8Q0NBbmltYXRpb25D
dXJ2ZT4gY3VydmUsIGludCBhbmkKICAgICAsIG1faXRlcmF0aW9ucygxKQogICAgICwgbV9zdGFy
dFRpbWUoMCkKICAgICAsIG1fbmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoZmFsc2UpCisgICAg
LCBtX2hhc1NldFN0YXJ0VGltZShmYWxzZSkKICAgICAsIG1fcGF1c2VUaW1lKDApCiAgICAgLCBt
X3RvdGFsUGF1c2VkVGltZSgwKQogewpAQCAtNjQsNiArNjUsMTMgQEAgdm9pZCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6c2V0UnVuU3RhdGUoUnVuU3RhdGUgcnVuU3RhdGUsIGRvdWJsZSBub3cpCiAgICAg
bV9ydW5TdGF0ZSA9IHJ1blN0YXRlOwogfQogCit2b2lkIENDQWN0aXZlQW5pbWF0aW9uOjpzZXRT
dGFydFRpbWUoZG91YmxlIHRpbWUpCit7CisgICAgaWYgKG1fbmVlZHNTeW5jaHJvbml6ZWRTdGFy
dFRpbWUgfHwgIW1faGFzU2V0U3RhcnRUaW1lKQorICAgICAgICBtX3N0YXJ0VGltZSA9IHRpbWU7
CisgICAgbV9oYXNTZXRTdGFydFRpbWUgPSB0cnVlOworfQorCiBib29sIENDQWN0aXZlQW5pbWF0
aW9uOjppc0ZpbmlzaGVkQXQoZG91YmxlIHRpbWUpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVuU3Rh
dGUgPT0gRmluaXNoZWQgfHwgbV9ydW5TdGF0ZSA9PSBBYm9ydGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0
aXZlQW5pbWF0aW9uLmgKaW5kZXggNWRiODNhZjk1NjIxZjY1MGYzZGZjM2VlYzMxNGQ0OGRkYzk0
ZTRmNS4uZjgwMjUzZjk1N2MyZTU4ODQ2ZGRiNGE5OGFiNzY2NWUxZDc4ZDE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVB
bmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEl0ZXJhdGlvbnMoaW50IG4pIHsgbV9pdGVyYXRpb25zID0gbjsgfQogCiAgICAgZG91
YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9Ci0gICAgdm9pZCBz
ZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsg
fQorICAgIHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSk7CiAKICAgICBib29sIGlzRmluaXNoZWRB
dChkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9ydW5TdGF0ZSA9PSBGaW5pc2hlZCB8fCBtX3J1blN0YXRlID09IEFib3J0ZWQ7IH0KQEAg
LTEyNiw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKIAogICAg
IGJvb2wgbV9uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZTsKKyAgICBib29sIG1faGFzU2V0U3Rh
cnRUaW1lOwogCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgaW4gdHJpbVRpbWVUb0N1cnJlbnRJdGVy
YXRpb24gdG8gYWNjb3VudCBmb3IgdGltZQogICAgIC8vIHNwZW50IHdoaWxlIHBhdXNlZC4gVGhp
cyBpcyBub3QgaW5jbHVkZWQgaW4gQW5pbWF0aW9uU3RhdGUgc2luY2UgaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9u
RXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQW5pbWF0aW9uRXZlbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTVhZjljYWE1YzA5MTM2NzRjZTll
ODk0NWFmMDViZjhiMDAwZTQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwCkBAIC0wLDAg
KzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
ImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQ0NBbmltYXRpb25FdmVudDo6Q0NBbmltYXRpb25FdmVudChp
bnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eSB0YXJnZXRQcm9wZXJ0eSwgZG91YmxlIG1vbm90b25pY1RpbWUpCisgICAgOiBtX2xheWVySWQo
bGF5ZXJJZCkKKyAgICAsIG1fZ3JvdXBJZChncm91cElkKQorICAgICwgbV90YXJnZXRQcm9wZXJ0
eSh0YXJnZXRQcm9wZXJ0eSkKKyAgICAsIG1fbW9ub3RvbmljVGltZShtb25vdG9uaWNUaW1lKQor
eworfQorCitDQ0FuaW1hdGlvbkV2ZW50Ojp+Q0NBbmltYXRpb25FdmVudCgpCit7Cit9CisKK2Nv
bnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1hdGlv
blN0YXJ0ZWRFdmVudCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBTdGFydGVkKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqPih0
aGlzKTsKK30KKworY29uc3QgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2
ZW50Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb25zdAoreworICAgIEFTU0VSVCh0eXBl
KCkgPT0gRmluaXNoZWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0FuaW1hdGlv
bkZpbmlzaGVkRXZlbnQqPih0aGlzKTsKK30KKworUGFzc093blB0cjxDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudD4gQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJZCwgaW50
IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0
eSwgZG91YmxlIG1vbm90b25pY1RpbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudChsYXllcklkLCBncm91cElkLCB0YXJnZXRQcm9wZXJ0eSwgbW9u
b3RvbmljVGltZSkpOworfQorCitDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25T
dGFydGVkRXZlbnQoaW50IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAg
IDogQ0NBbmltYXRpb25FdmVudChsYXllcklkLCBncm91cElkLCB0YXJnZXRQcm9wZXJ0eSwgbW9u
b3RvbmljVGltZSkKK3sKK30KKworQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6On5DQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudCgpCit7Cit9CisKK0NDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQ6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBTdGFydGVkOworfQor
CitQYXNzT3duUHRyPENDQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gQ0NBbmltYXRpb25GaW5pc2hl
ZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGRvdWJsZSBtb25vdG9uaWNUaW1lKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KGxheWVy
SWQsIGdyb3VwSWQsIHRhcmdldFByb3BlcnR5LCBtb25vdG9uaWNUaW1lKSk7Cit9CisKK0NDQW5p
bWF0aW9uRmluaXNoZWRFdmVudDo6Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KGludCBsYXllcklk
LCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFBy
b3BlcnR5LCBkb3VibGUgbW9ub3RvbmljVGltZSkKKyAgICA6IENDQW5pbWF0aW9uRXZlbnQobGF5
ZXJJZCwgZ3JvdXBJZCwgdGFyZ2V0UHJvcGVydHksIG1vbm90b25pY1RpbWUpCit7Cit9CisKK0ND
QW5pbWF0aW9uRmluaXNoZWRFdmVudDo6fkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpCit7Cit9
CisKK0NDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Ojp0eXBl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmluaXNoZWQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCmluZGV4IGY0NjI4ZGU5ZWM1NmQx
M2NlYWVmZDg3NjRiZGQwMmQ2ODJhNzFjM2IuLmYyMmRhY2VmYjU4ZjEzMTgzODIzZWYzNmVlNzgw
MDFjYWM0NjdkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaApAQCAtMjcsMjYg
KzI3LDY3IEBACiAKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgogCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RydWN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50IHsKLSAgICBDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQsIENDQWN0aXZlQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZG91YmxlIG1vbm90b25pY1Rp
bWUpCi0gICAgICAgIDogbGF5ZXJJZChsYXllcklkKQotICAgICAgICAsIGdyb3VwSWQoZ3JvdXBJ
ZCkKLSAgICAgICAgLCB0YXJnZXRQcm9wZXJ0eSh0YXJnZXRQcm9wZXJ0eSkKLSAgICAgICAgLCBt
b25vdG9uaWNUaW1lKG1vbm90b25pY1RpbWUpCi0gICAgewotICAgIH0KLQotICAgIGludCBsYXll
cklkOwotICAgIGludCBncm91cElkOwotICAgIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9w
ZXJ0eSB0YXJnZXRQcm9wZXJ0eTsKLSAgICBkb3VibGUgbW9ub3RvbmljVGltZTsKK2NsYXNzIEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50OworY2xhc3MgQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Owor
CitjbGFzcyBDQ0FuaW1hdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeyBTdGFy
dGVkLCBGaW5pc2hlZCB9OworCisgICAgdmlydHVhbCB+Q0NBbmltYXRpb25FdmVudCgpOworCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBpbnQgbGF5ZXJJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQorICAgIGludCBncm91cElkKCkgY29uc3QgeyByZXR1
cm4gbV9ncm91cElkOyB9CisgICAgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRh
cmdldFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRQcm9wZXJ0eTsgfQorICAgIGRv
dWJsZSBtb25vdG9uaWNUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb25vdG9uaWNUaW1lOyB9CisK
KyAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogdG9BbmltYXRpb25TdGFydGVkRXZl
bnQoKSBjb25zdDsKKyAgICBjb25zdCBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQqIHRvQW5pbWF0
aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQ0NBbmltYXRpb25F
dmVudChpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQ
cm9wZXJ0eSwgZG91YmxlIG1vbm90b25pY1RpbWUpOworCitwcml2YXRlOgorICAgIGludCBtX2xh
eWVySWQ7CisgICAgaW50IG1fZ3JvdXBJZDsKKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHkgbV90YXJnZXRQcm9wZXJ0eTsKKyAgICBkb3VibGUgbV9tb25vdG9uaWNUaW1lOwor
fTsKKworLy8gSW5kaWNhdGVzIHRoYXQgYW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkIG9uIGEgcGFy
dGljdWxhciBsYXllci4KK2NsYXNzIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50IDogcHVibGljIEND
QW5pbWF0aW9uRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50PiBjcmVhdGUoaW50IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2
ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHksIGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKKworICAg
IHZpcnR1YWwgfkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGlu
dCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5
LCBkb3VibGUgbW9ub3RvbmljVGltZSk7Cit9OworCisvLyBJbmRpY2F0ZXMgdGhhdCBhbiBhbmlt
YXRpb24gaGFzIGNvbXBsZXRlZC4KK2NsYXNzIENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCA6IHB1
YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+IGNyZWF0ZShpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwgZG91YmxlIG1vbm90b25pY1RpbWUp
OworCisgICAgdmlydHVhbCB+Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KCk7CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIENDQW5pbWF0aW9uRmluaXNo
ZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJn
ZXRQcm9wZXJ0eSwgZG91YmxlIG1vbm90b25pY1RpbWUpOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yOwordHlwZWRl
ZiBWZWN0b3I8T3duUHRyPENDQW5pbWF0aW9uRXZlbnQ+ID4gQ0NBbmltYXRpb25FdmVudHNWZWN0
b3I7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDdmNWE5MjhlOGNlMTk5MGEzOWM2M2Zk
YTVjNGJiZGExN2RlOTNhOTAuLjc5Yjg5NGYyNTczNWM5NjA4Y2JlYzg4OTYzNmMzMTMxZjJlNzg3
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjph
bmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50cwogICAgIHN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkobW9ub3RvbmljVGltZSwgZXZl
bnRzKTsKICAgICByZXNvbHZlQ29uZmxpY3RzKG1vbm90b25pY1RpbWUpOwogICAgIHRpY2tBbmlt
YXRpb25zKG1vbm90b25pY1RpbWUpOwotICAgIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7Cisg
ICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKICAgICBz
dGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90b25pY1RpbWUs
IGV2ZW50cyk7CiB9CiAKQEAgLTIyMywxMyArMjIzLDEzIEBAIGJvb2wgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRhcmdl
dFByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
JiBldmVudCkKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQpCiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBldmVudC5ncm91cElkICYmIG1f
YWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBldmVudC50YXJnZXRQcm9w
ZXJ0eSkgeworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IGV2
ZW50Lmdyb3VwSWQoKSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkg
PT0gZXZlbnQudGFyZ2V0UHJvcGVydHkoKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7CiAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKGZh
bHNlKTsKLSAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKGV2
ZW50Lm1vbm90b25pY1RpbWUpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXRTdGFydFRpbWUoZXZlbnQubW9ub3RvbmljVGltZSgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2soZG91YmxlIG1v
bm90bwogICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKICAgICAgICAg
ICAgIGlmIChldmVudHMpCi0gICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3Jv
dXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25vdG9uaWNU
aW1lKSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91
cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1Rp
bWUpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1l
KGRvdWJsZSBtb25vdAogICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0
ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbW9ub3RvbmljVGltZSkgewogICAgICAgICAg
ICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6
UnVubmluZywgbW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICBpZiAoZXZlbnRzKQotICAgICAg
ICAgICAgICAgIGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xpZW50
LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+dGFyZ2V0UHJvcGVydHkoKSwgbW9ub3RvbmljVGltZSkpOworICAgICAgICAgICAgICAg
IGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQt
PmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3UKICAgICAgICAg
ICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0
aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgICAg
ICBpZiAoZXZlbnRzKQotICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1h
dGlvblN0YXJ0ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5n
cm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25p
Y1RpbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25T
dGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90
b25pY1RpbWUpKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBt
X2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0t
Pmdyb3VwKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tq
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUp
OwpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJl
c29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgfQogfQogCi12b2lkIEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpCit2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqIGV2ZW50cykKIHsKICAg
ICAvLyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKSBkZWNyZWFzZXMg
b3IgaSBpbmNyZW1lbnRzLAogICAgIC8vIGd1YXJhbnRlZWluZyBwcm9ncmVzcyB0b3dhcmRzIGxv
b3AgdGVybWluYXRpb24uCkBAIC0zNzksMTUgKzM3OSwxOSBAQCB2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGFsbEFuaW1zV2l0aFNhbWVJZEFyZUZpbmlzaGVkKSB7Ci0g
ICAgICAgICAgICAvLyBXZSBub3cgbmVlZCB0byByZW1vdmUgYWxsIGFuaW1hdGlvbnMgd2l0aCB0
aGUgc2FtZSBncm91cCBpZCBhcyBncm91cElkLgorICAgICAgICAgICAgLy8gV2Ugbm93IG5lZWQg
dG8gcmVtb3ZlIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgZ3JvdXAgaWQgYXMgZ3JvdXBJ
ZAorICAgICAgICAgICAgLy8gKGFuZCBzZW5kIGFsb25nIGFuaW1hdGlvbiBmaW5pc2hlZCBub3Rp
ZmljYXRpb25zLCBpZiBuZWNlc3NhcnkpLgogICAgICAgICAgICAgLy8gRWFjaCBpdGVyYXRpb24s
IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCkgZGVjcmVhc2VzIG9yIGogaW5jcmVtZW50cywKICAg
ICAgICAgICAgIC8vIGd1YXJhbnRlZWluZyBwcm9ncmVzcyB0b3dhcmRzIGxvb3AgdGVybWluYXRp
b24uIEFsc28sIHdlIGFyZSBndWFyYW50ZWVkCiAgICAgICAgICAgICAvLyB0byByZW1vdmUgYXQg
bGVhc3Qgb25lIGFjdGl2ZSBhbmltYXRpb24uCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
aTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7KSB7CiAgICAgICAgICAgICAgICAgaWYg
KGdyb3VwSWQgIT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKQogICAgICAgICAgICAg
ICAgICAgICBqKys7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50OjpjcmVhdGUobV9jbGll
bnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRp
b25zW2pdLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9ucy5yZW1vdmUoaik7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGkrKzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IGI5NjUyZDA4OTE3
MWM4YWIyYzcxYTY1ZjFhMDM2YzQ5ZDZjODQ3YzQuLjgzNTA3NDE4OWE2MmQ2ZTJhNGM4MTMxNTM2
ZTBkYTFhNjQxMDhmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGlzIGNh
bGxlZCBpbiByZXNwb25zZSB0byBhbiBhbmltYXRpb24gYmVpbmcgc3RhcnRlZCBvbiB0aGUgaW1w
bCB0aHJlYWQuIFRoaXMKICAgICAvLyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5n
IG1haW4gdGhyZWFkIGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUuCi0gICAgdm9pZCBub3RpZnlBbmlt
YXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Jik7CisgICAgdm9pZCBu
b3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmKTsKIAogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyQ2xpZW50Kik7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25p
Y1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlv
bnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvciopOwogICAgIHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUg
bW9ub3RvbmljVGltZSk7Ci0gICAgdm9pZCBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpOworICAg
IHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5p
bWF0aW9uRXZlbnRzVmVjdG9yKik7CiAKICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYzRh
Mzg1ZWI0NTY3MjU1MzA0NGNiZDI1ZDg1ZWQ0MjgzMzZmYTIwMi4uNjlkOWE5NWFiODcwMWRkYTIy
NThmYWIwZGE0NWVhMGY2N2RiZDlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CkBAIC02NzAsOCArNjcwLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2
ZW50c1JlY3Vyc2l2ZShjb25zdCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZm9yIChzaXplX3QgZXZlbnRJbmRleCA9IDA7IGV2ZW50SW5kZXggPCBldmVu
dHMuc2l6ZSgpOyArK2V2ZW50SW5kZXgpIHsKLSAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IGV2
ZW50c1tldmVudEluZGV4XS5sYXllcklkKQotICAgICAgICAgICAgbGF5ZXItPm5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoZXZlbnRzW2V2ZW50SW5kZXhdLCB3YWxsQ2xvY2tUaW1lKTsKKyAgICAgICAg
aWYgKGxheWVyLT5pZCgpID09IGV2ZW50c1tldmVudEluZGV4XS0+bGF5ZXJJZCgpKQorICAgICAg
ICAgICAgbGF5ZXItPnNldEFuaW1hdGlvbkV2ZW50KCpldmVudHNbZXZlbnRJbmRleF0sIHdhbGxD
bG9ja1RpbWUpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGls
ZEluZGV4IDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2NoaWxkSW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyVGVzdC5jcHAKaW5kZXggMTEzYjYzOWUzNmQ4MDkxYTE1OWUyMDA0NjNlMTdi
ZDU3NTFkZjQ2MS4uNjExYmNkY2Y2OGZlYjk5MWQ0NGY0MjEzMWRhNWMyZjA1MzJmNzUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcApAQCAtMTU4LDcgKzE1OCw4IEBAIFRFU1QoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBkb05vdFN5bmNGaW5pc2hlZEFuaW1hdGlvbikK
ICAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFi
aWxpdHksIGNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmlt
YXRpb246Ok9wYWNpdHkpLT5ydW5TdGF0ZSgpKTsKIAogICAgIC8vIE5vdGlmeSBtYWluIHRocmVh
ZCBjb250cm9sbGVyIHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4KLSAgICBjb250cm9s
bGVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KDAsIDAs
IENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAwKSk7CisgICAgT3duUHRyPENDQW5pbWF0aW9u
RXZlbnQ+IGFuaW1hdGlvblN0YXJ0ZWRFdmVudChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3Jl
YXRlKDAsIDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAwKSk7CisgICAgY29udHJvbGxl
ci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCgqYW5pbWF0aW9uU3RhcnRlZEV2ZW50KTsKIAogICAg
IC8vIEZvcmNlIGFuaW1hdGlvbiB0byBjb21wbGV0ZSBvbiBpbXBsIHRocmVhZC4KICAgICBjb250
cm9sbGVySW1wbC0+cmVtb3ZlQW5pbWF0aW9uKDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138098</attachid>
            <date>2012-04-20 08:48:48 -0700</date>
            <delta_ts>2012-04-25 11:01:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84454-20120420114847.patch</filename>
            <type>text/plain</type>
            <size>28660</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI5YzlhYThiZDNhOWYz
NzY5YjNmZGJlNjVmMDZiOWVlOWEwMDI0OS4uMTU1NmFlOWY1NDE0MzllNGRlMDBjMTBiNjEyMjZh
YTgyYzE0ZGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA0LTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IHN1cHBvcnQgZm9yIGFuaW1hdGlvbiBmaW5pc2hlZCBldmVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBpbiBDQ0xheWVyVHJlZUhvc3RU
ZXN0QW5pbWF0aW9uRmluaXNoZWRFdmVudHMKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEFuaW1hdGlvbkV2ZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDQWN0aXZlQW5pbWF0aW9uOjpDQ0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6c2V0U3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5p
bWF0aW9uLmg6CisgICAgICAgIChDQ0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25FdmVudDo6Q0NB
bmltYXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojp+Q0NB
bmltYXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojp0b0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50
Ojp0b0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRp
b25TdGFydGVkRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6On5DQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6dHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OkNDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6On5DQ0FuaW1hdGlv
bkZpbmlzaGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25GaW5pc2hlZEV2
ZW50Ojp0eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0FuaW1hdGlv
bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQW5pbWF0aW9uRXZlbnQ6OmxheWVySWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NBbmltYXRpb25FdmVudDo6Z3JvdXBJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojp0YXJnZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0FuaW1hdGlvbkV2ZW50Ojptb25vdG9uaWNUaW1lKToKKyAgICAgICAgKENDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50KToKKyAgICAgICAgKENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0
eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVyZ2VG
aW5pc2hlZEFuaW1hdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKToKKwogMjAxMi0wNC0xOCAgTWFyayBQaWxncmlt
ICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRm9sbG93dXAgdG8gIkNhbGwgaW5j
cmVtZW50U3RhdHNDb3VudGVyIGRpcmVjdGx5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA0NjkxOWU0ZDkzZTc0Yjc4YWMwNDM3ZjA4Njc4MDcxNDZmYjgxMzQzLi5mMWNiZmNjY2NmYzY0
ZjE0MWY2MzI4MjkyNzY0MjFkN2JjNWZmOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTA0LTIwICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgZm9yIGFuaW1hdGlvbiBm
aW5pc2hlZCBldmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NDQ1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNC0xOCAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUkVHUkVTU0lPTjog
UG9wdXAgc2hyaW5rcyBiZWNhdXNlIG9mIGF1dG9jb21wbGV0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDQ5YTcyMWMwNzBiYmIwOTZjN2JhYmM1NDY2ZDdhZDNlZDAzOTI2M2UuLmFhYjMxMDlmOTg4NGI3
NjJiYmNjZDQ3NGM5NmRmMTQzYjJjNTk2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM2MDIsNiAr
MzYwMiw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NB
Y3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVu
dHMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmNwcAppbmRleCA4NmViZjIzMzdkNDkxNzkzOWI4ODQzODhmOTE0NTYxNWIx
NGVhMTY1Li43ZGRlNDJlMTg3Yzk0N2NhYzg1YWQ4MTMxYmIzNGNmZTU5OTgwYTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAgICAgLy8gQmUg
c3VyZSB0byByZXNldCB0aGUgZGVsZWdhdGUsIGp1c3QgaW4gY2FzZS4KICAgICAgICAgbV90cmFu
c2Zvcm1MYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICB9Ci0gICAgCisK
ICAgICBHcmFwaGljc0xheWVyOjp3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIApAQCAtNzU3LDYgKzc1
NywxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChkb3VibGUgc3RhcnRUaW1lKQogICAgICAgICBtX2NsaWVudC0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh0aGlzLCBzdGFydFRpbWUpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlKQoreworICAgIC8vIERvIG5vdGhpbmcuCit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggZTllM2I4
NTIwMDE0NzMyZDRlMTE2MDBhYzAzODIyM2VjZWUwYWJjMi4uMTIxMDFkYmQ5MjU5NzcwM2QzNTdj
MDhhOWU2MzUzMzZiZDIzNDFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgK
QEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDQ0xheWVyQW5pbWF0aW9uRGVs
ZWdhdGUgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlv
bkZpbmlzaGVkKGRvdWJsZSBmaW5pc2hUaW1lKTsKIAogICAgIC8vIEV4cG9zZWQgZm9yIHRlc3Rz
LgogICAgIExheWVyQ2hyb21pdW0qIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTEyYjAzYWJm
MGMyOTk2MTBkMTkyN2EyMjM2NTg5NGM3NzhkNzZhNS4uMWYxMzAyMjUyOGMyNWUxMjE3ZWM0MWM0
OGM4ZWRkZTkxYzUwMzE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTYzNSwxMCArNjM1
LDE4IEBAIGJvb2wgTGF5ZXJDaHJvbWl1bTo6aGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigp
OwogfQogCi12b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQmIGV2ZW50LCBkb3VibGUgd2FsbENsb2NrVGltZSkKK3Zv
aWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVu
dCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewotICAgIG1fbGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKGV2ZW50KTsKLSAgICBtX2xheWVyQW5p
bWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGltZSk7Cisg
ICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6OlN0
YXJ0ZWQ6CisgICAgICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5ub3RpZnlBbmltYXRp
b25TdGFydGVkKGV2ZW50KTsKKyAgICAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3Rp
ZnlBbmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQ0NBbmltYXRpb25FdmVudDo6RmluaXNoZWQ6CisgICAgICAgIG1fbGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQod2FsbENsb2NrVGltZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIH0KIAogUmVnaW9uIExheWVyQ2hyb21pdW06OnZpc2libGVDb250
ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA2ZTYyMjYxNzk1
MGQ3OGRlZmVkNjg0NDMwOGJiNmQxOTYzMzc4YmY3Li42OTg3YjQ0YWQ3ZjhjODBmMjYzMzFiYTM4
MDdkZTMwODU4ZmZlNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01Niw3ICs1Niw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Owor
Y2xhc3MgQ0NBbmltYXRpb25FdmVudDsKIGNsYXNzIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZTsK
IGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwpAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3Q7CiAK
LSAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQmLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1h
dGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmLCBkb3VibGUgd2FsbENsb2NrVGltZSk7
CiAKICAgICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggMjYwZDdkNDdlM2Iz
MWI2MmY1OWIxZGE4MDYwYWNkNWI3ODczNzJhYy4uNGIyMTAyZGNhZmJlNjVmMWRlZTc5MmE0NDIy
ZTBlZjEwYzNjMzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcApAQCAt
NDYsNiArNDYsNyBAQCBDQ0FjdGl2ZUFuaW1hdGlvbjo6Q0NBY3RpdmVBbmltYXRpb24oUGFzc093
blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBjdXJ2ZSwgaW50IGFuaQogICAgICwgbV9pdGVyYXRpb25z
KDEpCiAgICAgLCBtX3N0YXJ0VGltZSgwKQogICAgICwgbV9uZWVkc1N5bmNocm9uaXplZFN0YXJ0
VGltZShmYWxzZSkKKyAgICAsIG1faGFzU2V0U3RhcnRUaW1lKGZhbHNlKQogICAgICwgbV9wYXVz
ZVRpbWUoMCkKICAgICAsIG1fdG90YWxQYXVzZWRUaW1lKDApCiB7CkBAIC02NCw2ICs2NSwxMyBA
QCB2b2lkIENDQWN0aXZlQW5pbWF0aW9uOjpzZXRSdW5TdGF0ZShSdW5TdGF0ZSBydW5TdGF0ZSwg
ZG91YmxlIG5vdykKICAgICBtX3J1blN0YXRlID0gcnVuU3RhdGU7CiB9CiAKK3ZvaWQgQ0NBY3Rp
dmVBbmltYXRpb246OnNldFN0YXJ0VGltZShkb3VibGUgdGltZSkKK3sKKyAgICBpZiAobV9uZWVk
c1N5bmNocm9uaXplZFN0YXJ0VGltZSB8fCAhbV9oYXNTZXRTdGFydFRpbWUpCisgICAgICAgIG1f
c3RhcnRUaW1lID0gdGltZTsKKyAgICBtX2hhc1NldFN0YXJ0VGltZSA9IHRydWU7Cit9CisKIGJv
b2wgQ0NBY3RpdmVBbmltYXRpb246OmlzRmluaXNoZWRBdChkb3VibGUgdGltZSkgY29uc3QKIHsK
ICAgICBpZiAobV9ydW5TdGF0ZSA9PSBGaW5pc2hlZCB8fCBtX3J1blN0YXRlID09IEFib3J0ZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaAppbmRleCA1ZGI4M2FmOTU2MjFmNjUwZjNk
ZmMzZWVjMzE0ZDQ4ZGRjOTRlNGY1Li5mODAyNTNmOTU3YzJlNTg4NDZkZGI0YTk4YWI3NjY1ZTFk
NzhkMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgKQEAgLTgxLDcgKzgxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SXRlcmF0aW9ucyhpbnQgbikgeyBtX2l0ZXJhdGlvbnMg
PSBuOyB9CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRp
bWU7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fc3RhcnRU
aW1lID0gc3RhcnRUaW1lOyB9CisgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlKTsKIAogICAg
IGJvb2wgaXNGaW5pc2hlZEF0KGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICBib29sIGlzRmluaXNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX3J1blN0YXRlID09IEZpbmlzaGVkIHx8IG1fcnVuU3RhdGUg
PT0gQWJvcnRlZDsgfQpAQCAtMTI2LDYgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1f
c3RhcnRUaW1lOwogCiAgICAgYm9vbCBtX25lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lOworICAg
IGJvb2wgbV9oYXNTZXRTdGFydFRpbWU7CiAKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0cmlt
VGltZVRvQ3VycmVudEl0ZXJhdGlvbiB0byBhY2NvdW50IGZvciB0aW1lCiAgICAgLy8gc3BlbnQg
d2hpbGUgcGF1c2VkLiBUaGlzIGlzIG5vdCBpbmNsdWRlZCBpbiBBbmltYXRpb25TdGF0ZSBzaW5j
ZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NWFm
OWNhYTVjMDkxMzY3NGNlOWU4OTQ1YWYwNWJmOGIwMDBlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2
ZW50cy5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIKKworI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ0FuaW1hdGlvbkV2ZW50OjpD
Q0FuaW1hdGlvbkV2ZW50KGludCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRp
b246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBkb3VibGUgbW9ub3RvbmljVGltZSkK
KyAgICA6IG1fbGF5ZXJJZChsYXllcklkKQorICAgICwgbV9ncm91cElkKGdyb3VwSWQpCisgICAg
LCBtX3RhcmdldFByb3BlcnR5KHRhcmdldFByb3BlcnR5KQorICAgICwgbV9tb25vdG9uaWNUaW1l
KG1vbm90b25pY1RpbWUpCit7Cit9CisKK0NDQW5pbWF0aW9uRXZlbnQ6On5DQ0FuaW1hdGlvbkV2
ZW50KCkKK3sKK30KKworY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqIENDQW5pbWF0aW9u
RXZlbnQ6OnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQodHlw
ZSgpID09IFN0YXJ0ZWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudCo+KHRoaXMpOworfQorCitjb25zdCBDQ0FuaW1hdGlvbkZpbmlzaGVkRXZl
bnQqIENDQW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKHR5cGUoKSA9PSBGaW5pc2hlZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENDQW5pbWF0aW9uRmluaXNoZWRFdmVudCo+KHRoaXMpOworfQorCitQYXNzT3duUHRy
PENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRl
KGludCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5IHRhcmdldFByb3BlcnR5LCBkb3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGxheWVySWQsIGdyb3VwSWQsIHRh
cmdldFByb3BlcnR5LCBtb25vdG9uaWNUaW1lKSk7Cit9CisKK0NDQW5pbWF0aW9uU3RhcnRlZEV2
ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQsIEND
QWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZG91YmxlIG1v
bm90b25pY1RpbWUpCisgICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQsIGdyb3VwSWQsIHRh
cmdldFByb3BlcnR5LCBtb25vdG9uaWNUaW1lKQoreworfQorCitDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudDo6fkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCkKK3sKK30KKworQ0NBbmltYXRpb25FdmVu
dDo6VHlwZSBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFN0YXJ0ZWQ7Cit9CisKK1Bhc3NPd25QdHI8Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50PiBD
Q0FuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZG91Ymxl
IG1vbm90b25pY1RpbWUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0FuaW1hdGlvbkZp
bmlzaGVkRXZlbnQobGF5ZXJJZCwgZ3JvdXBJZCwgdGFyZ2V0UHJvcGVydHksIG1vbm90b25pY1Rp
bWUpKTsKK30KKworQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50OjpDQ0FuaW1hdGlvbkZpbmlzaGVk
RXZlbnQoaW50IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIDogQ0NB
bmltYXRpb25FdmVudChsYXllcklkLCBncm91cElkLCB0YXJnZXRQcm9wZXJ0eSwgbW9ub3Rvbmlj
VGltZSkKK3sKK30KKworQ0NBbmltYXRpb25GaW5pc2hlZEV2ZW50Ojp+Q0NBbmltYXRpb25GaW5p
c2hlZEV2ZW50KCkKK3sKK30KKworQ0NBbmltYXRpb25FdmVudDo6VHlwZSBDQ0FuaW1hdGlvbkZp
bmlzaGVkRXZlbnQ6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBGaW5pc2hlZDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgKaW5k
ZXggZjQ2MjhkZTllYzU2ZDEzY2VhZWZkODc2NGJkZDAyZDY4MmE3MWMzYi4uZjIyZGFjZWZiNThm
MTMxODM4MjNlZjM2ZWU3ODAwMWNhYzQ2N2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2
ZW50cy5oCkBAIC0yNywyNiArMjcsNjcgQEAKIAogI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0
aW9uLmgiCiAKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQgewotICAgIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGludCBsYXllcklkLCBpbnQgZ3Jv
dXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBk
b3VibGUgbW9ub3RvbmljVGltZSkKLSAgICAgICAgOiBsYXllcklkKGxheWVySWQpCi0gICAgICAg
ICwgZ3JvdXBJZChncm91cElkKQotICAgICAgICAsIHRhcmdldFByb3BlcnR5KHRhcmdldFByb3Bl
cnR5KQotICAgICAgICAsIG1vbm90b25pY1RpbWUobW9ub3RvbmljVGltZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgaW50IGxheWVySWQ7Ci0gICAgaW50IGdyb3VwSWQ7Ci0gICAgQ0NBY3RpdmVBbmlt
YXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5OwotICAgIGRvdWJsZSBtb25vdG9u
aWNUaW1lOworY2xhc3MgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ7CitjbGFzcyBDQ0FuaW1hdGlv
bkZpbmlzaGVkRXZlbnQ7CisKK2NsYXNzIENDQW5pbWF0aW9uRXZlbnQgeworcHVibGljOgorICAg
IGVudW0gVHlwZSB7IFN0YXJ0ZWQsIEZpbmlzaGVkIH07CisKKyAgICB2aXJ0dWFsIH5DQ0FuaW1h
dGlvbkV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKKworICAg
IGludCBsYXllcklkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9CisgICAgaW50IGdyb3Vw
SWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbjo6
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFBy
b3BlcnR5OyB9CisgICAgZG91YmxlIG1vbm90b25pY1RpbWUoKSBjb25zdCB7IHJldHVybiBtX21v
bm90b25pY1RpbWU7IH0KKworICAgIGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiB0b0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCgpIGNvbnN0OworICAgIGNvbnN0IENDQW5pbWF0aW9uRmluaXNo
ZWRFdmVudCogdG9BbmltYXRpb25GaW5pc2hlZEV2ZW50KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoK
KyAgICBDQ0FuaW1hdGlvbkV2ZW50KGludCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVB
bmltYXRpb246OlRhcmdldFByb3BlcnR5LCBkb3VibGUgbW9ub3RvbmljVGltZSk7CisKK3ByaXZh
dGU6CisgICAgaW50IG1fbGF5ZXJJZDsKKyAgICBpbnQgbV9ncm91cElkOworICAgIENDQWN0aXZl
QW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSBtX3RhcmdldFByb3BlcnR5OworICAgIGRvdWJsZSBt
X21vbm90b25pY1RpbWU7Cit9OworCisvLyBJbmRpY2F0ZXMgdGhhdCBhbiBhbmltYXRpb24gaGFz
IHN0YXJ0ZWQgb24gYSBwYXJ0aWN1bGFyIGxheWVyLgorY2xhc3MgQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQgOiBwdWJsaWMgQ0NBbmltYXRpb25FdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IGNyZWF0ZShpbnQgbGF5ZXJJZCwgaW50
IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwgZG91YmxlIG1vbm90
b25pY1RpbWUpOworCisgICAgdmlydHVhbCB+Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoKTsKKwor
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6VGFyZ2V0UHJvcGVydHksIGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKK307CisKKy8vIEluZGlj
YXRlcyB0aGF0IGFuIGFuaW1hdGlvbiBoYXMgY29tcGxldGVkLgorY2xhc3MgQ0NBbmltYXRpb25G
aW5pc2hlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gY3JlYXRlKGludCBsYXll
cklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5LCBkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CisKKyAgICB2aXJ0dWFsIH5DQ0FuaW1hdGlvbkZpbmlzaGVkRXZl
bnQoKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
Q0NBbmltYXRpb25GaW5pc2hlZEV2ZW50KGludCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NBY3Rp
dmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5LCBkb3VibGUgbW9ub3RvbmljVGltZSk7CiB9Owog
Ci10eXBlZGVmIFZlY3RvcjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gQ0NBbmltYXRpb25FdmVu
dHNWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NBbmltYXRpb25FdmVudD4gPiBDQ0Fu
aW1hdGlvbkV2ZW50c1ZlY3RvcjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggN2Y1YTky
OGU4Y2UxOTkwYTM5YzYzZmRhNWM0YmJkYTE3ZGU5M2E5MC4uNzliODk0ZjI1NzM1Yzk2MDhjYmVj
ODg5NjM2YzMxMzFmMmU3ODdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9u
RXZlbnRzCiAgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSht
b25vdG9uaWNUaW1lLCBldmVudHMpOwogICAgIHJlc29sdmVDb25mbGljdHMobW9ub3RvbmljVGlt
ZSk7CiAgICAgdGlja0FuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7Ci0gICAgcHVyZ2VGaW5pc2hl
ZEFuaW1hdGlvbnMoKTsKKyAgICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1l
LCBldmVudHMpOwogICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxp
dHkobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKIH0KIApAQCAtMjIzLDEzICsyMjMsMTMgQEAgYm9v
bCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNBbmltYXRpbmdQcm9wZXJ0eShDQ0FjdGl2
ZUFuaW1hdGlvbjo6VGFyZ2V0UHIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmlt
YXRpb25TdGFydGVkRXZlbnQmIGV2ZW50KQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiBldmVudCkK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IGV2
ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpID09
IGV2ZW50LnRhcmdldFByb3BlcnR5KSB7CisgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJZCgpICYmIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
dGFyZ2V0UHJvcGVydHkoKSA9PSBldmVudC50YXJnZXRQcm9wZXJ0eSgpKSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGlt
ZSgpKTsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0TmVlZHNTeW5jaHJv
bml6ZWRTdGFydFRpbWUoZmFsc2UpOwotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5zZXRTdGFydFRpbWUoZXZlbnQubW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShldmVudC5tb25vdG9uaWNUaW1lKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JO
ZXh0VGljayhkb3VibGUgbW9ub3RvCiAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsK
ICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG1vbm90b25p
Y1RpbWUpOwogICAgICAgICAgICAgaWYgKGV2ZW50cykKLSAgICAgICAgICAgICAgICBldmVudHMt
PmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVB
bmltYXRpb25zW2ldLT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3Bl
cnR5KCksIG1vbm90b25pY1RpbWUpKTsKKyAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVy
dHkoKSwgbW9ub3RvbmljVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjkwLDcgKzI5
MCw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dh
aXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90CiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JTdGFy
dFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRpbWUoKSA8PSBtb25vdG9uaWNU
aW1lKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKEND
QWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgIGlm
IChldmVudHMpCi0gICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25TdGFy
dGVkRXZlbnQobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwg
bV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7
CisgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6
OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpLCBt
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1RpbWUpKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmls
aXR5KGRvdQogICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3Rh
dGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOwogICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWUp
OwogICAgICAgICAgICAgICAgIGlmIChldmVudHMpCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50
cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJv
cGVydHkoKSwgbW9ub3RvbmljVGltZSkpOworICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFw
cGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0
UHJvcGVydHkoKSwgbW9ub3RvbmljVGltZSkpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGogPSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraikgewogICAgICAg
ICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IG1fYWN0
aXZlQW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmlu
ZywgbW9ub3RvbmljVGltZSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3RvbmljVGltZSkKICAg
ICB9CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRB
bmltYXRpb25zKCkKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNo
ZWRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
ciogZXZlbnRzKQogewogICAgIC8vIEVhY2ggaXRlcmF0aW9uLCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpIGRlY3JlYXNlcyBvciBpIGluY3JlbWVudHMsCiAgICAgLy8gZ3VhcmFudGVlaW5nIHBy
b2dyZXNzIHRvd2FyZHMgbG9vcCB0ZXJtaW5hdGlvbi4KQEAgLTM3OSwxNSArMzc5LDE5IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRBbmltYXRpb25zKCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoYWxsQW5pbXNXaXRoU2FtZUlk
QXJlRmluaXNoZWQpIHsKLSAgICAgICAgICAgIC8vIFdlIG5vdyBuZWVkIHRvIHJlbW92ZSBhbGwg
YW5pbWF0aW9ucyB3aXRoIHRoZSBzYW1lIGdyb3VwIGlkIGFzIGdyb3VwSWQuCisgICAgICAgICAg
ICAvLyBXZSBub3cgbmVlZCB0byByZW1vdmUgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBn
cm91cCBpZCBhcyBncm91cElkCisgICAgICAgICAgICAvLyAoYW5kIHNlbmQgYWxvbmcgYW5pbWF0
aW9uIGZpbmlzaGVkIG5vdGlmaWNhdGlvbnMsIGlmIG5lY2Vzc2FyeSkuCiAgICAgICAgICAgICAv
LyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKSBkZWNyZWFzZXMgb3Ig
aiBpbmNyZW1lbnRzLAogICAgICAgICAgICAgLy8gZ3VhcmFudGVlaW5nIHByb2dyZXNzIHRvd2Fy
ZHMgbG9vcCB0ZXJtaW5hdGlvbi4gQWxzbywgd2UgYXJlIGd1YXJhbnRlZWQKICAgICAgICAgICAg
IC8vIHRvIHJlbW92ZSBhdCBsZWFzdCBvbmUgYWN0aXZlIGFuaW1hdGlvbi4KICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGogPSBpOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTspIHsKICAg
ICAgICAgICAgICAgICBpZiAoZ3JvdXBJZCAhPSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3Vw
KCkpCiAgICAgICAgICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChldmVudHMpCisgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvbkZpbmlzaGVkRXZl
bnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgp
LCBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1RpbWUp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zLnJlbW92ZShqKTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgaSsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgK
aW5kZXggYjk2NTJkMDg5MTcxYzhhYjJjNzFhNjVmMWEwMzZjNDlkNmM4NDdjNC4uODM1MDc0MTg5
YTYyZDZlMmE0YzgxMzE1MzZlMGRhMWE2NDEwOGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFRoaXMgaXMgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGFuIGFuaW1hdGlvbiBiZWluZyBz
dGFydGVkIG9uIHRoZSBpbXBsIHRocmVhZC4gVGhpcwogICAgIC8vIGZ1bmN0aW9uIHVwZGF0ZXMg
dGhlIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJlYWQgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZS4KLSAg
ICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZl
bnQmKTsKKyAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25F
dmVudCYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqKTsKQEAgLTEwMyw3ICsxMDMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGlt
ZShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2
b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91YmxlIG1v
bm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7CiAgICAgdm9pZCByZXNvbHZl
Q29uZmxpY3RzKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKLSAgICB2b2lkIHB1cmdlRmluaXNoZWRB
bmltYXRpb25zKCk7CisgICAgdm9pZCBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKIAogICAgIHZvaWQgdGlja0Fu
aW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25EZWxlZ2F0ZS5oCmluZGV4IDRjODhhOTIxMWVjNDA3M2JhN2E0OTYwMzQ3ZWMw
MWZiY2M4M2RkMzEuLjA2YjIxZDNkMWZjYmZlZjljNDRhNTdlMzJjZDBmYTU2N2ZhNzI3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oCkBAIC0zMSw2ICsz
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJBbmltYXRpb25EZWxlZ2F0
ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91
YmxlIHRpbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQo
ZG91YmxlIHRpbWUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGM0YTM4NWViNDU2NzI1NTMwNDRjYmQyNWQ4NWVk
NDI4MzM2ZmEyMDIuLjY5ZDlhOTVhYjg3MDFkZGEyMjU4ZmFiMGRhNDVlYTBmNjdkYmQ5ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNjcwLDggKzY3MCw4IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29uc3QgQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3ImCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoc2l6ZV90IGV2
ZW50SW5kZXggPSAwOyBldmVudEluZGV4IDwgZXZlbnRzLnNpemUoKTsgKytldmVudEluZGV4KSB7
Ci0gICAgICAgIGlmIChsYXllci0+aWQoKSA9PSBldmVudHNbZXZlbnRJbmRleF0ubGF5ZXJJZCkK
LSAgICAgICAgICAgIGxheWVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKGV2ZW50c1tldmVudElu
ZGV4XSwgd2FsbENsb2NrVGltZSk7CisgICAgICAgIGlmIChsYXllci0+aWQoKSA9PSBldmVudHNb
ZXZlbnRJbmRleF0tPmxheWVySWQoKSkKKyAgICAgICAgICAgIGxheWVyLT5zZXRBbmltYXRpb25F
dmVudCgqZXZlbnRzW2V2ZW50SW5kZXhdLCB3YWxsQ2xvY2tUaW1lKTsKICAgICB9CiAKICAgICBm
b3IgKHNpemVfdCBjaGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8IGxheWVyLT5jaGlsZHJlbigp
LnNpemUoKTsgKytjaGlsZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCmluZGV4
IDExM2I2MzllMzZkODA5MWExNTllMjAwNDYzZTE3YmQ1NzUxZGY0NjEuLjYxMWJjZGNmNjhmZWI5
OTFkNDRmNDIxMzFkYTVjMmYwNTMyZjc1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5j
cHAKQEAgLTE1OCw3ICsxNTgsOCBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVz
dCwgZG9Ob3RTeW5jRmluaXNoZWRBbmltYXRpb24pCiAgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5p
bWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5LCBjb250cm9sbGVySW1wbC0+Z2V0
QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+cnVuU3RhdGUo
KSk7CiAKICAgICAvLyBOb3RpZnkgbWFpbiB0aHJlYWQgY29udHJvbGxlciB0aGF0IHRoZSBhbmlt
YXRpb24gaGFzIHN0YXJ0ZWQuCi0gICAgY29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCgwLCAwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0
eSwgMCkpOworICAgIE93blB0cjxDQ0FuaW1hdGlvbkV2ZW50PiBhbmltYXRpb25TdGFydGVkRXZl
bnQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZSgwLCAwLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6T3BhY2l0eSwgMCkpOworICAgIGNvbnRyb2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
KmFuaW1hdGlvblN0YXJ0ZWRFdmVudCk7CiAKICAgICAvLyBGb3JjZSBhbmltYXRpb24gdG8gY29t
cGxldGUgb24gaW1wbCB0aHJlYWQuCiAgICAgY29udHJvbGxlckltcGwtPnJlbW92ZUFuaW1hdGlv
bigwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCmluZGV4IDg5YjNkZTI3MTllMTcxMTU5ZTAxZjA5ZGJlYmU0Y2Q5MmEyMmUy
NGMuLmU4ZGUwNjJlYzQzZmZlODZlZDQ3OWRhOGZmM2I0MzY0YzkxMWRjZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApA
QCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBDQ0xh
eWVyQW5pbWF0aW9uRGVsZWdhdGUKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChkb3VibGUgdGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZp
bmlzaGVkKGRvdWJsZSB0aW1lKSB7IH0KIH07CiAKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhvc3RJ
bXBsIGZvciB0ZXN0LiBSdW5zIHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3QgaG9va3MuCkBA
IC0xMDY0LDYgKzEwNjUsMTEgQEAgcHVibGljOgogICAgIH0KIH07CiAKK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0RG9Ob3RTa2lwTGF5ZXJzV2l0aEFuaW1hdGVkT3BhY2l0eSwgcnVuTXVsdGlU
aHJlYWQpCit7CisgICAgcnVuVGVzdFRocmVhZGVkKCk7Cit9CisKIC8vIEVuc3VyZXMgdGhhdCBt
YWluIHRocmVhZCBhbmltYXRpb25zIGhhdmUgdGhlaXIgc3RhcnQgdGltZXMgc3luY2hyb25pemVk
IHdpdGggaW1wbCB0aHJlYWQgYW5pbWF0aW9ucy4KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RT
eW5jaHJvbml6ZUFuaW1hdGlvblN0YXJ0VGltZXMgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVz
dFRocmVhZE9ubHkgewogcHVibGljOgpAQCAtMTExMCw3ICsxMTE2LDMxIEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzLCBydW5NdWx0aVRo
cmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAotVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3REb05vdFNraXBMYXllcnNXaXRoQW5pbWF0ZWRPcGFjaXR5LCBydW5NdWx0aVRocmVhZCkK
Ky8vIEVuc3VyZXMgdGhhdCBtYWluIHRocmVhZCBhbmltYXRpb25zIGhhdmUgdGhlaXIgc3RhcnQg
dGltZXMgc3luY2hyb25pemVkIHdpdGggaW1wbCB0aHJlYWQgYW5pbWF0aW9ucy4KK2NsYXNzIEND
TGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50cyA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0VGhyZWFkT25seSB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVz
dEFuaW1hdGlvbkZpbmlzaGVkRXZlbnRzKCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRv
TWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25G
aW5pc2hlZChkb3VibGUgdGltZSkKKyAgICB7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgor
fTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50cywg
cnVuTXVsdGlUaHJlYWQpCiB7CiAgICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138845</attachid>
            <date>2012-04-25 11:01:42 -0700</date>
            <delta_ts>2012-04-25 14:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84454-20120425140141.patch</filename>
            <type>text/plain</type>
            <size>20192</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ4OTBhNTg3YWE5MTRi
NDI3ZmRjMzZmYWIzOWRkNmM4Njg0Y2ZjNy4uM2RjMjEwNDBjMTQ1OTZjZTYyNTc1NDhkYTdjOGY5
NWI0YTRhMjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA0LTI1ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRk
IHN1cHBvcnQgZm9yIGFuaW1hdGlvbiBmaW5pc2hlZCBldmVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RlZCBpbiBDQ0xheWVyVHJlZUhvc3RU
ZXN0QW5pbWF0aW9uRmluaXNoZWRFdmVudHMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpu
b3RpZnlBbmltYXRpb25GaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0FuaW1hdGlvbkV2ZW50OjpDQ0FuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKENDQW5pbWF0aW9u
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5p
bWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmg6
CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2ZSk6CisKKzIw
MTItMDQtMjUgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
W2Nocm9taXVtXSBEbyBub3QgY2xvYmJlciBzeW5jaHJvbml6ZWQgc3RhcnQgdGltZXMuCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDYwNQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUyZmJiYjUyNmNiOTgyM2ZhZWFjOWRlODI4YWNhM2M3
ZmZhMzMyN2EuLjFjNmQ2ZmU0M2Y0MTY2ZTY3ZjE0YjFiMmEzZTc1ZGJjOGIyNjdkODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTItMDQtMjUgIElhbiBW
b2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBBZGQg
c3VwcG9ydCBmb3IgYW5pbWF0aW9uIGZpbmlzaGVkIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpUZXN0SG9va3M6
Om5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0QW5pbWF0aW9uRmluaXNoZWRF
dmVudHMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QW5pbWF0aW9uRmluaXNo
ZWRFdmVudHM6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50cyk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50czo6
YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFuaW1hdGlvbkZp
bmlzaGVkRXZlbnRzOjpub3RpZnlBbmltYXRpb25GaW5pc2hlZCk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50czo6YWZ0ZXJUZXN0KToKKwor
MjAxMi0wNC0yNSAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIERvIG5vdCBjbG9iYmVyIHN5bmNocm9uaXplZCBzdGFydCB0aW1lcy4KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjA1CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg2ZWJmMjMzN2Q0OTE3OTM5
Yjg4NDM4OGY5MTQ1NjE1YjE0ZWExNjUuLjdkZGU0MmUxODdjOTQ3Y2FjODVhZDgxMzFiYjM0Y2Zl
NTk5ODBhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp3aWxsQmVEZXN0cm95ZWQo
KQogICAgICAgICAvLyBCZSBzdXJlIHRvIHJlc2V0IHRoZSBkZWxlZ2F0ZSwganVzdCBpbiBjYXNl
LgogICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDAp
OwogICAgIH0KLSAgICAKKwogICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZCgpOwog
fQogCkBAIC03NTcsNiArNzU3LDExIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpCiAgICAgICAgIG1fY2xpZW50LT5u
b3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIHN0YXJ0VGltZSk7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUpCit7CisgICAg
Ly8gRG8gbm90aGluZy4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21p
dW0uaAppbmRleCAyMTgxODM0NjIwNWU2ODM0N2ExMzI0MzZiOGVkYWNkMWNmN2UxYjIzLi44ODMz
NTVmZjk1ODViYmJiY2Y3NDM0NTQyODAxZDk1YzU5NmY0YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEND
TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1lKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIGZpbmlzaFRpbWUpOwogCiAgICAgLy8g
RXhwb3NlZCBmb3IgdGVzdHMuCiAgICAgTGF5ZXJDaHJvbWl1bSogY29udGVudHNMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAppbmRleCBmNzQ5MTc2NTAxMmQzMWY1MzAxZTNjYTFiNGNiNzliM2M0NmNlNzI4Li4xODA0MDRm
ODIxZmM1YjI2M2NjYWMyYTgzZWM0YTkwMDY1OTdkZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cApAQCAtNjQ0LDEyICs2NDQsMTcgQEAgYm9vbCBMYXllckNocm9taXVtOjpoYXNBY3RpdmVBbmlt
YXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+aGFz
QWN0aXZlQW5pbWF0aW9uKCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCYgZXZlbnQsIGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKQordm9pZCBMYXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVk
KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50LCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsK
ICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChl
dmVudCk7CiAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHdhbGxDbG9ja1RpbWUpOwogfQogCit2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1h
dGlvbkZpbmlzaGVkKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQoreworICAgIG1fbGF5ZXJBbmltYXRp
b25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uRmluaXNoZWQod2FsbENsb2NrVGltZSk7Cit9CisK
IFJlZ2lvbiBMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0
CiB7CiAgICAgaWYgKG9wYXF1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRkOTMwMDcwYWVk
NWIzMmU1ZGQ4OGFjZDQyZmJlOTQ2NTk4NDNhN2MuLjU5NjNkNTUxMTY5ZDE2Mzk0MWNmNmU3MWJl
NGQwNWE0OWFmNTExOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTU2LDcgKzU2LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ7Citj
bGFzcyBDQ0FuaW1hdGlvbkV2ZW50OwogY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlOwog
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CkBAIC0yNTIsNyArMjUy
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBjb25zdDsKIAot
ICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRF
dmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5p
bWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiwgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgd2Fs
bENsb2NrVGltZSk7CiAKICAgICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJl
Z2lvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaAppbmRleCBmNDYy
OGRlOWVjNTZkMTNjZWFlZmQ4NzY0YmRkMDJkNjgyYTcxYzNiLi5lZjgwMTE3MzZkNGE3YmViMzA2
MjBlYTcxNTY4YWFmNGZlNTIwMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgK
QEAgLTI3LDI2ICsyNywzMSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmltYXRpb24uaCIK
IAorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCB7
Ci0gICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGludCBncm91cElkLCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGRvdWJsZSBt
b25vdG9uaWNUaW1lKQotICAgICAgICA6IGxheWVySWQobGF5ZXJJZCkKK3N0cnVjdCBDQ0FuaW1h
dGlvbkV2ZW50IHsKKyAgICBlbnVtIFR5cGUgeyBTdGFydGVkLCBGaW5pc2hlZCB9OworCisgICAg
Q0NBbmltYXRpb25FdmVudChUeXBlIHR5cGUsIGludCBsYXllcklkLCBpbnQgZ3JvdXBJZCwgQ0NB
Y3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBkb3VibGUgbW9u
b3RvbmljVGltZSkKKyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgbGF5ZXJJZChsYXll
cklkKQogICAgICAgICAsIGdyb3VwSWQoZ3JvdXBJZCkKICAgICAgICAgLCB0YXJnZXRQcm9wZXJ0
eSh0YXJnZXRQcm9wZXJ0eSkKICAgICAgICAgLCBtb25vdG9uaWNUaW1lKG1vbm90b25pY1RpbWUp
CiAgICAgewogICAgIH0KIAorICAgIFR5cGUgdHlwZTsKICAgICBpbnQgbGF5ZXJJZDsKICAgICBp
bnQgZ3JvdXBJZDsKICAgICBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0
UHJvcGVydHk7CiAgICAgZG91YmxlIG1vbm90b25pY1RpbWU7CiB9OwogCi10eXBlZGVmIFZlY3Rv
cjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gQ0NBbmltYXRpb25FdmVudHNWZWN0b3I7Cit0eXBl
ZGVmIFZlY3RvcjxDQ0FuaW1hdGlvbkV2ZW50PiBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvcjsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggODE5MTlmMGU1MjViNjdjZWM5ODFmNGU2OWVkNGU3
MzI3ZmZhNmVmNS4uNDNmZGEwOTc4OTlhMGQyMmI3NGViZmFkMTdmODc5YWYzN2M5MDY2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTg4LDcgKzE4OCw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUo
ZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzCiAgICAgc3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBldmVudHMpOwog
ICAgIHJlc29sdmVDb25mbGljdHMobW9ub3RvbmljVGltZSk7CiAgICAgdGlja0FuaW1hdGlvbnMo
bW9ub3RvbmljVGltZSk7Ci0gICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoKTsKKyAgICBwdXJn
ZUZpbmlzaGVkQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lLCBldmVudHMpOwogICAgIHN0YXJ0QW5p
bWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkobW9ub3RvbmljVGltZSwgZXZlbnRz
KTsKIH0KIApAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50JiBldmVudCkK
K3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
Y29uc3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBldmVudC5ncm91cElkICYmIG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBldmVudC50YXJnZXRQcm9wZXJ0eSkgewpA
QCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUgbW9ub3RvCiAgICAgICAgICAgICBp
ZiAoIW1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aGFzU2V0U3RhcnRUaW1lKCkpCiAgICAgICAgICAg
ICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7
CiAgICAgICAgICAgICBpZiAoZXZlbnRzKQotICAgICAgICAgICAgICAgIGV2ZW50cy0+YXBwZW5k
KENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSwg
bW9ub3RvbmljVGltZSkpOworICAgICAgICAgICAgICAgIGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0
aW9uRXZlbnQoQ0NBbmltYXRpb25FdmVudDo6U3RhcnRlZCwgbV9jbGllbnQtPmlkKCksIG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQ
cm9wZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3QKICAgICAgICAgaWYgKG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0Zv
clN0YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGltZSgpIDw9IG1vbm90
b25pY1RpbWUpIHsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3Rh
dGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOwogICAgICAgICAg
ICAgaWYgKGV2ZW50cykKLSAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91
cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1Rp
bWUpKTsKKyAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvbkV2ZW50KEND
QW5pbWF0aW9uRXZlbnQ6OlN0YXJ0ZWQsIG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSwg
bW9ub3RvbmljVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMzMwLDcgKzMzMCw3IEBA
IHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdG
b3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91CiAgICAgICAgICAgICAgICAgaWYgKCFtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPmhhc1NldFN0YXJ0VGltZSgpKQogICAgICAgICAgICAgICAgICAgICBtX2Fj
dGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsKICAgICAgICAg
ICAgICAgICBpZiAoZXZlbnRzKQotICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1v
bm90b25pY1RpbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmlt
YXRpb25FdmVudChDQ0FuaW1hdGlvbkV2ZW50OjpTdGFydGVkLCBtX2NsaWVudC0+aWQoKSwgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdl
dFByb3BlcnR5KCksIG1vbm90b25pY1RpbWUpKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2opIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBtX2Fj
dGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5p
bmcsIG1vbm90b25pY1RpbWUpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OnJlc29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAg
ICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVk
QW5pbWF0aW9ucygpCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlz
aGVkQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0
b3IqIGV2ZW50cykKIHsKICAgICAvLyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25z
LnNpemUoKSBkZWNyZWFzZXMgb3IgaSBpbmNyZW1lbnRzLAogICAgIC8vIGd1YXJhbnRlZWluZyBw
cm9ncmVzcyB0b3dhcmRzIGxvb3AgdGVybWluYXRpb24uCkBAIC0zODIsMTUgKzM4MiwxOSBAQCB2
b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGFsbEFuaW1zV2l0aFNhbWVJ
ZEFyZUZpbmlzaGVkKSB7Ci0gICAgICAgICAgICAvLyBXZSBub3cgbmVlZCB0byByZW1vdmUgYWxs
IGFuaW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBncm91cCBpZCBhcyBncm91cElkLgorICAgICAgICAg
ICAgLy8gV2Ugbm93IG5lZWQgdG8gcmVtb3ZlIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUg
Z3JvdXAgaWQgYXMgZ3JvdXBJZAorICAgICAgICAgICAgLy8gKGFuZCBzZW5kIGFsb25nIGFuaW1h
dGlvbiBmaW5pc2hlZCBub3RpZmljYXRpb25zLCBpZiBuZWNlc3NhcnkpLgogICAgICAgICAgICAg
Ly8gRWFjaCBpdGVyYXRpb24sIG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCkgZGVjcmVhc2VzIG9y
IGogaW5jcmVtZW50cywKICAgICAgICAgICAgIC8vIGd1YXJhbnRlZWluZyBwcm9ncmVzcyB0b3dh
cmRzIGxvb3AgdGVybWluYXRpb24uIEFsc28sIHdlIGFyZSBndWFyYW50ZWVkCiAgICAgICAgICAg
ICAvLyB0byByZW1vdmUgYXQgbGVhc3Qgb25lIGFjdGl2ZSBhbmltYXRpb24uCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBqID0gaTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGdyb3VwSWQgIT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91
cCgpKQogICAgICAgICAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25FdmVudChDQ0Fu
aW1hdGlvbkV2ZW50OjpGaW5pc2hlZCwgbV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9u
c1tqXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2pdLT50YXJnZXRQcm9wZXJ0eSgpLCBt
b25vdG9uaWNUaW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9ucy5y
ZW1vdmUoaik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIGkrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlci5oCmluZGV4IGI5NjUyZDA4OTE3MWM4YWIyYzcxYTY1ZjFhMDM2YzQ5ZDZjODQ3
YzQuLjgzNTA3NDE4OWE2MmQ2ZTJhNGM4MTMxNTM2ZTBkYTFhNjQxMDhmMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBpbiByZXNwb25zZSB0byBhbiBhbmlt
YXRpb24gYmVpbmcgc3RhcnRlZCBvbiB0aGUgaW1wbCB0aHJlYWQuIFRoaXMKICAgICAvLyBmdW5j
dGlvbiB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIG1haW4gdGhyZWFkIGFuaW1hdGlvbidzIHN0
YXJ0IHRpbWUuCi0gICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50Jik7CisgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0
IENDQW5pbWF0aW9uRXZlbnQmKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50Kik7CkBA
IC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uc1dhaXRp
bmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVj
dG9yKik7CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmls
aXR5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwogICAg
IHZvaWQgcmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3RvbmljVGltZSk7Ci0gICAgdm9pZCBw
dXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpOworICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlv
bnMoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7CiAKICAg
ICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFu
aW1hdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaAppbmRleCA0Yzg4YTkyMTFlYzQwNzNi
YTdhNDk2MDM0N2VjMDFmYmNjODNkZDMxLi4wNmIyMWQzZDFmY2JmZWY5YzQ0YTU3ZTMyY2QwZmE1
NjdmYTcyNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGUu
aApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVyQW5p
bWF0aW9uRGVsZWdhdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRp
b25TdGFydGVkKGRvdWJsZSB0aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1h
dGlvbkZpbmlzaGVkKGRvdWJsZSB0aW1lKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA1OGU1YWRkZDRmZDg2ZWM4
YzczZTUzOTNlNGNmYTBkMjZmM2RhMDA0Li5iNjQ1ZjJiYzcxNzUwNzk5ZTJkNjIxMGIyNDJiZDlk
ZTJlM2YwZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTcwMCw4ICs3
MDAsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50c1JlY3Vyc2l2
ZShjb25zdCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChzaXplX3QgZXZlbnRJbmRleCA9IDA7IGV2ZW50SW5kZXggPCBldmVudHMuc2l6ZSgpOyAr
K2V2ZW50SW5kZXgpIHsKLSAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IGV2ZW50c1tldmVudElu
ZGV4XS5sYXllcklkKQotICAgICAgICAgICAgbGF5ZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
ZXZlbnRzW2V2ZW50SW5kZXhdLCB3YWxsQ2xvY2tUaW1lKTsKKyAgICAgICAgaWYgKGxheWVyLT5p
ZCgpID09IGV2ZW50c1tldmVudEluZGV4XS5sYXllcklkKSB7CisgICAgICAgICAgICBpZiAoZXZl
bnRzW2V2ZW50SW5kZXhdLnR5cGUgPT0gQ0NBbmltYXRpb25FdmVudDo6U3RhcnRlZCkKKyAgICAg
ICAgICAgICAgICBsYXllci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChldmVudHNbZXZlbnRJbmRl
eF0sIHdhbGxDbG9ja1RpbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxh
eWVyLT5ub3RpZnlBbmltYXRpb25GaW5pc2hlZCh3YWxsQ2xvY2tUaW1lKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwgbGF5
ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2NoaWxkSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
VGVzdC5jcHAKaW5kZXggNWQ4Njg1Yjc5ODA1NGQwZDRmMjg4YjhhMTIxNjhhMzAxOGI4MmEyOC4u
N2NiMzk1M2RjZWUxNmQyYWY2NTdhYWE1YjJmMzA4MTg4NzZkN2QzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJUZXN0LmNwcApAQCAtMjE2LDcgKzIxNiw4IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJUZXN0LCBkb05vdFN5bmNGaW5pc2hlZEFuaW1hdGlvbikKICAgICBFWFBFQ1Rf
RVEoQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIGNvbnRy
b2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHkpLT5ydW5TdGF0ZSgpKTsKIAogICAgIC8vIE5vdGlmeSBtYWluIHRocmVhZCBjb250cm9sbGVy
IHRoYXQgdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4KLSAgICBjb250cm9sbGVyLT5ub3RpZnlB
bmltYXRpb25TdGFydGVkKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KDAsIDAsIENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5LCAwKSk7CisgICAgQ0NBbmltYXRpb25FdmVudCBhbmltYXRpb25TdGFy
dGVkRXZlbnQoQ0NBbmltYXRpb25FdmVudDo6U3RhcnRlZCwgMCwgMCwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHksIDApOworICAgIGNvbnRyb2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
YW5pbWF0aW9uU3RhcnRlZEV2ZW50KTsKIAogICAgIC8vIEZvcmNlIGFuaW1hdGlvbiB0byBjb21w
bGV0ZSBvbiBpbXBsIHRocmVhZC4KICAgICBjb250cm9sbGVySW1wbC0+cmVtb3ZlQW5pbWF0aW9u
KDApOwpAQCAtMjcyLDcgKzI3Myw3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJU
ZXN0LCBBbmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZURvTm90RmluaXNoSWZUCiAgICAgRVhQ
RUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7CiAKICAgICAvLyBTZW5kIHRoZSBzeW5jaHJvbml6
ZWQgc3RhcnQgdGltZS4KLSAgICBjb250cm9sbGVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50KDAsIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCAy
KSk7CisgICAgY29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChDQ0FuaW1hdGlvbkV2
ZW50KENDQW5pbWF0aW9uRXZlbnQ6OlN0YXJ0ZWQsIDAsIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5LCAyKSk7CiAgICAgY29udHJvbGxlci0+YW5pbWF0ZSg1LCBldmVudHMuZ2V0KCkpOwog
ICAgIEVYUEVDVF9FUSgxLCBkdW1teS5vcGFjaXR5KCkpOwogICAgIEVYUEVDVF9GQUxTRShjb250
cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBlMTY3NmM0ZjhkZjIw
YTliMTc5ZTExZjU5OWQ0OGI0ODM5ZGExMTU2Li4wOTcwMzZhNzRjZGFmNDY0YTJkMzZkOTE1MTEy
NzQwNzM5NWViZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gSW1wbGVtZW50YXRpb24gb2YgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlCiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHRpbWUpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgdGltZSkgeyB9CiB9OwogCiAv
LyBBZGFwdHMgQ0NMYXllclRyZWVIb3N0SW1wbCBmb3IgdGVzdC4gUnVucyByZWFsIGNvZGUsIHRo
ZW4gaW52b2tlcyB0ZXN0IGhvb2tzLgpAQCAtMTA2NSw2ICsxMDY2LDExIEBAIHB1YmxpYzoKICAg
ICB9CiB9OwogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdERvTm90U2tpcExheWVyc1dpdGhB
bmltYXRlZE9wYWNpdHksIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgp
OworfQorCiAvLyBFbnN1cmVzIHRoYXQgbWFpbiB0aHJlYWQgYW5pbWF0aW9ucyBoYXZlIHRoZWly
IHN0YXJ0IHRpbWVzIHN5bmNocm9uaXplZCB3aXRoIGltcGwgdGhyZWFkIGFuaW1hdGlvbnMuCiBj
bGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKIHB1YmxpYzoKQEAgLTExMTEs
NyArMTExNywzMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFN5bmNocm9uaXplQW5pbWF0
aW9uU3RhcnRUaW1lcywgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9
CiAKLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0RG9Ob3RTa2lwTGF5ZXJzV2l0aEFuaW1hdGVk
T3BhY2l0eSwgcnVuTXVsdGlUaHJlYWQpCisvLyBFbnN1cmVzIHRoYXQgbWFpbiB0aHJlYWQgYW5p
bWF0aW9ucyBoYXZlIHRoZWlyIHN0YXJ0IHRpbWVzIHN5bmNocm9uaXplZCB3aXRoIGltcGwgdGhy
ZWFkIGFuaW1hdGlvbnMuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0QW5pbWF0aW9uRmluaXNo
ZWRFdmVudHMgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgeworcHVibGlj
OgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RBbmltYXRpb25GaW5pc2hlZEV2ZW50cygpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAg
cG9zdEFkZEluc3RhbnRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uRmluaXNoZWQoZG91YmxlIHRpbWUpCisgICAgeworICAg
ICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0
QW5pbWF0aW9uRmluaXNoZWRFdmVudHMsIHJ1bk11bHRpVGhyZWFkKQogewogICAgIHJ1blRlc3RU
aHJlYWRlZCgpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>