<?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>128018</bug_id>
          
          <creation_ts>2014-01-31 14:26:41 -0800</creation_ts>
          <short_desc>Expose creation and modification times for LocalStorage</short_desc>
          <delta_ts>2014-01-31 15:24:04 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974472</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 14:26:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/15642344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974476</commentid>
    <comment_count>1</comment_count>
      <attachid>222851</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 14:30:40 -0800</bug_when>
    <thetext>Created attachment 222851
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974481</commentid>
    <comment_count>2</comment_count>
      <attachid>222854</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 14:39:23 -0800</bug_when>
    <thetext>Created attachment 222854
with new file added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974488</commentid>
    <comment_count>3</comment_count>
      <attachid>222854</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-31 14:46:45 -0800</bug_when>
    <thetext>Comment on attachment 222854
with new file added

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

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:429
&gt; +void StorageManager::getStoragesByOrigin(FunctionDispatcher* callbackDispatcher, void* context, void (*callback)(const Vector&lt;LocalStorageDetails&gt;&amp; storageDetails, void* context))

I don&apos;t think &quot;storages&quot; is a word. How about &quot;storageDetails&quot; or &quot;storageInformation&quot;

&gt; Source/WebKit2/UIProcess/Storage/StorageManager.cpp:644
&gt; +void StorageManager::getStoragesByOriginInternal(FunctionDispatcher* dispatcher, void* context, void (*callbackFunction)(const Vector&lt;LocalStorageDetails&gt;&amp; storageDetails, void* context))

Same comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974489</commentid>
    <comment_count>4</comment_count>
      <attachid>222856</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-31 14:49:39 -0800</bug_when>
    <thetext>Created attachment 222856
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974506</commentid>
    <comment_count>5</comment_count>
      <attachid>222856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 15:24:02 -0800</bug_when>
    <thetext>Comment on attachment 222856
patch for landing

Clearing flags on attachment: 222856

Committed r163212: &lt;http://trac.webkit.org/changeset/163212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974507</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 15:24:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222851</attachid>
            <date>2014-01-31 14:30:40 -0800</date>
            <delta_ts>2014-01-31 14:39:23 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>LocalStorageTimes.txt</filename>
            <type>text/plain</type>
            <size>21930</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzIwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTMxICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBjcmVhdGlvbiBh
bmQgbW9kaWZpY2F0aW9uIHRpbWVzIGZvciBMb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODAxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBG
aWxlU3lzdGVtIGZ1bmN0aW9ucyB0byBnZXQgZmlsZSB0aW1lcy4KKwogMjAxNC0wMS0yOSAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURl
Y29kZXI1Zmx1c2hFCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBL
Y20KIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJL
TlNfMTJUZXh0RW5jb2RpbmdFYgogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyRDFF
dgorX19aTjdXZWJDb3JlMTlnZXRGaWxlQ3JlYXRpb25UaW1lRVJLTjNXVEY2U3RyaW5nRVJsCiBf
X1pON1dlYkNvcmUxOXRvSW50MzJFbmZvcmNlUmFuZ2VFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pT
VmFsdWVFCiBfX1pON1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMzFnYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTIwRGljdGF0aW9uQWx0ZXJuYXRpdmVD
MUVqankKQEAgLTg4Niw2ICs4ODcsNyBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0
aFJhbmdlRVA4CiAjaWYgIVBMQVRGT1JNKElPUykKIF9fWk43V2ViQ29yZTIzZXZlbnRUaW1lU3Rh
bXBTaW5jZTE5NzBFUDdOU0V2ZW50CiAjZW5kaWYKK19fWk43V2ViQ29yZTIzZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWVFUktOM1dURjZTdHJpbmdFUmwKIF9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFzaFNldElO
UzNfNlN0cmluZ0VOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19a
TjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENh
Y2hlZFJlc291cmNlRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1h
cmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMjAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTQtMDEtMzEgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGNyZWF0aW9uIGFuZCBt
b2RpZmljYXRpb24gdGltZXMgZm9yIExvY2FsU3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9y
aWdpbktleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRp
bWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9u
VGltZUtleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0
YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpkZXRhaWxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdl
c0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2Vz
QnlPcmlnaW5JbnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om9yaWdpbktl
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmNyZWF0aW9u
VGltZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1v
ZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV2ViS2l0OjpkaWRHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6ZGlkR2V0U3RvcmFnZXNCeU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VzQnlP
cmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAx
LTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw5ICsyNywxMSBAQAogI2luY2x1ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCIK
IAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQu
aCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDAsNiArNDIsMjQg
QEAgY29uc3QgY2hhciogV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6cwogICAgIHJldHVybiAi
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlciI7CiB9CiAKK1N0cmluZyBXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyOjpvcmlnaW5LZXkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGtleShBU0NJSUxpdGVyYWwoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0
YWlsc09yaWdpbktleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCitTdHJpbmcgV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlcjo6Y3JlYXRpb25UaW1lS2V5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBrZXkoQVNDSUlMaXRlcmFsKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyU3RvcmFnZURldGFpbHNDcmVhdGlvblRpbWVLZXkiKSk7CisgICAgcmV0dXJuIGtleTsKK30K
KworU3RyaW5nIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1vZGlmaWNhdGlvblRpbWVLZXko
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleShBU0NJSUxpdGVyYWwo
IldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc01vZGlmaWNhdGlvblRpbWVL
ZXkiKSk7CisgICAgcmV0dXJuIGtleTsKK30KKwogUGFzc1JlZlB0cjxXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyPiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoV2ViQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXIoY29udGV4dCkpOwpAQCAtNjYsNyArODYsNyBAQCB2b2lkIFdlYktleVZhbHVlU3RvcmFn
ZU1hbmFnZXI6OmRlcmVmV2ViCiAgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGRpZEdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMsIHZvaWQqIGNvbnRleHQp
CitzdGF0aWMgdm9pZCBkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KQog
ewogICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKHN0YXRpY19j
YXN0PEFycmF5Q2FsbGJhY2sqPihjb250ZXh0KSk7CiAKQEAgLTgzLDcgKzEwMywzNiBAQCB2b2lk
IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldEtleVZhCiB7CiAgICAgY29udGV4dCgpLT5z
dG9yYWdlTWFuYWdlcigpLmdldE9yaWdpbnMoUnVuTG9vcDo6bWFpbigpLCBwcnBDYWxsYmFjay5s
ZWFrUmVmKCksIGRpZEdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMpOwogfQotICAgIAorCitzdGF0
aWMgdm9pZCBkaWRHZXRTdG9yYWdlc0J5T3JpZ2luKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VE
ZXRhaWxzPiYgc3RvcmFnZURldGFpbHMsIHZvaWQqIGNvbnRleHQpCit7CisgICAgUmVmUHRyPEFy
cmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8QXJyYXlDYWxsYmFj
ayo+KGNvbnRleHQpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiByZXN1bHQ7
CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RvcmFnZURldGFpbHMuc2l6ZSgp
KTsKKworICAgIGZvciAoY29uc3QgTG9jYWxTdG9yYWdlRGV0YWlscyYgb3JpZ2luRGV0YWlscyA6
IHN0b3JhZ2VEZXRhaWxzKSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpP
YmplY3Q+PiBkZXRhaWxzTWFwOworCisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2lu
ID0gV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2lu
RGV0YWlscy5vcmlnaW5JZGVudGlmaWVyKTsKKworICAgICAgICBkZXRhaWxzTWFwLnNldChXZWJL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5LZXkoKSwgb3JpZ2luKTsKKyAgICAgICAgaWYg
KG9yaWdpbkRldGFpbHMuY3JlYXRpb25UaW1lKQorICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6Y3JlYXRpb25UaW1lS2V5KCksIEFQSTo6RG91Ymxl
OjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUpKTsKKyAgICAgICAgaWYgKG9yaWdp
bkRldGFpbHMubW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1vZGlmaWNhdGlvblRpbWVLZXkoKSwgQVBJOjpEb3Vi
bGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpKTsKKworICAgICAgICBy
ZXN1bHQudW5jaGVja2VkQXBwZW5kKEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1v
dmUoZGV0YWlsc01hcCkpKTsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUocmVzdWx0KSkuZ2V0
KCkpOworfQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VzQnlP
cmlnaW4oUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3sKKyAgICBjb250
ZXh0KCktPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0U3RvcmFnZXNCeU9yaWdpbihSdW5Mb29wOjptYWlu
KCksIHBycENhbGxiYWNrLmxlYWtSZWYoKSwgZGlkR2V0U3RvcmFnZXNCeU9yaWdpbik7Cit9CisK
IHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihX
ZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGNvbnRleHQoKS0+c3RvcmFnZU1hbmFn
ZXIoKS5kZWxldGVFbnRyaWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0
NiwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcigp
OwogCiAgICAgdm9pZCBnZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlD
YWxsYmFjaz4pOworICAgIHZvaWQgZ2V0U3RvcmFnZXNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5
Q2FsbGJhY2s+KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViU2VjdXJpdHlP
cmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAogICAgIHVzaW5nIEFQSTo6
T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCisgICAgc3RhdGlj
IFN0cmluZyBvcmlnaW5LZXkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0aW9uVGltZUtleSgp
OworICAgIHN0YXRpYyBTdHJpbmcgbW9kaWZpY2F0aW9uVGltZUtleSgpOworCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIoV2ViQ29udGV4dCopOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDExICszNiwzNCBAQCBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRUeXBlCiAgICAgcmV0dXJuIHRvQVBJKFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6
OkFQSVR5cGUpOwogfQogCitXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRP
cmlnaW5LZXkoKQoreworICAgIHN0YXRpYyBBUEk6OlN0cmluZyoga2V5ID0gQVBJOjpTdHJpbmc6
OmNyZWF0ZShXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5LZXkoKSkubGVha1JlZigp
OworICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQoreworICAgIHN0YXRpYyBBUEk6OlN0cmlu
Zyoga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGlvblRpbWVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiB0b0FQSShrZXkpOworfQor
CitXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkKK3sKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcqIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVh
dGUoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6bW9kaWZpY2F0aW9uVGltZUtleSgpKS5sZWFr
UmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKIHZvaWQgV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNr
KQogewogICAgIHRvSW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+Z2V0S2V5VmFsdWVT
dG9yYWdlT3JpZ2lucyhBcnJheUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsK
IH0KIAordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3Jp
Z2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWls
c0J5T3JpZ2luRnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgdG9JbXBsKGtleVZhbHVlU3RvcmFn
ZU1hbmFnZXJSZWYpLT5nZXRTdG9yYWdlc0J5T3JpZ2luKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShj
b250ZXh0LCBjYWxsYmFjaykpOworfQorCiB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVmKQogewogICAg
IHRvSW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+ZGVsZXRlRW50cmllc0Zvck9yaWdp
bih0b0ltcGwob3JpZ2luUmVmKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCShyZXZpc2lvbiAx
NjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDIxIEBAIGV4dGVybiAiQyIg
ewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlE
KCk7CiAKKy8qIFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYgKi8KK1dLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKTsKKworLyog
VmFsdWUgdHlwZTogV0tEb3VibGVSZWYsIHNlY29uZHMgc2luY2UgSmFudWFyeSAxc3QsIDE5NzAg
VVRDICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
Q3JlYXRpb25UaW1lS2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKKwogdHlwZWRl
ZiB2b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lu
c0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19FWFBPUlQgdm9p
ZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250
ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVu
Y3Rpb24gZnVuY3Rpb24pOwogCit0eXBlZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JS
ZWYsIHZvaWQqKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0
b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVl
U3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CisKIFdLX0VYUE9SVCB2
b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgb3JpZ2luKTsKIFdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHJl
dmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaCIKIAorI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKICNpbmNsdWRlICJX
b3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgpAQCAtMTI4LDEyICsxMjksMzEgQEAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBvcmlnaW5zOwogICAgIG9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X29yaWdpbnMuc2l6ZSgpKTsKIAotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fb3JpZ2lucy5iZWdpbigpLCBlbmQgPSBtX29yaWdpbnMuZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkKLSAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBlbmQoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoKml0KSk7CisgICAgZm9yIChjb25zdCBT
dHJpbmcmIG9yaWdpbiA6IG1fb3JpZ2lucykKKyAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBl
bmQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luKSk7
CiAKICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAorVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+
IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGV0YWlscygpCit7CisgICAgVmVjdG9yPExv
Y2FsU3RvcmFnZURldGFpbHM+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX29yaWdpbnMuc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgU3RyaW5nJiBvcmlnaW4g
OiBtX29yaWdpbnMpIHsKKyAgICAgICAgU3RyaW5nIGZpbGVQYXRoID0gcGF0aEZvckRhdGFiYXNl
V2l0aE9yaWdpbklkZW50aWZpZXIob3JpZ2luKTsKKyAgICAgICAgdGltZV90IHRpbWU7CisKKyAg
ICAgICAgTG9jYWxTdG9yYWdlRGV0YWlscyBkZXRhaWxzOworICAgICAgICBkZXRhaWxzLm9yaWdp
bklkZW50aWZpZXIgPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIGRldGFpbHMuY3Jl
YXRpb25UaW1lID0gZ2V0RmlsZUNyZWF0aW9uVGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDog
MDsKKyAgICAgICAgZGV0YWlscy5tb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IDA7CisgICAgICAgIHJlc3VsdC51bmNoZWNr
ZWRBcHBlbmQoZGV0YWlscyk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9p
ZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeUlu
dGVybmFsKFN0cmluZ0ltcGwqIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIHsKICAgICBpZiAobV9k
YXRhYmFzZS5pc09wZW4oKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCShyZXZp
c2lvbiAxNjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBj
bGFzcyBXb3JrUXVldWU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgTG9jYWxTdG9y
YWdlRGV0YWlsczsKKwogY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4g
Y3JlYXRlKFBhc3NSZWZQdHI8V29ya1F1ZXVlPik7CkBAIC01NSw2ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8TG9jYWxT
dG9yYWdlRGV0YWlscz4gZGV0YWlscygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcihQYXNzUmVmUHRyPFdvcmtRdWV1ZT4pOwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtNDI1LDYgKzQy
NiwxMSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zKEZ1bmN0aW9uCiAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnNJbnRlcm5hbCwg
dGhpcywgUmVmUHRyPEZ1bmN0aW9uRGlzcGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29u
dGV4dCwgY2FsbGJhY2spKTsKIH0KIAordm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZXNC
eU9yaWdpbihGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29u
dGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8TG9jYWxTdG9yYWdlRGV0YWlscz4m
IHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRj
aChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZXNCeU9yaWdpbkludGVybmFsLCB0aGlz
LCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPihjYWxsYmFja0Rpc3BhdGNoZXIpLCBjb250ZXh0
LCBjYWxsYmFjaykpOworfQorCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbkludGVy
bmFsLCB0aGlzLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KHNlY3VyaXR5T3JpZ2luKSkpOwpAQCAt
NjM1LDYgKzY0MSwxMiBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zSW50ZXJuYWwo
CiAgICAgZGlzcGF0Y2hlci0+ZGlzcGF0Y2goYmluZChjYWxsQ2FsbGJhY2tGdW5jdGlvbiwgY29u
dGV4dCwgY2FsbGJhY2tGdW5jdGlvbiwgc2VjdXJpdHlPcmlnaW5zLmxlYWtQdHIoKSkpOwogfQog
Cit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdlc0J5T3JpZ2luSW50ZXJuYWwoRnVuY3Rp
b25EaXNwYXRjaGVyKiBkaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2tG
dW5jdGlvbikoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWls
cywgdm9pZCogY29udGV4dCkpCit7CisgICAgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+IHN0
b3JhZ2VEZXRhaWxzID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRldGFpbHMoKTsK
KyAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaChiaW5kKGNhbGxiYWNrRnVuY3Rpb24sIHN0ZDo6bW92
ZShzdG9yYWdlRGV0YWlscyksIGNvbnRleHQpKTsKK30KKwogdm9pZCBTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlRW50cmllc0Zvck9yaWdpbkludGVybmFsKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuYmVn
aW4oKSwgZW5kID0gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3Qg
TG9jYWxTdG9yYWdlRGV0YWlsczsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CkBAIC02
MSw3ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGEgY29udGV4
dCArIEMgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIHRha2UgYSBXVEY6OkZ1bmN0aW9uLCBidXQgd2Ug
Y3VycmVudGx5IGRvbid0CiAgICAgLy8gc3VwcG9ydCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zLgot
ICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hl
ciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkp
OworICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0
Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCB2b2lkKiBjb250ZXh0KSk7CisgICAgdm9pZCBn
ZXRTdG9yYWdlc0J5T3JpZ2luKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVy
LCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3Jh
Z2VEZXRhaWxzPiYsIHZvaWQqIGNvbnRleHQpKTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JP
cmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJp
ZXMoKTsKIApAQCAtOTUsNyArOTcsOCBAQCBwcml2YXRlOgogICAgIGNsYXNzIExvY2FsU3RvcmFn
ZU5hbWVzcGFjZTsKICAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxT
dG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKLSAgICB2b2lk
IGdldE9yaWdpbnNJbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hl
ciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkp
OworICAgIHZvaWQgZ2V0T3JpZ2luc0ludGVybmFsKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJh
Y2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIHZvaWQqIGNvbnRleHQpKTsKKyAg
ICB2b2lkIGdldFN0b3JhZ2VzQnlPcmlnaW5JbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGNh
bGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBW
ZWN0b3I8TG9jYWxTdG9yYWdlRGV0YWlscz4mLCB2b2lkKiBjb250ZXh0KSk7CiAgICAgdm9pZCBk
ZWxldGVFbnRyaWVzRm9yT3JpZ2luSW50ZXJuYWwoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsK
ICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXNJbnRlcm5hbCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNTYsNiArMTM1Niw3IEBACiAJCUUxMzNGRDhBMTQyM0RE
N0YwMEZDN0JGQiAvKiBXZWJLaXQuaWNucyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEzM0ZEODkxNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25z
ICovOyB9OwogCQlFMTM0RjAxNzEyRUE1RDMzMDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzRGMDE1MTJF
QTVEMTEwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oICovOyB9OwogCQlFMTM0RjAxQTEyRUE1
RDk5MDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjAxOTEyRUE1RDk5MDA0RUM1OEQgLyogV0tQcmlu
dGluZ1ZpZXcubW0gKi87IH07CisJCUUxMzgzM0VDMTg5QzMzQzgwMDFFMjM1MCAvKiBMb2NhbFN0
b3JhZ2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTM4MzNFQjE4OUMzM0M4MDAxRTIzNTAgLyogTG9jYWxTdG9yYWdlRGV0YWlscy5oICov
OyB9OwogCQlFMTRBOTU0OTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE0QTk1NDcxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCAqLzsgfTsKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKIAkJRTE1MTNDNjYxNjZFQUJCMjAwMTQ5
RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nl
c3NQcm94eS5jcHAgKi87IH07CkBAIC0zMTA1LDYgKzMxMDYsNyBAQAogCQlFMTMzRkQ4OTE0MjNE
RDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5pY25zOyBuYW1lID0gV2ViS2l0LmljbnM7IHBhdGgg
PSBSZXNvdXJjZXMvV2ViS2l0LmljbnM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
MzRGMDE1MTJFQTVEMTEwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByaW50aW5nVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTM0RjAxOTEyRUE1RDk5MDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1ByaW50aW5nVmlldy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEzODMzRUIxODlDMzNDODAwMUUyMzUw
IC8qIExvY2FsU3RvcmFnZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTG9jYWxTdG9yYWdlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTRBOTU0NzE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTEz
QzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTAxLDYgKzQ5MDMsNyBAQAogCQkJCUJDMDZGNDM5MTJE
QkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwICov
LAogCQkJCUJDMDZGNDM4MTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNs
aWVudC5oICovLAorCQkJCUUxMzgzM0VCMTg5QzMzQzgwMDFFMjM1MCAvKiBMb2NhbFN0b3JhZ2VE
ZXRhaWxzLmggKi8sCiAJCQkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3Rh
dGUuY3BwICovLAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRl
LmggKi8sCiAJCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICov
LApAQCAtNjcwNyw2ICs2NzEwLDcgQEAKIAkJCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyog
V0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBD
NEI5NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4
ODIzMTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTEzODMzRUMxODlDMzNDODAwMUUyMzUwIC8qIExvY2FsU3RvcmFnZURldGFpbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMzMzY3NjNCMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1NzMg
LyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2
MTJEOCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222854</attachid>
            <date>2014-01-31 14:39:23 -0800</date>
            <delta_ts>2014-01-31 14:49:39 -0800</delta_ts>
            <desc>with new file added</desc>
            <filename>LocalStorageTimes.txt</filename>
            <type>text/plain</type>
            <size>24093</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzIwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTMxICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBjcmVhdGlvbiBh
bmQgbW9kaWZpY2F0aW9uIHRpbWVzIGZvciBMb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODAxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBG
aWxlU3lzdGVtIGZ1bmN0aW9ucyB0byBnZXQgZmlsZSB0aW1lcy4KKwogMjAxNC0wMS0yOSAgT2xp
dmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gaW1wbGVtZW50IEpTIGJ1aWx0aW5zIGluIEpTCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURl
Y29kZXI1Zmx1c2hFCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBL
Y20KIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJL
TlNfMTJUZXh0RW5jb2RpbmdFYgogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyRDFF
dgorX19aTjdXZWJDb3JlMTlnZXRGaWxlQ3JlYXRpb25UaW1lRVJLTjNXVEY2U3RyaW5nRVJsCiBf
X1pON1dlYkNvcmUxOXRvSW50MzJFbmZvcmNlUmFuZ2VFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pT
VmFsdWVFCiBfX1pON1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMzFnYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTIwRGljdGF0aW9uQWx0ZXJuYXRpdmVD
MUVqankKQEAgLTg4Niw2ICs4ODcsNyBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0
aFJhbmdlRVA4CiAjaWYgIVBMQVRGT1JNKElPUykKIF9fWk43V2ViQ29yZTIzZXZlbnRUaW1lU3Rh
bXBTaW5jZTE5NzBFUDdOU0V2ZW50CiAjZW5kaWYKK19fWk43V2ViQ29yZTIzZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWVFUktOM1dURjZTdHJpbmdFUmwKIF9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFzaFNldElO
UzNfNlN0cmluZ0VOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19a
TjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENh
Y2hlZFJlc291cmNlRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1h
cmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMTYzMjAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTQtMDEtMzEgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIGNyZWF0aW9uIGFuZCBt
b2RpZmljYXRpb24gdGltZXMgZm9yIExvY2FsU3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9y
aWdpbktleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRp
bWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9u
VGltZUtleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0
YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpvcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpkZXRhaWxzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdl
c0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2Vz
QnlPcmlnaW5JbnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om9yaWdpbktl
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmNyZWF0aW9u
VGltZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1v
ZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV2ViS2l0OjpkaWRHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6ZGlkR2V0U3RvcmFnZXNCeU9yaWdpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VzQnlP
cmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAx
LTMxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xvY2FsU3RvcmFnZURldGFpbHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTG9jYWxTdG9yYWdlRGV0YWls
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xvY2FsU3RvcmFn
ZURldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMb2NhbFN0b3JhZ2VEZXRhaWxzX2gKKyNkZWZpbmUgTG9jYWxTdG9yYWdlRGV0YWls
c19oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBMb2NhbFN0b3JhZ2VEZXRhaWxzIHsKKyAgICBTdHJpbmcgb3JpZ2luSWRl
bnRpZmllcjsKKyAgICBkb3VibGUgY3JlYXRpb25UaW1lOworICAgIGRvdWJsZSBtb2RpZmljYXRp
b25UaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBMb2NhbFN0
b3JhZ2VEZXRhaWxzX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Mb2NhbFN0b3JhZ2VEZXRhaWxzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw5ICsyNywxMSBAQAogI2luY2x1ZGUgIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCIKIAog
I2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDAsNiArNDIsMjQgQEAg
Y29uc3QgY2hhciogV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6cwogICAgIHJldHVybiAiV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlciI7CiB9CiAKK1N0cmluZyBXZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyOjpvcmlnaW5LZXkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGtleShBU0NJSUxpdGVyYWwoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWls
c09yaWdpbktleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCitTdHJpbmcgV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlcjo6Y3JlYXRpb25UaW1lS2V5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBrZXkoQVNDSUlMaXRlcmFsKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
U3RvcmFnZURldGFpbHNDcmVhdGlvblRpbWVLZXkiKSk7CisgICAgcmV0dXJuIGtleTsKK30KKwor
U3RyaW5nIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1vZGlmaWNhdGlvblRpbWVLZXkoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleShBU0NJSUxpdGVyYWwoIldl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc01vZGlmaWNhdGlvblRpbWVLZXki
KSk7CisgICAgcmV0dXJuIGtleTsKK30KKwogUGFzc1JlZlB0cjxXZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyPiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoV2ViQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXIoY29udGV4dCkpOwpAQCAtNjYsNyArODYsNyBAQCB2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXI6OmRlcmVmV2ViCiAgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGRpZEdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9yaWdpbnMsIHZvaWQqIGNvbnRleHQpCitz
dGF0aWMgdm9pZCBkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KQogewog
ICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UmVmKHN0YXRpY19jYXN0
PEFycmF5Q2FsbGJhY2sqPihjb250ZXh0KSk7CiAKQEAgLTgzLDcgKzEwMywzNiBAQCB2b2lkIFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldEtleVZhCiB7CiAgICAgY29udGV4dCgpLT5zdG9y
YWdlTWFuYWdlcigpLmdldE9yaWdpbnMoUnVuTG9vcDo6bWFpbigpLCBwcnBDYWxsYmFjay5sZWFr
UmVmKCksIGRpZEdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMpOwogfQotICAgIAorCitzdGF0aWMg
dm9pZCBkaWRHZXRTdG9yYWdlc0J5T3JpZ2luKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VEZXRh
aWxzPiYgc3RvcmFnZURldGFpbHMsIHZvaWQqIGNvbnRleHQpCit7CisgICAgUmVmUHRyPEFycmF5
Q2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8QXJyYXlDYWxsYmFjayo+
KGNvbnRleHQpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiByZXN1bHQ7Cisg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RvcmFnZURldGFpbHMuc2l6ZSgpKTsK
KworICAgIGZvciAoY29uc3QgTG9jYWxTdG9yYWdlRGV0YWlscyYgb3JpZ2luRGV0YWlscyA6IHN0
b3JhZ2VEZXRhaWxzKSB7CisgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBkZXRhaWxzTWFwOworCisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0g
V2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luRGV0
YWlscy5vcmlnaW5JZGVudGlmaWVyKTsKKworICAgICAgICBkZXRhaWxzTWFwLnNldChXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5LZXkoKSwgb3JpZ2luKTsKKyAgICAgICAgaWYgKG9y
aWdpbkRldGFpbHMuY3JlYXRpb25UaW1lKQorICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6Y3JlYXRpb25UaW1lS2V5KCksIEFQSTo6RG91YmxlOjpj
cmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUpKTsKKyAgICAgICAgaWYgKG9yaWdpbkRl
dGFpbHMubW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgICAgIGRldGFpbHNNYXAuc2V0KFdlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXI6Om1vZGlmaWNhdGlvblRpbWVLZXkoKSwgQVBJOjpEb3VibGU6
OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUpKTsKKworICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1vdmUo
ZGV0YWlsc01hcCkpKTsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUocmVzdWx0KSkuZ2V0KCkp
OworfQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VzQnlPcmln
aW4oUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3sKKyAgICBjb250ZXh0
KCktPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0U3RvcmFnZXNCeU9yaWdpbihSdW5Mb29wOjptYWluKCks
IHBycENhbGxiYWNrLmxlYWtSZWYoKSwgZGlkR2V0U3RvcmFnZXNCeU9yaWdpbik7Cit9CisKIHZv
aWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXZWJT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGNvbnRleHQoKS0+c3RvcmFnZU1hbmFnZXIo
KS5kZWxldGVFbnRyaWVzRm9yT3JpZ2luKG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmgJKHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEyICs0Niwx
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcigpOwog
CiAgICAgdm9pZCBnZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxs
YmFjaz4pOworICAgIHZvaWQgZ2V0U3RvcmFnZXNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV2ViU2VjdXJpdHlPcmln
aW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAogICAgIHVzaW5nIEFQSTo6T2Jq
ZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCisgICAgc3RhdGljIFN0
cmluZyBvcmlnaW5LZXkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGNyZWF0aW9uVGltZUtleSgpOwor
ICAgIHN0YXRpYyBTdHJpbmcgbW9kaWZpY2F0aW9uVGltZUtleSgpOworCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIoV2ViQ29udGV4dCopOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDExICszNiwzNCBAQCBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRUeXBlCiAgICAgcmV0dXJuIHRvQVBJKFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OkFQ
SVR5cGUpOwogfQogCitXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmln
aW5LZXkoKQoreworICAgIHN0YXRpYyBBUEk6OlN0cmluZyoga2V5ID0gQVBJOjpTdHJpbmc6OmNy
ZWF0ZShXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5LZXkoKSkubGVha1JlZigpOwor
ICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQoreworICAgIHN0YXRpYyBBUEk6OlN0cmluZyog
a2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGlvblRpbWVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiB0b0FQSShrZXkpOworfQorCitX
S1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5
KCkKK3sKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcqIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6bW9kaWZpY2F0aW9uVGltZUtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJS
ZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIHRvSW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+Z2V0S2V5VmFsdWVTdG9y
YWdlT3JpZ2lucyhBcnJheUNhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKIH0K
IAordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2
b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5
T3JpZ2luRnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgdG9JbXBsKGtleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYpLT5nZXRTdG9yYWdlc0J5T3JpZ2luKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShjb250
ZXh0LCBjYWxsYmFjaykpOworfQorCiB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVmKQogewogICAgIHRv
SW1wbChrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmKS0+ZGVsZXRlRW50cmllc0Zvck9yaWdpbih0
b0ltcGwob3JpZ2luUmVmKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCShyZXZpc2lvbiAxNjMw
MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDIxIEBAIGV4dGVybiAiQyIgewog
CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7
CiAKKy8qIFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKTsKKworLyogVmFs
dWUgdHlwZTogV0tEb3VibGVSZWYsIHNlY29uZHMgc2luY2UgSmFudWFyeSAxc3QsIDE5NzAgVVRD
ICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3Jl
YXRpb25UaW1lS2V5KCk7CisKKy8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRzIHNp
bmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKKwogdHlwZWRlZiB2
b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1
bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rp
b24gZnVuY3Rpb24pOwogCit0eXBlZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYs
IHZvaWQqKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0
b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CisKIFdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luKTsKIFdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRl
bGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFn
ZU1hbmFnZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlz
aW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuaCIKIAorI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKICNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZVN0YXRlbWVudC5oPgpAQCAtMTI4LDEyICsxMjksMzEgQEAgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IAogICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBvcmlnaW5zOwogICAgIG9yaWdpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX29y
aWdpbnMuc2l6ZSgpKTsKIAotICAgIGZvciAoSGFzaFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fb3JpZ2lucy5iZWdpbigpLCBlbmQgPSBtX29yaWdpbnMuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBlbmQoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoKml0KSk7CisgICAgZm9yIChjb25zdCBTdHJp
bmcmIG9yaWdpbiA6IG1fb3JpZ2lucykKKyAgICAgICAgb3JpZ2lucy51bmNoZWNrZWRBcHBlbmQo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luKSk7CiAK
ICAgICByZXR1cm4gb3JpZ2luczsKIH0KIAorVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGV0YWlscygpCit7CisgICAgVmVjdG9yPExvY2Fs
U3RvcmFnZURldGFpbHM+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtX29yaWdpbnMuc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgU3RyaW5nJiBvcmlnaW4gOiBt
X29yaWdpbnMpIHsKKyAgICAgICAgU3RyaW5nIGZpbGVQYXRoID0gcGF0aEZvckRhdGFiYXNlV2l0
aE9yaWdpbklkZW50aWZpZXIob3JpZ2luKTsKKyAgICAgICAgdGltZV90IHRpbWU7CisKKyAgICAg
ICAgTG9jYWxTdG9yYWdlRGV0YWlscyBkZXRhaWxzOworICAgICAgICBkZXRhaWxzLm9yaWdpbklk
ZW50aWZpZXIgPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIGRldGFpbHMuY3JlYXRp
b25UaW1lID0gZ2V0RmlsZUNyZWF0aW9uVGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDogMDsK
KyAgICAgICAgZGV0YWlscy5tb2RpZmljYXRpb25UaW1lID0gZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IDA7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoZGV0YWlscyk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnNldExvY2FsU3RvcmFnZURpcmVjdG9yeUludGVy
bmFsKFN0cmluZ0ltcGwqIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkKIHsKICAgICBpZiAobV9kYXRh
YmFzZS5pc09wZW4oKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCShyZXZpc2lv
biAxNjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBjbGFz
cyBXb3JrUXVldWU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgTG9jYWxTdG9yYWdl
RGV0YWlsczsKKwogY2xhc3MgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcj4gY3Jl
YXRlKFBhc3NSZWZQdHI8V29ya1F1ZXVlPik7CkBAIC01NSw2ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlbGV0ZUFsbERhdGFiYXNlcygpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMoKSBjb25zdDsKKyAgICBWZWN0b3I8TG9jYWxTdG9y
YWdlRGV0YWlscz4gZGV0YWlscygpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlcihQYXNzUmVmUHRyPFdvcmtRdWV1ZT4pOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURldGFpbHMuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXJNZXNzYWdlcy5oIgpAQCAtNDI1LDYgKzQyNiwx
MSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zKEZ1bmN0aW9uCiAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goYmluZCgmU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnNJbnRlcm5hbCwgdGhp
cywgUmVmUHRyPEZ1bmN0aW9uRGlzcGF0Y2hlcj4oY2FsbGJhY2tEaXNwYXRjaGVyKSwgY29udGV4
dCwgY2FsbGJhY2spKTsKIH0KIAordm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZXNCeU9y
aWdpbihGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4
dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8TG9jYWxTdG9yYWdlRGV0YWlscz4mIHN0
b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKK3sKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChi
aW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZXNCeU9yaWdpbkludGVybmFsLCB0aGlzLCBS
ZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPihjYWxsYmFja0Rpc3BhdGNoZXIpLCBjb250ZXh0LCBj
YWxsYmFjaykpOworfQorCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbkludGVybmFs
LCB0aGlzLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KHNlY3VyaXR5T3JpZ2luKSkpOwpAQCAtNjM1
LDYgKzY0MSwxMiBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPcmlnaW5zSW50ZXJuYWwoCiAg
ICAgZGlzcGF0Y2hlci0+ZGlzcGF0Y2goYmluZChjYWxsQ2FsbGJhY2tGdW5jdGlvbiwgY29udGV4
dCwgY2FsbGJhY2tGdW5jdGlvbiwgc2VjdXJpdHlPcmlnaW5zLmxlYWtQdHIoKSkpOwogfQogCit2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdlc0J5T3JpZ2luSW50ZXJuYWwoRnVuY3Rpb25E
aXNwYXRjaGVyKiBkaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2tGdW5j
dGlvbikoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWlscywg
dm9pZCogY29udGV4dCkpCit7CisgICAgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+IHN0b3Jh
Z2VEZXRhaWxzID0gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXItPmRldGFpbHMoKTsKKyAg
ICBkaXNwYXRjaGVyLT5kaXNwYXRjaChiaW5kKGNhbGxiYWNrRnVuY3Rpb24sIHN0ZDo6bW92ZShz
dG9yYWdlRGV0YWlscyksIGNvbnRleHQpKTsKK30KKwogdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVs
ZXRlRW50cmllc0Zvck9yaWdpbkludGVybmFsKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bikKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMuYmVnaW4o
KSwgZW5kID0gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmgJKHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAg
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgTG9j
YWxTdG9yYWdlRGV0YWlsczsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CkBAIC02MSw3
ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIGEgY29udGV4dCAr
IEMgZnVuY3Rpb24sIHRoaXMgc2hvdWxkIHRha2UgYSBXVEY6OkZ1bmN0aW9uLCBidXQgd2UgY3Vy
cmVudGx5IGRvbid0CiAgICAgLy8gc3VwcG9ydCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zLgotICAg
IHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hlciwg
dm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkpOwor
ICAgIHZvaWQgZ2V0T3JpZ2lucyhGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hl
ciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCB2b2lkKiBjb250ZXh0KSk7CisgICAgdm9pZCBnZXRT
dG9yYWdlc0J5T3JpZ2luKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2
b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VE
ZXRhaWxzPiYsIHZvaWQqIGNvbnRleHQpKTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmln
aW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMo
KTsKIApAQCAtOTUsNyArOTcsOCBAQCBwcml2YXRlOgogICAgIGNsYXNzIExvY2FsU3RvcmFnZU5h
bWVzcGFjZTsKICAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKLSAgICB2b2lkIGdl
dE9yaWdpbnNJbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxiYWNrRGlzcGF0Y2hlciwg
dm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5T3JpZ2lucywgdm9pZCogY29udGV4dCkpOwor
ICAgIHZvaWQgZ2V0T3JpZ2luc0ludGVybmFsKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tE
aXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIHZvaWQqIGNvbnRleHQpKTsKKyAgICB2
b2lkIGdldFN0b3JhZ2VzQnlPcmlnaW5JbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGNhbGxi
YWNrRGlzcGF0Y2hlciwgdm9pZCogY29udGV4dCwgdm9pZCAoKmNhbGxiYWNrKShjb25zdCBWZWN0
b3I8TG9jYWxTdG9yYWdlRGV0YWlscz4mLCB2b2lkKiBjb250ZXh0KSk7CiAgICAgdm9pZCBkZWxl
dGVFbnRyaWVzRm9yT3JpZ2luSW50ZXJuYWwoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsKICAg
ICB2b2lkIGRlbGV0ZUFsbEVudHJpZXNJbnRlcm5hbCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjMw
MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNTYsNiArMTM1Niw3IEBACiAJCUUxMzNGRDhBMTQyM0REN0Yw
MEZDN0JGQiAvKiBXZWJLaXQuaWNucyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEzM0ZEODkxNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25zICov
OyB9OwogCQlFMTM0RjAxNzEyRUE1RDMzMDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzRGMDE1MTJFQTVE
MTEwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oICovOyB9OwogCQlFMTM0RjAxQTEyRUE1RDk5
MDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjAxOTEyRUE1RDk5MDA0RUM1OEQgLyogV0tQcmludGlu
Z1ZpZXcubW0gKi87IH07CisJCUUxMzgzM0VDMTg5QzMzQzgwMDFFMjM1MCAvKiBMb2NhbFN0b3Jh
Z2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTM4MzNFQjE4OUMzM0M4MDAxRTIzNTAgLyogTG9jYWxTdG9yYWdlRGV0YWlscy5oICovOyB9
OwogCQlFMTRBOTU0OTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTE0QTk1NDcxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCAqLzsgfTsKIAkJRTE0QTk1NEExNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQ
cm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKIAkJRTE1MTNDNjYxNjZFQUJCMjAwMTQ5RkNC
IC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY0MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQ
cm94eS5jcHAgKi87IH07CkBAIC0zMTA1LDYgKzMxMDYsNyBAQAogCQlFMTMzRkQ4OTE0MjNERDdG
MDBGQzdCRkIgLyogV2ViS2l0LmljbnMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5pY25zOyBuYW1lID0gV2ViS2l0LmljbnM7IHBhdGggPSBS
ZXNvdXJjZXMvV2ViS2l0LmljbnM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzRG
MDE1MTJFQTVEMTEwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1ByaW50aW5nVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTM0RjAxOTEyRUE1RDk5MDA0RUM1OEQgLyogV0tQcmludGluZ1ZpZXcubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1ByaW50aW5nVmlldy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTEzODMzRUIxODlDMzNDODAwMUUyMzUwIC8q
IExvY2FsU3RvcmFnZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9jYWxTdG9yYWdlRGV0YWlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTRB
OTU0NzE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTRBOTU0ODE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxh
dGZvcm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTEzQzY0
MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGlsZFByb2Nlc3NQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGlsZFByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00OTAxLDYgKzQ5MDMsNyBAQAogCQkJCUJDMDZGNDM5MTJEQkND
RkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwICovLAog
CQkJCUJDMDZGNDM4MTJEQkNDRkIwMDJENzhERSAvKiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVu
dC5oICovLAorCQkJCUUxMzgzM0VCMTg5QzMzQzgwMDFFMjM1MCAvKiBMb2NhbFN0b3JhZ2VEZXRh
aWxzLmggKi8sCiAJCQkJMUFDNzUzNzkxODNBOUZEQTAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUu
Y3BwICovLAogCQkJCTFBQzc1MzdBMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmgg
Ki8sCiAJCQkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oICovLApA
QCAtNjcwNyw2ICs2NzEwLDcgQEAKIAkJCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQ
cm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5NDg0MDkxNTBDNEI5
NzAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjA4ODIz
MTUwNDE0RjcwMEZDODJDNyAvKiBXS1JlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTEzODMzRUMxODlDMzNDODAwMUUyMzUwIC8qIExvY2FsU3RvcmFnZURldGFpbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzMzY3NjNCMTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1NzMgLyog
V0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDVEMTJBODg1RTkwMDA2MTJE
OCAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywK
</data>
<flag name="review"
          id="246880"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222856</attachid>
            <date>2014-01-31 14:49:39 -0800</date>
            <delta_ts>2014-01-31 15:24:02 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>LocalStorageTimes.txt</filename>
            <type>text/plain</type>
            <size>24185</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzIwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAxLTMxICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBjcmVhdGlvbiBh
bmQgbW9kaWZpY2F0aW9uIHRpbWVzIGZvciBMb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODAxOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
RmlsZVN5c3RlbSBmdW5jdGlvbnMgdG8gZ2V0IGZpbGUgdGltZXMuCisKIDIwMTQtMDEtMjkgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGl0IHBvc3NpYmxl
IHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NzUsNiArNzc1LDcgQEAgX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VE
ZWNvZGVyNWZsdXNoRQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNmRlY29kZUVQ
S2NtCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXJDMUVSS04zV1RGNlN0cmluZ0VS
S05TXzEyVGV4dEVuY29kaW5nRWIKIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlckQx
RXYKK19fWk43V2ViQ29yZTE5Z2V0RmlsZUNyZWF0aW9uVGltZUVSS04zV1RGNlN0cmluZ0VSbAog
X19aTjdXZWJDb3JlMTl0b0ludDMyRW5mb3JjZVJhbmdlRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdK
U1ZhbHVlRQogX19aTjdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjMxZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlc0V2CiBfX1pON1dlYkNvcmUyMERpY3RhdGlvbkFsdGVybmF0aXZl
QzFFamp5CkBAIC04ODYsNiArODg3LDcgQEAgX19aTjdXZWJDb3JlMjNlbmNvZGVIb3N0TmFtZVdp
dGhSYW5nZUVQOAogI2lmICFQTEFURk9STShJT1MpCiBfX1pON1dlYkNvcmUyM2V2ZW50VGltZVN0
YW1wU2luY2UxOTcwRVA3TlNFdmVudAogI2VuZGlmCitfX1pON1dlYkNvcmUyM2dldEZpbGVNb2Rp
ZmljYXRpb25UaW1lRVJLTjNXVEY2U3RyaW5nRVJsCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1l
c1dpdGhDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUk4zV1RGN0hhc2hTZXRJ
TlMzXzZTdHJpbmdFTlMzXzEwU3RyaW5nSGFzaEVOUzNfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9f
Wk43V2ViQ29yZTI0Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlMTFzZXRSZXNvdXJjZUVQTlNfMTRD
YWNoZWRSZXNvdXJjZUUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTBt
YXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2VyMTFNYXJrZXJUeXBlc0UKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzIwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTAxLTMxICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBjcmVhdGlvbiBhbmQg
bW9kaWZpY2F0aW9uIHRpbWVzIGZvciBMb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODAxOAorCisgICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
T3JpZ2luS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9u
VGltZUtleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VE
ZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VE
YXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6OmRldGFpbHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbkludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlcjo6b3JpZ2luS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlcjo6bW9kaWZpY2F0aW9uVGltZUtleSk6CisgICAgICAgIChXZWJLaXQ6OmRpZEdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpkaWRHZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTQtMDEtMzEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTG9jYWxTdG9yYWdlRGV0YWlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Mb2NhbFN0b3JhZ2VEZXRhaWxzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTG9jYWxTdG9yYWdlRGV0YWlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExvY2FsU3RvcmFnZURldGFpbHNfaAor
I2RlZmluZSBMb2NhbFN0b3JhZ2VEZXRhaWxzX2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IExvY2FsU3RvcmFnZURldGFp
bHMgeworICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyOworICAgIGRvdWJsZSBjcmVhdGlvblRp
bWU7CisgICAgZG91YmxlIG1vZGlmaWNhdGlvblRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIExvY2FsU3RvcmFnZURldGFpbHNfaAoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xvY2FsU3RvcmFnZURldGFpbHMuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjMw
MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDExIEBACiAjaW5jbHVkZSAiV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlci5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRl
ICJMb2NhbFN0b3JhZ2VEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgi
CiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC00MCw2ICs0MiwyNCBAQCBjb25zdCBjaGFyKiBXZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyOjpzCiAgICAgcmV0dXJuICJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyIjsKIH0KIAor
U3RyaW5nIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om9yaWdpbktleSgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4ga2V5KEFTQ0lJTGl0ZXJhbCgiV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzT3JpZ2luS2V5IikpOworICAgIHJldHVybiBrZXk7
Cit9CisKK1N0cmluZyBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGlvblRpbWVLZXko
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleShBU0NJSUxpdGVyYWwo
IldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc0NyZWF0aW9uVGltZUtleSIp
KTsKKyAgICByZXR1cm4ga2V5OworfQorCitTdHJpbmcgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
cjo6bW9kaWZpY2F0aW9uVGltZUtleSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4ga2V5KEFTQ0lJTGl0ZXJhbCgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VE
ZXRhaWxzTW9kaWZpY2F0aW9uVGltZUtleSIpKTsKKyAgICByZXR1cm4ga2V5OworfQorCiBQYXNz
UmVmUHRyPFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI+IFdlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXI6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcihjb250ZXh0KSk7CkBAIC02Niw3ICs4Niw3IEBA
IHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6ZGVyZWZXZWIKICAgICBBUEk6Ok9iamVj
dDo6ZGVyZWYoKTsKIH0KIAotc3RhdGljIHZvaWQgZGlkR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lu
cyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mIHNlY3VyaXR5
T3JpZ2lucywgdm9pZCogY29udGV4dCkKK3N0YXRpYyB2b2lkIGRpZEdldEtleVZhbHVlU3RvcmFn
ZU9yaWdpbnMoY29uc3QgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBzZWN1cml0eU9y
aWdpbnMsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxi
YWNrID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8QXJyYXlDYWxsYmFjayo+KGNvbnRleHQpKTsKIApA
QCAtODMsNyArMTAzLDM2IEBAIHZvaWQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6Z2V0S2V5
VmEKIHsKICAgICBjb250ZXh0KCktPnN0b3JhZ2VNYW5hZ2VyKCkuZ2V0T3JpZ2lucyhSdW5Mb29w
OjptYWluKCksIHBycENhbGxiYWNrLmxlYWtSZWYoKSwgZGlkR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyk7CiB9Ci0gICAgCisKK3N0YXRpYyB2b2lkIGRpZEdldFN0b3JhZ2VEZXRhaWxzQnlPcmln
aW4oY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+JiBzdG9yYWdlRGV0YWlscywgdm9p
ZCogY29udGV4dCkKK3sKKyAgICBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9w
dFJlZihzdGF0aWNfY2FzdDxBcnJheUNhbGxiYWNrKj4oY29udGV4dCkpOworCisgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzdG9yYWdlRGV0YWlscy5zaXplKCkpOworCisgICAgZm9yIChjb25zdCBMb2NhbFN0
b3JhZ2VEZXRhaWxzJiBvcmlnaW5EZXRhaWxzIDogc3RvcmFnZURldGFpbHMpIHsKKyAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRldGFpbHNNYXA7CisKKyAgICAg
ICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5EZXRhaWxzLm9yaWdpbklkZW50aWZpZXIpOwor
CisgICAgICAgIGRldGFpbHNNYXAuc2V0KFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om9yaWdp
bktleSgpLCBvcmlnaW4pOworICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUp
CisgICAgICAgICAgICBkZXRhaWxzTWFwLnNldChXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGlvblRpbWVLZXkoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLmNyZWF0
aW9uVGltZSkpOworICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lKQor
ICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6bW9k
aWZpY2F0aW9uVGltZUtleSgpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkRldGFpbHMubW9k
aWZpY2F0aW9uVGltZSkpOworCisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoSW1tdXRh
YmxlRGljdGlvbmFyeTo6Y3JlYXRlKHN0ZDo6bW92ZShkZXRhaWxzTWFwKSkpOworICAgIH0KKwor
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6
Y3JlYXRlKHN0ZDo6bW92ZShyZXN1bHQpKS5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlcjo6Z2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5
Q2FsbGJhY2s+IHBycENhbGxiYWNrKQoreworICAgIGNvbnRleHQoKS0+c3RvcmFnZU1hbmFnZXIo
KS5nZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFJ1bkxvb3A6Om1haW4oKSwgcHJwQ2FsbGJhY2su
bGVha1JlZigpLCBkaWRHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKTsKK30KKwogdm9pZCBXZWJL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdlYlNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgY29udGV4dCgpLT5zdG9yYWdlTWFuYWdlcigpLmRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4ob3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIu
aAkocmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDE3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKCk7CiAKICAgICB2
b2lkIGdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPik7
CisgICAgdm9pZCBnZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFBhc3NSZWZQdHI8QXJyYXlDYWxs
YmFjaz4pOwogICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXZWJTZWN1cml0eU9yaWdp
biopOwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwogCiAgICAgdXNpbmcgQVBJOjpPYmpl
Y3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICBzdGF0aWMgU3Ry
aW5nIG9yaWdpbktleSgpOworICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRpb25UaW1lS2V5KCk7Cisg
ICAgc3RhdGljIFN0cmluZyBtb2RpZmljYXRpb25UaW1lS2V5KCk7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcihXZWJDb250ZXh0Kik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTEgKzM2LDM0IEBAIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldFR5cGUKICAgICByZXR1cm4gdG9BUEkoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6QVBJ
VHlwZSk7CiB9CiAKK1dLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdp
bktleSgpCit7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nKiBrZXkgPSBBUEk6OlN0cmluZzo6Y3Jl
YXRlKFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6Om9yaWdpbktleSgpKS5sZWFrUmVmKCk7Cisg
ICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpCit7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nKiBr
ZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmNyZWF0
aW9uVGltZUtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CisKK1dL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXko
KQoreworICAgIHN0YXRpYyBBUEk6OlN0cmluZyoga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjptb2RpZmljYXRpb25UaW1lS2V5KCkpLmxlYWtSZWYo
KTsKKyAgICByZXR1cm4gdG9BUEkoa2V5KTsKK30KKwogdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgdG9JbXBsKGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpLT5nZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zKEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOwogfQog
Cit2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4o
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZv
aWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlP
cmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICB0b0ltcGwoa2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZiktPmdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oQXJyYXlDYWxsYmFjazo6Y3JlYXRl
KGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
RGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW5SZWYpCiB7CiAg
ICAgdG9JbXBsKGtleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpLT5kZWxldGVFbnRyaWVzRm9yT3Jp
Z2luKHRvSW1wbChvcmlnaW5SZWYpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9u
IDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMjEgQEAgZXh0ZXJuICJD
IiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBl
SUQoKTsKIAorLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLworV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworCisv
KiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3
MCBVVEMgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRDcmVhdGlvblRpbWVLZXkoKTsKKworLyogVmFsdWUgdHlwZTogV0tEb3VibGVSZWYsIHNlY29u
ZHMgc2luY2UgSmFudWFyeSAxc3QsIDE5NzAgVVRDICovCitXS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpOworCiB0eXBl
ZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmln
aW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2
b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNv
bnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNG
dW5jdGlvbiBmdW5jdGlvbik7CiAKK3R5cGVkZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJv
clJlZiwgdm9pZCopOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFs
dWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGZ1bmN0aW9uKTsKKwogV0tfRVhQT1JU
IHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pOwogV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVT
dG9yYWdlTWFuYWdlcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAko
cmV2aXNpb24gMTYzMDIzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5oIgogCisjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5oIgogI2luY2x1ZGUg
IldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CkBAIC0xMjgsMTIgKzEyOSwzMSBAQCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gCiAgICAgVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgb3JpZ2lucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fb3JpZ2lucy5zaXplKCkpOwogCi0gICAgZm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9vcmlnaW5zLmJlZ2luKCksIGVuZCA9IG1fb3JpZ2lucy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KQotICAgICAgICBvcmlnaW5zLnVuY2hlY2tlZEFwcGVuZChTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcigqaXQpKTsKKyAgICBmb3IgKGNvbnN0
IFN0cmluZyYgb3JpZ2luIDogbV9vcmlnaW5zKQorICAgICAgICBvcmlnaW5zLnVuY2hlY2tlZEFw
cGVuZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW4p
KTsKIAogICAgIHJldHVybiBvcmlnaW5zOwogfQogCitWZWN0b3I8TG9jYWxTdG9yYWdlRGV0YWls
cz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzKCkKK3sKKyAgICBWZWN0b3I8
TG9jYWxTdG9yYWdlRGV0YWlscz4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KG1fb3JpZ2lucy5zaXplKCkpOworCisgICAgZm9yIChjb25zdCBTdHJpbmcmIG9yaWdp
biA6IG1fb3JpZ2lucykgeworICAgICAgICBTdHJpbmcgZmlsZVBhdGggPSBwYXRoRm9yRGF0YWJh
c2VXaXRoT3JpZ2luSWRlbnRpZmllcihvcmlnaW4pOworICAgICAgICB0aW1lX3QgdGltZTsKKwor
ICAgICAgICBMb2NhbFN0b3JhZ2VEZXRhaWxzIGRldGFpbHM7CisgICAgICAgIGRldGFpbHMub3Jp
Z2luSWRlbnRpZmllciA9IG9yaWdpbi5pc29sYXRlZENvcHkoKTsKKyAgICAgICAgZGV0YWlscy5j
cmVhdGlvblRpbWUgPSBnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUg
OiAwOworICAgICAgICBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUgPSBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShmaWxlUGF0aCwgdGltZSkgPyB0aW1lIDogMDsKKyAgICAgICAgcmVzdWx0LnVuY2hl
Y2tlZEFwcGVuZChkZXRhaWxzKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2
b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
SW50ZXJuYWwoU3RyaW5nSW1wbCogbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQogewogICAgIGlmICht
X2RhdGFiYXNlLmlzT3BlbigpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgJKHJl
dmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBA
IGNsYXNzIFdvcmtRdWV1ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBMb2NhbFN0
b3JhZ2VEZXRhaWxzOworCiBjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
PiBjcmVhdGUoUGFzc1JlZlB0cjxXb3JrUXVldWU+KTsKQEAgLTU1LDYgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lucygpIGNvbnN0OworICAgIFZlY3RvcjxMb2Nh
bFN0b3JhZ2VEZXRhaWxzPiBkZXRhaWxzKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKFBhc3NSZWZQdHI8V29ya1F1ZXVlPik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAxNjMwMjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGV0YWlscy5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC00MjUsNiAr
NDI2LDExIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldE9yaWdpbnMoRnVuY3Rpb24KICAgICBt
X3F1ZXVlLT5kaXNwYXRjaChiaW5kKCZTdG9yYWdlTWFuYWdlcjo6Z2V0T3JpZ2luc0ludGVybmFs
LCB0aGlzLCBSZWZQdHI8RnVuY3Rpb25EaXNwYXRjaGVyPihjYWxsYmFja0Rpc3BhdGNoZXIpLCBj
b250ZXh0LCBjYWxsYmFjaykpOwogfQogCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2
b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VE
ZXRhaWxzPiYgc3RvcmFnZURldGFpbHMsIHZvaWQqIGNvbnRleHQpKQoreworICAgIG1fcXVldWUt
PmRpc3BhdGNoKGJpbmQoJlN0b3JhZ2VNYW5hZ2VyOjpnZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
SW50ZXJuYWwsIHRoaXMsIFJlZlB0cjxGdW5jdGlvbkRpc3BhdGNoZXI+KGNhbGxiYWNrRGlzcGF0
Y2hlciksIGNvbnRleHQsIGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKGJpbmQoJlN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luSW50ZXJuYWwsIHRoaXMsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4oc2VjdXJpdHlP
cmlnaW4pKSk7CkBAIC02MzUsNiArNjQxLDEyIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldE9y
aWdpbnNJbnRlcm5hbCgKICAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaChiaW5kKGNhbGxDYWxsYmFj
a0Z1bmN0aW9uLCBjb250ZXh0LCBjYWxsYmFja0Z1bmN0aW9uLCBzZWN1cml0eU9yaWdpbnMubGVh
a1B0cigpKSk7CiB9CiAKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFN0b3JhZ2VEZXRhaWxzQnlP
cmlnaW5JbnRlcm5hbChGdW5jdGlvbkRpc3BhdGNoZXIqIGRpc3BhdGNoZXIsIHZvaWQqIGNvbnRl
eHQsIHZvaWQgKCpjYWxsYmFja0Z1bmN0aW9uKShjb25zdCBWZWN0b3I8TG9jYWxTdG9yYWdlRGV0
YWlscz4mIHN0b3JhZ2VEZXRhaWxzLCB2b2lkKiBjb250ZXh0KSkKK3sKKyAgICBWZWN0b3I8TG9j
YWxTdG9yYWdlRGV0YWlscz4gc3RvcmFnZURldGFpbHMgPSBtX2xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci0+ZGV0YWlscygpOworICAgIGRpc3BhdGNoZXItPmRpc3BhdGNoKGJpbmQoY2FsbGJh
Y2tGdW5jdGlvbiwgc3RkOjptb3ZlKHN0b3JhZ2VEZXRhaWxzKSwgY29udGV4dCkpOworfQorCiB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luSW50ZXJuYWwoU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewogICAgIGZvciAoYXV0byBpdCA9IG1fbG9jYWxT
dG9yYWdlTmFtZXNwYWNlcy5iZWdpbigpLCBlbmQgPSBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAkocmV2aXNpb24gMTYzMDIzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3N0cnVjdCBMb2NhbFN0b3JhZ2VEZXRhaWxzOwogc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIGNsYXNzIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKQEAgLTYxLDcgKzYyLDggQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IEluc3RlYWQgb2YgYSBjb250ZXh0ICsgQyBmdW5jdGlvbiwgdGhpcyBzaG91bGQgdGFrZSBhIFdU
Rjo6RnVuY3Rpb24sIGJ1dCB3ZSBjdXJyZW50bHkgZG9uJ3QKICAgICAvLyBzdXBwb3J0IGFyZ3Vt
ZW50cyBpbiBmdW5jdGlvbnMuCi0gICAgdm9pZCBnZXRPcmlnaW5zKEZ1bmN0aW9uRGlzcGF0Y2hl
ciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJpdHlPcmln
aW5zLCB2b2lkKiBjb250ZXh0KSk7CisgICAgdm9pZCBnZXRPcmlnaW5zKEZ1bmN0aW9uRGlzcGF0
Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJhY2sp
KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIHZvaWQqIGNv
bnRleHQpKTsKKyAgICB2b2lkIGdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oRnVuY3Rpb25EaXNw
YXRjaGVyKiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZvaWQgKCpjYWxsYmFj
aykoY29uc3QgVmVjdG9yPExvY2FsU3RvcmFnZURldGFpbHM+Jiwgdm9pZCogY29udGV4dCkpOwog
ICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiop
OwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcygpOwogCkBAIC05NSw3ICs5Nyw4IEBAIHByaXZh
dGU6CiAgICAgY2xhc3MgTG9jYWxTdG9yYWdlTmFtZXNwYWNlOwogICAgIExvY2FsU3RvcmFnZU5h
bWVzcGFjZSogZ2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlEKTsKIAotICAgIHZvaWQgZ2V0T3JpZ2luc0ludGVybmFsKEZ1bmN0aW9uRGlz
cGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBjb250ZXh0LCB2b2lkICgqY2FsbGJh
Y2spKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgc2VjdXJp
dHlPcmlnaW5zLCB2b2lkKiBjb250ZXh0KSk7CisgICAgdm9pZCBnZXRPcmlnaW5zSW50ZXJuYWwo
RnVuY3Rpb25EaXNwYXRjaGVyKiBjYWxsYmFja0Rpc3BhdGNoZXIsIHZvaWQqIGNvbnRleHQsIHZv
aWQgKCpjYWxsYmFjaykoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+Jiwgdm9pZCogY29udGV4dCkpOworICAgIHZvaWQgZ2V0U3RvcmFnZURldGFpbHNCeU9yaWdp
bkludGVybmFsKEZ1bmN0aW9uRGlzcGF0Y2hlciogY2FsbGJhY2tEaXNwYXRjaGVyLCB2b2lkKiBj
b250ZXh0LCB2b2lkICgqY2FsbGJhY2spKGNvbnN0IFZlY3RvcjxMb2NhbFN0b3JhZ2VEZXRhaWxz
PiYsIHZvaWQqIGNvbnRleHQpKTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW5JbnRl
cm5hbChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVsZXRlQWxsRW50cmll
c0ludGVybmFsKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2MzAyMykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM1
Niw2ICsxMzU2LDcgQEAKIAkJRTEzM0ZEOEExNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5pY25z
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTMzRkQ4
OTE0MjNERDdGMDBGQzdCRkIgLyogV2ViS2l0LmljbnMgKi87IH07CiAJCUUxMzRGMDE3MTJFQTVE
MzMwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8qIFdLUHJpbnRp
bmdWaWV3LmggKi87IH07CiAJCUUxMzRGMDFBMTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5n
Vmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
MzRGMDE5MTJFQTVEOTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLzsgfTsKKwkJRTEz
ODMzRUMxODlDMzNDODAwMUUyMzUwIC8qIExvY2FsU3RvcmFnZURldGFpbHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMzgzM0VCMTg5QzMzQzgwMDFF
MjM1MCAvKiBMb2NhbFN0b3JhZ2VEZXRhaWxzLmggKi87IH07CiAJCUUxNEE5NTQ5MTZFMDE2QTQw
MDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTRBOTU0NzE2RTAxNkE0MDA2
OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovOyB9OwogCQlF
MTRBOTU0QTE2RTAxNkE0MDA2OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNEE5
NTQ4MTZFMDE2QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5o
ICovOyB9OwogCQlFMTUxM0M2NjE2NkVBQkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MTND
NjQxNjZFQUJCMjAwMTQ5RkNCIC8qIENoaWxkUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsKQEAgLTMx
MDUsNiArMzEwNiw3IEBACiAJCUUxMzNGRDg5MTQyM0REN0YwMEZDN0JGQiAvKiBXZWJLaXQuaWNu
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdl
LmljbnM7IG5hbWUgPSBXZWJLaXQuaWNuczsgcGF0aCA9IFJlc291cmNlcy9XZWJLaXQuaWNuczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzNEYwMTUxMkVBNUQxMTAwNEVDNThEIC8q
IFdLUHJpbnRpbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJp
bnRpbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzRGMDE5MTJFQTVE
OTkwMDRFQzU4RCAvKiBXS1ByaW50aW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLUHJpbnRpbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTM4MzNFQjE4OUMzM0M4MDAxRTIzNTAgLyogTG9jYWxTdG9yYWdlRGV0YWlscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFN0b3JhZ2VEZXRhaWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNEE5NTQ3MTZFMDE2QTQwMDY4REU4MiAv
KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHA7
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNEE5NTQ4MTZFMDE2QTQwMDY4REU4
MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oOyBwYXRo
ID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1MTNDNjQxNjZFQUJCMjAwMTQ5RkNCIC8qIENo
aWxkUHJvY2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENoaWxkUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5
MDEsNiArNDkwMyw3IEBACiAJCQkJQkMwNkY0MzkxMkRCQ0NGQjAwMkQ3OERFIC8qIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgKi8sCiAJCQkJQkMwNkY0MzgxMkRCQ0NGQjAw
MkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oICovLAogCQkJCUJD
NkVEQUE1MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi8sCisJCQkJRTEzODMzRUIx
ODlDMzNDODAwMUUyMzUwIC8qIExvY2FsU3RvcmFnZURldGFpbHMuaCAqLywKIAkJCQkxQUM3NTM3
OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAgKi8sCiAJCQkJMUFDNzUzN0Ex
ODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywKIAkJCQlCQzU5NzA3NDExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8sCkBAIC02NzA3LDYgKzY3MTAsNyBAQAog
CQkJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzk0ODQwOTE1MEM0Qjk3MDBFNTJDRTkgLyogV0tSZW5kZXJM
YXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2MDg4MjMxNTA0MTRGNzAwRkM4MkM3IC8qIFdL
UmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMTM4MzNFQzE4OUMzM0M4MDAxRTIz
NTAgLyogTG9jYWxTdG9yYWdlRGV0YWlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2M0Ix
MzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1JldGFpblB0ci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8qIFdLU2VjdXJpdHlPcmlnaW4u
aCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>