<?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>89400</bug_id>
          
          <creation_ts>2012-06-18 16:07:08 -0700</creation_ts>
          <short_desc>GCActivityCallback and IncrementalSweeper should share code</short_desc>
          <delta_ts>2012-06-19 14:35:42 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89516</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>651850</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-18 16:07:08 -0700</bug_when>
    <thetext>A lot of functionality is duplicated between GCActivityCallback and IncrementalSweeper. We should extract the common functionality out into a separate class that both of them can inherit from. This refactoring will be an even greater boon when we add the ability to shut these two things down in a thread-safe fashion (see bug 89123).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651869</commentid>
    <comment_count>1</comment_count>
      <attachid>148202</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-18 16:34:08 -0700</bug_when>
    <thetext>Created attachment 148202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651889</commentid>
    <comment_count>2</comment_count>
      <attachid>148202</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-18 17:10:53 -0700</bug_when>
    <thetext>Comment on attachment 148202
Patch

Attachment 148202 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12982201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651894</commentid>
    <comment_count>3</comment_count>
      <attachid>148202</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-18 17:13:36 -0700</bug_when>
    <thetext>Comment on attachment 148202
Patch

Attachment 148202 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12978393</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651898</commentid>
    <comment_count>4</comment_count>
      <attachid>148202</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-18 17:19:18 -0700</bug_when>
    <thetext>Comment on attachment 148202
Patch

Attachment 148202 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12969868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651902</commentid>
    <comment_count>5</comment_count>
      <attachid>148207</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-18 17:23:06 -0700</bug_when>
    <thetext>Created attachment 148207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651924</commentid>
    <comment_count>6</comment_count>
      <attachid>148216</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-18 17:50:19 -0700</bug_when>
    <thetext>Created attachment 148216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651980</commentid>
    <comment_count>7</comment_count>
      <attachid>148216</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-18 19:48:42 -0700</bug_when>
    <thetext>Comment on attachment 148216
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/ExternalVMAgent.h:14
&gt; +class ExternalVMAgent {

This name seemed a bit vague to me. &quot;External&quot; isn&apos;t just says what you&apos;re not (i.e., not internal), and &quot;VM&quot; doesn&apos;t specifically convey &quot;related to the GC heap&quot;.

How about HeapTimer or ScheduledHeapAgent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652619</commentid>
    <comment_count>8</comment_count>
      <attachid>148363</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-19 11:09:14 -0700</bug_when>
    <thetext>Created attachment 148363
Checking builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652621</commentid>
    <comment_count>9</comment_count>
      <attachid>148364</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-19 11:10:18 -0700</bug_when>
    <thetext>Created attachment 148364
Checking builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652622</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-06-19 11:10:43 -0700</bug_when>
    <thetext>Re-uploading patch to make sure I didn&apos;t break any builds when renaming ExternalVMAgent to HeapTimer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652677</commentid>
    <comment_count>11</comment_count>
      <attachid>148364</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 12:17:50 -0700</bug_when>
    <thetext>Comment on attachment 148364
Checking builds

Clearing flags on attachment: 148364

Committed r120742: &lt;http://trac.webkit.org/changeset/120742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652678</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-19 12:17:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148202</attachid>
            <date>2012-06-18 16:34:08 -0700</date>
            <delta_ts>2012-06-18 17:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89400-20120618163407.patch</filename>
            <type>text/plain</type>
            <size>28746</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTA2LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIgc2hvdWxk
IHNoYXJlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQSBsb3Qgb2YgZnVuY3Rpb25hbGl0eSBpcyBkdXBsaWNhdGVkIGJldHdlZW4gR0NBY3Rpdml0
eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIuIAorICAgICAgICBXZSBzaG91bGQgZXh0
cmFjdCB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgb3V0IGludG8gYSBzZXBhcmF0ZSBjbGFzcyB0
aGF0IGJvdGggb2YgdGhlbSAKKyAgICAgICAgY2FuIGluaGVyaXQgZnJvbS4gVGhpcyByZWZhY3Rv
cmluZyB3aWxsIGJlIGFuIGV2ZW4gZ3JlYXRlciBib29uIHdoZW4gd2UgYWRkIHRoZSBhYmlsaXR5
IAorICAgICAgICB0byBzaHV0IHRoZXNlIHR3byBhZ2VudHMgZG93biBpbiBhIHRocmVhZC1zYWZl
IGZhc2hpb24KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6IE1vdmUgaW5pdGlhbGl6
YXRpb24gZG93biBzbyB0aGF0IHRoZSBKU0dsb2JhbERhdGEgaGFzIGEgdmFsaWQgSGVhcCB3aGVu
IAorICAgICAgICB3ZSdyZSBpbml0aWFsaXppbmcgdGhlIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQg
dGhlIEluY3JlbWVudGFsU3dlZXBlci4KKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KEhlYXApOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDogQ2hhbmdlcyB0
byBhY2NvbW9kYXRlIHRoZSBleHRyYWN0aW9uIG9mIGNvbW1vbiBmdW5jdGlvbmFsaXR5IAorICAg
ICAgICBiZXR3ZWVuIEluY3JlbWVudGFsU3dlZXBlciBhbmQgR0NBY3Rpdml0eUNhbGxiYWNrIGlu
dG8gYSBjb21tb24gYW5jZXN0b3IuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNy
ZW1lbnRhbFN3ZWVwZXI6OmRvV29yayk6IAorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6Y2FuY2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAqIHJ1bnRpbWUvRXh0ZXJuYWxW
TUFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpFeHRlcm5h
bFZNQWdlbnQ6OkV4dGVybmFsVk1BZ2VudCk6IEluaXRpYWxpemUgdGhlIHZhcmlvdXMgYmFzZSBj
bGFzcyBkYXRhIHRoYXQKKyAgICAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y29tbW9u
Q29uc3RydWN0b3IoKSB1c2VkIHRvIGRvLgorICAgICAgICAoSlNDOjpFeHRlcm5hbFZNQWdlbnQ6
On5FeHRlcm5hbFZNQWdlbnQpOiBDYWxsIHRvIGludmFsaWRhdGUoKS4KKyAgICAgICAgKEpTQzo6
RXh0ZXJuYWxWTUFnZW50OjpzeW5jaHJvbml6ZSk6IFNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUg
b2xkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkuCisgICAgICAgIFZp
cnR1YWwgc28gdGhhdCBub24tQ0Ygc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUuCisgICAgICAgIChK
U0M6OkV4dGVybmFsVk1BZ2VudDo6aW52YWxpZGF0ZSk6IFRlYXJzIGRvd24gdGhlIHJ1bmxvb3Ag
dGltZXIgdG8gcHJldmVudCBhbnkgZnV0dXJlIGZpcmluZy4KKyAgICAgICAgKEpTQzo6RXh0ZXJu
YWxWTUFnZW50Ojp0aW1lckRpZEZpcmUpOiBDYWxsYmFjayB0byBwYXNzIHRvIHRoZSB0aW1lciBm
dW5jdGlvbi4gQ2FzdHMgYW5kIGNhbGxzIHRoZSB2aXJ0dWFsIGRvV29yaygpLgorICAgICAgICAq
IHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50Lmg6IEFkZGVkLiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0
IHNlcnZlcyBhcyB0aGUgY29tbW9uIGJhc2UgY2xhc3MgZm9yIAorICAgICAgICBib3RoIEdDQWN0
aXZpdHlDYWxsYmFjayBhbmQgSW5jcmVtZW50YWxTd2VlcGVyLiBJdCBoYW5kbGVzIHNldHRpbmcg
dXAgYW5kIHRlYXJpbmcgZG93biBydW4gbG9vcHMgYW5kIHN5bmNocm9uaXppbmcgCisgICAgICAg
IGFjcm9zcyB0aHJlYWRzIGZvciBpdHMgc3ViY2xhc3Nlcy4gCisgICAgICAgIChKU0MpOgorICAg
ICAgICAoRXh0ZXJuYWxWTUFnZW50KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxs
YmFjay5jcHA6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpkb1dvcmspOgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmg6
CisgICAgICAgIChHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5
Q2FsbGJhY2s6OndpbGxDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNr
OjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2spOiBSZW1vdmUgdGhlIHBsYXRmb3JtIGRhdGEgc3RydWN0LiBUaGUg
cGxhdGZvcm0gZGF0YSBzaG91bGQgYmUga2VwdCBpbiAKKyAgICAgICAgdGhlIGNsYXNzIGl0c2Vs
ZiBzbyBhcyB0byBiZSBhY2Nlc3NpYmxlIGJ5IGRvV29yaygpLiBNb3N0IG9mIHRoZSBwbGF0Zm9y
bSBkYXRhIGZvciBDRiBpcyBrZXB0IGluIAorICAgICAgICBFeHRlcm5hbFZNQWdlbnQgYW55d2F5
cywgc28gd2Ugb25seSBuZWVkIHRoZSBtX2RlbGF5IGZpZWxkIG5vdy4KKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29y
ayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogCisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKTogUmVtb3ZlIGFsbCBtZXRob2RzIGFuZCBkYXRhIHRoYXQgYXJl
IG5vdyAKKyAgICAgICAgaGFuZGxlZCBieSB0aGUgRXh0ZXJuYWxWTUFnZW50LiAKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkRl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCk6CisKIDIwMTItMDYtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHQyBjb3B5IHBoYXNlIHNwZW5k
cyBuZWVkbGVzcyBjeWNsZXMgemVyby1maWxsaW5nIGJsb2NrcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAg
U0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKICAgICBydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisgICAgcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuY3BwCiAgICAgcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw2
ICs0NTUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVy
bmFsVk1BZ2VudC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5h
bFZNQWdlbnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MDYxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEsNiArMTcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgXAogICAgIHJ1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgXAorICAgIHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcCBcCiAg
ICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTY5OCw2ICs2OTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxFeHRlcm5hbFZNQWdlbnQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEV4dGVybmFsVk1BZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ4LDYgKzY0OCw4
IEBACiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYg
LyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2
QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYg
LyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKKwkJQzJDMUIwQkIxNThGQUUwNzAwNURDMTBG
IC8qIEV4dGVybmFsVk1BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJDMUIwQkExNThGQUUwNzAwNURDMTBGIC8qIEV4dGVybmFsVk1BZ2VudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQzFC
MEJFMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDMUIwQkQxNThGQUU4MTAwNURDMTBG
IC8qIEV4dGVybmFsVk1BZ2VudC5jcHAgKi87IH07CiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2
NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRT
cGFjZUlubGluZU1ldGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRB
M0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFw
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM1MSw2ICsxMzUzLDggQEAKIAkJQzI1
RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrZWRBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MkMxQjBCQTE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVybmFsVk1BZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkMxQjBCRDE1OEZBRTgxMDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsVk1BZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJCMTRBM0M2QjIwMDU3
OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRCbG9jay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2Nr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2Niw2ICsyMDcwLDggQEAKIAkJCQkxNEJGQ0U2ODEw
Q0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAw
RjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCisJCQkJQzJDMUIwQkExNThGQUUwNzAwNURDMTBGIC8qIEV4
dGVybmFsVk1BZ2VudC5oICovLAorCQkJCUMyQzFCMEJEMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRl
cm5hbFZNQWdlbnQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMzcsNiArMjM0Myw3IEBACiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVB
RDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDMkMxQjBCQjE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0
NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTcwRTE2
RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNTcs
NiArMzI2NCw3IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjUxNTg1M0NFMDAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1
Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyQzFC
MEJFMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTIwNjEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSw4ICsyNDUsNiBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVh
CiAgICAgLCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX29iamVj
dFNwYWNlKHRoaXMpCiAgICAgLCBtX3N0b3JhZ2VTcGFjZSh0aGlzKQotICAgICwgbV9hY3Rpdml0
eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKLSAgICAs
IG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fbWFj
aGluZVRocmVhZHModGhpcykKICAgICAsIG1fc2hhcmVkRGF0YShnbG9iYWxEYXRhKQogICAgICwg
bV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEpCkBAIC0yNTUsNiArMjUzLDggQEAgSGVhcDo6SGVh
cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYQogICAgICwgbV9nbG9iYWxEYXRhKGdsb2Jh
bERhdGEpCiAgICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQogICAgICwgbV9sYXN0Q29kZURpc2NhcmRU
aW1lKFdURjo6Y3VycmVudFRpbWUoKSkKKyAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3N3ZWVwZXIoSW5jcmVt
ZW50YWxTd2VlcGVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAgbV9zdG9yYWdlU3BhY2UuaW5pdCgp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTIwNjEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjEsOSArMjIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxWZWN0b3I8VmFs
dWVTdHJpbmdQYWlyPiogPiBtX3RlbXBTb3J0aW5nVmVjdG9yczsKICAgICAgICAgT3duUHRyPEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiA+IG1fbWFya0xpc3RTZXQ7CiAKLSAgICAgICAg
T3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9hY3Rpdml0eUNhbGxiYWNrOwotICAgICAgICBP
d25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgICAgIAogICAgICAgICBN
YWNoaW5lVGhyZWFkcyBtX21hY2hpbmVUaHJlYWRzOwogICAgICAgICAKICAgICAgICAgTWFya1N0
YWNrVGhyZWFkU2hhcmVkRGF0YSBtX3NoYXJlZERhdGE7CkBAIC0yNDAsNiArMjM3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RHQ0xlbmd0aDsKICAgICAgICAgZG91
YmxlIG1fbGFzdENvZGVEaXNjYXJkVGltZTsKIAorICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNh
bGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7CisgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3
ZWVwZXI+IG1fc3dlZXBlcjsKKyAgICAgICAgCiAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8RXhl
Y3V0YWJsZUJhc2U+IG1fY29tcGlsZWRDb2RlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24g
MTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQsMzMgKzE0LDIwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgVVNFKENGKQogCi1zdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRlID0gNjAg
KiA2MCAqIDI0ICogMzY1ICogMTA7CiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgc3dlZXBU
aW1lU2xpY2VQZXJCbG9jayA9IDAuMDE7CiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgc3dl
ZXBUaW1lTXVsdGlwbGllciA9IDEuMCAvIHN3ZWVwVGltZVNsaWNlUGVyQmxvY2s7CiAgCi12b2lk
IEluY3JlbWVudGFsU3dlZXBlcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lk
KiBpbmZvKQordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7Ci0gICAgSGVhcCog
aGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKLSAgICBBUElFbnRyeVNoaW0gc2hpbSho
ZWFwLT5nbG9iYWxEYXRhKCkpOwotICAgIGhlYXAtPnN3ZWVwZXIoKS0+ZG9Td2VlcChXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBBUElFbnRyeVNoaW0gc2hpbShtX2ds
b2JhbERhdGEpOworICAgIGRvU3dlZXAoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7CiB9CiAgICAgCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFw
KiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLSAgICA6IG1faGVhcChoZWFwKQorICAgIDog
RXh0ZXJuYWxWTUFnZW50KGhlYXAtPmdsb2JhbERhdGEoKSwgcnVuTG9vcCkKICAgICAsIG1fY3Vy
cmVudEJsb2NrVG9Td2VlcEluZGV4KDApCiAgICAgLCBtX2xlbmd0aE9mTGFzdFN3ZWVwSW5jcmVt
ZW50KDAuMCkKIHsKLSAgICBtZW1zZXQoJm1fY29udGV4dCwgMCwgc2l6ZW9mKENGUnVuTG9vcFRp
bWVyQ29udGV4dCkpOwotICAgIG1fY29udGV4dC5pbmZvID0gbV9oZWFwOwotICAgIG1fcnVuTG9v
cCA9IHJ1bkxvb3A7Ci0gICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAs
IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCBkZWNhZGUsIDAsIDAsICZ0aW1lckRpZEZpcmUs
ICZtX2NvbnRleHQpKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1f
dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci19Ci0KLUluY3JlbWVudGFsU3dl
ZXBlcjo6fkluY3JlbWVudGFsU3dlZXBlcigpCi17Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIo
bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwot
ICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKIH0KIAogUGFzc093
blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKEhlYXAq
IGhlYXApCkBAIC01NSw3ICs0Miw3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzY2hlZHVs
ZVRpbWVyKCkKIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKIHsKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSArIGRlY2FkZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0Rmly
ZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2Fk
ZSk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSBzd2VlcEJl
Z2luVGltZSkKQEAgLTg5LDcgKzc2LDcgQEAgSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIoKQogewogfQogCi1JbmNyZW1lbnRhbFN3ZWVwZXI6On5JbmNyZW1lbnRhbFN3ZWVw
ZXIoKQordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZp
c2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMSwzMiBAQAogI2lmbmRlZiBJbmNyZW1l
bnRhbFN3ZWVwZXJfaAogI2RlZmluZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCisjaW5jbHVkZSAi
RXh0ZXJuYWxWTUFnZW50LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRikKLSNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogICAgIAotY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVy
IHsKK2NsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1YmxpYyBFeHRlcm5hbFZNQWdlbnQgewog
cHVibGljOgotICAgIH5JbmNyZW1lbnRhbFN3ZWVwZXIoKTsKLQogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsKICAgICB2b2lkIHN0YXJ0U3dl
ZXBpbmcoY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBibG9ja1NuYXBzaG90KTsKKyAgICB2
aXJ0dWFsIHZvaWQgZG9Xb3JrKCk7CiAKIHByaXZhdGU6CiAjaWYgVVNFKENGKQogICAgIEluY3Jl
bWVudGFsU3dlZXBlcihIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICAgICAKLSAgICBzdGF0aWMgdm9p
ZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKICAgICB2b2lkIGRvU3dl
ZXAoZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CiAgICAgdm9p
ZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIEhlYXAqIG1faGVhcDsKICAgICB1bnNpZ25lZCBt
X2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleDsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJS
ZWY+IG1fdGltZXI7Ci0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwotICAg
IENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7Ci0gICAKICAgICBkb3VibGUgbV9sZW5n
dGhPZkxhc3RTd2VlcEluY3JlbWVudDsgCiAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9j
a3NUb1N3ZWVwOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
dGVybmFsVk1BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4dGVybmFsVk1BZ2VudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzEgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeHRlcm5hbFZNQWdlbnQu
aCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNp
ZiBVU0UoQ0YpCisgICAgCitjb25zdCBDRlRpbWVJbnRlcnZhbCBFeHRlcm5hbFZNQWdlbnQ6OnNf
ZGVjYWRlID0gNjAgKiA2MCAqIDI0ICogMzY1ICogMTA7CisKK0V4dGVybmFsVk1BZ2VudDo6RXh0
ZXJuYWxWTUFnZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ0ZSdW5Mb29wUmVmIHJ1bkxv
b3ApCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICAsIG1fcnVuTG9vcChydW5M
b29wKQoreworICAgIG1lbXNldCgmbV9jb250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJD
b250ZXh0KSk7CisgICAgbV9jb250ZXh0LmluZm8gPSB0aGlzOworICAgIG1fdGltZXIuYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBzX2RlY2FkZSwgc19kZWNhZGUsIDAsIDAsIEV4dGVy
bmFsVk1BZ2VudDo6dGltZXJEaWRGaXJlLCAmbV9jb250ZXh0KSk7CisgICAgQ0ZSdW5Mb29wQWRk
VGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOworfQorCitFeHRlcm5hbFZNQWdlbnQ6On5FeHRlcm5hbFZNQWdlbnQoKQoreworICAgIGlu
dmFsaWRhdGUoKTsKK30KKwordm9pZCBFeHRlcm5hbFZNQWdlbnQ6OnN5bmNocm9uaXplKCkKK3sK
KyAgICBpZiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fcnVuTG9vcC5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKG1fcnVuTG9vcC5nZXQoKSwgbV90
aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBtX3J1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29wLmdldCgp
LCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCit2b2lkIEV4dGVy
bmFsVk1BZ2VudDo6aW52YWxpZGF0ZSgpCit7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9y
dW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAg
IENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKK30KKwordm9pZCBFeHRl
cm5hbFZNQWdlbnQ6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCogaW5mbykK
K3sKKyAgICBFeHRlcm5hbFZNQWdlbnQqIGFnZW50ID0gc3RhdGljX2Nhc3Q8RXh0ZXJuYWxWTUFn
ZW50Kj4oaW5mbyk7CisgICAgYWdlbnQtPmRvV29yaygpOworfQorCisjZWxzZQorICAgIAorRXh0
ZXJuYWxWTUFnZW50OjpFeHRlcm5hbFZNQWdlbnQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
ICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCit7Cit9CisKK0V4dGVybmFsVk1BZ2VudDo6
fkV4dGVybmFsVk1BZ2VudCgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxWTUFnZW50OjpzeW5jaHJv
bml6ZSgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxWTUFnZW50OjppbnZhbGlkYXRlKCkKK3sKK30K
KworCisjZW5kaWYKKyAgICAKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVybmFsVk1BZ2VudC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisjaWZuZGVmIEV4dGVybmFsVk1BZ2VudF9oCisjZGVm
aW5lIEV4dGVybmFsVk1BZ2VudF9oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNp
ZiBVU0UoQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworICAgIAorY2xh
c3MgRXh0ZXJuYWxWTUFnZW50IHsKK3B1YmxpYzoKKyNpZiBVU0UoQ0YpCisgICAgRXh0ZXJuYWxW
TUFnZW50KEpTR2xvYmFsRGF0YSosIENGUnVuTG9vcFJlZik7CisgICAgc3RhdGljIHZvaWQgdGlt
ZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CisjZWxzZQorICAgIEV4dGVybmFs
Vk1BZ2VudChKU0dsb2JhbERhdGEqKTsKKyNlbmRpZgorICAgIAorICAgIHZpcnR1YWwgfkV4dGVy
bmFsVk1BZ2VudCgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgpOworICAg
IHZpcnR1YWwgdm9pZCBkb1dvcmsoKSA9IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgSlNHbG9i
YWxEYXRhKiBtX2dsb2JhbERhdGE7CisKKyNpZiBVU0UoQ0YpCisgICAgc3RhdGljIGNvbnN0IENG
VGltZUludGVydmFsIHNfZGVjYWRlOworCisgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVm
PiBtX3RpbWVyOworICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKKyAgICBD
RlJ1bkxvb3BUaW1lckNvbnRleHQgbV9jb250ZXh0OworI2VuZGlmCisgICAgCitwcml2YXRlOgor
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
NCArMzEsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrUGxhdGZvcm1EYXRhIHsKLX07Ci0KLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2
aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCit2b2lkIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZpc2lvbiAxMjA2
MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBHQ0FjdGl2aXR5Q2Fs
bGJhY2tfaAogI2RlZmluZSBHQ0FjdGl2aXR5Q2FsbGJhY2tfaAogCisjaW5jbHVkZSAiRXh0ZXJu
YWxWTUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKQEAgLTQwLDQ3ICs0MSw1NiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SGVhcDsKIAotY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK2NsYXNzIEdDQWN0aXZpdHlDYWxs
YmFjayA6IHB1YmxpYyBFeHRlcm5hbFZNQWdlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkdD
QWN0aXZpdHlDYWxsYmFjaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXpl
X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH0KICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgR0NBY3Rpdml0eUNhbGxiYWNrKCkKLSAgICAgICAgOiBtX2VuYWJsZWQodHJ1
ZSkKKyNpZiBVU0UoQ0YpCisgICAgR0NBY3Rpdml0eUNhbGxiYWNrKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgICAgIDogRXh0ZXJuYWxWTUFnZW50
KGdsb2JhbERhdGEsIHJ1bkxvb3ApCisgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgewor
ICAgIH0KKyMgZWxzZQorICAgIEdDQWN0aXZpdHlDYWxsYmFjayhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCisgICAgICAgIDogRXh0ZXJuYWxWTUFnZW50KGdsb2JhbERhdGEpCisgICAgICAgICwg
bV9lbmFibGVkKHRydWUpCiAgICAgewogICAgIH0KKyNlbmRpZgogCiAgICAgYm9vbCBtX2VuYWJs
ZWQ7CiB9OwogCi1zdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YTsK
LQogY2xhc3MgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2Fs
bGJhY2sgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s+IGNyZWF0ZShIZWFwKik7CiAKICAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
KEhlYXAqKTsKLSAgICB2aXJ0dWFsIH5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bENvbGxlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsKCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpOwogCi0jaWYg
VVNFKENGKQorI2lmICFVU0UoQ0YpCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCk7Cisj
ZWxzZQogcHJvdGVjdGVkOgogICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCosIENG
UnVuTG9vcFJlZik7Ci0gICAgdm9pZCBjb21tb25Db25zdHJ1Y3RvcihIZWFwKiwgQ0ZSdW5Mb29w
UmVmKTsKLSNlbmRpZgotCisgICAgCisgICAgdm9pZCBjYW5jZWxUaW1lcigpOworICAgIHZvaWQg
c2NoZWR1bGVUaW1lcihkb3VibGUpOworICAgIAogcHJpdmF0ZToKLSAgICBPd25QdHI8RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YT4gZDsKKyAgICBkb3VibGUgbV9kZWxheTsK
KyNlbmRpZgogfTsKIAogaW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
az4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tCbGFja0JlcnJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2tCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQmxhY2tCZXJyeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDE3ICsyNCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Ry
dWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEgewotICAgIGV4cGxpY2l0
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEoSGVhcCogaGVhcCkgOiBtX2hl
YXAoaGVhcCkgeyB9Ci0gICAgSGVhcCogbV9oZWFwOwotfTsKLQogRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQotICAgIDogZChh
ZG9wdFB0cihuZXcgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YShoZWFwKSkp
CisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpKQogewogfQogCi1E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCitE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQogCkBAIC00NiwxMCArNDEs
MTAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIGlmIChi
eXRlc0FsbG9jYXRlZCA8IDEgKiAxMDI0ICogMTAyNCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGQtPm1faGVhcC0+aXNCdXN5KCkgfHwgIWQtPm1faGVhcC0+aXNTYWZlVG9Db2xsZWN0KCkp
CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aGVhcC5pc0J1c3koKSB8fCAhbV9nbG9iYWxEYXRhLT5o
ZWFwLmlzU2FmZVRvQ29sbGVjdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkLT5tX2hlYXAt
PmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7CisgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmNvbGxl
Y3QoSGVhcDo6RG9Ob3RTd2VlcCk7CiB9CiAKIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcAkocmV2aXNpb24gMTIwNjEwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwyOSArNDQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhIHsKLSAgICBzdGF0aWMg
dm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pOwotCi0gICAg
UmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB0aW1lcjsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wUmVmPiBydW5Mb29wOwotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0OwotICAg
IGRvdWJsZSBkZWxheTsKLX07Ci0KIGNvbnN0IGRvdWJsZSBnY1RpbWVTbGljZVBlck1CID0gMC4w
MTsgLy8gUGVyY2VudGFnZSBvZiBDUFUgdGltZSB3ZSB3aWxsIHNwZW5kIHRvIHJlY2xhaW0gMSBN
QgogY29uc3QgZG91YmxlIG1heEdDVGltZVNsaWNlID0gMC4wNTsgLy8gVGhlIG1heGltdW0gYW1v
dW50IG9mIENQVSB0aW1lIHdlIHdhbnQgdG8gdXNlIGZvciBvcHBvcnR1bmlzdGljIHRpbWVyLXRy
aWdnZXJlZCBjb2xsZWN0aW9ucy4KIGNvbnN0IGRvdWJsZSB0aW1lclNsb3AgPSAyLjA7IC8vIEZ1
ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5jZSBjb3N0IG9mIHJlc2V0dGluZyB0aW1lci4K
IGNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGluIHNlY29uZHMgdG8g
YWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxsIGJsb2NrcyB0byBz
ZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgotY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRl
ID0gNjAgKiA2MCAqIDI0ICogMzY1ICogMTA7CiBjb25zdCBDRlRpbWVJbnRlcnZhbCBob3VyID0g
NjAgKiA2MDsKIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0
aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pCitEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAg
OiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpLCBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpCisgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogewotICAgIEhlYXAqIGhlYXAgPSBzdGF0
aWNfY2FzdDxIZWFwKj4oaW5mbyk7Ci0gICAgaWYgKCFoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCkt
PmlzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Cit9CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3ApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpLCBy
dW5Mb29wKQorICAgICwgbV9kZWxheShzX2RlY2FkZSkKK3sKK30KIAotICAgIEFQSUVudHJ5U2hp
bSBzaGltKGhlYXAtPmdsb2JhbERhdGEoKSk7Cit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmRvV29yaygpCit7CisgICAgSGVhcCogaGVhcCA9ICZtX2dsb2JhbERhdGEtPmhlYXA7Cisg
ICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFQSUVudHJ5
U2hpbSBzaGltKG1fZ2xvYmFsRGF0YSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBkb3VibGUg
c3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBpZiAo
aGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkgewpAQCAtNzcsNDgg
Kzc5LDIwIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGEKICNlbmRp
ZgogICAgIGhlYXAtPmNvbGxlY3RBbGxHYXJiYWdlKCk7CiB9Ci0KLURlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICAKK3Zv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUgbmV3RGVs
YXkpCiB7Ci0gICAgY29tbW9uQ29uc3RydWN0b3IoaGVhcCwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
KTsKLX0KLQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBjb21tb25Db25z
dHJ1Y3RvcihoZWFwLCBydW5Mb29wKTsKLX0KLQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
fkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKQotewotICAgIENGUnVuTG9vcFJlbW92ZVRpbWVy
KGQtPnJ1bkxvb3AuZ2V0KCksIGQtPnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShkLT50aW1lci5nZXQoKSk7Ci19Ci0KLXZv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y29tbW9uQ29uc3RydWN0b3IoSGVhcCogaGVh
cCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi17Ci0gICAgZCA9IGFkb3B0UHRyKG5ldyBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhKTsKLQotICAgIG1lbXNldCgmZC0+Y29udGV4
dCwgMCwgc2l6ZW9mKENGUnVuTG9vcFRpbWVyQ29udGV4dCkpOwotICAgIGQtPmNvbnRleHQuaW5m
byA9IGhlYXA7Ci0gICAgZC0+cnVuTG9vcCA9IHJ1bkxvb3A7Ci0gICAgZC0+dGltZXIuYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBkZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YTo6dGltZXJEaWRGaXJlLCAmZC0+Y29udGV4dCkp
OwotICAgIGQtPmRlbGF5ID0gZGVjYWRlOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKGQtPnJ1bkxv
b3AuZ2V0KCksIGQtPnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotfQotCi1z
dGF0aWMgdm9pZCBzY2hlZHVsZVRpbWVyKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9y
bURhdGEqIGQsIGRvdWJsZSBuZXdEZWxheSkKLXsKLSAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNs
b3AgPiBkLT5kZWxheSkKKyAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQog
ICAgICAgICByZXR1cm47Ci0gICAgZG91YmxlIGRlbHRhID0gZC0+ZGVsYXkgLSBuZXdEZWxheTsK
LSAgICBkLT5kZWxheSA9IG5ld0RlbGF5OwotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVE
YXRlKGQtPnRpbWVyLmdldCgpLCBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShkLT50aW1l
ci5nZXQoKSkgLSBkZWx0YSk7CisgICAgZG91YmxlIGRlbHRhID0gbV9kZWxheSAtIG5ld0RlbGF5
OworICAgIG1fZGVsYXkgPSBuZXdEZWxheTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJl
RGF0ZShtX3RpbWVyLmdldCgpLCBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVy
LmdldCgpKSAtIGRlbHRhKTsKIH0KIAotc3RhdGljIHZvaWQgY2FuY2VsVGltZXIoRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YSogZCkKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6Y2FuY2VsVGltZXIoKQogewotICAgIGQtPmRlbGF5ID0gZGVjYWRlOwotICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVyLmdldCgpLCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIGRlY2FkZSk7CisgICAgbV9kZWxheSA9IHNfZGVjYWRlOworICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCBieXRlcykKQEAgLTEyNywyOSArMTAxLDIwIEBAIHZv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2MKICAgICAvLyBXZSBwcmV0ZW5k
IGl0J3Mgb25lIGJ5dGUgc28gdGhhdCB3ZSBkb24ndCBpZ25vcmUgdGhpcyBhbGxvY2F0aW9uIGVu
dGlyZWx5LgogICAgIGlmICghYnl0ZXMpCiAgICAgICAgIGJ5dGVzID0gMTsKLSAgICBIZWFwKiBo
ZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KGQtPmNvbnRleHQuaW5mbyk7CisgICAgSGVhcCogaGVh
cCA9IHN0YXRpY19jYXN0PEhlYXAqPigmbV9nbG9iYWxEYXRhLT5oZWFwKTsKICAgICBkb3VibGUg
Z2NUaW1lU2xpY2UgPSBzdGQ6Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgLyBNQikg
KiBnY1RpbWVTbGljZVBlck1CLCBtYXhHQ1RpbWVTbGljZSk7CiAgICAgZG91YmxlIG5ld0RlbGF5
ID0gaGVhcC0+bGFzdEdDTGVuZ3RoKCkgLyBnY1RpbWVTbGljZTsKLSAgICBzY2hlZHVsZVRpbWVy
KGQuZ2V0KCksIG5ld0RlbGF5KTsKKyAgICBzY2hlZHVsZVRpbWVyKG5ld0RlbGF5KTsKIH0KIAog
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7Ci0gICAgY2Fu
Y2VsVGltZXIoZC5nZXQoKSk7Ci19Ci0KLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
c3luY2hyb25pemUoKQotewotICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gZC0+cnVu
TG9vcC5nZXQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKGQt
PnJ1bkxvb3AuZ2V0KCksIGQtPnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwot
ICAgIGQtPnJ1bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgQ0ZSdW5Mb29wQWRk
VGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CisgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpjYW5jZWwoKQogewotICAgIGNhbmNlbFRpbWVyKGQuZ2V0KCkpOworICAgIGNhbmNl
bFRpbWVyKCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148207</attachid>
            <date>2012-06-18 17:23:06 -0700</date>
            <delta_ts>2012-06-18 17:50:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89400-20120618172306.patch</filename>
            <type>text/plain</type>
            <size>29640</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTA2LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIgc2hvdWxk
IHNoYXJlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQSBsb3Qgb2YgZnVuY3Rpb25hbGl0eSBpcyBkdXBsaWNhdGVkIGJldHdlZW4gR0NBY3Rpdml0
eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIuIAorICAgICAgICBXZSBzaG91bGQgZXh0
cmFjdCB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgb3V0IGludG8gYSBzZXBhcmF0ZSBjbGFzcyB0
aGF0IGJvdGggb2YgdGhlbSAKKyAgICAgICAgY2FuIGluaGVyaXQgZnJvbS4gVGhpcyByZWZhY3Rv
cmluZyB3aWxsIGJlIGFuIGV2ZW4gZ3JlYXRlciBib29uIHdoZW4gd2UgYWRkIHRoZSBhYmlsaXR5
IAorICAgICAgICB0byBzaHV0IHRoZXNlIHR3byBhZ2VudHMgZG93biBpbiBhIHRocmVhZC1zYWZl
IGZhc2hpb24KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6IE1vdmUgaW5pdGlhbGl6
YXRpb24gZG93biBzbyB0aGF0IHRoZSBKU0dsb2JhbERhdGEgaGFzIGEgdmFsaWQgSGVhcCB3aGVu
IAorICAgICAgICB3ZSdyZSBpbml0aWFsaXppbmcgdGhlIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQg
dGhlIEluY3JlbWVudGFsU3dlZXBlci4KKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KEhlYXApOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDogQ2hhbmdlcyB0
byBhY2NvbW9kYXRlIHRoZSBleHRyYWN0aW9uIG9mIGNvbW1vbiBmdW5jdGlvbmFsaXR5IAorICAg
ICAgICBiZXR3ZWVuIEluY3JlbWVudGFsU3dlZXBlciBhbmQgR0NBY3Rpdml0eUNhbGxiYWNrIGlu
dG8gYSBjb21tb24gYW5jZXN0b3IuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNy
ZW1lbnRhbFN3ZWVwZXI6OmRvV29yayk6IAorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6Y2FuY2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAqIHJ1bnRpbWUvRXh0ZXJuYWxW
TUFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpFeHRlcm5h
bFZNQWdlbnQ6OkV4dGVybmFsVk1BZ2VudCk6IEluaXRpYWxpemUgdGhlIHZhcmlvdXMgYmFzZSBj
bGFzcyBkYXRhIHRoYXQKKyAgICAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y29tbW9u
Q29uc3RydWN0b3IoKSB1c2VkIHRvIGRvLgorICAgICAgICAoSlNDOjpFeHRlcm5hbFZNQWdlbnQ6
On5FeHRlcm5hbFZNQWdlbnQpOiBDYWxsIHRvIGludmFsaWRhdGUoKS4KKyAgICAgICAgKEpTQzo6
RXh0ZXJuYWxWTUFnZW50OjpzeW5jaHJvbml6ZSk6IFNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUg
b2xkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkuCisgICAgICAgIFZp
cnR1YWwgc28gdGhhdCBub24tQ0Ygc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUuCisgICAgICAgIChK
U0M6OkV4dGVybmFsVk1BZ2VudDo6aW52YWxpZGF0ZSk6IFRlYXJzIGRvd24gdGhlIHJ1bmxvb3Ag
dGltZXIgdG8gcHJldmVudCBhbnkgZnV0dXJlIGZpcmluZy4KKyAgICAgICAgKEpTQzo6RXh0ZXJu
YWxWTUFnZW50Ojp0aW1lckRpZEZpcmUpOiBDYWxsYmFjayB0byBwYXNzIHRvIHRoZSB0aW1lciBm
dW5jdGlvbi4gQ2FzdHMgYW5kIGNhbGxzIHRoZSB2aXJ0dWFsIGRvV29yaygpLgorICAgICAgICAq
IHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50Lmg6IEFkZGVkLiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0
IHNlcnZlcyBhcyB0aGUgY29tbW9uIGJhc2UgY2xhc3MgZm9yIAorICAgICAgICBib3RoIEdDQWN0
aXZpdHlDYWxsYmFjayBhbmQgSW5jcmVtZW50YWxTd2VlcGVyLiBJdCBoYW5kbGVzIHNldHRpbmcg
dXAgYW5kIHRlYXJpbmcgZG93biBydW4gbG9vcHMgYW5kIHN5bmNocm9uaXppbmcgCisgICAgICAg
IGFjcm9zcyB0aHJlYWRzIGZvciBpdHMgc3ViY2xhc3Nlcy4gCisgICAgICAgIChKU0MpOgorICAg
ICAgICAoRXh0ZXJuYWxWTUFnZW50KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxs
YmFjay5jcHA6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpkb1dvcmspOgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmg6
CisgICAgICAgIChHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5
Q2FsbGJhY2s6OndpbGxDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNr
OjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2spOiBSZW1vdmUgdGhlIHBsYXRmb3JtIGRhdGEgc3RydWN0LiBUaGUg
cGxhdGZvcm0gZGF0YSBzaG91bGQgYmUga2VwdCBpbiAKKyAgICAgICAgdGhlIGNsYXNzIGl0c2Vs
ZiBzbyBhcyB0byBiZSBhY2Nlc3NpYmxlIGJ5IGRvV29yaygpLiBNb3N0IG9mIHRoZSBwbGF0Zm9y
bSBkYXRhIGZvciBDRiBpcyBrZXB0IGluIAorICAgICAgICBFeHRlcm5hbFZNQWdlbnQgYW55d2F5
cywgc28gd2Ugb25seSBuZWVkIHRoZSBtX2RlbGF5IGZpZWxkIG5vdy4KKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29y
ayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogCisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKTogUmVtb3ZlIGFsbCBtZXRob2RzIGFuZCBkYXRhIHRoYXQgYXJl
IG5vdyAKKyAgICAgICAgaGFuZGxlZCBieSB0aGUgRXh0ZXJuYWxWTUFnZW50LiAKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkRl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCk6CisKIDIwMTItMDYtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHQyBjb3B5IHBoYXNlIHNwZW5k
cyBuZWVkbGVzcyBjeWNsZXMgemVyby1maWxsaW5nIGJsb2NrcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAg
U0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKICAgICBydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisgICAgcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuY3BwCiAgICAgcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw2
ICs0NTUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVy
bmFsVk1BZ2VudC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5h
bFZNQWdlbnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MDYxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEsNiArMTcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgXAogICAgIHJ1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgXAorICAgIHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcCBcCiAg
ICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTY5OCw2ICs2OTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxFeHRlcm5hbFZNQWdlbnQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEV4dGVybmFsVk1BZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ4LDYgKzY0OCw4
IEBACiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYg
LyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2
QzUxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkI5MTZDNDE0REEwNDBDMDBDQkFDODYg
LyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLzsgfTsKKwkJQzJDMUIwQkIxNThGQUUwNzAwNURDMTBG
IC8qIEV4dGVybmFsVk1BZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJDMUIwQkExNThGQUUwNzAwNURDMTBGIC8qIEV4dGVybmFsVk1BZ2VudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQzFC
MEJFMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDMUIwQkQxNThGQUU4MTAwNURDMTBG
IC8qIEV4dGVybmFsVk1BZ2VudC5jcHAgKi87IH07CiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2
NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRT
cGFjZUlubGluZU1ldGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRB
M0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFw
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM1MSw2ICsxMzUzLDggQEAKIAkJQzI1
RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9j
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrZWRBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrZWRBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MkMxQjBCQTE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVybmFsVk1BZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkMxQjBCRDE1OEZBRTgxMDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVybmFsVk1BZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJCMTRBM0M2QjIwMDU3
OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRCbG9jay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2Nr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2Niw2ICsyMDcwLDggQEAKIAkJCQkxNEJGQ0U2ODEw
Q0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmggKi8sCiAJCQkJMTQyMEJFN0ExMEFBNkREQjAw
RjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAg
LyogV3JpdGVCYXJyaWVyLmggKi8sCisJCQkJQzJDMUIwQkExNThGQUUwNzAwNURDMTBGIC8qIEV4
dGVybmFsVk1BZ2VudC5oICovLAorCQkJCUMyQzFCMEJEMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRl
cm5hbFZNQWdlbnQuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzMzcsNiArMjM0Myw3IEBACiAJCQkJODZBREQxNDUwRkRE
RUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVB
RDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDMkMxQjBCQjE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0
NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTcwRTE2
RjVDRDAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNTcs
NiArMzI2NCw3IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjUxNTg1M0NFMDAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1
Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyQzFC
MEJFMTU4RkFFODEwMDVEQzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTIwNjEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSw4ICsyNDUsNiBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVh
CiAgICAgLCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX29iamVj
dFNwYWNlKHRoaXMpCiAgICAgLCBtX3N0b3JhZ2VTcGFjZSh0aGlzKQotICAgICwgbV9hY3Rpdml0
eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKLSAgICAs
IG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fbWFj
aGluZVRocmVhZHModGhpcykKICAgICAsIG1fc2hhcmVkRGF0YShnbG9iYWxEYXRhKQogICAgICwg
bV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEpCkBAIC0yNTUsNiArMjUzLDggQEAgSGVhcDo6SGVh
cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYQogICAgICwgbV9nbG9iYWxEYXRhKGdsb2Jh
bERhdGEpCiAgICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQogICAgICwgbV9sYXN0Q29kZURpc2NhcmRU
aW1lKFdURjo6Y3VycmVudFRpbWUoKSkKKyAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAgLCBtX3N3ZWVwZXIoSW5jcmVt
ZW50YWxTd2VlcGVyOjpjcmVhdGUodGhpcykpCiB7CiAgICAgbV9zdG9yYWdlU3BhY2UuaW5pdCgp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTIwNjEwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjEsOSArMjIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxWZWN0b3I8VmFs
dWVTdHJpbmdQYWlyPiogPiBtX3RlbXBTb3J0aW5nVmVjdG9yczsKICAgICAgICAgT3duUHRyPEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiA+IG1fbWFya0xpc3RTZXQ7CiAKLSAgICAgICAg
T3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9hY3Rpdml0eUNhbGxiYWNrOwotICAgICAgICBP
d25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7Ci0gICAgICAgIAogICAgICAgICBN
YWNoaW5lVGhyZWFkcyBtX21hY2hpbmVUaHJlYWRzOwogICAgICAgICAKICAgICAgICAgTWFya1N0
YWNrVGhyZWFkU2hhcmVkRGF0YSBtX3NoYXJlZERhdGE7CkBAIC0yNDAsNiArMjM3LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RHQ0xlbmd0aDsKICAgICAgICAgZG91
YmxlIG1fbGFzdENvZGVEaXNjYXJkVGltZTsKIAorICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNh
bGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7CisgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3
ZWVwZXI+IG1fc3dlZXBlcjsKKyAgICAgICAgCiAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8RXhl
Y3V0YWJsZUJhc2U+IG1fY29tcGlsZWRDb2RlOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24g
MTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQsMzMgKzE0LDIwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgVVNFKENGKQogCi1zdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRlID0gNjAg
KiA2MCAqIDI0ICogMzY1ICogMTA7CiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgc3dlZXBU
aW1lU2xpY2VQZXJCbG9jayA9IDAuMDE7CiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgc3dl
ZXBUaW1lTXVsdGlwbGllciA9IDEuMCAvIHN3ZWVwVGltZVNsaWNlUGVyQmxvY2s7CiAgCi12b2lk
IEluY3JlbWVudGFsU3dlZXBlcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lk
KiBpbmZvKQordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7Ci0gICAgSGVhcCog
aGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKLSAgICBBUElFbnRyeVNoaW0gc2hpbSho
ZWFwLT5nbG9iYWxEYXRhKCkpOwotICAgIGhlYXAtPnN3ZWVwZXIoKS0+ZG9Td2VlcChXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBBUElFbnRyeVNoaW0gc2hpbShtX2ds
b2JhbERhdGEpOworICAgIGRvU3dlZXAoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSk7CiB9CiAgICAgCiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFw
KiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLSAgICA6IG1faGVhcChoZWFwKQorICAgIDog
RXh0ZXJuYWxWTUFnZW50KGhlYXAtPmdsb2JhbERhdGEoKSwgcnVuTG9vcCkKICAgICAsIG1fY3Vy
cmVudEJsb2NrVG9Td2VlcEluZGV4KDApCiAgICAgLCBtX2xlbmd0aE9mTGFzdFN3ZWVwSW5jcmVt
ZW50KDAuMCkKIHsKLSAgICBtZW1zZXQoJm1fY29udGV4dCwgMCwgc2l6ZW9mKENGUnVuTG9vcFRp
bWVyQ29udGV4dCkpOwotICAgIG1fY29udGV4dC5pbmZvID0gbV9oZWFwOwotICAgIG1fcnVuTG9v
cCA9IHJ1bkxvb3A7Ci0gICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAs
IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCBkZWNhZGUsIDAsIDAsICZ0aW1lckRpZEZpcmUs
ICZtX2NvbnRleHQpKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1f
dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci19Ci0KLUluY3JlbWVudGFsU3dl
ZXBlcjo6fkluY3JlbWVudGFsU3dlZXBlcigpCi17Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIo
bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwot
ICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKIH0KIAogUGFzc093
blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKEhlYXAq
IGhlYXApCkBAIC01NSw3ICs0Miw3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzY2hlZHVs
ZVRpbWVyKCkKIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKIHsKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSArIGRlY2FkZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0Rmly
ZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2Fk
ZSk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1N3ZWVwKGRvdWJsZSBzd2VlcEJl
Z2luVGltZSkKQEAgLTg1LDE3ICs3MiwxOCBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3Rh
cnRTd2VlcGluZyhjCiAKICNlbHNlCiAKLUluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxT
d2VlcGVyKCkKK0luY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKKyAgICA6IEV4dGVybmFsVk1BZ2VudChnbG9iYWxEYXRhKQogewog
fQogCi1JbmNyZW1lbnRhbFN3ZWVwZXI6On5JbmNyZW1lbnRhbFN3ZWVwZXIoKQordm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7CiB9CiAKLVBhc3NPd25QdHI8SW5jcmVtZW50YWxT
d2VlcGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZShIZWFwKikKK1Bhc3NPd25QdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZShIZWFwKiBoZWFwKQog
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5jcmVtZW50YWxTd2VlcGVyKCkpOworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgSW5jcmVtZW50YWxTd2VlcGVyKGhlYXAtPmdsb2JhbERhdGEoKSkp
OwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNo
U2V0PE1hcmtlZEJsb2NrKj4mKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5j
cmVtZW50YWxTd2VlcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDEyMDYxMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ3ICsxLDM3IEBACiAjaWZuZGVmIEluY3JlbWVudGFsU3dlZXBlcl9oCiAjZGVmaW5lIEluY3Jl
bWVudGFsU3dlZXBlcl9oCiAKKyNpbmNsdWRlICJFeHRlcm5hbFZNQWdlbnQuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCi0jaWYgVVNFKENGKQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CiAg
ICAgCi1jbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXIgeworY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVy
IDogcHVibGljIEV4dGVybmFsVk1BZ2VudCB7CiBwdWJsaWM6Ci0gICAgfkluY3JlbWVudGFsU3dl
ZXBlcigpOwotCiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBjcmVh
dGUoSGVhcCopOwogICAgIHZvaWQgc3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJs
b2NrKj4mIGJsb2NrU25hcHNob3QpOworICAgIHZpcnR1YWwgdm9pZCBkb1dvcmsoKTsKIAogcHJp
dmF0ZToKICNpZiBVU0UoQ0YpCiAgICAgSW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqLCBDRlJ1bkxv
b3BSZWYpOwogICAgIAotICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1l
clJlZiwgdm9pZCopOwogICAgIHZvaWQgZG9Td2VlcChkb3VibGUgc3RhcnRUaW1lKTsKICAgICB2
b2lkIHNjaGVkdWxlVGltZXIoKTsKICAgICB2b2lkIGNhbmNlbFRpbWVyKCk7CiAgICAgCi0gICAg
SGVhcCogbV9oZWFwOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4Owot
ICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKLSAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IG1fY29u
dGV4dDsKLSAgIAogICAgIGRvdWJsZSBtX2xlbmd0aE9mTGFzdFN3ZWVwSW5jcmVtZW50OyAKICAg
ICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nrc1RvU3dlZXA7CiAjZWxzZQogICAgIAotICAg
IEluY3JlbWVudGFsU3dlZXBlcigpOworICAgIEluY3JlbWVudGFsU3dlZXBlcihKU0dsb2JhbERh
dGEqKTsKICAgICAKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4dGVybmFsVk1BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVybmFsVk1BZ2VudC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzEgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeHRlcm5hbFZN
QWdlbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKyNpZiBVU0UoQ0YpCisgICAgCitjb25zdCBDRlRpbWVJbnRlcnZhbCBFeHRlcm5hbFZNQWdl
bnQ6OnNfZGVjYWRlID0gNjAgKiA2MCAqIDI0ICogMzY1ICogMTA7CisKK0V4dGVybmFsVk1BZ2Vu
dDo6RXh0ZXJuYWxWTUFnZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3ApCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICAsIG1fcnVuTG9v
cChydW5Mb29wKQoreworICAgIG1lbXNldCgmbV9jb250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29w
VGltZXJDb250ZXh0KSk7CisgICAgbV9jb250ZXh0LmluZm8gPSB0aGlzOworICAgIG1fdGltZXIu
YWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBzX2RlY2FkZSwgc19kZWNhZGUsIDAsIDAs
IEV4dGVybmFsVk1BZ2VudDo6dGltZXJEaWRGaXJlLCAmbV9jb250ZXh0KSk7CisgICAgQ0ZSdW5M
b29wQWRkVGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOworfQorCitFeHRlcm5hbFZNQWdlbnQ6On5FeHRlcm5hbFZNQWdlbnQoKQorewor
ICAgIGludmFsaWRhdGUoKTsKK30KKwordm9pZCBFeHRlcm5hbFZNQWdlbnQ6OnN5bmNocm9uaXpl
KCkKK3sKKyAgICBpZiAoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IG1fcnVuTG9vcC5nZXQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKG1fcnVuTG9vcC5nZXQo
KSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBtX3J1bkxvb3Ag
PSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29w
LmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworfQorCit2b2lk
IEV4dGVybmFsVk1BZ2VudDo6aW52YWxpZGF0ZSgpCit7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGlt
ZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OworICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKK30KKwordm9p
ZCBFeHRlcm5hbFZNQWdlbnQ6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCog
aW5mbykKK3sKKyAgICBFeHRlcm5hbFZNQWdlbnQqIGFnZW50ID0gc3RhdGljX2Nhc3Q8RXh0ZXJu
YWxWTUFnZW50Kj4oaW5mbyk7CisgICAgYWdlbnQtPmRvV29yaygpOworfQorCisjZWxzZQorICAg
IAorRXh0ZXJuYWxWTUFnZW50OjpFeHRlcm5hbFZNQWdlbnQoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQorICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCit7Cit9CisKK0V4dGVybmFsVk1B
Z2VudDo6fkV4dGVybmFsVk1BZ2VudCgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxWTUFnZW50Ojpz
eW5jaHJvbml6ZSgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxWTUFnZW50OjppbnZhbGlkYXRlKCkK
K3sKK30KKworCisjZW5kaWYKKyAgICAKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVybmFsVk1BZ2VudC5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisjaWZuZGVmIEV4dGVybmFsVk1BZ2VudF9o
CisjZGVmaW5lIEV4dGVybmFsVk1BZ2VudF9oCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworICAg
IAorY2xhc3MgRXh0ZXJuYWxWTUFnZW50IHsKK3B1YmxpYzoKKyNpZiBVU0UoQ0YpCisgICAgRXh0
ZXJuYWxWTUFnZW50KEpTR2xvYmFsRGF0YSosIENGUnVuTG9vcFJlZik7CisgICAgc3RhdGljIHZv
aWQgdGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CisjZWxzZQorICAgIEV4
dGVybmFsVk1BZ2VudChKU0dsb2JhbERhdGEqKTsKKyNlbmRpZgorICAgIAorICAgIHZpcnR1YWwg
fkV4dGVybmFsVk1BZ2VudCgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgp
OworICAgIHZpcnR1YWwgdm9pZCBkb1dvcmsoKSA9IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAg
SlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CisKKyNpZiBVU0UoQ0YpCisgICAgc3RhdGljIGNv
bnN0IENGVGltZUludGVydmFsIHNfZGVjYWRlOworCisgICAgUmV0YWluUHRyPENGUnVuTG9vcFRp
bWVyUmVmPiBtX3RpbWVyOworICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsK
KyAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgbV9jb250ZXh0OworI2VuZGlmCisgICAgCitwcml2
YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSwxNiArMjksMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHQ0FjdGl2
aXR5Q2FsbGJhY2suaCIKIAotbmFtZXNwYWNlIEpTQyB7CisjaW5jbHVkZSAiSGVhcC5oIgogCi1z
dHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YSB7Ci19OworbmFtZXNw
YWNlIEpTQyB7CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2soSGVhcCopCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+
Z2xvYmFsRGF0YSgpKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjaygpCit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRv
V29yaygpCiB7CiB9CiAKQEAgLTUwLDEwICs1MCw2IEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6d2lsbENvbGwKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpzeW5jaHJvbml6ZSgpCi17Ci19Ci0KIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
Y2FuY2VsKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0
aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBHQ0FjdGl2aXR5Q2FsbGJhY2tfaAogI2RlZmluZSBH
Q0FjdGl2aXR5Q2FsbGJhY2tfaAogCisjaW5jbHVkZSAiRXh0ZXJuYWxWTUFnZW50LmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTQw
LDQ3ICs0MSw1NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKIAotY2xhc3MgR0NB
Y3Rpdml0eUNhbGxiYWNrIHsKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBFeHRl
cm5hbFZNQWdlbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgfkdDQWN0aXZpdHlDYWxsYmFjaygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ29sbGVjdCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH0KICAgICBib29sIGlzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVu
YWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgR0NBY3Rp
dml0eUNhbGxiYWNrKCkKLSAgICAgICAgOiBtX2VuYWJsZWQodHJ1ZSkKKyNpZiBVU0UoQ0YpCisg
ICAgR0NBY3Rpdml0eUNhbGxiYWNrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ0ZSdW5Mb29w
UmVmIHJ1bkxvb3ApCisgICAgICAgIDogRXh0ZXJuYWxWTUFnZW50KGdsb2JhbERhdGEsIHJ1bkxv
b3ApCisgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgeworICAgIH0KKyMgZWxzZQorICAg
IEdDQWN0aXZpdHlDYWxsYmFjayhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgICAgIDog
RXh0ZXJuYWxWTUFnZW50KGdsb2JhbERhdGEpCisgICAgICAgICwgbV9lbmFibGVkKHRydWUpCiAg
ICAgewogICAgIH0KKyNlbmRpZgogCiAgICAgYm9vbCBtX2VuYWJsZWQ7CiB9OwogCi1zdHJ1Y3Qg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YTsKLQogY2xhc3MgRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShI
ZWFwKik7CiAKICAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKLSAgICB2aXJ0
dWFsIH5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
QWxsb2NhdGUoc2l6ZV90KTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7Cisg
ICAgCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpOwogCiAjaWYgVVNFKENGKQogcHJvdGVjdGVk
OgogICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCosIENGUnVuTG9vcFJlZik7Ci0g
ICAgdm9pZCBjb21tb25Db25zdHJ1Y3RvcihIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKLSNlbmRpZgot
CisgICAgCisgICAgdm9pZCBjYW5jZWxUaW1lcigpOworICAgIHZvaWQgc2NoZWR1bGVUaW1lcihk
b3VibGUpOworICAgIAogcHJpdmF0ZToKLSAgICBPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFja1BsYXRmb3JtRGF0YT4gZDsKKyAgICBkb3VibGUgbV9kZWxheTsKKyNlbmRpZgogfTsKIAog
aW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tCbGFj
a0JlcnJ5LmNwcAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDE3ICsyNCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEgewotICAgIGV4cGxpY2l0IERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEoSGVhcCogaGVhcCkgOiBtX2hlYXAoaGVhcCkgeyB9Ci0g
ICAgSGVhcCogbV9oZWFwOwotfTsKLQogRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQotICAgIDogZChhZG9wdFB0cihuZXcgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YShoZWFwKSkpCisgICAgOiBHQ0FjdGl2
aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCitEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQogCkBAIC00NiwyMCArNDEsMTYgQEAgdm9pZCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIGlmIChieXRlc0FsbG9jYXRlZCA8
IDEgKiAxMDI0ICogMTAyNCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGQtPm1faGVhcC0+
aXNCdXN5KCkgfHwgIWQtPm1faGVhcC0+aXNTYWZlVG9Db2xsZWN0KCkpCisgICAgaWYgKG1fZ2xv
YmFsRGF0YS0+aGVhcC5pc0J1c3koKSB8fCAhbV9nbG9iYWxEYXRhLT5oZWFwLmlzU2FmZVRvQ29s
bGVjdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkLT5tX2hlYXAtPmNvbGxlY3QoSGVhcDo6
RG9Ob3RTd2VlcCk7CisgICAgbV9nbG9iYWxEYXRhLT5oZWFwLmNvbGxlY3QoSGVhcDo6RG9Ob3RT
d2VlcCk7CiB9CiAKIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3Qo
KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkK
LXsKLX0KLQogdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQogewogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZp
dHlDYWxsYmFja0NGLmNwcAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCwyOSArNDQsMzEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhIHsKLSAgICBzdGF0aWMgdm9pZCB0aW1lckRpZEZpcmUo
Q0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQgKmluZm8pOwotCi0gICAgUmV0YWluUHRyPENGUnVuTG9v
cFRpbWVyUmVmPiB0aW1lcjsKLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBydW5Mb29wOwot
ICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0OwotICAgIGRvdWJsZSBkZWxheTsKLX07
Ci0KIGNvbnN0IGRvdWJsZSBnY1RpbWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBv
ZiBDUFUgdGltZSB3ZSB3aWxsIHNwZW5kIHRvIHJlY2xhaW0gMSBNQgogY29uc3QgZG91YmxlIG1h
eEdDVGltZVNsaWNlID0gMC4wNTsgLy8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdl
IHdhbnQgdG8gdXNlIGZvciBvcHBvcnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9u
cy4KIGNvbnN0IGRvdWJsZSB0aW1lclNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9p
ZCBwZXJmb3JtYW5jZSBjb3N0IG9mIHJlc2V0dGluZyB0aW1lci4KIGNvbnN0IGRvdWJsZSBwYWdp
bmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGluIHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3Rp
YyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxsIGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMg
cGFnZWQgb3V0LgotY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgZGVjYWRlID0gNjAgKiA2MCAqIDI0ICog
MzY1ICogMTA7CiBjb25zdCBDRlRpbWVJbnRlcnZhbCBob3VyID0gNjAgKiA2MDsKIAotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0aW1lckRpZEZpcmUoQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQgKmluZm8pCitEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJh
Y2soaGVhcC0+Z2xvYmFsRGF0YSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCisgICAgLCBtX2Rl
bGF5KHNfZGVjYWRlKQogewotICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oaW5m
byk7Ci0gICAgaWYgKCFoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCktPmlzRW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm47Cit9CisKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgOiBH
Q0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+Z2xvYmFsRGF0YSgpLCBydW5Mb29wKQorICAgICwgbV9k
ZWxheShzX2RlY2FkZSkKK3sKK30KIAotICAgIEFQSUVudHJ5U2hpbSBzaGltKGhlYXAtPmdsb2Jh
bERhdGEoKSk7Cit2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit7Cisg
ICAgSGVhcCogaGVhcCA9ICZtX2dsb2JhbERhdGEtPmhlYXA7CisgICAgaWYgKCFpc0VuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFQSUVudHJ5U2hpbSBzaGltKG1fZ2xvYmFs
RGF0YSk7CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBpZiAoaGVhcC0+aXNQYWdlZE91dChz
dGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkgewpAQCAtNzcsNDggKzc5LDIwIEBAIHZvaWQgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGEKICNlbmRpZgogICAgIGhlYXAtPmNvbGxl
Y3RBbGxHYXJiYWdlKCk7CiB9Ci0KLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICAKK3ZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUgbmV3RGVsYXkpCiB7Ci0gICAgY29tbW9u
Q29uc3RydWN0b3IoaGVhcCwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsKLX0KLQotRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBD
RlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBjb21tb25Db25zdHJ1Y3RvcihoZWFwLCBydW5M
b29wKTsKLX0KLQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6fkRlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2soKQotewotICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKGQtPnJ1bkxvb3AuZ2V0KCks
IGQtPnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUnVuTG9vcFRp
bWVySW52YWxpZGF0ZShkLT50aW1lci5nZXQoKSk7Ci19Ci0KLXZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6Y29tbW9uQ29uc3RydWN0b3IoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCi17Ci0gICAgZCA9IGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
UGxhdGZvcm1EYXRhKTsKLQotICAgIG1lbXNldCgmZC0+Y29udGV4dCwgMCwgc2l6ZW9mKENGUnVu
TG9vcFRpbWVyQ29udGV4dCkpOwotICAgIGQtPmNvbnRleHQuaW5mbyA9IGhlYXA7Ci0gICAgZC0+
cnVuTG9vcCA9IHJ1bkxvb3A7Ci0gICAgZC0+dGltZXIuYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZSgwLCBkZWNhZGUsIGRlY2FkZSwgMCwgMCwgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1Bs
YXRmb3JtRGF0YTo6dGltZXJEaWRGaXJlLCAmZC0+Y29udGV4dCkpOwotICAgIGQtPmRlbGF5ID0g
ZGVjYWRlOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKGQtPnJ1bkxvb3AuZ2V0KCksIGQtPnRpbWVy
LmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotfQotCi1zdGF0aWMgdm9pZCBzY2hlZHVs
ZVRpbWVyKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEqIGQsIGRvdWJsZSBu
ZXdEZWxheSkKLXsKLSAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBkLT5kZWxheSkKKyAg
ICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47Ci0g
ICAgZG91YmxlIGRlbHRhID0gZC0+ZGVsYXkgLSBuZXdEZWxheTsKLSAgICBkLT5kZWxheSA9IG5l
d0RlbGF5OwotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVyLmdldCgp
LCBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShkLT50aW1lci5nZXQoKSkgLSBkZWx0YSk7
CisgICAgZG91YmxlIGRlbHRhID0gbV9kZWxheSAtIG5ld0RlbGF5OworICAgIG1fZGVsYXkgPSBu
ZXdEZWxheTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgp
LCBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpKSAtIGRlbHRhKTsK
IH0KIAotc3RhdGljIHZvaWQgY2FuY2VsVGltZXIoRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1Bs
YXRmb3JtRGF0YSogZCkKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGlt
ZXIoKQogewotICAgIGQtPmRlbGF5ID0gZGVjYWRlOwotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKGQtPnRpbWVyLmdldCgpLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGRl
Y2FkZSk7CisgICAgbV9kZWxheSA9IHNfZGVjYWRlOworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgc19k
ZWNhZGUpOwogfQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRl
KHNpemVfdCBieXRlcykKQEAgLTEyNywyOSArMTAxLDIwIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6ZGlkQWxsb2MKICAgICAvLyBXZSBwcmV0ZW5kIGl0J3Mgb25lIGJ5dGUgc28g
dGhhdCB3ZSBkb24ndCBpZ25vcmUgdGhpcyBhbGxvY2F0aW9uIGVudGlyZWx5LgogICAgIGlmICgh
Ynl0ZXMpCiAgICAgICAgIGJ5dGVzID0gMTsKLSAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8
SGVhcCo+KGQtPmNvbnRleHQuaW5mbyk7CisgICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhl
YXAqPigmbV9nbG9iYWxEYXRhLT5oZWFwKTsKICAgICBkb3VibGUgZ2NUaW1lU2xpY2UgPSBzdGQ6
Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgLyBNQikgKiBnY1RpbWVTbGljZVBlck1C
LCBtYXhHQ1RpbWVTbGljZSk7CiAgICAgZG91YmxlIG5ld0RlbGF5ID0gaGVhcC0+bGFzdEdDTGVu
Z3RoKCkgLyBnY1RpbWVTbGljZTsKLSAgICBzY2hlZHVsZVRpbWVyKGQuZ2V0KCksIG5ld0RlbGF5
KTsKKyAgICBzY2hlZHVsZVRpbWVyKG5ld0RlbGF5KTsKIH0KIAogdm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7Ci0gICAgY2FuY2VsVGltZXIoZC5nZXQoKSk7
Ci19Ci0KLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c3luY2hyb25pemUoKQotewot
ICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gZC0+cnVuTG9vcC5nZXQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIENGUnVuTG9vcFJlbW92ZVRpbWVyKGQtPnJ1bkxvb3AuZ2V0KCksIGQt
PnRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIGQtPnJ1bkxvb3AgPSBD
RlJ1bkxvb3BHZXRDdXJyZW50KCk7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoZC0+cnVuTG9vcC5n
ZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgY2FuY2Vs
VGltZXIoKTsKIH0KIAogdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQog
ewotICAgIGNhbmNlbFRpbWVyKGQuZ2V0KCkpOworICAgIGNhbmNlbFRpbWVyKCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148216</attachid>
            <date>2012-06-18 17:50:19 -0700</date>
            <delta_ts>2012-06-19 11:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89400-20120618175019.patch</filename>
            <type>text/plain</type>
            <size>29834</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNjQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTA2LTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIgc2hvdWxk
IHNoYXJlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQSBsb3Qgb2YgZnVuY3Rpb25hbGl0eSBpcyBkdXBsaWNhdGVkIGJldHdlZW4gR0NBY3Rpdml0
eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIuIAorICAgICAgICBXZSBzaG91bGQgZXh0
cmFjdCB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgb3V0IGludG8gYSBzZXBhcmF0ZSBjbGFzcyB0
aGF0IGJvdGggb2YgdGhlbSAKKyAgICAgICAgY2FuIGluaGVyaXQgZnJvbS4gVGhpcyByZWZhY3Rv
cmluZyB3aWxsIGJlIGFuIGV2ZW4gZ3JlYXRlciBib29uIHdoZW4gd2UgYWRkIHRoZSBhYmlsaXR5
IAorICAgICAgICB0byBzaHV0IHRoZXNlIHR3byBhZ2VudHMgZG93biBpbiBhIHRocmVhZC1zYWZl
IGZhc2hpb24KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6IE1vdmUgaW5pdGlhbGl6
YXRpb24gZG93biBzbyB0aGF0IHRoZSBKU0dsb2JhbERhdGEgaGFzIGEgdmFsaWQgSGVhcCB3aGVu
IAorICAgICAgICB3ZSdyZSBpbml0aWFsaXppbmcgdGhlIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQg
dGhlIEluY3JlbWVudGFsU3dlZXBlci4KKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KEhlYXApOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcDogQ2hhbmdlcyB0
byBhY2NvbW9kYXRlIHRoZSBleHRyYWN0aW9uIG9mIGNvbW1vbiBmdW5jdGlvbmFsaXR5IAorICAg
ICAgICBiZXR3ZWVuIEluY3JlbWVudGFsU3dlZXBlciBhbmQgR0NBY3Rpdml0eUNhbGxiYWNrIGlu
dG8gYSBjb21tb24gYW5jZXN0b3IuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNy
ZW1lbnRhbFN3ZWVwZXI6OmRvV29yayk6IAorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6Y2FuY2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6Cisg
ICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAqIHJ1bnRpbWUvRXh0ZXJuYWxW
TUFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpFeHRlcm5h
bFZNQWdlbnQ6OkV4dGVybmFsVk1BZ2VudCk6IEluaXRpYWxpemUgdGhlIHZhcmlvdXMgYmFzZSBj
bGFzcyBkYXRhIHRoYXQKKyAgICAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y29tbW9u
Q29uc3RydWN0b3IoKSB1c2VkIHRvIGRvLgorICAgICAgICAoSlNDOjpFeHRlcm5hbFZNQWdlbnQ6
On5FeHRlcm5hbFZNQWdlbnQpOiBDYWxsIHRvIGludmFsaWRhdGUoKS4KKyAgICAgICAgKEpTQzo6
RXh0ZXJuYWxWTUFnZW50OjpzeW5jaHJvbml6ZSk6IFNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUg
b2xkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkuCisgICAgICAgIFZp
cnR1YWwgc28gdGhhdCBub24tQ0Ygc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUuCisgICAgICAgIChK
U0M6OkV4dGVybmFsVk1BZ2VudDo6aW52YWxpZGF0ZSk6IFRlYXJzIGRvd24gdGhlIHJ1bmxvb3Ag
dGltZXIgdG8gcHJldmVudCBhbnkgZnV0dXJlIGZpcmluZy4KKyAgICAgICAgKEpTQzo6RXh0ZXJu
YWxWTUFnZW50Ojp0aW1lckRpZEZpcmUpOiBDYWxsYmFjayB0byBwYXNzIHRvIHRoZSB0aW1lciBm
dW5jdGlvbi4gQ2FzdHMgYW5kIGNhbGxzIHRoZSB2aXJ0dWFsIGRvV29yaygpLgorICAgICAgICAq
IHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50Lmg6IEFkZGVkLiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0
IHNlcnZlcyBhcyB0aGUgY29tbW9uIGJhc2UgY2xhc3MgZm9yIAorICAgICAgICBib3RoIEdDQWN0
aXZpdHlDYWxsYmFjayBhbmQgSW5jcmVtZW50YWxTd2VlcGVyLiBJdCBoYW5kbGVzIHNldHRpbmcg
dXAgYW5kIHRlYXJpbmcgZG93biBydW4gbG9vcHMgYW5kIHN5bmNocm9uaXppbmcgCisgICAgICAg
IGFjcm9zcyB0aHJlYWRzIGZvciBpdHMgc3ViY2xhc3Nlcy4gCisgICAgICAgIChKU0MpOgorICAg
ICAgICAoRXh0ZXJuYWxWTUFnZW50KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxs
YmFjay5jcHA6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpkb1dvcmspOgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmg6
CisgICAgICAgIChHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5
Q2FsbGJhY2s6OndpbGxDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNr
OjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2spOiBSZW1vdmUgdGhlIHBsYXRmb3JtIGRhdGEgc3RydWN0LiBUaGUg
cGxhdGZvcm0gZGF0YSBzaG91bGQgYmUga2VwdCBpbiAKKyAgICAgICAgdGhlIGNsYXNzIGl0c2Vs
ZiBzbyBhcyB0byBiZSBhY2Nlc3NpYmxlIGJ5IGRvV29yaygpLiBNb3N0IG9mIHRoZSBwbGF0Zm9y
bSBkYXRhIGZvciBDRiBpcyBrZXB0IGluIAorICAgICAgICBFeHRlcm5hbFZNQWdlbnQgYW55d2F5
cywgc28gd2Ugb25seSBuZWVkIHRoZSBtX2RlbGF5IGZpZWxkIG5vdy4KKyAgICAgICAgKiBydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29y
ayk6CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0NGLmNwcDogCisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKTogUmVtb3ZlIGFsbCBtZXRob2RzIGFuZCBkYXRhIHRoYXQgYXJl
IG5vdyAKKyAgICAgICAgaGFuZGxlZCBieSB0aGUgRXh0ZXJuYWxWTUFnZW50LiAKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCk6CisgICAgICAgIChKU0M6OkRl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCk6CisKIDIwMTItMDYtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBHQyBjb3B5IHBoYXNlIHNwZW5k
cyBuZWVkbGVzcyBjeWNsZXMgemVyby1maWxsaW5nIGJsb2NrcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDcgQEAg
U0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKICAgICBydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCisgICAgcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuY3BwCiAgICAgcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw2
ICs0NTUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVy
bmFsVk1BZ2VudC5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5h
bFZNQWdlbnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MDYxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzEsNiArMTcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgXAogICAgIHJ1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgXAorICAgIHJ1bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcCBcCiAg
ICAgcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gMTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTY5OCw2ICs2OTgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxFeHRlcm5hbFZNQWdlbnQu
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEV4dGVybmFsVk1BZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTcxNCw3ICs3MjIsNyBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdDQWN0aXZpdHlD
YWxsYmFjay5jcHAiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEdDQWN0aXZpdHlD
YWxsYmFja0NGLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMDYxMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NDgsNiArNjQ4LDggQEAKIAkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8q
IEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMy
QjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkMxMTREQTAxNEUwMENCQUM4
NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2Nh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovOyB9OworCQlD
MkMxQjBCQjE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkMxQjBCQTE1OEZBRTA3MDA1REMx
MEYgLyogRXh0ZXJuYWxWTUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQzJDMUIwQkUxNThGQUU4MTAwNURDMTBGIC8qIEV4dGVybmFsVk1B
Z2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MkMxQjBCRDE1OEZBRTgxMDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50LmNwcCAqLzsgfTsKIAkJ
QzJDOEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEz
QzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMwMTRBM0NFRkMwMDU3
OEU2NSAvKiBDb3BpZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzEx
NEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9j
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MzUxLDYgKzEzNTMsOCBAQAogCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50
YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluY3JlbWVudGFs
U3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0REEwMTRF
MDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hcmtlZEFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MkI5MTZDNDE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzFCMEJBMTU4RkFFMDcwMDVEQzEwRiAvKiBFeHRlcm5h
bFZNQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxWTUFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQzFCMEJEMTU4RkFFODEwMDVE
QzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRXh0ZXJuYWxWTUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGluZU1ldGhv
ZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEzQ0VGQzAwNTc4
RTY1IC8qIENvcGllZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cGllZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRBM0NF
RkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDY2LDYgKzIw
NzAsOCBAQAogCQkJCTE0QkZDRTY4MTBDREIxRkMwMDM2NENDRSAvKiBXZWFrR0NNYXAuaCAqLywK
IAkJCQkxNDIwQkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCUE3
RENCNzc5MTJFM0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKKwkJCQlDMkMxQjBC
QTE1OEZBRTA3MDA1REMxMEYgLyogRXh0ZXJuYWxWTUFnZW50LmggKi8sCisJCQkJQzJDMUIwQkQx
NThGQUU4MTAwNURDMTBGIC8qIEV4dGVybmFsVk1BZ2VudC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjMzNyw2ICsyMzQz
LDcgQEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyQzFCMEJCMTU4RkFFMDcwMDVE
QzEwRiAvKiBFeHRlcm5hbFZNQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLApAQCAtMzI1Nyw2ICszMjY0LDcgQEAKIAkJCQkwRjkxOUQxMDE1N0YzMzI5
MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjkxOUQyNTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQzJDMUIwQkUxNThGQUU4MTAwNURDMTBGIC8qIEV4dGVybmFsVk1B
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDggKzI0NSw2IEBAIEhlYXA6OkhlYXAoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEKICAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09w
ZXJhdGlvbikKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFnZVNwYWNl
KHRoaXMpCi0gICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9tYWNoaW5lVGhyZWFkcyh0aGlzKQogICAgICwgbV9zaGFyZWRE
YXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSkKQEAgLTI1
NSw2ICsyNTMsOCBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhCiAg
ICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdEdDTGVuZ3RoKDApCiAg
ICAgLCBtX2xhc3RDb2RlRGlzY2FyZFRpbWUoV1RGOjpjdXJyZW50VGltZSgpKQorICAgICwgbV9h
Y3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkK
KyAgICAsIG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKIHsKICAg
ICBtX3N0b3JhZ2VTcGFjZS5pbml0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw5ICsyMjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0
b3JzOwogICAgICAgICBPd25QdHI8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+ID4gbV9t
YXJrTGlzdFNldDsKIAotICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2
aXR5Q2FsbGJhY2s7Ci0gICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBl
cjsKLSAgICAgICAgCiAgICAgICAgIE1hY2hpbmVUaHJlYWRzIG1fbWFjaGluZVRocmVhZHM7CiAg
ICAgICAgIAogICAgICAgICBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhIG1fc2hhcmVkRGF0YTsK
QEAgLTI0MCw2ICsyMzcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIG1fbGFz
dEdDTGVuZ3RoOwogICAgICAgICBkb3VibGUgbV9sYXN0Q29kZURpc2NhcmRUaW1lOwogCisgICAg
ICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAg
ICAgT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgICAgICAKICAgICAg
ICAgRG91Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAg
fTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRh
bFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAxMjA2MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCwzMyArMTQs
MjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBVU0UoQ0YpCiAKLXN0YXRpYyBjb25zdCBDRlRp
bWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKIHN0YXRpYyBjb25z
dCBDRlRpbWVJbnRlcnZhbCBzd2VlcFRpbWVTbGljZVBlckJsb2NrID0gMC4wMTsKIHN0YXRpYyBj
b25zdCBDRlRpbWVJbnRlcnZhbCBzd2VlcFRpbWVNdWx0aXBsaWVyID0gMS4wIC8gc3dlZXBUaW1l
U2xpY2VQZXJCbG9jazsKICAKLXZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp0aW1lckRpZEZpcmUo
Q0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqIGluZm8pCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
ZG9Xb3JrKCkKIHsKLSAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KGluZm8pOwot
ICAgIEFQSUVudHJ5U2hpbSBzaGltKGhlYXAtPmdsb2JhbERhdGEoKSk7Ci0gICAgaGVhcC0+c3dl
ZXBlcigpLT5kb1N3ZWVwKFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOworICAg
IEFQSUVudHJ5U2hpbSBzaGltKG1fZ2xvYmFsRGF0YSk7CisgICAgZG9Td2VlcChXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKIH0KICAgICAKIEluY3JlbWVudGFsU3dlZXBlcjo6
SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQotICAg
IDogbV9oZWFwKGhlYXApCisgICAgOiBFeHRlcm5hbFZNQWdlbnQoaGVhcC0+Z2xvYmFsRGF0YSgp
LCBydW5Mb29wKQogICAgICwgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKICAgICAsIG1f
bGVuZ3RoT2ZMYXN0U3dlZXBJbmNyZW1lbnQoMC4wKQogewotICAgIG1lbXNldCgmbV9jb250ZXh0
LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJDb250ZXh0KSk7Ci0gICAgbV9jb250ZXh0LmluZm8g
PSBtX2hlYXA7Ci0gICAgbV9ydW5Mb29wID0gcnVuTG9vcDsKLSAgICBtX3RpbWVyLmFkb3B0Q0Yo
Q0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIGRlY2Fk
ZSwgMCwgMCwgJnRpbWVyRGlkRmlyZSwgJm1fY29udGV4dCkpOwotICAgIENGUnVuTG9vcEFkZFRp
bWVyKG1fcnVuTG9vcC5nZXQoKSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKLX0KLQotSW5jcmVtZW50YWxTd2VlcGVyOjp+SW5jcmVtZW50YWxTd2VlcGVyKCkKLXsKLSAg
ICBDRlJ1bkxvb3BSZW1vdmVUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGlt
ZXIuZ2V0KCkpOwogfQogCiBQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gSW5jcmVtZW50
YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCogaGVhcCkKQEAgLTU1LDcgKzQyLDcgQEAgdm9pZCBJbmNy
ZW1lbnRhbFN3ZWVwZXI6OnNjaGVkdWxlVGltZXIoKQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBl
cjo6Y2FuY2VsVGltZXIoKQogewotICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1f
dGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgZGVjYWRlKTsKKyAgICBD
RlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIHNfZGVjYWRlKTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6
OmRvU3dlZXAoZG91YmxlIHN3ZWVwQmVnaW5UaW1lKQpAQCAtODUsMTcgKzcyLDE4IEBAIHZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGMKIAogI2Vsc2UKIAotSW5jcmVtZW50
YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoKQorSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNy
ZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAgIDogRXh0ZXJuYWxW
TUFnZW50KGdsb2JhbERhdGEpCiB7CiB9CiAKLUluY3JlbWVudGFsU3dlZXBlcjo6fkluY3JlbWVu
dGFsU3dlZXBlcigpCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Xb3JrKCkKIHsKIH0KIAot
UGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRl
KEhlYXAqKQorUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBl
cjo6Y3JlYXRlKEhlYXAqIGhlYXApCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmNyZW1l
bnRhbFN3ZWVwZXIoKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmNyZW1lbnRhbFN3ZWVw
ZXIoaGVhcC0+Z2xvYmFsRGF0YSgpKSk7CiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpz
dGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24g
MTIwNjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzEsMzcgQEAKICNpZm5kZWYgSW5jcmVtZW50YWxT
d2VlcGVyX2gKICNkZWZpbmUgSW5jcmVtZW50YWxTd2VlcGVyX2gKIAorI2luY2x1ZGUgIkV4dGVy
bmFsVk1BZ2VudC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0YpCi0jaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgSGVhcDsKICAgICAKLWNsYXNzIEluY3JlbWVudGFsU3dlZXBlciB7Citj
bGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXIgOiBwdWJsaWMgRXh0ZXJuYWxWTUFnZW50IHsKIHB1Ymxp
YzoKLSAgICB+SW5jcmVtZW50YWxTd2VlcGVyKCk7Ci0KICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bmNyZW1lbnRhbFN3ZWVwZXI+IGNyZWF0ZShIZWFwKik7CiAgICAgdm9pZCBzdGFydFN3ZWVwaW5n
KGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgYmxvY2tTbmFwc2hvdCk7CisgICAgdmlydHVh
bCB2b2lkIGRvV29yaygpOwogCiBwcml2YXRlOgogI2lmIFVTRShDRikKICAgICBJbmNyZW1lbnRh
bFN3ZWVwZXIoSGVhcCosIENGUnVuTG9vcFJlZik7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgdGlt
ZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CiAgICAgdm9pZCBkb1N3ZWVwKGRv
dWJsZSBzdGFydFRpbWUpOwogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwogICAgIHZvaWQgY2Fu
Y2VsVGltZXIoKTsKICAgICAKLSAgICBIZWFwKiBtX2hlYXA7CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50QmxvY2tUb1N3ZWVwSW5kZXg7Ci0gICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBt
X3RpbWVyOwotICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKLSAgICBDRlJ1
bkxvb3BUaW1lckNvbnRleHQgbV9jb250ZXh0OwotICAgCiAgICAgZG91YmxlIG1fbGVuZ3RoT2ZM
YXN0U3dlZXBJbmNyZW1lbnQ7IAogICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+IG1fYmxvY2tzVG9T
d2VlcDsKICNlbHNlCiAgICAgCi0gICAgSW5jcmVtZW50YWxTd2VlcGVyKCk7CisgICAgSW5jcmVt
ZW50YWxTd2VlcGVyKEpTR2xvYmFsRGF0YSopOwogICAgIAogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeHRlcm5hbFZNQWdlbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXh0ZXJuYWxWTUFn
ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkV4dGVybmFsVk1BZ2VudC5oIgorCisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShDRikKKyAgICAKK2NvbnN0IENGVGlt
ZUludGVydmFsIEV4dGVybmFsVk1BZ2VudDo6c19kZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUg
KiAxMDsKKworRXh0ZXJuYWxWTUFnZW50OjpFeHRlcm5hbFZNQWdlbnQoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IG1fZ2xvYmFsRGF0YShnbG9i
YWxEYXRhKQorICAgICwgbV9ydW5Mb29wKHJ1bkxvb3ApCit7CisgICAgbWVtc2V0KCZtX2NvbnRl
eHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRleHQpKTsKKyAgICBtX2NvbnRleHQuaW5m
byA9IHRoaXM7CisgICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIHNf
ZGVjYWRlLCBzX2RlY2FkZSwgMCwgMCwgRXh0ZXJuYWxWTUFnZW50Ojp0aW1lckRpZEZpcmUsICZt
X2NvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGlt
ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0V4dGVybmFsVk1BZ2VudDo6
fkV4dGVybmFsVk1BZ2VudCgpCit7CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIEV4dGVy
bmFsVk1BZ2VudDo6c3luY2hyb25pemUoKQoreworICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50
KCkgPT0gbV9ydW5Mb29wLmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wUmVt
b3ZlVGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOworICAgIG1fcnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKyAgICBDRlJ1
bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7Cit9CisKK3ZvaWQgRXh0ZXJuYWxWTUFnZW50OjppbnZhbGlkYXRlKCkKK3sK
KyAgICBDRlJ1bkxvb3BSZW1vdmVUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1f
dGltZXIuZ2V0KCkpOworfQorCit2b2lkIEV4dGVybmFsVk1BZ2VudDo6dGltZXJEaWRGaXJlKENG
UnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBpbmZvKQoreworICAgIEV4dGVybmFsVk1BZ2VudCogYWdl
bnQgPSBzdGF0aWNfY2FzdDxFeHRlcm5hbFZNQWdlbnQqPihpbmZvKTsKKyAgICBhZ2VudC0+ZG9X
b3JrKCk7Cit9CisKKyNlbHNlCisgICAgCitFeHRlcm5hbFZNQWdlbnQ6OkV4dGVybmFsVk1BZ2Vu
dChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKK3sKK30KKworRXh0ZXJuYWxWTUFnZW50Ojp+RXh0ZXJuYWxWTUFnZW50KCkKK3sKK30KKwor
dm9pZCBFeHRlcm5hbFZNQWdlbnQ6OnN5bmNocm9uaXplKCkKK3sKK30KKwordm9pZCBFeHRlcm5h
bFZNQWdlbnQ6OmludmFsaWRhdGUoKQoreworfQorCisKKyNlbmRpZgorICAgIAorCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4dGVybmFs
Vk1BZ2VudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
dGVybmFsVk1BZ2VudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXh0ZXJuYWxWTUFnZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKyNp
Zm5kZWYgRXh0ZXJuYWxWTUFnZW50X2gKKyNkZWZpbmUgRXh0ZXJuYWxWTUFnZW50X2gKKworI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dsb2JhbERhdGE7CisgICAgCitjbGFzcyBFeHRlcm5hbFZNQWdlbnQgeworcHVibGlj
OgorI2lmIFVTRShDRikKKyAgICBFeHRlcm5hbFZNQWdlbnQoSlNHbG9iYWxEYXRhKiwgQ0ZSdW5M
b29wUmVmKTsKKyAgICBzdGF0aWMgdm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYs
IHZvaWQqKTsKKyNlbHNlCisgICAgRXh0ZXJuYWxWTUFnZW50KEpTR2xvYmFsRGF0YSopOworI2Vu
ZGlmCisgICAgCisgICAgdmlydHVhbCB+RXh0ZXJuYWxWTUFnZW50KCk7CisgICAgCisgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplKCk7CisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpID0gMDsK
KyAgICAKK3Byb3RlY3RlZDoKKyAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKworI2lm
IFVTRShDRikKKyAgICBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwgc19kZWNhZGU7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisgICAgUmV0YWluUHRyPENG
UnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRl
eHQ7CisjZW5kaWYKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDEy
MDYxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE2ICsyOSwxNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogCi1uYW1lc3BhY2UgSlNDIHsK
KyNpbmNsdWRlICJIZWFwLmgiCiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxh
dGZvcm1EYXRhIHsKLX07CituYW1lc3BhY2UgSlNDIHsKIAotRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKikKK0RlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdD
QWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9iYWxEYXRhKCkpCiB7CiB9CiAKLURlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKIHsKIH0KIApAQCAtNTAsMTAgKzUwLDYgQEAg
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbAogewogfQogCi12b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkKLXsKLX0KLQogdm9pZCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQogewogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9u
IDEyMDYxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxs
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIEdDQWN0aXZp
dHlDYWxsYmFja19oCiAjZGVmaW5lIEdDQWN0aXZpdHlDYWxsYmFja19oCiAKKyNpbmNsdWRlICJF
eHRlcm5hbFZNQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIApAQCAtNDAsNDcgKzQxLDU0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBIZWFwOwogCi1jbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgeworY2xhc3MgR0NBY3Rpdml0
eUNhbGxiYWNrIDogcHVibGljIEV4dGVybmFsVk1BZ2VudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVh
bCB+R0NBY3Rpdml0eUNhbGxiYWNrKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRl
KHNpemVfdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsg
fQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAg
dm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soKQotICAgICAgICA6IG1fZW5hYmxl
ZCh0cnVlKQorI2lmIFVTRShDRikKKyAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICAgICAgOiBFeHRlcm5hbFZN
QWdlbnQoZ2xvYmFsRGF0YSwgcnVuTG9vcCkKKyAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAg
ICB7CisgICAgfQorIyBlbHNlCisgICAgR0NBY3Rpdml0eUNhbGxiYWNrKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKKyAgICAgICAgOiBFeHRlcm5hbFZNQWdlbnQoZ2xvYmFsRGF0YSkKKyAgICAg
ICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICB7CiAgICAgfQorI2VuZGlmCiAKICAgICBib29sIG1f
ZW5hYmxlZDsKIH07CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1E
YXRhOwotCiBjbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZp
dHlDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKIAogICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCopOwotICAgIHZpcnR1YWwgfkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQ29sbGVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCk7CiAK
ICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6CiAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhI
ZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKLSAgICB2b2lkIGNvbW1vbkNvbnN0cnVjdG9yKEhlYXAqLCBD
RlJ1bkxvb3BSZWYpOwotI2VuZGlmCi0KKyAgICAKKyAgICB2b2lkIGNhbmNlbFRpbWVyKCk7Cisg
ICAgdm9pZCBzY2hlZHVsZVRpbWVyKGRvdWJsZSk7CisgICAgCiBwcml2YXRlOgotICAgIE93blB0
cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhPiBkOworICAgIGRvdWJsZSBt
X2RlbGF5OworI2VuZGlmCiB9OwogCiBpbmxpbmUgUGFzc093blB0cjxEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrPiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUoSGVhcCogaGVhcCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0Js
YWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMjA2MTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tCbGFja0JlcnJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTcgKzI0LDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1zdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YSB7Ci0gICAg
ZXhwbGljaXQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YShIZWFwKiBoZWFw
KSA6IG1faGVhcChoZWFwKSB7IH0KLSAgICBIZWFwKiBtX2hlYXA7Ci19OwotCiBEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCi0g
ICAgOiBkKGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRh
KGhlYXApKSkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9iYWxEYXRhKCkpCiB7
CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKCkKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiB7CiB9CiAKQEAgLTQ2
LDIwICs0MSwxNiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jCiAg
ICAgaWYgKGJ5dGVzQWxsb2NhdGVkIDwgMSAqIDEwMjQgKiAxMDI0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoZC0+bV9oZWFwLT5pc0J1c3koKSB8fCAhZC0+bV9oZWFwLT5pc1NhZmVUb0Nv
bGxlY3QoKSkKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5oZWFwLmlzQnVzeSgpIHx8ICFtX2dsb2Jh
bERhdGEtPmhlYXAuaXNTYWZlVG9Db2xsZWN0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGQt
Pm1faGVhcC0+Y29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKKyAgICBtX2dsb2JhbERhdGEtPmhl
YXAuY29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKIH0KIAogdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6c3luY2hyb25pemUoKQotewotfQotCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNhbmNlbCgpCiB7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCShyZXZpc2lvbiAxMjA2MTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDI5ICs0NCwzMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEgewotICAgIHN0
YXRpYyB2b2lkIHRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbyk7Ci0K
LSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHRpbWVyOwotICAgIFJldGFpblB0cjxD
RlJ1bkxvb3BSZWY+IHJ1bkxvb3A7Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQ7
Ci0gICAgZG91YmxlIGRlbGF5OwotfTsKLQogY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVyTUIg
PSAwLjAxOyAvLyBQZXJjZW50YWdlIG9mIENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVjbGFp
bSAxIE1CCiBjb25zdCBkb3VibGUgbWF4R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4aW11
bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ugd2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMgdGlt
ZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25zLgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIuMDsg
Ly8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5nIHRp
bWVyLgogY29uc3QgZG91YmxlIHBhZ2luZ1RpbWVPdXQgPSAwLjE7IC8vIFRpbWUgaW4gc2Vjb25k
cyB0byBhbGxvdyBvcHBvcnR1bmlzdGljIHRpbWVyIHRvIGl0ZXJhdGUgb3ZlciBhbGwgYmxvY2tz
IHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCi1jb25zdCBDRlRpbWVJbnRlcnZhbCBk
ZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKIGNvbnN0IENGVGltZUludGVydmFsIGhv
dXIgPSA2MCAqIDYwOwogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURh
dGE6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAqaW5mbykKK0RlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkK
KyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9iYWxEYXRhKCksIENGUnVuTG9vcEdl
dEN1cnJlbnQoKSkKKyAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7Ci0gICAgSGVhcCogaGVhcCA9
IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKLSAgICBpZiAoIWhlYXAtPmFjdGl2aXR5Q2FsbGJh
Y2soKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKK30KKworRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9iYWxEYXRh
KCksIHJ1bkxvb3ApCisgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQoreworfQogCi0gICAgQVBJRW50
cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0YSgpKTsKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Xb3JrKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fZ2xvYmFsRGF0YS0+aGVh
cDsKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQVBJ
RW50cnlTaGltIHNoaW0obV9nbG9iYWxEYXRhKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGRv
dWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAg
IGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7CkBAIC03
Nyw0OCArNzksMjAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYQog
I2VuZGlmCiAgICAgaGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0KLQotRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAg
IAordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBu
ZXdEZWxheSkKIHsKLSAgICBjb21tb25Db25zdHJ1Y3RvcihoZWFwLCBDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpOwotfQotCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQotewotICAgIGNvbW1v
bkNvbnN0cnVjdG9yKGhlYXAsIHJ1bkxvb3ApOwotfQotCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCi17Ci0gICAgQ0ZSdW5Mb29wUmVtb3Zl
VGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKGQtPnRpbWVyLmdldCgpKTsKLX0K
LQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjb21tb25Db25zdHJ1Y3RvcihIZWFw
KiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBkID0gYWRvcHRQdHIobmV3IERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEpOwotCi0gICAgbWVtc2V0KCZkLT5j
b250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJDb250ZXh0KSk7Ci0gICAgZC0+Y29udGV4
dC5pbmZvID0gaGVhcDsKLSAgICBkLT5ydW5Mb29wID0gcnVuTG9vcDsKLSAgICBkLT50aW1lci5h
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIGRlY2FkZSwgZGVjYWRlLCAwLCAwLCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0aW1lckRpZEZpcmUsICZkLT5jb250
ZXh0KSk7Ci0gICAgZC0+ZGVsYXkgPSBkZWNhZGU7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoZC0+
cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHNjaGVkdWxlVGltZXIoRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1Bs
YXRmb3JtRGF0YSogZCwgZG91YmxlIG5ld0RlbGF5KQotewotICAgIGlmIChuZXdEZWxheSAqIHRp
bWVyU2xvcCA+IGQtPmRlbGF5KQorICAgIGlmIChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVs
YXkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgZGVsdGEgPSBkLT5kZWxheSAtIG5ld0Rl
bGF5OwotICAgIGQtPmRlbGF5ID0gbmV3RGVsYXk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0
RmlyZURhdGUoZC0+dGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0TmV4dEZpcmVEYXRlKGQt
PnRpbWVyLmdldCgpKSAtIGRlbHRhKTsKKyAgICBkb3VibGUgZGVsdGEgPSBtX2RlbGF5IC0gbmV3
RGVsYXk7CisgICAgbV9kZWxheSA9IG5ld0RlbGF5OworICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4
dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0TmV4dEZpcmVEYXRlKG1f
dGltZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi1zdGF0aWMgdm9pZCBjYW5jZWxUaW1lcihEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhKiBkKQordm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgZC0+ZGVsYXkgPSBkZWNhZGU7Ci0g
ICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZC0+dGltZXIuZ2V0KCksIENGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpICsgZGVjYWRlKTsKKyAgICBtX2RlbGF5ID0gc19kZWNhZGU7Cisg
ICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZSk7CiB9CiAKIHZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpAQCAtMTI3LDI5ICsxMDEsMjAg
QEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIC8vIFdlIHBy
ZXRlbmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9yZSB0aGlzIGFsbG9jYXRp
b24gZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0ZXMgPSAxOwotICAgIEhl
YXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oZC0+Y29udGV4dC5pbmZvKTsKKyAgICBIZWFw
KiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KCZtX2dsb2JhbERhdGEtPmhlYXApOwogICAgIGRv
dWJsZSBnY1RpbWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAv
IE1CKSAqIGdjVGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsKICAgICBkb3VibGUgbmV3
RGVsYXkgPSBoZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlOwotICAgIHNjaGVkdWxl
VGltZXIoZC5nZXQoKSwgbmV3RGVsYXkpOworICAgIHNjaGVkdWxlVGltZXIobmV3RGVsYXkpOwog
fQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKLSAg
ICBjYW5jZWxUaW1lcihkLmdldCgpKTsKLX0KLQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpzeW5jaHJvbml6ZSgpCi17Ci0gICAgaWYgKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBk
LT5ydW5Mb29wLmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlVGlt
ZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7Ci0gICAgZC0+cnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLSAgICBDRlJ1bkxv
b3BBZGRUaW1lcihkLT5ydW5Mb29wLmdldCgpLCBkLT50aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICBjYW5jZWxUaW1lcigpOwogfQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7Ci0gICAgY2FuY2VsVGltZXIoZC5nZXQoKSk7CisgICAg
Y2FuY2VsVGltZXIoKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148363</attachid>
            <date>2012-06-19 11:09:14 -0700</date>
            <delta_ts>2012-06-19 11:10:13 -0700</delta_ts>
            <desc>Checking builds</desc>
            <filename>bug-89400-20120619110913.patch</filename>
            <type>text/plain</type>
            <size>29285</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEyLTA2LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIgc2hvdWxk
IHNoYXJlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQSBsb3Qgb2YgZnVuY3Rpb25hbGl0eSBpcyBkdXBsaWNhdGVkIGJldHdlZW4gR0NBY3Rpdml0
eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIuIAorICAgICAgICBXZSBzaG91bGQgZXh0
cmFjdCB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgb3V0IGludG8gYSBzZXBhcmF0ZSBjbGFzcyB0
aGF0IGJvdGggb2YgdGhlbSAKKyAgICAgICAgY2FuIGluaGVyaXQgZnJvbS4gVGhpcyByZWZhY3Rv
cmluZyB3aWxsIGJlIGFuIGV2ZW4gZ3JlYXRlciBib29uIHdoZW4gd2UgYWRkIHRoZSBhYmlsaXR5
IAorICAgICAgICB0byBzaHV0IHRoZXNlIHR3byBhZ2VudHMgZG93biBpbiBhIHRocmVhZC1zYWZl
IGZhc2hpb24KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6IE1vdmUgaW5pdGlhbGl6
YXRpb24gZG93biBzbyB0aGF0IHRoZSBKU0dsb2JhbERhdGEgaGFzIGEgdmFsaWQgSGVhcCB3aGVu
IAorICAgICAgICB3ZSdyZSBpbml0aWFsaXppbmcgdGhlIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQg
dGhlIEluY3JlbWVudGFsU3dlZXBlci4KKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KEhlYXApOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OkhlYXBUaW1lcik6IEluaXRpYWxpemUgdGhl
IHZhcmlvdXMgYmFzZSBjbGFzcyBkYXRhIHRoYXQKKyAgICAgICAgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6Y29tbW9uQ29uc3RydWN0b3IoKSB1c2VkIHRvIGRvLgorICAgICAgICAoSlNDOjpI
ZWFwVGltZXI6On5IZWFwVGltZXIpOiBDYWxsIHRvIGludmFsaWRhdGUoKS4KKyAgICAgICAgKEpT
Qzo6SGVhcFRpbWVyOjpzeW5jaHJvbml6ZSk6IFNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUgb2xk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkuCisgICAgICAgIFZpcnR1
YWwgc28gdGhhdCBub24tQ0Ygc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUuCisgICAgICAgIChKU0M6
OkhlYXBUaW1lcjo6aW52YWxpZGF0ZSk6IFRlYXJzIGRvd24gdGhlIHJ1bmxvb3AgdGltZXIgdG8g
cHJldmVudCBhbnkgZnV0dXJlIGZpcmluZy4KKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0aW1l
ckRpZEZpcmUpOiBDYWxsYmFjayB0byBwYXNzIHRvIHRoZSB0aW1lciBmdW5jdGlvbi4gQ2FzdHMg
YW5kIGNhbGxzIHRoZSB2aXJ0dWFsIGRvV29yaygpLgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVy
Lmg6IEFkZGVkLiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0IHNlcnZlcyBhcyB0aGUgY29tbW9uIGJh
c2UgY2xhc3MgZm9yIAorICAgICAgICBib3RoIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQgSW5jcmVt
ZW50YWxTd2VlcGVyLiBJdCBoYW5kbGVzIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBydW4g
bG9vcHMgYW5kIHN5bmNocm9uaXppbmcgCisgICAgICAgIGFjcm9zcyB0aHJlYWRzIGZvciBpdHMg
c3ViY2xhc3Nlcy4gCisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFRpbWVyKToKKyAgICAg
ICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6IENoYW5nZXMgdG8gYWNjb21vZGF0ZSB0
aGUgZXh0cmFjdGlvbiBvZiBjb21tb24gZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgYmV0d2VlbiBJ
bmNyZW1lbnRhbFN3ZWVwZXIgYW5kIEdDQWN0aXZpdHlDYWxsYmFjayBpbnRvIGEgY29tbW9uIGFu
Y2VzdG9yLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
Ojpkb1dvcmspOiAKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVy
KToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUpOgorICAgICAgICAq
IGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisgICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yayk6CisgICAg
ICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEdDQWN0aXZpdHlD
YWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3Qp
OgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6IFJl
bW92ZSB0aGUgcGxhdGZvcm0gZGF0YSBzdHJ1Y3QuIFRoZSBwbGF0Zm9ybSBkYXRhIHNob3VsZCBi
ZSBrZXB0IGluIAorICAgICAgICB0aGUgY2xhc3MgaXRzZWxmIHNvIGFzIHRvIGJlIGFjY2Vzc2li
bGUgYnkgZG9Xb3JrKCkuIE1vc3Qgb2YgdGhlIHBsYXRmb3JtIGRhdGEgZm9yIENGIGlzIGtlcHQg
aW4gCisgICAgICAgIEV4dGVybmFsVk1BZ2VudCBhbnl3YXlzLCBzbyB3ZSBvbmx5IG5lZWQgdGhl
IG1fZGVsYXkgZmllbGQgbm93LgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNr
QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6Cisg
ICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAg
ICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcik6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKToKKyAgICAgICAg
KEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QpOgorICAgICAgICAo
SlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwpOgorCisKIDIwMTItMDYtMTkg
IE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgRU5B
QkxFX0NTUF9ORVhUIGNvbmZpZ3VyYXRpb24gZmxhZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBTRVQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFu
ZGxlU3RhY2suY3BwCiAgICAgaGVhcC9IZWFwLmNwcAorICAgIGhlYXAvSGVhcFRpbWVyLmNwcAog
ICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFy
a2VyLmNwcAogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzYsNiArMjM2LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGFuZGxlU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5o
IFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwIFwKICAgICBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAgICAgaGVhcC9IZWFwLmNw
cCBcCisgICAgaGVhcC9IZWFwVGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBl
ci5jcHAgXAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBcCiAgICAgaGVhcC9NYXJr
U3RhY2suY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE0LDcgKzcxNCw3IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NB
Y3Rpdml0eUNhbGxiYWNrQ0YuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkBAIC0y
MTg2LDYgKzIxODYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5caGVhcFxIZWFwVGltZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBUaW1lci5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEluY3Jl
bWVudGFsU3dlZXBlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNjUxLDYgKzY1MSw4IEBACiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRT
cGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1l
dGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2
NSAvKiBDb3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NF
RkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUy
NkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OworCQlDMkU1MjZCRTE1
OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJF
QUEzRkExNDlBODM1RTAwRkNFMTEyIC8qIENvcGllZFNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyog
Q29waWVkU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBRDJGQjE0RjAy
NDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdD
QWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzU0
LDYgKzEzNTYsOCBAQAogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJ
bmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGllZFNw
YWNlSW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAy
RTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29waWVkQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBUaW1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29waWVkU3BhY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQUQyRkIxNEYwMjQ5ODAwQTRCMTU5IC8qIENvcGll
ZEFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRBbGxv
Y2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAw
RUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjI3LDYgKzE2MzEsOCBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVh
cCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJFNTI2
QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8sCisJCQkJQzJFNTI2QkMxNTkw
RUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0QTkw
MDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkxNDgxNkUxOTE1NENDNTZD
MDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwICovLApAQCAtMjMzNyw2ICsyMzQzLDcgQEAK
IAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAv
KiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LApAQCAtMzI1Nyw2ICszMjY0LDcgQEAKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyog
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQy
NTE1ODUzQ0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMjA3
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ1LDggKzI0NSw2IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBIZWEKICAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKICAgICAsIG1f
b2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFnZVNwYWNlKHRoaXMpCi0gICAgLCBtX2Fj
dGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQot
ICAgICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9tYWNoaW5lVGhyZWFkcyh0aGlzKQogICAgICwgbV9zaGFyZWREYXRhKGdsb2JhbERhdGEpCiAg
ICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSkKQEAgLTI1NSw2ICsyNTMsOCBAQCBIZWFw
OjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhCiAgICAgLCBtX2dsb2JhbERhdGEo
Z2xvYmFsRGF0YSkKICAgICAsIG1fbGFzdEdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlz
Y2FyZFRpbWUoV1RGOjpjdXJyZW50VGltZSgpKQorICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc3dlZXBlcihJ
bmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBtX3N0b3JhZ2VTcGFjZS5p
bml0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMjA3
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyMSw5ICsyMjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFZlY3Rv
cjxWYWx1ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwogICAgICAgICBPd25Q
dHI8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+ID4gbV9tYXJrTGlzdFNldDsKIAotICAg
ICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7Ci0gICAg
ICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICAgICAgCiAgICAg
ICAgIE1hY2hpbmVUaHJlYWRzIG1fbWFjaGluZVRocmVhZHM7CiAgICAgICAgIAogICAgICAgICBN
YXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhIG1fc2hhcmVkRGF0YTsKQEAgLTI0MCw2ICsyMzcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIG1fbGFzdEdDTGVuZ3RoOwogICAgICAg
ICBkb3VibGUgbV9sYXN0Q29kZURpc2NhcmRUaW1lOwogCisgICAgICAgIE93blB0cjxHQ0FjdGl2
aXR5Q2FsbGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgT3duUHRyPEluY3JlbWVu
dGFsU3dlZXBlcj4gbV9zd2VlcGVyOworICAgICAgICAKICAgICAgICAgRG91Ymx5TGlua2VkTGlz
dDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBUaW1lci5oIgorCisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShD
RikKKyAgICAKK2NvbnN0IENGVGltZUludGVydmFsIEhlYXBUaW1lcjo6c19kZWNhZGUgPSA2MCAq
IDYwICogMjQgKiAzNjUgKiAxMDsKKworSGVhcFRpbWVyOjpIZWFwVGltZXIoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IG1fZ2xvYmFsRGF0YShn
bG9iYWxEYXRhKQorICAgICwgbV9ydW5Mb29wKHJ1bkxvb3ApCit7CisgICAgbWVtc2V0KCZtX2Nv
bnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRleHQpKTsKKyAgICBtX2NvbnRleHQu
aW5mbyA9IHRoaXM7CisgICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAs
IHNfZGVjYWRlLCBzX2RlY2FkZSwgMCwgMCwgSGVhcFRpbWVyOjp0aW1lckRpZEZpcmUsICZtX2Nv
bnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIu
Z2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0hlYXBUaW1lcjo6fkhlYXBUaW1l
cigpCit7CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhlYXBUaW1lcjo6c3luY2hyb25p
emUoKQoreworICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gbV9ydW5Mb29wLmdldCgp
KQorICAgICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9ydW5Mb29wLmdl
dCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIG1fcnVuTG9v
cCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxv
b3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK3Zv
aWQgSGVhcFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBDRlJ1bkxvb3BSZW1vdmVUaW1lciht
X3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cisg
ICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkpOworfQorCit2b2lkIEhl
YXBUaW1lcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBpbmZvKQorewor
ICAgIEhlYXBUaW1lciogYWdlbnQgPSBzdGF0aWNfY2FzdDxIZWFwVGltZXIqPihpbmZvKTsKKyAg
ICBhZ2VudC0+ZG9Xb3JrKCk7Cit9CisKKyNlbHNlCisgICAgCitIZWFwVGltZXI6OkhlYXBUaW1l
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0
YSkKK3sKK30KKworSGVhcFRpbWVyOjp+SGVhcFRpbWVyKCkKK3sKK30KKwordm9pZCBIZWFwVGlt
ZXI6OnN5bmNocm9uaXplKCkKK3sKK30KKwordm9pZCBIZWFwVGltZXI6OmludmFsaWRhdGUoKQor
eworfQorCisKKyNlbmRpZgorICAgIAorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUg
QEAKKyNpZm5kZWYgSGVhcFRpbWVyX2gKKyNkZWZpbmUgSGVhcFRpbWVyX2gKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBK
U0dsb2JhbERhdGE7CisgICAgCitjbGFzcyBIZWFwVGltZXIgeworcHVibGljOgorI2lmIFVTRShD
RikKKyAgICBIZWFwVGltZXIoSlNHbG9iYWxEYXRhKiwgQ0ZSdW5Mb29wUmVmKTsKKyAgICBzdGF0
aWMgdm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKKyNlbHNlCisg
ICAgSGVhcFRpbWVyKEpTR2xvYmFsRGF0YSopOworI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB+
SGVhcFRpbWVyKCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCk7CisgICAg
dmlydHVhbCB2b2lkIGRvV29yaygpID0gMDsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBKU0dsb2Jh
bERhdGEqIG1fZ2xvYmFsRGF0YTsKKworI2lmIFVTRShDRikKKyAgICBzdGF0aWMgY29uc3QgQ0ZU
aW1lSW50ZXJ2YWwgc19kZWNhZGU7CisKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+
IG1fdGltZXI7CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIENG
UnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7CisjZW5kaWYKKyAgICAKK3ByaXZhdGU6Cisg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0LDMzICsxNCwyMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIFVTRShDRikKIAotc3RhdGljIGNvbnN0IENGVGltZUlu
dGVydmFsIGRlY2FkZSA9IDYwICogNjAgKiAyNCAqIDM2NSAqIDEwOwogc3RhdGljIGNvbnN0IENG
VGltZUludGVydmFsIHN3ZWVwVGltZVNsaWNlUGVyQmxvY2sgPSAwLjAxOwogc3RhdGljIGNvbnN0
IENGVGltZUludGVydmFsIHN3ZWVwVGltZU11bHRpcGxpZXIgPSAxLjAgLyBzd2VlcFRpbWVTbGlj
ZVBlckJsb2NrOwogIAotdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnRpbWVyRGlkRmlyZShDRlJ1
bkxvb3BUaW1lclJlZiwgdm9pZCogaW5mbykKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1dv
cmsoKQogewotICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oaW5mbyk7Ci0gICAg
QVBJRW50cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0YSgpKTsKLSAgICBoZWFwLT5zd2VlcGVy
KCktPmRvU3dlZXAoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgQVBJ
RW50cnlTaGltIHNoaW0obV9nbG9iYWxEYXRhKTsKKyAgICBkb1N3ZWVwKFdURjo6bW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkpOwogfQogICAgIAogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNy
ZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi0gICAgOiBt
X2hlYXAoaGVhcCkKKyAgICA6IEhlYXBUaW1lcihoZWFwLT5nbG9iYWxEYXRhKCksIHJ1bkxvb3Ap
CiAgICAgLCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCgwKQogICAgICwgbV9sZW5ndGhPZkxh
c3RTd2VlcEluY3JlbWVudCgwLjApCiB7Ci0gICAgbWVtc2V0KCZtX2NvbnRleHQsIDAsIHNpemVv
ZihDRlJ1bkxvb3BUaW1lckNvbnRleHQpKTsKLSAgICBtX2NvbnRleHQuaW5mbyA9IG1faGVhcDsK
LSAgICBtX3J1bkxvb3AgPSBydW5Mb29wOwotICAgIG1fdGltZXIuYWRvcHRDRihDRlJ1bkxvb3BU
aW1lckNyZWF0ZSgwLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwgZGVjYWRlLCAwLCAwLCAm
dGltZXJEaWRGaXJlLCAmbV9jb250ZXh0KSk7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5M
b29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotfQotCi1J
bmNyZW1lbnRhbFN3ZWVwZXI6On5JbmNyZW1lbnRhbFN3ZWVwZXIoKQotewotICAgIENGUnVuTG9v
cFJlbW92ZVRpbWVyKG1fcnVuTG9vcC5nZXQoKSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5nZXQoKSk7
CiB9CiAKIFBhc3NPd25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6
OmNyZWF0ZShIZWFwKiBoZWFwKQpAQCAtNTUsNyArNDIsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6c2NoZWR1bGVUaW1lcigpCiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxU
aW1lcigpCiB7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQo
KSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBkZWNhZGUpOworICAgIENGUnVuTG9vcFRp
bWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpICsgc19kZWNhZGUpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChk
b3VibGUgc3dlZXBCZWdpblRpbWUpCkBAIC04NSwxNyArNzIsMTggQEAgdm9pZCBJbmNyZW1lbnRh
bFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoYwogCiAjZWxzZQogCi1JbmNyZW1lbnRhbFN3ZWVwZXI6
OkluY3JlbWVudGFsU3dlZXBlcigpCitJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dl
ZXBlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBIZWFwVGltZXIoZ2xvYmFsRGF0
YSkKIHsKIH0KIAotSW5jcmVtZW50YWxTd2VlcGVyOjp+SW5jcmVtZW50YWxTd2VlcGVyKCkKK3Zv
aWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQogewogfQogCi1QYXNzT3duUHRyPEluY3Jl
bWVudGFsU3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCopCitQYXNzT3du
UHRyPEluY3JlbWVudGFsU3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCog
aGVhcCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluY3JlbWVudGFsU3dlZXBlcigpKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluY3JlbWVudGFsU3dlZXBlcihoZWFwLT5nbG9iYWxE
YXRhKCkpKTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoY29u
c3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NyArMSwzNyBAQAogI2lmbmRlZiBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogI2RlZmlu
ZSBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogCisjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCiAjaW5jbHVk
ZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAotI2lmIFVTRShDRikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwog
ICAgIAotY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIHsKK2NsYXNzIEluY3JlbWVudGFsU3dlZXBl
ciA6IHB1YmxpYyBIZWFwVGltZXIgewogcHVibGljOgotICAgIH5JbmNyZW1lbnRhbFN3ZWVwZXIo
KTsKLQogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhl
YXAqKTsKICAgICB2b2lkIHN0YXJ0U3dlZXBpbmcoY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+
JiBibG9ja1NuYXBzaG90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCk7CiAKIHByaXZhdGU6
CiAjaWYgVVNFKENGKQogICAgIEluY3JlbWVudGFsU3dlZXBlcihIZWFwKiwgQ0ZSdW5Mb29wUmVm
KTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYs
IHZvaWQqKTsKICAgICB2b2lkIGRvU3dlZXAoZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgdm9pZCBz
Y2hlZHVsZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIEhlYXAq
IG1faGVhcDsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleDsKLSAgICBS
ZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0gICAgUmV0YWluUHRyPENGUnVu
TG9vcFJlZj4gbV9ydW5Mb29wOwotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7
Ci0gICAKICAgICBkb3VibGUgbV9sZW5ndGhPZkxhc3RTd2VlcEluY3JlbWVudDsgCiAgICAgVmVj
dG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja3NUb1N3ZWVwOwogI2Vsc2UKICAgICAKLSAgICBJbmNy
ZW1lbnRhbFN3ZWVwZXIoKTsKKyAgICBJbmNyZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKik7
CiAgICAgCiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDEyMDcyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDE2ICsyOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogCi1uYW1lc3BhY2UgSlNDIHsKKyNpbmNsdWRlICJI
ZWFwLmgiCiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhIHsK
LX07CituYW1lc3BhY2UgSlNDIHsKIAotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKikKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT5nbG9iYWxEYXRhKCkpCiB7CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2s6On5EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Xb3JrKCkKIHsKIH0KIApAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbAogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkKLXsKLX0KLQogdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpjYW5jZWwoKQogewogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDEyMDcyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIEdDQWN0aXZpdHlDYWxsYmFja19o
CiAjZGVmaW5lIEdDQWN0aXZpdHlDYWxsYmFja19oCiAKKyNpbmNsdWRlICJIZWFwVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApA
QCAtNDAsNDcgKzQxLDU0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogCi1jbGFz
cyBHQ0FjdGl2aXR5Q2FsbGJhY2sgeworY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGlj
IEhlYXBUaW1lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+R0NBY3Rpdml0eUNhbGxiYWNrKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBHQ0FjdGl2
aXR5Q2FsbGJhY2soKQotICAgICAgICA6IG1fZW5hYmxlZCh0cnVlKQorI2lmIFVTRShDRikKKyAg
ICBHQ0FjdGl2aXR5Q2FsbGJhY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCkKKyAgICAgICAgOiBIZWFwVGltZXIoZ2xvYmFsRGF0YSwgcnVuTG9vcCkKKyAg
ICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICB7CisgICAgfQorIyBlbHNlCisgICAgR0NBY3Rp
dml0eUNhbGxiYWNrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKKyAgICAgICAgOiBIZWFwVGlt
ZXIoZ2xvYmFsRGF0YSkKKyAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICB7CiAgICAgfQor
I2VuZGlmCiAKICAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOwotCiBjbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKIAogICAg
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotICAgIHZpcnR1YWwgfkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXpl
X3QpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgZG9Xb3JrKCk7CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6CiAgICAgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKLSAgICB2b2lkIGNvbW1v
bkNvbnN0cnVjdG9yKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwotI2VuZGlmCi0KKyAgICAKKyAgICB2
b2lkIGNhbmNlbFRpbWVyKCk7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVyKGRvdWJsZSk7CisgICAg
CiBwcml2YXRlOgotICAgIE93blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1E
YXRhPiBkOworICAgIGRvdWJsZSBtX2RlbGF5OworI2VuZGlmCiB9OwogCiBpbmxpbmUgUGFzc093
blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrPiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpjcmVhdGUoSGVhcCogaGVhcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwCShy
ZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2tCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTcgKzI0LDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
a1BsYXRmb3JtRGF0YSB7Ci0gICAgZXhwbGljaXQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1Bs
YXRmb3JtRGF0YShIZWFwKiBoZWFwKSA6IG1faGVhcChoZWFwKSB7IH0KLSAgICBIZWFwKiBtX2hl
YXA7Ci19OwotCiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrKEhlYXAqIGhlYXApCi0gICAgOiBkKGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrUGxhdGZvcm1EYXRhKGhlYXApKSkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLT5nbG9iYWxEYXRhKCkpCiB7CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRv
V29yaygpCiB7CiB9CiAKQEAgLTQ2LDIwICs0MSwxNiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmRpZEFsbG9jCiAgICAgaWYgKGJ5dGVzQWxsb2NhdGVkIDwgMSAqIDEwMjQgKiAx
MDI0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZC0+bV9oZWFwLT5pc0J1c3koKSB8fCAh
ZC0+bV9oZWFwLT5pc1NhZmVUb0NvbGxlY3QoKSkKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5oZWFw
LmlzQnVzeSgpIHx8ICFtX2dsb2JhbERhdGEtPmhlYXAuaXNTYWZlVG9Db2xsZWN0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGQtPm1faGVhcC0+Y29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsK
KyAgICBtX2dsb2JhbERhdGEtPmhlYXAuY29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKIH0KIAog
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c3luY2hyb25pemUoKQotewotfQotCiB2b2lk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0Yu
Y3BwCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
Q0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDI5ICs0NCwzMSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQ
bGF0Zm9ybURhdGEgewotICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1l
clJlZiwgdm9pZCAqaW5mbyk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHRp
bWVyOwotICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IHJ1bkxvb3A7Ci0gICAgQ0ZSdW5Mb29w
VGltZXJDb250ZXh0IGNvbnRleHQ7Ci0gICAgZG91YmxlIGRlbGF5OwotfTsKLQogY29uc3QgZG91
YmxlIGdjVGltZVNsaWNlUGVyTUIgPSAwLjAxOyAvLyBQZXJjZW50YWdlIG9mIENQVSB0aW1lIHdl
IHdpbGwgc3BlbmQgdG8gcmVjbGFpbSAxIE1CCiBjb25zdCBkb3VibGUgbWF4R0NUaW1lU2xpY2Ug
PSAwLjA1OyAvLyBUaGUgbWF4aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ugd2FudCB0byB1c2Ug
Zm9yIG9wcG9ydHVuaXN0aWMgdGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25zLgogY29uc3QgZG91
YmxlIHRpbWVyU2xvcCA9IDIuMDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNl
IGNvc3Qgb2YgcmVzZXR0aW5nIHRpbWVyLgogY29uc3QgZG91YmxlIHBhZ2luZ1RpbWVPdXQgPSAw
LjE7IC8vIFRpbWUgaW4gc2Vjb25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGljIHRpbWVyIHRvIGl0
ZXJhdGUgb3ZlciBhbGwgYmxvY2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCi1j
b25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKIGNv
bnN0IENGVGltZUludGVydmFsIGhvdXIgPSA2MCAqIDYwOwogCi12b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGE6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwg
dm9pZCAqaW5mbykKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9i
YWxEYXRhKCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSkKKyAgICAsIG1fZGVsYXkoc19kZWNhZGUp
CiB7Ci0gICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKLSAgICBpZiAo
IWhlYXAtPmFjdGl2aXR5Q2FsbGJhY2soKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsK
K30KKworRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
ayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT5nbG9iYWxEYXRhKCksIHJ1bkxvb3ApCisgICAgLCBtX2RlbGF5KHNfZGVjYWRl
KQoreworfQogCi0gICAgQVBJRW50cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0YSgpKTsKK3Zv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKK3sKKyAgICBIZWFwKiBoZWFw
ID0gJm1fZ2xvYmFsRGF0YS0+aGVhcDsKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgQVBJRW50cnlTaGltIHNoaW0obV9nbG9iYWxEYXRhKTsKICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBh
Z2luZ1RpbWVPdXQpKSB7CkBAIC03Nyw0OCArNzksMjAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrUGxhdGZvcm1EYQogI2VuZGlmCiAgICAgaGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2Uo
KTsKIH0KLQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwKQorICAgIAordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpz
Y2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKLSAgICBjb21tb25Db25zdHJ1Y3Rvciho
ZWFwLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwotfQotCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBy
dW5Mb29wKQotewotICAgIGNvbW1vbkNvbnN0cnVjdG9yKGhlYXAsIHJ1bkxvb3ApOwotfQotCi1E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCi17
Ci0gICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0
KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRl
KGQtPnRpbWVyLmdldCgpKTsKLX0KLQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpj
b21tb25Db25zdHJ1Y3RvcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAg
ICBkID0gYWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEp
OwotCi0gICAgbWVtc2V0KCZkLT5jb250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJDb250
ZXh0KSk7Ci0gICAgZC0+Y29udGV4dC5pbmZvID0gaGVhcDsKLSAgICBkLT5ydW5Mb29wID0gcnVu
TG9vcDsKLSAgICBkLT50aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIGRlY2Fk
ZSwgZGVjYWRlLCAwLCAwLCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0
aW1lckRpZEZpcmUsICZkLT5jb250ZXh0KSk7Ci0gICAgZC0+ZGVsYXkgPSBkZWNhZGU7Ci0gICAg
Q0ZSdW5Mb29wQWRkVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNjaGVkdWxlVGltZXIoRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YSogZCwgZG91YmxlIG5ld0RlbGF5KQotewot
ICAgIGlmIChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IGQtPmRlbGF5KQorICAgIGlmIChuZXdEZWxh
eSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgZGVs
dGEgPSBkLT5kZWxheSAtIG5ld0RlbGF5OwotICAgIGQtPmRlbGF5ID0gbmV3RGVsYXk7Ci0gICAg
Q0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZC0+dGltZXIuZ2V0KCksIENGUnVuTG9vcFRp
bWVyR2V0TmV4dEZpcmVEYXRlKGQtPnRpbWVyLmdldCgpKSAtIGRlbHRhKTsKKyAgICBkb3VibGUg
ZGVsdGEgPSBtX2RlbGF5IC0gbmV3RGVsYXk7CisgICAgbV9kZWxheSA9IG5ld0RlbGF5OworICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRp
bWVyR2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi1zdGF0aWMg
dm9pZCBjYW5jZWxUaW1lcihEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhKiBk
KQordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAg
ZC0+ZGVsYXkgPSBkZWNhZGU7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZC0+
dGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgZGVjYWRlKTsKKyAgICBt
X2RlbGF5ID0gc19kZWNhZGU7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90
aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZSk7CiB9CiAK
IHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVz
KQpAQCAtMTI3LDI5ICsxMDEsMjAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpk
aWRBbGxvYwogICAgIC8vIFdlIHByZXRlbmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0
IGlnbm9yZSB0aGlzIGFsbG9jYXRpb24gZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAg
ICAgYnl0ZXMgPSAxOwotICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oZC0+Y29u
dGV4dC5pbmZvKTsKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KCZtX2dsb2Jh
bERhdGEtPmhlYXApOwogICAgIGRvdWJsZSBnY1RpbWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNf
Y2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIGdjVGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNs
aWNlKTsKICAgICBkb3VibGUgbmV3RGVsYXkgPSBoZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGlt
ZVNsaWNlOwotICAgIHNjaGVkdWxlVGltZXIoZC5nZXQoKSwgbmV3RGVsYXkpOworICAgIHNjaGVk
dWxlVGltZXIobmV3RGVsYXkpOwogfQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OndpbGxDb2xsZWN0KCkKIHsKLSAgICBjYW5jZWxUaW1lcihkLmdldCgpKTsKLX0KLQotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzeW5jaHJvbml6ZSgpCi17Ci0gICAgaWYgKENGUnVu
TG9vcEdldEN1cnJlbnQoKSA9PSBkLT5ydW5Mb29wLmdldCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgZC0+cnVuTG9vcCA9IENGUnVuTG9vcEdldEN1
cnJlbnQoKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihkLT5ydW5Mb29wLmdldCgpLCBkLT50aW1l
ci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBjYW5jZWxUaW1lcigpOwogfQog
CiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7Ci0gICAgY2FuY2Vs
VGltZXIoZC5nZXQoKSk7CisgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148364</attachid>
            <date>2012-06-19 11:10:18 -0700</date>
            <delta_ts>2012-06-19 12:17:49 -0700</delta_ts>
            <desc>Checking builds</desc>
            <filename>bug-89400-20120619111017.patch</filename>
            <type>text/plain</type>
            <size>29279</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwNzM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEyLTA2LTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIgc2hvdWxk
IHNoYXJlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQSBsb3Qgb2YgZnVuY3Rpb25hbGl0eSBpcyBkdXBsaWNhdGVkIGJldHdlZW4gR0NBY3Rpdml0
eUNhbGxiYWNrIGFuZCBJbmNyZW1lbnRhbFN3ZWVwZXIuIAorICAgICAgICBXZSBzaG91bGQgZXh0
cmFjdCB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgb3V0IGludG8gYSBzZXBhcmF0ZSBjbGFzcyB0
aGF0IGJvdGggb2YgdGhlbSAKKyAgICAgICAgY2FuIGluaGVyaXQgZnJvbS4gVGhpcyByZWZhY3Rv
cmluZyB3aWxsIGJlIGFuIGV2ZW4gZ3JlYXRlciBib29uIHdoZW4gd2UgYWRkIHRoZSBhYmlsaXR5
IAorICAgICAgICB0byBzaHV0IHRoZXNlIHR3byBhZ2VudHMgZG93biBpbiBhIHRocmVhZC1zYWZl
IGZhc2hpb24KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6IE1vdmUgaW5pdGlhbGl6
YXRpb24gZG93biBzbyB0aGF0IHRoZSBKU0dsb2JhbERhdGEgaGFzIGEgdmFsaWQgSGVhcCB3aGVu
IAorICAgICAgICB3ZSdyZSBpbml0aWFsaXppbmcgdGhlIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQg
dGhlIEluY3JlbWVudGFsU3dlZXBlci4KKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KEhlYXApOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OkhlYXBUaW1lcik6IEluaXRpYWxpemUgdGhl
IHZhcmlvdXMgYmFzZSBjbGFzcyBkYXRhIHRoYXQKKyAgICAgICAgRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6Y29tbW9uQ29uc3RydWN0b3IoKSB1c2VkIHRvIGRvLgorICAgICAgICAoSlNDOjpI
ZWFwVGltZXI6On5IZWFwVGltZXIpOiBDYWxsIHRvIGludmFsaWRhdGUoKS4KKyAgICAgICAgKEpT
Qzo6SGVhcFRpbWVyOjpzeW5jaHJvbml6ZSk6IFNhbWUgZnVuY3Rpb25hbGl0eSBhcyB0aGUgb2xk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnN5bmNocm9uaXplKCkuCisgICAgICAgIFZpcnR1
YWwgc28gdGhhdCBub24tQ0Ygc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUuCisgICAgICAgIChKU0M6
OkhlYXBUaW1lcjo6aW52YWxpZGF0ZSk6IFRlYXJzIGRvd24gdGhlIHJ1bmxvb3AgdGltZXIgdG8g
cHJldmVudCBhbnkgZnV0dXJlIGZpcmluZy4KKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0aW1l
ckRpZEZpcmUpOiBDYWxsYmFjayB0byBwYXNzIHRvIHRoZSB0aW1lciBmdW5jdGlvbi4gQ2FzdHMg
YW5kIGNhbGxzIHRoZSB2aXJ0dWFsIGRvV29yaygpLgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVy
Lmg6IEFkZGVkLiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0IHNlcnZlcyBhcyB0aGUgY29tbW9uIGJh
c2UgY2xhc3MgZm9yIAorICAgICAgICBib3RoIEdDQWN0aXZpdHlDYWxsYmFjayBhbmQgSW5jcmVt
ZW50YWxTd2VlcGVyLiBJdCBoYW5kbGVzIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biBydW4g
bG9vcHMgYW5kIHN5bmNocm9uaXppbmcgCisgICAgICAgIGFjcm9zcyB0aHJlYWRzIGZvciBpdHMg
c3ViY2xhc3Nlcy4gCisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFRpbWVyKToKKyAgICAg
ICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHA6IENoYW5nZXMgdG8gYWNjb21vZGF0ZSB0
aGUgZXh0cmFjdGlvbiBvZiBjb21tb24gZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgYmV0d2VlbiBJ
bmNyZW1lbnRhbFN3ZWVwZXIgYW5kIEdDQWN0aXZpdHlDYWxsYmFjayBpbnRvIGEgY29tbW9uIGFu
Y2VzdG9yLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
Ojpkb1dvcmspOiAKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVy
KToKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUpOgorICAgICAgICAq
IGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisgICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yayk6CisgICAg
ICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEdDQWN0aXZpdHlD
YWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3Qp
OgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6IFJl
bW92ZSB0aGUgcGxhdGZvcm0gZGF0YSBzdHJ1Y3QuIFRoZSBwbGF0Zm9ybSBkYXRhIHNob3VsZCBi
ZSBrZXB0IGluIAorICAgICAgICB0aGUgY2xhc3MgaXRzZWxmIHNvIGFzIHRvIGJlIGFjY2Vzc2li
bGUgYnkgZG9Xb3JrKCkuIE1vc3Qgb2YgdGhlIHBsYXRmb3JtIGRhdGEgZm9yIENGIGlzIGtlcHQg
aW4gCisgICAgICAgIEhlYXBUaW1lciBhbnl3YXlzLCBzbyB3ZSBvbmx5IG5lZWQgdGhlIG1fZGVs
YXkgZmllbGQgbm93LgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQmxhY2tC
ZXJyeS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKToKKyAgICAgICAgKEpTQzo6RGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvR0NBY3Rp
dml0eUNhbGxiYWNrQ0YuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6RGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAg
IChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yayk6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlND
OjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcik6CisgICAgICAgIChKU0M6
OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwpOgorCisKIDIwMTItMDYtMTkgIE1pa2Ug
V2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1Y2UgRU5BQkxFX0NT
UF9ORVhUIGNvbmZpZ3VyYXRpb24gZmxhZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBTRVQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwCiAgICAgaGVhcC9IZWFwLmNwcAorICAgIGhlYXAvSGVhcFRpbWVyLmNwcAogICAgIGhl
YXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNw
cAogICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiAr
MjM2LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGFuZGxlU2V0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFu
ZGxlU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBCbG9jay5oIFwKKyAg
ICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaCBcCisgICAgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw2ICs3OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3Bw
IFwKICAgICBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAgICAgaGVhcC9IZWFwLmNwcCBcCisg
ICAgaGVhcC9IZWFwVGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAg
XAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBcCiAgICAgaGVhcC9NYXJrU3RhY2su
Y3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE0LDcgKzcxNCw3IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NBY3Rpdml0
eUNhbGxiYWNrLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcR0NBY3Rpdml0
eUNhbGxiYWNrQ0YuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkBAIC0yMTg2LDYg
KzIxODYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5caGVhcFxIZWFwVGltZXIuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBUaW1lci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEluY3JlbWVudGFs
U3dlZXBlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUx
LDYgKzY1MSw4IEBACiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlu
bGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4
RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBD
b3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3
OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJCMTU5
MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OworCQlDMkU1MjZCRTE1OTBFRjAw
MDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJFQUEzRkEx
NDlBODM1RTAwRkNFMTEyIC8qIENvcGllZFNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29waWVk
U3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVBRDJGQjE0RjAyNDk4MDBB
NEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRERGN0FCRDQxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRERGN0FCRDIxMUY2MEVEMjAwMTA4RTM2IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMzU0LDYgKzEz
NTYsOCBAQAogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVN
ZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGllZFNwYWNlSW5s
aW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRTE0QTND
RUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29waWVkQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQw
MkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJF
NTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMkVBQTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQUQyRkIxNEYwMjQ5ODAwQTRCMTU5IC8qIENvcGllZEFsbG9j
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRBbGxvY2F0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2
IC8qIERhdGVDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEYXRlQ29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NjI3LDYgKzE2MzEsOCBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJFNTI2QkIxNTkw
RUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8sCisJCQkJQzJFNTI2QkMxNTkwRUYwMDAw
NTRFNDhEIC8qIEhlYXBUaW1lci5oICovLAogCQkJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovLAogCQkJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLywKIAkJCQkxNDgxNkUxOTE1NENDNTZDMDBCODA1
NEMgLyogQmxvY2tBbGxvY2F0b3IuY3BwICovLApAQCAtMjMzNyw2ICsyMzQzLDcgQEAKIAkJCQk4
NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFw
VGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
NzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MzI1Nyw2ICszMjY0LDcgQEAKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQyNTE1ODUz
Q0UwMDA0QTRFN0QgLyogV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQy
ODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMjA3MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ1LDggKzI0NSw2IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEK
ICAgICAsIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKICAgICAsIG1fb2JqZWN0
U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFnZVNwYWNlKHRoaXMpCi0gICAgLCBtX2FjdGl2aXR5
Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQotICAgICwg
bV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNo
aW5lVGhyZWFkcyh0aGlzKQogICAgICwgbV9zaGFyZWREYXRhKGdsb2JhbERhdGEpCiAgICAgLCBt
X3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSkKQEAgLTI1NSw2ICsyNTMsOCBAQCBIZWFwOjpIZWFw
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFs
RGF0YSkKICAgICAsIG1fbGFzdEdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlzY2FyZFRp
bWUoV1RGOjpjdXJyZW50VGltZSgpKQorICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc3dlZXBlcihJbmNyZW1l
bnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBtX3N0b3JhZ2VTcGFjZS5pbml0KCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMjA3MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
MSw5ICsyMjEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxWYWx1
ZVN0cmluZ1BhaXI+KiA+IG1fdGVtcFNvcnRpbmdWZWN0b3JzOwogICAgICAgICBPd25QdHI8SGFz
aFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+ID4gbV9tYXJrTGlzdFNldDsKIAotICAgICAgICBP
d25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7Ci0gICAgICAgIE93
blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKLSAgICAgICAgCiAgICAgICAgIE1h
Y2hpbmVUaHJlYWRzIG1fbWFjaGluZVRocmVhZHM7CiAgICAgICAgIAogICAgICAgICBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhIG1fc2hhcmVkRGF0YTsKQEAgLTI0MCw2ICsyMzcsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZG91YmxlIG1fbGFzdEdDTGVuZ3RoOwogICAgICAgICBkb3Vi
bGUgbV9sYXN0Q29kZURpc2NhcmRUaW1lOwogCisgICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2Fs
bGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgT3duUHRyPEluY3JlbWVudGFsU3dl
ZXBlcj4gbV9zd2VlcGVyOworICAgICAgICAKICAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxFeGVj
dXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBA
QAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBUaW1lci5oIgorCisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIFVTRShDRikKKyAg
ICAKK2NvbnN0IENGVGltZUludGVydmFsIEhlYXBUaW1lcjo6c19kZWNhZGUgPSA2MCAqIDYwICog
MjQgKiAzNjUgKiAxMDsKKworSGVhcFRpbWVyOjpIZWFwVGltZXIoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxE
YXRhKQorICAgICwgbV9ydW5Mb29wKHJ1bkxvb3ApCit7CisgICAgbWVtc2V0KCZtX2NvbnRleHQs
IDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRleHQpKTsKKyAgICBtX2NvbnRleHQuaW5mbyA9
IHRoaXM7CisgICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIHNfZGVj
YWRlLCBzX2RlY2FkZSwgMCwgMCwgSGVhcFRpbWVyOjp0aW1lckRpZEZpcmUsICZtX2NvbnRleHQp
KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0hlYXBUaW1lcjo6fkhlYXBUaW1lcigpCit7
CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIEhlYXBUaW1lcjo6c3luY2hyb25pemUoKQor
eworICAgIGlmIChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0gbV9ydW5Mb29wLmdldCgpKQorICAg
ICAgICByZXR1cm47CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9ydW5Mb29wLmdldCgpLCBt
X3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIG1fcnVuTG9vcCA9IENG
UnVuTG9vcEdldEN1cnJlbnQoKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0
KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK3ZvaWQgSGVh
cFRpbWVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBDRlJ1bkxvb3BSZW1vdmVUaW1lcihtX3J1bkxv
b3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZS
dW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkpOworfQorCit2b2lkIEhlYXBUaW1l
cjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBpbmZvKQoreworICAgIEhl
YXBUaW1lciogYWdlbnQgPSBzdGF0aWNfY2FzdDxIZWFwVGltZXIqPihpbmZvKTsKKyAgICBhZ2Vu
dC0+ZG9Xb3JrKCk7Cit9CisKKyNlbHNlCisgICAgCitIZWFwVGltZXI6OkhlYXBUaW1lcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKK3sK
K30KKworSGVhcFRpbWVyOjp+SGVhcFRpbWVyKCkKK3sKK30KKwordm9pZCBIZWFwVGltZXI6OnN5
bmNocm9uaXplKCkKK3sKK30KKwordm9pZCBIZWFwVGltZXI6OmludmFsaWRhdGUoKQoreworfQor
CisKKyNlbmRpZgorICAgIAorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKyNp
Zm5kZWYgSGVhcFRpbWVyX2gKKyNkZWZpbmUgSGVhcFRpbWVyX2gKKworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2Jh
bERhdGE7CisgICAgCitjbGFzcyBIZWFwVGltZXIgeworcHVibGljOgorI2lmIFVTRShDRikKKyAg
ICBIZWFwVGltZXIoSlNHbG9iYWxEYXRhKiwgQ0ZSdW5Mb29wUmVmKTsKKyAgICBzdGF0aWMgdm9p
ZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKKyNlbHNlCisgICAgSGVh
cFRpbWVyKEpTR2xvYmFsRGF0YSopOworI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB+SGVhcFRp
bWVyKCk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCk7CisgICAgdmlydHVh
bCB2b2lkIGRvV29yaygpID0gMDsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBKU0dsb2JhbERhdGEq
IG1fZ2xvYmFsRGF0YTsKKworI2lmIFVTRShDRikKKyAgICBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50
ZXJ2YWwgc19kZWNhZGU7CisKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGlt
ZXI7CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIENGUnVuTG9v
cFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7CisjZW5kaWYKKyAgICAKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbnZhbGlkYXRlKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5j
cHAJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3Jl
bWVudGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0LDMzICsxNCwyMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIFVTRShDRikKIAotc3RhdGljIGNvbnN0IENGVGltZUludGVydmFs
IGRlY2FkZSA9IDYwICogNjAgKiAyNCAqIDM2NSAqIDEwOwogc3RhdGljIGNvbnN0IENGVGltZUlu
dGVydmFsIHN3ZWVwVGltZVNsaWNlUGVyQmxvY2sgPSAwLjAxOwogc3RhdGljIGNvbnN0IENGVGlt
ZUludGVydmFsIHN3ZWVwVGltZU11bHRpcGxpZXIgPSAxLjAgLyBzd2VlcFRpbWVTbGljZVBlckJs
b2NrOwogIAotdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BU
aW1lclJlZiwgdm9pZCogaW5mbykKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQog
ewotICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oaW5mbyk7Ci0gICAgQVBJRW50
cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0YSgpKTsKLSAgICBoZWFwLT5zd2VlcGVyKCktPmRv
U3dlZXAoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgQVBJRW50cnlT
aGltIHNoaW0obV9nbG9iYWxEYXRhKTsKKyAgICBkb1N3ZWVwKFdURjo6bW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkpOwogfQogICAgIAogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRh
bFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCi0gICAgOiBtX2hlYXAo
aGVhcCkKKyAgICA6IEhlYXBUaW1lcihoZWFwLT5nbG9iYWxEYXRhKCksIHJ1bkxvb3ApCiAgICAg
LCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleCgwKQogICAgICwgbV9sZW5ndGhPZkxhc3RTd2Vl
cEluY3JlbWVudCgwLjApCiB7Ci0gICAgbWVtc2V0KCZtX2NvbnRleHQsIDAsIHNpemVvZihDRlJ1
bkxvb3BUaW1lckNvbnRleHQpKTsKLSAgICBtX2NvbnRleHQuaW5mbyA9IG1faGVhcDsKLSAgICBt
X3J1bkxvb3AgPSBydW5Mb29wOwotICAgIG1fdGltZXIuYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZSgwLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwgZGVjYWRlLCAwLCAwLCAmdGltZXJE
aWRGaXJlLCAmbV9jb250ZXh0KSk7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29wLmdl
dCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotfQotCi1JbmNyZW1l
bnRhbFN3ZWVwZXI6On5JbmNyZW1lbnRhbFN3ZWVwZXIoKQotewotICAgIENGUnVuTG9vcFJlbW92
ZVRpbWVyKG1fcnVuTG9vcC5nZXQoKSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1v
ZGVzKTsKLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5nZXQoKSk7CiB9CiAK
IFBhc3NPd25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0
ZShIZWFwKiBoZWFwKQpAQCAtNTUsNyArNDIsNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6
c2NoZWR1bGVUaW1lcigpCiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigp
CiB7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZB
YnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBkZWNhZGUpOworICAgIENGUnVuTG9vcFRpbWVyU2V0
TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsg
c19kZWNhZGUpOwogfQogCiB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Td2VlcChkb3VibGUg
c3dlZXBCZWdpblRpbWUpCkBAIC04NSwxNyArNzIsMTggQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVw
ZXI6OnN0YXJ0U3dlZXBpbmcoYwogCiAjZWxzZQogCi1JbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3Jl
bWVudGFsU3dlZXBlcigpCitJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBIZWFwVGltZXIoZ2xvYmFsRGF0YSkKIHsK
IH0KIAotSW5jcmVtZW50YWxTd2VlcGVyOjp+SW5jcmVtZW50YWxTd2VlcGVyKCkKK3ZvaWQgSW5j
cmVtZW50YWxTd2VlcGVyOjpkb1dvcmsoKQogewogfQogCi1QYXNzT3duUHRyPEluY3JlbWVudGFs
U3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCopCitQYXNzT3duUHRyPElu
Y3JlbWVudGFsU3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCogaGVhcCkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluY3JlbWVudGFsU3dlZXBlcigpKTsKKyAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEluY3JlbWVudGFsU3dlZXBlcihoZWFwLT5nbG9iYWxEYXRhKCkp
KTsKIH0KIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoY29uc3QgSGFz
aFNldDxNYXJrZWRCbG9jayo+JikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw0NyArMSwzNyBAQAogI2lmbmRlZiBJbmNyZW1lbnRhbFN3ZWVwZXJfaAogI2RlZmluZSBJbmNy
ZW1lbnRhbFN3ZWVwZXJfaAogCisjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCiAjaW5jbHVkZSAiTWFy
a2VkQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotI2lmIFVTRShDRikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogICAgIAot
Y2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyIHsKK2NsYXNzIEluY3JlbWVudGFsU3dlZXBlciA6IHB1
YmxpYyBIZWFwVGltZXIgewogcHVibGljOgotICAgIH5JbmNyZW1lbnRhbFN3ZWVwZXIoKTsKLQog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsK
ICAgICB2b2lkIHN0YXJ0U3dlZXBpbmcoY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBibG9j
a1NuYXBzaG90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCk7CiAKIHByaXZhdGU6CiAjaWYg
VVNFKENGKQogICAgIEluY3JlbWVudGFsU3dlZXBlcihIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICAg
ICAKLSAgICBzdGF0aWMgdm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQq
KTsKICAgICB2b2lkIGRvU3dlZXAoZG91YmxlIHN0YXJ0VGltZSk7CiAgICAgdm9pZCBzY2hlZHVs
ZVRpbWVyKCk7CiAgICAgdm9pZCBjYW5jZWxUaW1lcigpOwogICAgIAotICAgIEhlYXAqIG1faGVh
cDsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleDsKLSAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0gICAgUmV0YWluUHRyPENGUnVuTG9vcFJl
Zj4gbV9ydW5Mb29wOwotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRleHQ7Ci0gICAK
ICAgICBkb3VibGUgbV9sZW5ndGhPZkxhc3RTd2VlcEluY3JlbWVudDsgCiAgICAgVmVjdG9yPE1h
cmtlZEJsb2NrKj4gbV9ibG9ja3NUb1N3ZWVwOwogI2Vsc2UKICAgICAKLSAgICBJbmNyZW1lbnRh
bFN3ZWVwZXIoKTsKKyAgICBJbmNyZW1lbnRhbFN3ZWVwZXIoSlNHbG9iYWxEYXRhKik7CiAgICAg
CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDE2ICsyOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkdD
QWN0aXZpdHlDYWxsYmFjay5oIgogCi1uYW1lc3BhY2UgSlNDIHsKKyNpbmNsdWRlICJIZWFwLmgi
CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhIHsKLX07Citu
YW1lc3BhY2UgSlNDIHsKIAotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjayhIZWFwKikKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLT5nbG9iYWxEYXRhKCkpCiB7CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Xb3JrKCkKIHsKIH0KIApAQCAtNTAsMTAgKzUwLDYgQEAgdm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjp3aWxsQ29sbAogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OnN5bmNocm9uaXplKCkKLXsKLX0KLQogdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpjYW5jZWwoKQogewogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDEyMDcyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIEdDQWN0aXZpdHlDYWxsYmFja19oCiAjZGVm
aW5lIEdDQWN0aXZpdHlDYWxsYmFja19oCiAKKyNpbmNsdWRlICJIZWFwVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNDAs
NDcgKzQxLDU0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogCi1jbGFzcyBHQ0Fj
dGl2aXR5Q2FsbGJhY2sgeworY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEhlYXBU
aW1lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+R0NBY3Rpdml0eUNhbGxiYWNrKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsgfQogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKIHByb3RlY3RlZDoKLSAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soKQotICAgICAgICA6IG1fZW5hYmxlZCh0cnVlKQorI2lmIFVTRShDRikKKyAgICBHQ0Fj
dGl2aXR5Q2FsbGJhY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDRlJ1bkxvb3BSZWYgcnVu
TG9vcCkKKyAgICAgICAgOiBIZWFwVGltZXIoZ2xvYmFsRGF0YSwgcnVuTG9vcCkKKyAgICAgICAg
LCBtX2VuYWJsZWQodHJ1ZSkKKyAgICB7CisgICAgfQorIyBlbHNlCisgICAgR0NBY3Rpdml0eUNh
bGxiYWNrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKKyAgICAgICAgOiBIZWFwVGltZXIoZ2xv
YmFsRGF0YSkKKyAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICB7CiAgICAgfQorI2VuZGlm
CiAKICAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKLXN0cnVjdCBEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrUGxhdGZvcm1EYXRhOwotCiBjbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKIAogICAgIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotICAgIHZpcnR1YWwgfkRlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2soKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgZG9Xb3JrKCk7CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6CiAgICAgRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKLSAgICB2b2lkIGNvbW1vbkNvbnN0
cnVjdG9yKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwotI2VuZGlmCi0KKyAgICAKKyAgICB2b2lkIGNh
bmNlbFRpbWVyKCk7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVyKGRvdWJsZSk7CisgICAgCiBwcml2
YXRlOgotICAgIE93blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhPiBk
OworICAgIGRvdWJsZSBtX2RlbGF5OworI2VuZGlmCiB9OwogCiBpbmxpbmUgUGFzc093blB0cjxE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrPiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVh
dGUoSGVhcCogaGVhcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0
aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFja0JsYWNrQmVycnkuY3BwCShyZXZpc2lv
biAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2Fs
bGJhY2tCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTcgKzI0LDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1zdHJ1Y3QgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRm
b3JtRGF0YSB7Ci0gICAgZXhwbGljaXQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFja1BsYXRmb3Jt
RGF0YShIZWFwKiBoZWFwKSA6IG1faGVhcChoZWFwKSB7IH0KLSAgICBIZWFwKiBtX2hlYXA7Ci19
OwotCiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
KEhlYXAqIGhlYXApCi0gICAgOiBkKGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrUGxhdGZvcm1EYXRhKGhlYXApKSkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5n
bG9iYWxEYXRhKCkpCiB7CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6On5EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKCkKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygp
CiB7CiB9CiAKQEAgLTQ2LDIwICs0MSwxNiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmRpZEFsbG9jCiAgICAgaWYgKGJ5dGVzQWxsb2NhdGVkIDwgMSAqIDEwMjQgKiAxMDI0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZC0+bV9oZWFwLT5pc0J1c3koKSB8fCAhZC0+bV9o
ZWFwLT5pc1NhZmVUb0NvbGxlY3QoKSkKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5oZWFwLmlzQnVz
eSgpIHx8ICFtX2dsb2JhbERhdGEtPmhlYXAuaXNTYWZlVG9Db2xsZWN0KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGQtPm1faGVhcC0+Y29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKKyAgICBt
X2dsb2JhbERhdGEtPmhlYXAuY29sbGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKIH0KIAogdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZvaWQgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c3luY2hyb25pemUoKQotewotfQotCiB2b2lkIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrQ0YuY3BwCShy
ZXZpc2lvbiAxMjA3MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2
aXR5Q2FsbGJhY2tDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDI5ICs0NCwzMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9y
bURhdGEgewotICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwg
dm9pZCAqaW5mbyk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHRpbWVyOwot
ICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IHJ1bkxvb3A7Ci0gICAgQ0ZSdW5Mb29wVGltZXJD
b250ZXh0IGNvbnRleHQ7Ci0gICAgZG91YmxlIGRlbGF5OwotfTsKLQogY29uc3QgZG91YmxlIGdj
VGltZVNsaWNlUGVyTUIgPSAwLjAxOyAvLyBQZXJjZW50YWdlIG9mIENQVSB0aW1lIHdlIHdpbGwg
c3BlbmQgdG8gcmVjbGFpbSAxIE1CCiBjb25zdCBkb3VibGUgbWF4R0NUaW1lU2xpY2UgPSAwLjA1
OyAvLyBUaGUgbWF4aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ugd2FudCB0byB1c2UgZm9yIG9w
cG9ydHVuaXN0aWMgdGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25zLgogY29uc3QgZG91YmxlIHRp
bWVyU2xvcCA9IDIuMDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGNvc3Qg
b2YgcmVzZXR0aW5nIHRpbWVyLgogY29uc3QgZG91YmxlIHBhZ2luZ1RpbWVPdXQgPSAwLjE7IC8v
IFRpbWUgaW4gc2Vjb25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGljIHRpbWVyIHRvIGl0ZXJhdGUg
b3ZlciBhbGwgYmxvY2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCi1jb25zdCBD
RlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUgKiAxMDsKIGNvbnN0IENG
VGltZUludGVydmFsIGhvdXIgPSA2MCAqIDYwOwogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2tQbGF0Zm9ybURhdGE6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCAq
aW5mbykKK0RlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT5nbG9iYWxEYXRh
KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSkKKyAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7Ci0g
ICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPihpbmZvKTsKLSAgICBpZiAoIWhlYXAt
PmFjdGl2aXR5Q2FsbGJhY2soKS0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKK30KKwor
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLT5nbG9iYWxEYXRhKCksIHJ1bkxvb3ApCisgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQorewor
fQogCi0gICAgQVBJRW50cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0YSgpKTsKK3ZvaWQgRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1f
Z2xvYmFsRGF0YS0+aGVhcDsKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgQVBJRW50cnlTaGltIHNoaW0obV9nbG9iYWxEYXRhKTsKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwogICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1Rp
bWVPdXQpKSB7CkBAIC03Nyw0OCArNzksMjAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrUGxhdGZvcm1EYQogI2VuZGlmCiAgICAgaGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKIH0K
LQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhI
ZWFwKiBoZWFwKQorICAgIAordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVs
ZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKLSAgICBjb21tb25Db25zdHJ1Y3RvcihoZWFwLCBD
RlJ1bkxvb3BHZXRDdXJyZW50KCkpOwotfQotCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29w
KQotewotICAgIGNvbW1vbkNvbnN0cnVjdG9yKGhlYXAsIHJ1bkxvb3ApOwotfQotCi1EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjp+RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaygpCi17Ci0gICAg
Q0ZSdW5Mb29wUmVtb3ZlVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtD
RlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKGQtPnRp
bWVyLmdldCgpKTsKLX0KLQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjb21tb25D
b25zdHJ1Y3RvcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKLXsKLSAgICBkID0g
YWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2tQbGF0Zm9ybURhdGEpOwotCi0g
ICAgbWVtc2V0KCZkLT5jb250ZXh0LCAwLCBzaXplb2YoQ0ZSdW5Mb29wVGltZXJDb250ZXh0KSk7
Ci0gICAgZC0+Y29udGV4dC5pbmZvID0gaGVhcDsKLSAgICBkLT5ydW5Mb29wID0gcnVuTG9vcDsK
LSAgICBkLT50aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIGRlY2FkZSwgZGVj
YWRlLCAwLCAwLCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhOjp0aW1lckRp
ZEZpcmUsICZkLT5jb250ZXh0KSk7Ci0gICAgZC0+ZGVsYXkgPSBkZWNhZGU7Ci0gICAgQ0ZSdW5M
b29wQWRkVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNjaGVkdWxlVGltZXIoRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFja1BsYXRmb3JtRGF0YSogZCwgZG91YmxlIG5ld0RlbGF5KQotewotICAgIGlm
IChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IGQtPmRlbGF5KQorICAgIGlmIChuZXdEZWxheSAqIHRp
bWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgZGVsdGEgPSBk
LT5kZWxheSAtIG5ld0RlbGF5OwotICAgIGQtPmRlbGF5ID0gbmV3RGVsYXk7Ci0gICAgQ0ZSdW5M
b29wVGltZXJTZXROZXh0RmlyZURhdGUoZC0+dGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0
TmV4dEZpcmVEYXRlKGQtPnRpbWVyLmdldCgpKSAtIGRlbHRhKTsKKyAgICBkb3VibGUgZGVsdGEg
PSBtX2RlbGF5IC0gbmV3RGVsYXk7CisgICAgbV9kZWxheSA9IG5ld0RlbGF5OworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0
TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi1zdGF0aWMgdm9pZCBj
YW5jZWxUaW1lcihEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrUGxhdGZvcm1EYXRhKiBkKQordm9p
ZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgZC0+ZGVs
YXkgPSBkZWNhZGU7Ci0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoZC0+dGltZXIu
Z2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgZGVjYWRlKTsKKyAgICBtX2RlbGF5
ID0gc19kZWNhZGU7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5n
ZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZSk7CiB9CiAKIHZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQpAQCAt
MTI3LDI5ICsxMDEsMjAgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxv
YwogICAgIC8vIFdlIHByZXRlbmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9y
ZSB0aGlzIGFsbG9jYXRpb24gZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0
ZXMgPSAxOwotICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oZC0+Y29udGV4dC5p
bmZvKTsKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVhcCo+KCZtX2dsb2JhbERhdGEt
PmhlYXApOwogICAgIGRvdWJsZSBnY1RpbWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxk
b3VibGU+KGJ5dGVzKSAvIE1CKSAqIGdjVGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsK
ICAgICBkb3VibGUgbmV3RGVsYXkgPSBoZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNl
OwotICAgIHNjaGVkdWxlVGltZXIoZC5nZXQoKSwgbmV3RGVsYXkpOworICAgIHNjaGVkdWxlVGlt
ZXIobmV3RGVsYXkpOwogfQogCiB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxD
b2xsZWN0KCkKIHsKLSAgICBjYW5jZWxUaW1lcihkLmdldCgpKTsKLX0KLQotdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpzeW5jaHJvbml6ZSgpCi17Ci0gICAgaWYgKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSA9PSBkLT5ydW5Mb29wLmdldCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZS
dW5Mb29wUmVtb3ZlVGltZXIoZC0+cnVuTG9vcC5nZXQoKSwgZC0+dGltZXIuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgZC0+cnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQo
KTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihkLT5ydW5Mb29wLmdldCgpLCBkLT50aW1lci5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICBjYW5jZWxUaW1lcigpOwogfQogCiB2b2lk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7Ci0gICAgY2FuY2VsVGltZXIo
ZC5nZXQoKSk7CisgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>