<?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>23374</bug_id>
          
          <creation_ts>2009-01-15 20:01:19 -0800</creation_ts>
          <short_desc>Add RunLoop class to encapsulate the loop in Worker threads.</short_desc>
          <delta_ts>2009-01-23 07:54:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>22718</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106012</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-15 20:01:19 -0800</bug_when>
    <thetext>This class will also keep a heap of TimerBase objects that are scheduled to fire on a Worker&apos;s thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106410</commentid>
    <comment_count>1</comment_count>
      <attachid>26878</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-20 17:09:39 -0800</bug_when>
    <thetext>Created attachment 26878
Proposed patch, part 1

This patch adds WorkerRunLoop which is used in WorkerThread.
No change in functionality, just add a new class. The second part will add timers and timedWait usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106502</commentid>
    <comment_count>2</comment_count>
      <attachid>26905</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-21 14:29:17 -0800</bug_when>
    <thetext>Created attachment 26905
revised patch

Oops, fixed couple of small things:
- removed 2008 from license text
- removed arguments to methods in .h file where their meaning can be understood from the type
- added comment
- added ASSERT to WorkerRunLoop::run() to verify it&apos;s called on a context with the thread and the thread is the current one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106508</commentid>
    <comment_count>3</comment_count>
      <attachid>26906</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-21 14:42:08 -0800</bug_when>
    <thetext>Created attachment 26906
hopefully the last version

Sorry for spam :-(
Needed to add 2 include files for the new asserts to compile. Seems it&apos;s ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106719</commentid>
    <comment_count>4</comment_count>
      <attachid>26906</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-23 00:49:59 -0800</bug_when>
    <thetext>Comment on attachment 26906
hopefully the last version

&gt; + * Copyright (c) 2009, Google Inc. All rights reserved.

Please fix the copyright line, as discussed on IRC.
&gt;      // FIXME: Rudely killing the thread won&apos;t work when we allow nested workers, because they will try to post notifications of their destruction.
&gt; -    m_messageQueue.kill();
&gt; +    m_runLoop.terminate();

Do you happen to have a plan concerning this FIXME?

&gt; +#include &lt;WorkerRunloop.h&gt;

Lower case &quot;l&quot; here, won&apos;t build on case-sensitive file systems.

r=me with these fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106725</commentid>
    <comment_count>5</comment_count>
      <attachid>26962</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-01-23 01:14:05 -0800</bug_when>
    <thetext>Created attachment 26962
Final version

Addressed review comments by ap:
- changed Copyright headers
- fixed capitalization of include file name
- FIXME: will address the nested workers as a whole feature later, don&apos;t have a plan for that yet, so left the FIXME.
Ready for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106751</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-23 07:54:15 -0800</bug_when>
    <thetext>Committed revision 40161.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26878</attachid>
            <date>2009-01-20 17:09:39 -0800</date>
            <delta_ts>2009-01-21 14:29:17 -0800</delta_ts>
            <desc>Proposed patch, part 1</desc>
            <filename>runLoop.txt</filename>
            <type>text/plain</type>
            <size>15602</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTU4N2U1NC4uZDU1NGYzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wMS0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNzQKKyAgICAgICAgQWRkIFdvcmtlclJ1bkxvb3AgdG8gZW5jYXBzdWxhdGUgbWVzc2FnZSBx
dWV1ZSBhbmQgdGltZXIgaGVhcC4KKyAgICAgICAgVGhpcyBpcyBmaXJzdCBoYWxmICh0aW1lciBo
ZWFwIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGRlZCBXb3JrZXJSdW5Mb29wLmNwcCB0byB0aGUgYnVpbGQuCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IFNhbWUgYXMgYWJvdmUuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTYW1lIGFzIGFib3ZlCisgICAgICAgICog
ZG9tL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6
cG9zdFRhc2spOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6CisgICAgICAgICog
ZG9tL1dvcmtlclJ1bkxvb3AuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1
bkxvb3A6OnJ1bik6IFJ1bnMgdGhlIGxvb3AgdW50aWwgdGVybWluYXRlKCkgaXMgY2FsbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6dGVybWluYXRlKTogQ2F1c2VzIHRoZSBs
b29wIHRvIGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6
IEFkZHMgYSB0YXNrIHRvIHRoZSBpbnRlcm5hbCBxdWV1ZS4KKyAgICAgICAgKiBkb20vV29ya2Vy
UnVuTG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6Oldvcmtl
clJ1bkxvb3ApOgorICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkxvb3ApOgorCiAyMDA5LTAxLTE5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0MTc2MTNiLi5mMGFmYzY4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIxNzEs
NiArMjE3MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vV29ya2VyTG9j
YXRpb24uaCBcCiAJV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIFwKIAlXZWJD
b3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIFwKKwlXZWJDb3JlL2RvbS9Xb3JrZXJSdW5M
b29wLmNwcCBcCisJV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oIFwKIAlXZWJDb3JlL2RvbS9X
b3JrZXJUYXNrLmNwcCBcCiAJV2ViQ29yZS9kb20vV29ya2VyVGFzay5oIFwKIAlXZWJDb3JlL2Rv
bS9Xb3JrZXJUaHJlYWQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDBlOTRhZTguLjNiMjlhYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMTIwNzgsNiArMTIwNzgsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFdvcmtlclJ1bkxvb3AuY3BwIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFdvcmtlclJ1
bkxvb3AuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxXb3JrZXJUYXNrLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZTBmN2YuLmViZmM2YmEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTUsNiAr
MTU1LDggQEAKIAkJMTRFQzI2ODAwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEVDMjY3
RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAqLzsgfTsKIAkJMTRGRkUz
MUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRTMxQjBBRTE5NjMzMDAxMzZC
RjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEZGRTMxRTBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcCAqLzsgfTsKKwkJMThBMDUzN0MwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3Au
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThBMDUz
N0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovOyB9OworCQkxOEEwNTM3
RDBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThBMDUzN0IwRjI2ODU5QzAwQTUxNzA1IC8qIFdv
cmtlclJ1bkxvb3AuaCAqLzsgfTsKIAkJMThFNjg3ODcwRURCNzkzNTAwQThFOEI3IC8qIERPTVRp
bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4
RTY4Nzg1MEVEQjc5MzQwMEE4RThCNyAvKiBET01UaW1lci5jcHAgKi87IH07CiAJCTE4RTY4Nzg4
MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVy
LmggKi87IH07CiAJCTFBMEQ1NzM2MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM0
MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLzsgfTsKQEAgLTQ5NzksNiAr
NDk4MSw4IEBACiAJCTE0RUMyNjdFMDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRUYXJnZXROb2Rl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGRkUzMUIwQUUxOTYzMzAwMTM2
QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4QTA1MzdBMEYyNjg1OUMwMEE1
MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdvcmtlclJ1bkxvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
OEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJSdW5Mb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE4RTY4Nzg1MEVEQjc5MzQwMEE4RThCNyAvKiBET01UaW1lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UaW1lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE4RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01UaW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTBENTczNDBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3ZlcmZsb3dF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDMzMSw2ICsxNDMzNSw4
IEBACiAJCQkJRTFDMzYyQkIwRUFGMjlGQjAwNzQxMEJDIC8qIFdvcmtlckxvY2F0aW9uLmlkbCAq
LywKIAkJCQlFMTQ3OTlCMzBFQ0RFOUQ4MDAyOTJCRjMgLyogV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwICovLAogCQkJCUUxNDc5OUE2MEVDREUzQTQwMDI5MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQ
cm94eS5oICovLAorCQkJCTE4QTA1MzdBMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29w
LmNwcCAqLywKKwkJCQkxOEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5o
ICovLAogCQkJCUUxMDgyMjRFMEVDMzE1NjcwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmNwcCAqLywK
IAkJCQlFMTA4MjI0QTBFQzMxNTNBMDBFOTM5NTMgLyogV29ya2VyVGFzay5oICovLAogCQkJCUUx
QzJDNDI4MEVBQ0UwRTAwMDdFNjFGQiAvKiBXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMTY1Mzks
NiArMTY1NDUsNyBAQAogCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRD
U1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4MzkxNTkwRjFFNzc2OTAw
QzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4MzkxNjQw
RjFFOEVFMTAwQzIzNzgyIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTE4QTA1MzdEMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE4NDk3LDYgKzE4NTA0LDcgQEAKIAkJCQk0OTgzOTE1MTBGMUU3
NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDk4MzkxNTgwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OTgzOTE2MzBGMUU4RUUxMDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXhD
b25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxOEEwNTM3QzBGMjY4NTlDMDBBNTE3
MDUgLyogV29ya2VyUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5jcHAK
aW5kZXggOGE5YWYwNy4uN2YxMTIxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29ya2VyQ29u
dGV4dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5jcHAKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBwcml2YXRlOgogCiB2b2lkIFdvcmtlckNvbnRleHQ6OnBvc3RUYXNrKFBhc3NSZWZQ
dHI8VGFzaz4gdGFzaykKIHsKLSAgICB0aHJlYWQoKS0+bWVzc2FnZVF1ZXVlKCkuYXBwZW5kKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29ya2VyVGFzazo6Y3JlYXRlKHRhc2spKTsKKyAgICB0
aHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRUYXNrV29y
a2VyVGFzazo6Y3JlYXRlKHRhc2spKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vV29ya2Vy
Q29udGV4dC5oCmluZGV4IGM5Nzc0ZDkuLjFjZWJiZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKQEAgLTQz
LDcgKzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV29ya2VyTG9jYXRp
b247CiAgICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotICAgIGNsYXNzIFdvcmtlclRhc2s7CiAg
ICAgY2xhc3MgV29ya2VyVGhyZWFkOwogCiAgICAgY2xhc3MgV29ya2VyQ29udGV4dCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdvcmtlckNvbnRleHQ+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApp
bmRleCBiNjliOWM1Li5kMmIyN2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgaWYgKG1fd29y
a2VyVGhyZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChNZXNzYWdlV29ya2VyQ29u
dGV4dFRhc2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkp
OwogICAgIH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VX
b3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KQEAgLTI0MSw3ICsyNDEsNyBA
QCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQ
dHI8V29ya2VyVGhyZWFkPiB3b3JrZXJUaAogICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNv
dW50ID0gdGFza0NvdW50ICsgMTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIGNvdW50cyBhcyBh
IHBlbmRpbmcgbWVzc2FnZS4KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFz
a0NvdW50OyArK2kpCi0gICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+bWVzc2FnZVF1ZXVlKCku
YXBwZW5kKG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CiAgICAgICAgIG1f
cXVldWVkRWFybHlUYXNrcy5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1dvcmtlclJ1bkxvb3AuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2ODM1MAotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyAKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclRhc2suaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit2b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bihXb3JrZXJDb250ZXh0KiBjb250
ZXh0KQoreworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFJlZlB0cjxXb3JrZXJUYXNrPiB0
YXNrOworICAgICAgICBpZiAoIW1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7
CisgICAgfQorfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCit7CisgICAgbV9t
ZXNzYWdlUXVldWUua2lsbCgpOworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBh
c3NSZWZQdHI8V29ya2VyVGFzaz4gdGFzaykKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQo
dGFzayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oIGIvV2ViQ29y
ZS9kb20vV29ya2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE5MTRjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdvcmtlclJ1bkxvb3BfaAorI2RlZmlu
ZSBXb3JrZXJSdW5Mb29wX2gKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29y
a2VyVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJD
b250ZXh0OworCisgICAgY2xhc3MgV29ya2VyUnVuTG9vcCB7CisgICAgcHVibGljOgorICAgICAg
ICBXb3JrZXJSdW5Mb29wKCkge30KKyAgICAgICAgCisgICAgICAgIHZvaWQgcnVuKFdvcmtlckNv
bnRleHQqIGNvbnRleHQpOworICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOworCisgICAgICAgIHZv
aWQgcG9zdFRhc2soUGFzc1JlZlB0cjxXb3JrZXJUYXNrPiB0YXNrKTsKKyAgICAgICAgCisgICAg
cHJpdmF0ZToKKyAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxXb3JrZXJUYXNrPiA+IG1fbWVz
c2FnZVF1ZXVlOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXT1JLRVJTKQorCisjZW5kaWYgLy8gV29ya2VyUnVuTG9vcF9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFk
LmNwcAppbmRleCBkMmM0OTMzLi44NmY3MmIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAKQEAgLTExNCwx
MyArMTE0LDggQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgbV9t
ZXNzYWdpbmdQcm94eS0+Y29uZmlybVdvcmtlclRocmVhZE1lc3NhZ2UobV93b3JrZXJDb250ZXh0
LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7IC8vIFRoaXMgd2Fzbid0IHJlYWxseSBhIG1lc3NhZ2Us
IGJ1dCBpdCBjb3VudHMgYXMgb25lIGZvciBHQy4KIAotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIFJlZlB0cjxXb3JrZXJUYXNrPiB0YXNrOwotICAgICAgICBpZiAoIW1fbWVzc2FnZVF1ZXVl
LndhaXRGb3JNZXNzYWdlKHRhc2spKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgdGFz
ay0+cGVyZm9ybVRhc2sobV93b3JrZXJDb250ZXh0LmdldCgpKTsKLSAgICB9CisgICAgLy8gQmxv
Y2tzIHVudGlsIHRlcm1pbmF0ZWQuCisgICAgbV9ydW5Mb29wLnJ1bihtX3dvcmtlckNvbnRleHQu
Z2V0KCkpOwogCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhyZWFkSUQ7CiAK
QEAgLTE0Niw3ICsxNDEsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAgICAgICAgIG1f
d29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwogCiAgICAgLy8gRklY
TUU6IFJ1ZGVseSBraWxsaW5nIHRoZSB0aHJlYWQgd29uJ3Qgd29yayB3aGVuIHdlIGFsbG93IG5l
c3RlZCB3b3JrZXJzLCBiZWNhdXNlIHRoZXkgd2lsbCB0cnkgdG8gcG9zdCBub3RpZmljYXRpb25z
IG9mIHRoZWlyIGRlc3RydWN0aW9uLgotICAgIG1fbWVzc2FnZVF1ZXVlLmtpbGwoKTsKKyAgICBt
X3J1bkxvb3AudGVybWluYXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20vV29ya2VyVGhy
ZWFkLmgKaW5kZXggMDdlM2U4YS4uMGI2YzllOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vV29y
a2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1
ZS5oPgorI2luY2x1ZGUgPFdvcmtlclJ1bmxvb3AuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtNTIsOCArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3Rv
cCgpOwogCiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVy
biBtX3RocmVhZElEOyB9Ci0gICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8V29ya2VyVGFzaz4g
PiYgbWVzc2FnZVF1ZXVlKCkgeyByZXR1cm4gbV9tZXNzYWdlUXVldWU7IH0KLQorICAgICAgICBX
b3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAgICAgICAgIFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnaW5nUHJveHk7IH0KIAogICAgIHByaXZhdGU6CkBAIC02MywxMiArNjIsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkKiB3b3JrZXJUaHJlYWQoKTsKIAogICAgICAgICBU
aHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisgICAgICAgIFdvcmtlclJ1bkxvb3AgbV9ydW5M
b29wOwogICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIAog
ICAgICAgICBSZWZQdHI8V29ya2VyQ29udGV4dD4gbV93b3JrZXJDb250ZXh0OwogICAgICAgICBN
dXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAKLSAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0
cjxXb3JrZXJUYXNrPiA+IG1fbWVzc2FnZVF1ZXVlOwogICAgICAgICBPd25QdHI8V29ya2VyVGhy
ZWFkU3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26905</attachid>
            <date>2009-01-21 14:29:17 -0800</date>
            <delta_ts>2009-01-21 14:42:08 -0800</delta_ts>
            <desc>revised patch</desc>
            <filename>runLoop_v2.txt</filename>
            <type>text/plain</type>
            <size>15782</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNiODRmOS4uMzY5NWY3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wMS0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNzQKKyAgICAgICAgQWRkIFdvcmtlclJ1bkxvb3AgdG8gZW5jYXBzdWxhdGUgbWVzc2FnZSBx
dWV1ZSBhbmQgdGltZXIgaGVhcC4KKyAgICAgICAgVGhpcyBpcyBmaXJzdCBoYWxmICh0aW1lciBo
ZWFwIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGRlZCBXb3JrZXJSdW5Mb29wLmNwcCB0byB0aGUgYnVpbGQuCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IFNhbWUgYXMgYWJvdmUuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTYW1lIGFzIGFib3ZlCisgICAgICAgICog
ZG9tL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6
cG9zdFRhc2spOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6CisgICAgICAgICog
ZG9tL1dvcmtlclJ1bkxvb3AuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1
bkxvb3A6OnJ1bik6IFJ1bnMgdGhlIGxvb3AgdW50aWwgdGVybWluYXRlKCkgaXMgY2FsbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6dGVybWluYXRlKTogQ2F1c2VzIHRoZSBs
b29wIHRvIGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6
IEFkZHMgYSB0YXNrIHRvIHRoZSBpbnRlcm5hbCBxdWV1ZS4KKyAgICAgICAgKiBkb20vV29ya2Vy
UnVuTG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6Oldvcmtl
clJ1bkxvb3ApOgorICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkxvb3ApOgorCiAyMDA5LTAxLTIxICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDc5ZjU1YTcuLjIyZjU4NTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE4Miw2
ICsyMTgyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2Nh
dGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgXAogCVdlYkNv
cmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggXAorCVdlYkNvcmUvZG9tL1dvcmtlclJ1bkxv
b3AuY3BwIFwKKwlXZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmggXAogCVdlYkNvcmUvZG9tL1dv
cmtlclRhc2suY3BwIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlclRocmVhZC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMWEwYWFkMC4uMzEyODk1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0xMjEyMiw2ICsxMjEyMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVuTG9vcC5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVu
TG9vcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFdvcmtlclRhc2suY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzAyZWM3Yy4uZTFkNzQ5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2Nyw2ICsx
NjcsOCBAQAogCQkxNEVDMjY4MDA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RUMyNjdF
MDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuY3BwICovOyB9OwogCQkxNEZGRTMx
RDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwICovOyB9OworCQkxOEEwNTM3QzBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3
QTBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5jcHAgKi87IH07CisJCTE4QTA1MzdE
MEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29y
a2VyUnVuTG9vcC5oICovOyB9OwogCQkxOEU2ODc4NzBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGlt
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThF
Njg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLzsgfTsKIAkJMThFNjg3ODgw
RURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NjBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGltZXIu
aCAqLzsgfTsKIAkJMUEwRDU3MzYwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3MzQw
QTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNTAwNCw2ICs1
MDA2LDggQEAKIAkJMTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdldE5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZC
RjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThBMDUzN0EwRjI2ODU5QzAwQTUx
NzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4
QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJ1bkxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMThFNjg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVyZmxvd0V2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzcwLDYgKzE0Mzc0LDgg
QEAKIAkJCQlFMUMzNjJCQjBFQUYyOUZCMDA3NDEwQkMgLyogV29ya2VyTG9jYXRpb24uaWRsICov
LAogCQkJCUUxNDc5OUIzMEVDREU5RDgwMDI5MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgKi8sCiAJCQkJRTE0Nzk5QTYwRUNERTNBNDAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2luZ1By
b3h5LmggKi8sCisJCQkJMThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3Au
Y3BwICovLAorCQkJCTE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki8sCiAJCQkJRTEwODIyNEUwRUMzMTU2NzAwRTkzOTUzIC8qIFdvcmtlclRhc2suY3BwICovLAog
CQkJCUUxMDgyMjRBMEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmggKi8sCiAJCQkJRTFD
MkM0MjgwRUFDRTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCkBAIC0xNjU5Myw2
ICsxNjU5OSw3IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVu
dGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEg
LyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThBMDUzN0QwRjI2ODU5QzAw
QTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg1NTcsNiArMTg1
NjQsNyBAQAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVf
dW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwOTRBRkEwRjI3QUU2MDAwNTk2Q0VDIC8q
IENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMThBMDUzN0MwRjI2ODU5
QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCmluZGV4IDg2MjA4ODEuLmZlNDY0M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dv
cmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0y
MTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQ
YXNzUmVmUHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPm1lc3NhZ2VRdWV1ZSgpLmFw
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7
CisgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4dDo6
cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0YXNrKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4
dC5oCmluZGV4IDRkNGIyOTkuLjJlNDQzZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKQEAgLTQzLDcgKzQz
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAg
ICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotICAgIGNsYXNzIFdvcmtlclRhc2s7CiAgICAgY2xh
c3MgV29ya2VyVGhyZWFkOwogCiAgICAgY2xhc3MgV29ya2VyQ29udGV4dCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdvcmtlckNvbnRleHQ+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCA3
MjFiZjEzLi5iMGQxNDVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0y
MTgsNyArMjE4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgaWYgKG1fd29ya2VyVGhy
ZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQtPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRh
c2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJD
b250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29y
a2VyVGhyZWFkPiB3b3JrZXJUaAogICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50ID0g
dGFza0NvdW50ICsgMTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIGNvdW50cyBhcyBhIHBlbmRp
bmcgbWVzc2FnZS4KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFza0NvdW50
OyArK2kpCi0gICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+bWVzc2FnZVF1ZXVlKCkuYXBwZW5k
KG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CiAgICAgICAgIG1fcXVldWVk
RWFybHlUYXNrcy5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlclJ1bkxvb3AuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3ZTJlYQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclRhc2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bihXb3JrZXJDb250ZXh0KiBjb250ZXh0KQoreworICAg
IEFTU0VSVChjb250ZXh0KTsKKyAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkpOworICAgIEFT
U0VSVChjb250ZXh0LT50aHJlYWQoKS0+dGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOwor
ICAgIAorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFJlZlB0cjxXb3JrZXJUYXNrPiB0YXNr
OworICAgICAgICBpZiAoIW1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7Cisg
ICAgfQorfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCit7CisgICAgbV9tZXNz
YWdlUXVldWUua2lsbCgpOworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NS
ZWZQdHI8V29ya2VyVGFzaz4gdGFzaykKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQodGFz
ayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oIGIvV2ViQ29yZS9k
b20vV29ya2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0
OGMzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdvcmtlclJ1bkxvb3BfaAorI2RlZmluZSBXb3JrZXJS
dW5Mb29wX2gKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyVGFzay5o
IgorI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVldWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0Owor
CisgICAgY2xhc3MgV29ya2VyUnVuTG9vcCB7CisgICAgcHVibGljOgorICAgICAgICBXb3JrZXJS
dW5Mb29wKCkge30KKyAgICAgICAgCisgICAgICAgIC8vIEJsb2NraW5nIGNhbGwuIFdhaXRzIGZv
ciB0YXNrcyBhbmQgdGltZXJzLCBpbnZva2VzIHRoZSBjYWxsYmFja3MuCisgICAgICAgIHZvaWQg
cnVuKFdvcmtlckNvbnRleHQqKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgdGVybWluYXRlKCk7
CisKKyAgICAgICAgdm9pZCBwb3N0VGFzayhQYXNzUmVmUHRyPFdvcmtlclRhc2s+KTsKKyAgICAg
ICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxXb3JrZXJUYXNr
PiA+IG1fbWVzc2FnZVF1ZXVlOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisjZW5kaWYgLy8gV29ya2VyUnVuTG9vcF9oCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwIGIvV2ViQ29yZS9kb20vV29y
a2VyVGhyZWFkLmNwcAppbmRleCBkMmM0OTMzLi44NmY3MmIwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAK
QEAgLTExNCwxMyArMTE0LDggQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQog
CiAgICAgbV9tZXNzYWdpbmdQcm94eS0+Y29uZmlybVdvcmtlclRocmVhZE1lc3NhZ2UobV93b3Jr
ZXJDb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7IC8vIFRoaXMgd2Fzbid0IHJlYWxseSBh
IG1lc3NhZ2UsIGJ1dCBpdCBjb3VudHMgYXMgb25lIGZvciBHQy4KIAotICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgIFJlZlB0cjxXb3JrZXJUYXNrPiB0YXNrOwotICAgICAgICBpZiAoIW1fbWVz
c2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgdGFzay0+cGVyZm9ybVRhc2sobV93b3JrZXJDb250ZXh0LmdldCgpKTsKLSAgICB9Cisg
ICAgLy8gQmxvY2tzIHVudGlsIHRlcm1pbmF0ZWQuCisgICAgbV9ydW5Mb29wLnJ1bihtX3dvcmtl
ckNvbnRleHQuZ2V0KCkpOwogCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IG1fdGhy
ZWFkSUQ7CiAKQEAgLTE0Niw3ICsxNDEsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6c3RvcCgpCiAg
ICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZvcmJpZEV4ZWN1dGlvbigpOwogCiAg
ICAgLy8gRklYTUU6IFJ1ZGVseSBraWxsaW5nIHRoZSB0aHJlYWQgd29uJ3Qgd29yayB3aGVuIHdl
IGFsbG93IG5lc3RlZCB3b3JrZXJzLCBiZWNhdXNlIHRoZXkgd2lsbCB0cnkgdG8gcG9zdCBub3Rp
ZmljYXRpb25zIG9mIHRoZWlyIGRlc3RydWN0aW9uLgotICAgIG1fbWVzc2FnZVF1ZXVlLmtpbGwo
KTsKKyAgICBtX3J1bkxvb3AudGVybWluYXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oIGIvV2ViQ29yZS9kb20v
V29ya2VyVGhyZWFkLmgKaW5kZXggY2EzZTk2NS4uNDI3ZTQ1MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vV29ya2VyVGhyZWFkLmgKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmgKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogCi0jaW5jbHVkZSA8d3RmL01l
c3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUgPFdvcmtlclJ1bmxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtNTIsOCArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgc3RvcCgpOwogCiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25z
dCB7IHJldHVybiBtX3RocmVhZElEOyB9Ci0gICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8V29y
a2VyVGFzaz4gPiYgbWVzc2FnZVF1ZXVlKCkgeyByZXR1cm4gbV9tZXNzYWdlUXVldWU7IH0KLQor
ICAgICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wOyB9CiAg
ICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnaW5nUHJveHk7IH0KIAogICAgIHByaXZhdGU6CkBAIC02MywxMiArNjIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkKiB3b3JrZXJUaHJlYWQoKTsKIAog
ICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CisgICAgICAgIFdvcmtlclJ1bkxv
b3AgbV9ydW5Mb29wOwogICAgICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQ
cm94eTsKIAogICAgICAgICBSZWZQdHI8V29ya2VyQ29udGV4dD4gbV93b3JrZXJDb250ZXh0Owog
ICAgICAgICBNdXRleCBtX3RocmVhZENyZWF0aW9uTXV0ZXg7CiAKLSAgICAgICAgTWVzc2FnZVF1
ZXVlPFJlZlB0cjxXb3JrZXJUYXNrPiA+IG1fbWVzc2FnZVF1ZXVlOwogICAgICAgICBPd25QdHI8
V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+IG1fc3RhcnR1cERhdGE7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26906</attachid>
            <date>2009-01-21 14:42:08 -0800</date>
            <delta_ts>2009-01-23 01:14:05 -0800</delta_ts>
            <desc>hopefully the last version</desc>
            <filename>runLoop_v3.txt</filename>
            <type>text/plain</type>
            <size>15837</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNiODRmOS4uMzY5NWY3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wMS0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNzQKKyAgICAgICAgQWRkIFdvcmtlclJ1bkxvb3AgdG8gZW5jYXBzdWxhdGUgbWVzc2FnZSBx
dWV1ZSBhbmQgdGltZXIgaGVhcC4KKyAgICAgICAgVGhpcyBpcyBmaXJzdCBoYWxmICh0aW1lciBo
ZWFwIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGRlZCBXb3JrZXJSdW5Mb29wLmNwcCB0byB0aGUgYnVpbGQuCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IFNhbWUgYXMgYWJvdmUuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTYW1lIGFzIGFib3ZlCisgICAgICAgICog
ZG9tL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6
cG9zdFRhc2spOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6CisgICAgICAgICog
ZG9tL1dvcmtlclJ1bkxvb3AuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1
bkxvb3A6OnJ1bik6IFJ1bnMgdGhlIGxvb3AgdW50aWwgdGVybWluYXRlKCkgaXMgY2FsbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6dGVybWluYXRlKTogQ2F1c2VzIHRoZSBs
b29wIHRvIGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6
IEFkZHMgYSB0YXNrIHRvIHRoZSBpbnRlcm5hbCBxdWV1ZS4KKyAgICAgICAgKiBkb20vV29ya2Vy
UnVuTG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6Oldvcmtl
clJ1bkxvb3ApOgorICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkxvb3ApOgorCiAyMDA5LTAxLTIxICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDc5ZjU1YTcuLjIyZjU4NTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE4Miw2
ICsyMTgyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2Nh
dGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgXAogCVdlYkNv
cmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggXAorCVdlYkNvcmUvZG9tL1dvcmtlclJ1bkxv
b3AuY3BwIFwKKwlXZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmggXAogCVdlYkNvcmUvZG9tL1dv
cmtlclRhc2suY3BwIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlclRocmVhZC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMWEwYWFkMC4uMzEyODk1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0xMjEyMiw2ICsxMjEyMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVuTG9vcC5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVu
TG9vcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFdvcmtlclRhc2suY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzAyZWM3Yy4uZTFkNzQ5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2Nyw2ICsx
NjcsOCBAQAogCQkxNEVDMjY4MDA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RUMyNjdF
MDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuY3BwICovOyB9OwogCQkxNEZGRTMx
RDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwICovOyB9OworCQkxOEEwNTM3QzBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3
QTBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5jcHAgKi87IH07CisJCTE4QTA1MzdE
MEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29y
a2VyUnVuTG9vcC5oICovOyB9OwogCQkxOEU2ODc4NzBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGlt
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThF
Njg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLzsgfTsKIAkJMThFNjg3ODgw
RURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NjBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGltZXIu
aCAqLzsgfTsKIAkJMUEwRDU3MzYwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3MzQw
QTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNTAwNCw2ICs1
MDA2LDggQEAKIAkJMTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdldE5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZC
RjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThBMDUzN0EwRjI2ODU5QzAwQTUx
NzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4
QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJ1bkxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMThFNjg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVyZmxvd0V2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzcwLDYgKzE0Mzc0LDgg
QEAKIAkJCQlFMUMzNjJCQjBFQUYyOUZCMDA3NDEwQkMgLyogV29ya2VyTG9jYXRpb24uaWRsICov
LAogCQkJCUUxNDc5OUIzMEVDREU5RDgwMDI5MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgKi8sCiAJCQkJRTE0Nzk5QTYwRUNERTNBNDAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2luZ1By
b3h5LmggKi8sCisJCQkJMThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3Au
Y3BwICovLAorCQkJCTE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki8sCiAJCQkJRTEwODIyNEUwRUMzMTU2NzAwRTkzOTUzIC8qIFdvcmtlclRhc2suY3BwICovLAog
CQkJCUUxMDgyMjRBMEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmggKi8sCiAJCQkJRTFD
MkM0MjgwRUFDRTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCkBAIC0xNjU5Myw2
ICsxNjU5OSw3IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVu
dGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEg
LyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThBMDUzN0QwRjI2ODU5QzAw
QTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg1NTcsNiArMTg1
NjQsNyBAQAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVf
dW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwOTRBRkEwRjI3QUU2MDAwNTk2Q0VDIC8q
IENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMThBMDUzN0MwRjI2ODU5
QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCmluZGV4IDg2MjA4ODEuLmZlNDY0M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dv
cmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0y
MTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQ
YXNzUmVmUHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPm1lc3NhZ2VRdWV1ZSgpLmFw
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7
CisgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4dDo6
cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0YXNrKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4
dC5oCmluZGV4IDRkNGIyOTkuLjJlNDQzZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKQEAgLTQzLDcgKzQz
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAg
ICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotICAgIGNsYXNzIFdvcmtlclRhc2s7CiAgICAgY2xh
c3MgV29ya2VyVGhyZWFkOwogCiAgICAgY2xhc3MgV29ya2VyQ29udGV4dCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdvcmtlckNvbnRleHQ+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCA3
MjFiZjEzLi5iMGQxNDVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0y
MTgsNyArMjE4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgaWYgKG1fd29ya2VyVGhy
ZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQtPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRh
c2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJD
b250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29y
a2VyVGhyZWFkPiB3b3JrZXJUaAogICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50ID0g
dGFza0NvdW50ICsgMTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIGNvdW50cyBhcyBhIHBlbmRp
bmcgbWVzc2FnZS4KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFza0NvdW50
OyArK2kpCi0gICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+bWVzc2FnZVF1ZXVlKCkuYXBwZW5k
KG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CiAgICAgICAgIG1fcXVldWVk
RWFybHlUYXNrcy5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlclJ1bkxvb3AuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0MTFjMAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyUnVu
TG9vcC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJUYXNr
LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBXb3JrZXJSdW5Mb29wOjpydW4oV29ya2VyQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBB
U1NFUlQoY29udGV4dCk7CisgICAgQVNTRVJUKGNvbnRleHQtPnRocmVhZCgpKTsKKyAgICBBU1NF
UlQoY29udGV4dC0+dGhyZWFkKCktPnRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKTsKKyAg
ICAKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBSZWZQdHI8V29ya2VyVGFzaz4gdGFzazsK
KyAgICAgICAgaWYgKCFtX21lc3NhZ2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSh0YXNrKSkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKGNvbnRleHQpOworICAg
IH0KK30KKwordm9pZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQoreworICAgIG1fbWVzc2Fn
ZVF1ZXVlLmtpbGwoKTsKK30KKwordm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhQYXNzUmVm
UHRyPFdvcmtlclRhc2s+IHRhc2spCit7CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHRhc2sp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuaCBiL1dlYkNvcmUvZG9t
L1dvcmtlclJ1bkxvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDhj
M2NhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrZXJSdW5Mb29wX2gKKyNkZWZpbmUgV29ya2VyUnVu
TG9vcF9oCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlclRhc2suaCIK
KyNpbmNsdWRlIDx3dGYvTWVzc2FnZVF1ZXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKKwor
ICAgIGNsYXNzIFdvcmtlclJ1bkxvb3AgeworICAgIHB1YmxpYzoKKyAgICAgICAgV29ya2VyUnVu
TG9vcCgpIHt9CisgICAgICAgIAorICAgICAgICAvLyBCbG9ja2luZyBjYWxsLiBXYWl0cyBmb3Ig
dGFza3MgYW5kIHRpbWVycywgaW52b2tlcyB0aGUgY2FsbGJhY2tzLgorICAgICAgICB2b2lkIHJ1
bihXb3JrZXJDb250ZXh0Kik7CisgICAgICAgIAorICAgICAgICB2b2lkIHRlcm1pbmF0ZSgpOwor
CisgICAgICAgIHZvaWQgcG9zdFRhc2soUGFzc1JlZlB0cjxXb3JrZXJUYXNrPik7CisgICAgICAg
IAorICAgIHByaXZhdGU6CisgICAgICAgIE1lc3NhZ2VRdWV1ZTxSZWZQdHI8V29ya2VyVGFzaz4g
PiBtX21lc3NhZ2VRdWV1ZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFdvcmtlclJ1bkxvb3BfaApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtl
clRocmVhZC5jcHAKaW5kZXggZDJjNDkzMy4uODZmNzJiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vV29ya2VyVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCkBA
IC0xMTQsMTMgKzExNCw4IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKIAog
ICAgIG1fbWVzc2FnaW5nUHJveHktPmNvbmZpcm1Xb3JrZXJUaHJlYWRNZXNzYWdlKG1fd29ya2Vy
Q29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOyAvLyBUaGlzIHdhc24ndCByZWFsbHkgYSBt
ZXNzYWdlLCBidXQgaXQgY291bnRzIGFzIG9uZSBmb3IgR0MuCiAKLSAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICBSZWZQdHI8V29ya2VyVGFzaz4gdGFzazsKLSAgICAgICAgaWYgKCFtX21lc3Nh
Z2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSh0YXNrKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIHRhc2stPnBlcmZvcm1UYXNrKG1fd29ya2VyQ29udGV4dC5nZXQoKSk7Ci0gICAgfQorICAg
IC8vIEJsb2NrcyB1bnRpbCB0ZXJtaW5hdGVkLgorICAgIG1fcnVuTG9vcC5ydW4obV93b3JrZXJD
b250ZXh0LmdldCgpKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBtX3RocmVh
ZElEOwogCkBAIC0xNDYsNyArMTQxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWQ6OnN0b3AoKQogICAg
ICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsKIAogICAg
IC8vIEZJWE1FOiBSdWRlbHkga2lsbGluZyB0aGUgdGhyZWFkIHdvbid0IHdvcmsgd2hlbiB3ZSBh
bGxvdyBuZXN0ZWQgd29ya2VycywgYmVjYXVzZSB0aGV5IHdpbGwgdHJ5IHRvIHBvc3Qgbm90aWZp
Y2F0aW9ucyBvZiB0aGVpciBkZXN0cnVjdGlvbi4KLSAgICBtX21lc3NhZ2VRdWV1ZS5raWxsKCk7
CisgICAgbV9ydW5Mb29wLnRlcm1pbmF0ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaCBiL1dlYkNvcmUvZG9tL1dv
cmtlclRocmVhZC5oCmluZGV4IGNhM2U5NjUuLjQyN2U0NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1dvcmtlclRocmVhZC5oCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgPHd0Zi9NZXNz
YWdlUXVldWUuaD4KKyNpbmNsdWRlIDxXb3JrZXJSdW5sb29wLmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTUyLDggKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHN0b3AoKTsKIAogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3Qg
eyByZXR1cm4gbV90aHJlYWRJRDsgfQotICAgICAgICBNZXNzYWdlUXVldWU8UmVmUHRyPFdvcmtl
clRhc2s+ID4mIG1lc3NhZ2VRdWV1ZSgpIHsgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlOyB9Ci0KKyAg
ICAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcDsgfQogICAg
ICAgICBXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkoKSBjb25zdCB7IHJldHVy
biBtX21lc3NhZ2luZ1Byb3h5OyB9CiAKICAgICBwcml2YXRlOgpAQCAtNjMsMTIgKzYyLDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCogd29ya2VyVGhyZWFkKCk7CiAKICAg
ICAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgICAgICBXb3JrZXJSdW5Mb29w
IG1fcnVuTG9vcDsKICAgICAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5nUHJv
eHk7CiAKICAgICAgICAgUmVmUHRyPFdvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dDsKICAg
ICAgICAgTXV0ZXggbV90aHJlYWRDcmVhdGlvbk11dGV4OwogCi0gICAgICAgIE1lc3NhZ2VRdWV1
ZTxSZWZQdHI8V29ya2VyVGFzaz4gPiBtX21lc3NhZ2VRdWV1ZTsKICAgICAgICAgT3duUHRyPFdv
cmtlclRocmVhZFN0YXJ0dXBEYXRhPiBtX3N0YXJ0dXBEYXRhOwogICAgIH07CiAK
</data>
<flag name="review"
          id="12877"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26962</attachid>
            <date>2009-01-23 01:14:05 -0800</date>
            <delta_ts>2009-01-23 01:14:05 -0800</delta_ts>
            <desc>Final version</desc>
            <filename>runLoop_v4.txt</filename>
            <type>text/plain</type>
            <size>15835</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGNiODRmOS4uMzY5NWY3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wMS0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNzQKKyAgICAgICAgQWRkIFdvcmtlclJ1bkxvb3AgdG8gZW5jYXBzdWxhdGUgbWVzc2FnZSBx
dWV1ZSBhbmQgdGltZXIgaGVhcC4KKyAgICAgICAgVGhpcyBpcyBmaXJzdCBoYWxmICh0aW1lciBo
ZWFwIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHBhdGNoKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGRlZCBXb3JrZXJSdW5Mb29wLmNwcCB0byB0aGUgYnVpbGQuCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IFNhbWUgYXMgYWJvdmUuCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTYW1lIGFzIGFib3ZlCisgICAgICAgICog
ZG9tL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6
cG9zdFRhc2spOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogZG9t
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6CisgICAgICAgICog
ZG9tL1dvcmtlclJ1bkxvb3AuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1
bkxvb3A6OnJ1bik6IFJ1bnMgdGhlIGxvb3AgdW50aWwgdGVybWluYXRlKCkgaXMgY2FsbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6dGVybWluYXRlKTogQ2F1c2VzIHRoZSBs
b29wIHRvIGV4aXQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6
IEFkZHMgYSB0YXNrIHRvIHRoZSBpbnRlcm5hbCBxdWV1ZS4KKyAgICAgICAgKiBkb20vV29ya2Vy
UnVuTG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6Oldvcmtl
clJ1bkxvb3ApOgorICAgICAgICAqIGRvbS9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkOjpzdG9wKToKKyAgICAgICAgKiBkb20vV29ya2VyVGhyZWFkLmg6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkxvb3ApOgorCiAyMDA5LTAxLTIxICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDc5ZjU1YTcuLjIyZjU4NTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjE4Miw2
ICsyMTgyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2Nh
dGlvbi5oIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgXAogCVdlYkNv
cmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggXAorCVdlYkNvcmUvZG9tL1dvcmtlclJ1bkxv
b3AuY3BwIFwKKwlXZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmggXAogCVdlYkNvcmUvZG9tL1dv
cmtlclRhc2suY3BwIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJUYXNrLmggXAogCVdlYkNvcmUvZG9t
L1dvcmtlclRocmVhZC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMWEwYWFkMC4uMzEyODk1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0xMjEyMiw2ICsxMjEyMiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVuTG9vcC5jcHAiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cV29ya2VyUnVu
TG9vcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFdvcmtlclRhc2suY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzAyZWM3Yy4uZTFkNzQ5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2Nyw2ICsx
NjcsOCBAQAogCQkxNEVDMjY4MDA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RUMyNjdF
MDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuY3BwICovOyB9OwogCQkxNEZGRTMx
RDBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2Uu
Y3BwICovOyB9OworCQkxOEEwNTM3QzBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3
QTBGMjY4NTlDMDBBNTE3MDUgLyogV29ya2VyUnVuTG9vcC5jcHAgKi87IH07CisJCTE4QTA1MzdE
MEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEEwNTM3QjBGMjY4NTlDMDBBNTE3MDUgLyogV29y
a2VyUnVuTG9vcC5oICovOyB9OwogCQkxOEU2ODc4NzBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGlt
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMThF
Njg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLzsgfTsKIAkJMThFNjg3ODgw
RURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NjBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGltZXIu
aCAqLzsgfTsKIAkJMUEwRDU3MzYwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3MzQw
QTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNTAwNCw2ICs1
MDA2LDggQEAKIAkJMTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdldE5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZC
RjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThBMDUzN0EwRjI2ODU5QzAwQTUx
NzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE4
QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclJ1bkxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMThFNjg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMThFNjg3ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVyZmxvd0V2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MzcwLDYgKzE0Mzc0LDgg
QEAKIAkJCQlFMUMzNjJCQjBFQUYyOUZCMDA3NDEwQkMgLyogV29ya2VyTG9jYXRpb24uaWRsICov
LAogCQkJCUUxNDc5OUIzMEVDREU5RDgwMDI5MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgKi8sCiAJCQkJRTE0Nzk5QTYwRUNERTNBNDAwMjkyQkYzIC8qIFdvcmtlck1lc3NhZ2luZ1By
b3h5LmggKi8sCisJCQkJMThBMDUzN0EwRjI2ODU5QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3Au
Y3BwICovLAorCQkJCTE4QTA1MzdCMEYyNjg1OUMwMEE1MTcwNSAvKiBXb3JrZXJSdW5Mb29wLmgg
Ki8sCiAJCQkJRTEwODIyNEUwRUMzMTU2NzAwRTkzOTUzIC8qIFdvcmtlclRhc2suY3BwICovLAog
CQkJCUUxMDgyMjRBMEVDMzE1M0EwMEU5Mzk1MyAvKiBXb3JrZXJUYXNrLmggKi8sCiAJCQkJRTFD
MkM0MjgwRUFDRTBFMDAwN0U2MUZCIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCkBAIC0xNjU5Myw2
ICsxNjU5OSw3IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgyMDA3QzM5ODMgLyogcnVu
dGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEg
LyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThBMDUzN0QwRjI2ODU5QzAw
QTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg1NTcsNiArMTg1
NjQsNyBAQAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVf
dW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcwOTRBRkEwRjI3QUU2MDAwNTk2Q0VDIC8q
IENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMThBMDUzN0MwRjI2ODU5
QzAwQTUxNzA1IC8qIFdvcmtlclJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCmluZGV4IDg2MjA4ODEuLmZlNDY0M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dv
cmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCkBAIC0y
MTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0VGFzayhQ
YXNzUmVmUHRyPFRhc2s+IHRhc2spCiB7Ci0gICAgdGhyZWFkKCktPm1lc3NhZ2VRdWV1ZSgpLmFw
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7
CisgICAgdGhyZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
VGFza1dvcmtlclRhc2s6OmNyZWF0ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyQ29udGV4dDo6
cG9zdFRhc2tUb1BhcmVudENvbnRleHQoUGFzc1JlZlB0cjxUYXNrPiB0YXNrKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vV29ya2VyQ29udGV4
dC5oCmluZGV4IDRkNGIyOTkuLjJlNDQzZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1dvcmtl
ckNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKQEAgLTQzLDcgKzQz
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgV29ya2VyTG9jYXRpb247CiAg
ICAgY2xhc3MgV29ya2VyTmF2aWdhdG9yOwotICAgIGNsYXNzIFdvcmtlclRhc2s7CiAgICAgY2xh
c3MgV29ya2VyVGhyZWFkOwogCiAgICAgY2xhc3MgV29ya2VyQ29udGV4dCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdvcmtlckNvbnRleHQ+LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1dlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCA3
MjFiZjEzLi5iMGQxNDVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0y
MTgsNyArMjE4LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiAgICAgaWYgKG1fd29ya2VyVGhy
ZWFkKSB7CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93
b3JrZXJUaHJlYWQtPm1lc3NhZ2VRdWV1ZSgpLmFwcGVuZChNZXNzYWdlV29ya2VyQ29udGV4dFRh
c2s6OmNyZWF0ZShtZXNzYWdlKSk7CisgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soTWVzc2FnZVdvcmtlckNvbnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJD
b250ZXh0VGFzazo6Y3JlYXRlKG1lc3NhZ2UpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29y
a2VyVGhyZWFkPiB3b3JrZXJUaAogICAgICAgICBtX3VuY29uZmlybWVkTWVzc2FnZUNvdW50ID0g
dGFza0NvdW50ICsgMTsgLy8gV29ya2VyIGluaXRpYWxpemF0aW9uIGNvdW50cyBhcyBhIHBlbmRp
bmcgbWVzc2FnZS4KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFza0NvdW50
OyArK2kpCi0gICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+bWVzc2FnZVF1ZXVlKCkuYXBwZW5k
KG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CisgICAgICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrKG1fcXVldWVkRWFybHlUYXNrc1tpXSk7CiAgICAgICAgIG1fcXVldWVk
RWFybHlUYXNrcy5jbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1dv
cmtlclJ1bkxvb3AuY3BwIGIvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThjMmU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvZG9tL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJXb3JrZXJSdW5M
b29wLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlclRhc2su
aCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bihXb3JrZXJDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFT
U0VSVChjb250ZXh0KTsKKyAgICBBU1NFUlQoY29udGV4dC0+dGhyZWFkKCkpOworICAgIEFTU0VS
VChjb250ZXh0LT50aHJlYWQoKS0+dGhyZWFkSUQoKSA9PSBjdXJyZW50VGhyZWFkKCkpOworICAg
IAorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFJlZlB0cjxXb3JrZXJUYXNrPiB0YXNrOwor
ICAgICAgICBpZiAoIW1fbWVzc2FnZVF1ZXVlLndhaXRGb3JNZXNzYWdlKHRhc2spKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soY29udGV4dCk7CisgICAg
fQorfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCit7CisgICAgbV9tZXNzYWdl
UXVldWUua2lsbCgpOworfQorCit2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFBhc3NSZWZQ
dHI8V29ya2VyVGFzaz4gdGFzaykKK3sKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQodGFzayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyUnVuTG9vcC5oIGIvV2ViQ29yZS9kb20v
V29ya2VyUnVuTG9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NDM5
MmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJSdW5Mb29wLmgKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyUnVuTG9vcF9oCisjZGVmaW5lIFdvcmtlclJ1bkxv
b3BfaAorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJXb3JrZXJUYXNrLmgiCisj
aW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CisKKyAg
ICBjbGFzcyBXb3JrZXJSdW5Mb29wIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdvcmtlclJ1bkxv
b3AoKSB7fQorICAgICAgICAKKyAgICAgICAgLy8gQmxvY2tpbmcgY2FsbC4gV2FpdHMgZm9yIHRh
c2tzIGFuZCB0aW1lcnMsIGludm9rZXMgdGhlIGNhbGxiYWNrcy4KKyAgICAgICAgdm9pZCBydW4o
V29ya2VyQ29udGV4dCopOworICAgICAgICAKKyAgICAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKwor
ICAgICAgICB2b2lkIHBvc3RUYXNrKFBhc3NSZWZQdHI8V29ya2VyVGFzaz4pOworICAgICAgICAK
KyAgICBwcml2YXRlOgorICAgICAgICBNZXNzYWdlUXVldWU8UmVmUHRyPFdvcmtlclRhc2s+ID4g
bV9tZXNzYWdlUXVldWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdPUktFUlMpCisKKyNlbmRpZiAvLyBXb3JrZXJSdW5Mb29wX2gKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL2RvbS9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGQyYzQ5MzMuLjg2ZjcyYjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1dvcmtlclRocmVhZC5jcHAKKysrIGIvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcApAQCAt
MTE0LDEzICsxMTQsOCBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiAKICAg
ICBtX21lc3NhZ2luZ1Byb3h5LT5jb25maXJtV29ya2VyVGhyZWFkTWVzc2FnZShtX3dvcmtlckNv
bnRleHQtPmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsgLy8gVGhpcyB3YXNuJ3QgcmVhbGx5IGEgbWVz
c2FnZSwgYnV0IGl0IGNvdW50cyBhcyBvbmUgZm9yIEdDLgogCi0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgUmVmUHRyPFdvcmtlclRhc2s+IHRhc2s7Ci0gICAgICAgIGlmICghbV9tZXNzYWdl
UXVldWUud2FpdEZvck1lc3NhZ2UodGFzaykpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICB0YXNrLT5wZXJmb3JtVGFzayhtX3dvcmtlckNvbnRleHQuZ2V0KCkpOwotICAgIH0KKyAgICAv
LyBCbG9ja3MgdW50aWwgdGVybWluYXRlZC4KKyAgICBtX3J1bkxvb3AucnVuKG1fd29ya2VyQ29u
dGV4dC5nZXQoKSk7CiAKICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gbV90aHJlYWRJ
RDsKIApAQCAtMTQ2LDcgKzE0MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpzdG9wKCkKICAgICAg
ICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAKICAgICAv
LyBGSVhNRTogUnVkZWx5IGtpbGxpbmcgdGhlIHRocmVhZCB3b24ndCB3b3JrIHdoZW4gd2UgYWxs
b3cgbmVzdGVkIHdvcmtlcnMsIGJlY2F1c2UgdGhleSB3aWxsIHRyeSB0byBwb3N0IG5vdGlmaWNh
dGlvbnMgb2YgdGhlaXIgZGVzdHJ1Y3Rpb24uCi0gICAgbV9tZXNzYWdlUXVldWUua2lsbCgpOwor
ICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmggYi9XZWJDb3JlL2RvbS9Xb3Jr
ZXJUaHJlYWQuaAppbmRleCBjYTNlOTY1Li41MDRkYjgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Xb3JrZXJUaHJlYWQuaAorKysgYi9XZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuaApAQCAtMjks
NyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CisjaW5jbHVkZSA8V29ya2VyUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC01Miw4ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzdG9wKCk7CiAKICAgICAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGhyZWFkSUQ7IH0KLSAgICAgICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxXb3JrZXJU
YXNrPiA+JiBtZXNzYWdlUXVldWUoKSB7IHJldHVybiBtX21lc3NhZ2VRdWV1ZTsgfQotCisgICAg
ICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AoKSB7IHJldHVybiBtX3J1bkxvb3A7IH0KICAgICAg
ICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5KCkgY29uc3QgeyByZXR1cm4g
bV9tZXNzYWdpbmdQcm94eTsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTYzLDEyICs2MiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQqIHdvcmtlclRocmVhZCgpOwogCiAgICAg
ICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKKyAgICAgICAgV29ya2VyUnVuTG9vcCBt
X3J1bkxvb3A7CiAgICAgICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1Byb3h5
OwogCiAgICAgICAgIFJlZlB0cjxXb3JrZXJDb250ZXh0PiBtX3dvcmtlckNvbnRleHQ7CiAgICAg
ICAgIE11dGV4IG1fdGhyZWFkQ3JlYXRpb25NdXRleDsKIAotICAgICAgICBNZXNzYWdlUXVldWU8
UmVmUHRyPFdvcmtlclRhc2s+ID4gbV9tZXNzYWdlUXVldWU7CiAgICAgICAgIE93blB0cjxXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YT4gbV9zdGFydHVwRGF0YTsKICAgICB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>