<?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>145394</bug_id>
          
          <creation_ts>2015-05-26 15:44:05 -0700</creation_ts>
          <short_desc>WKWebsiteDataStore should handle media keys</short_desc>
          <delta_ts>2015-05-27 11:56:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097512</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-26 15:44:05 -0700</bug_when>
    <thetext>WKWebsiteDataStore should handle media keys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097529</commentid>
    <comment_count>1</comment_count>
      <attachid>253754</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-26 16:09:38 -0700</bug_when>
    <thetext>Created attachment 253754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097683</commentid>
    <comment_count>2</comment_count>
      <attachid>253754</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 11:35:43 -0700</bug_when>
    <thetext>Comment on attachment 253754
Patch

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

Looks good. Nits only.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:145
&gt; +    struct CallbackAggregator final : public ThreadSafeRefCounted&lt;CallbackAggregator&gt; {

Not sure we need “public” here since struct derivation is public by default. Style question, I guess.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:349
&gt; +        WTF::StringCapture mediaKeysStorageDirectory { m_mediaKeysStorageDirectory };

Should just be StringCapture, right? Why the WTF prefix?

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:818
&gt; +    for (const auto&amp; originPath : WebCore::listDirectory(mediaKeysStorageDirectory, &quot;*&quot;)) {

Not sure the const here is needed or helpful.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:837
&gt; +    for (const auto&amp; mediaKeyDirectory : WebCore::listDirectory(mediaKeysStorageDirectory, &quot;*&quot;)) {

Not sure the const here is needed or helpful.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:859
&gt; +    for (const auto&amp; origin : origins) {

Not sure the const here is needed or helpful.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:862
&gt; +        auto mediaKeyDirectory = WebCore::pathByAppendingComponent(mediaKeysStorageDirectory, origin-&gt;databaseIdentifier());
&gt; +
&gt; +        auto mediaKeyFile = WebCore::pathByAppendingComponent(mediaKeyDirectory, &quot;SecureStop.plist&quot;);

I’d omit this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097687</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-27 11:50:11 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 253754 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253754&amp;action=review
&gt; 
&gt; Looks good. Nits only.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:145
&gt; &gt; +    struct CallbackAggregator final : public ThreadSafeRefCounted&lt;CallbackAggregator&gt; {
&gt; 
&gt; Not sure we need “public” here since struct derivation is public by default.
&gt; Style question, I guess.

I got rid of it.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:349
&gt; &gt; +        WTF::StringCapture mediaKeysStorageDirectory { m_mediaKeysStorageDirectory };
&gt; 
&gt; Should just be StringCapture, right? Why the WTF prefix?

I blame autocomplete!

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:818
&gt; &gt; +    for (const auto&amp; originPath : WebCore::listDirectory(mediaKeysStorageDirectory, &quot;*&quot;)) {
&gt; 
&gt; Not sure the const here is needed or helpful.

I think it&apos;s helpful because there&apos;s no point in allowing mutation of the strings returned.
&gt; &gt; +
&gt; &gt; +        auto mediaKeyFile = WebCore::pathByAppendingComponent(mediaKeyDirectory, &quot;SecureStop.plist&quot;);
&gt; 
&gt; I’d omit this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097693</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-27 11:54:10 -0700</bug_when>
    <thetext>Committed r184912: &lt;http://trac.webkit.org/changeset/184912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097694</commentid>
    <comment_count>5</comment_count>
      <attachid>253754</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-27 11:56:49 -0700</bug_when>
    <thetext>Comment on attachment 253754
Patch

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

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:841
&gt; +        if (!WebCore::fileExists(mediaKeyFile))
&gt; +            continue;

Wait, why do we need this? Won’t getFileModificationTime fail if the file doesn’t exist? I suggest deleting this code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253754</attachid>
            <date>2015-05-26 16:09:38 -0700</date>
            <delta_ts>2015-05-27 11:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145394-20150526160927.patch</filename>
            <type>text/plain</type>
            <size>22430</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDFhYjkyZmRkOTZkOTkz
NjM5NTVjYTIyYjVkZmM1OTVlMjA4NzYwZi4uMzNhYzFmODZjMWJiYjVkMWU0ZDA1N2QzY2QyNTUz
NDVjNzJlMDU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE1LTA1LTI2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlIHNob3VsZCBoYW5kbGUgbWVkaWEga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIw
NjE3Nzk0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaDoKKyAgICAgICAgQWRkIFdl
YnNpdGVEYXRhVHlwZU1lZGlhS2V5cyBlbnVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgU2V0IHVw
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKFdl
YktpdDo6dG9XS1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIEFkZCBfV0tX
ZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbik6CisgICAgICAgIFNldCB1cCBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAg
ICAgU2V0IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS4KKworICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICBNYWtlIENhbGxiYWNrQWdncmVn
YXRvciBUaHJlYWRTYWZlUmVmQ291bnRlZC4KKyAgICAgICAgSGFuZGxlIFdlYnNpdGVEYXRhVHlw
ZU1lZGlhS2V5cyBieSBjYWxsaW5nIG1lZGlhS2V5T3JpZ2lucyBvbiBvdXIgYmFja2dyb3VuZCBx
dWV1ZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToK
KyAgICAgICAgTWFrZSBDYWxsYmFja0FnZ3JlZ2F0b3IgVGhyZWFkU2FmZVJlZkNvdW50ZWQuCisg
ICAgICAgIEhhbmRsZSBXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgYnkgY2FsbGluZyByZW1vdmVN
ZWRpYUtleXMgb24gb3VyIGJhY2tncm91bmQgcXVldWUuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKToKKyAgICAgICAgQ29tcHV0ZSB0aGUgb3Jp
Z2lucy4KKworICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTWVkaWFLZXlGaWxlKToKKyAgICAgICAg
QWRkIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG1lZGlhIGtleSBnaXZlbiBhIGNv
bnRhaW5pbmcgZGlyZWN0b3J5LgorCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OnJlbW92ZU1lZGlhS2V5cyk6CisgICAgICAgIFJlbW92ZSBtZWRpYSBrZXkgZmlsZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAg
ICBBZGQgbmV3IG1lbWJlcnMuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKIDIwMTUtMDUtMjYgIE1pbGFuIENy
aGEgIDxtY3JoYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtHVEtdIEV4cGFuZCB3aWxkY2FyZHMg
aW5zaWRlIGdlbmVyYXRlLWluc3BlY3Rvci1ncmVzb3VyY2UtbWFuaWZlc3QucHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCmlu
ZGV4IGJiNTBmNTM5NDk0MmQ1NTVlZjBjMmViMDk1MWMwMTNiMmRjMGE0NjkuLjI3NWFhNDk2MTk3
MDk4NmRjNzZiZTNjMzEzZjRkMjU5ZWI0ZjRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaApAQCAtMzcsNiArMzcsNyBA
QCBlbnVtIFdlYnNpdGVEYXRhVHlwZXMgewogICAgIFdlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFn
ZSA9IDEgPDwgNSwKICAgICBXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMgPSAxIDw8IDYs
CiAgICAgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzID0gMSA8PCA3LAorICAgIFdl
YnNpdGVEYXRhVHlwZU1lZGlhS2V5cyA9IDEgPDwgOCwKIH07CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCmluZGV4IDcxNWRmNjJiZWY1OGQ2N2NlMzY0N2Q0ZWRmNTExODc1Y2YyOTVj
NDUuLjQ0ZDM3MDViMTA0ZWYyN2Q3YzBhMjk1ZGU1MWZhMjgyOTFhNTJlZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC0xMTcsNiArMTE3LDcgQEAgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVD
b25maWcKIAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7CiAgICAg
Y29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7CisgICAgY29uZmlndXJh
dGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggMDRiYTA3YmNmMTY2ZTVkMTllZTdkNjU5
MWJjNDUyM2U5NzYxYmE3Yi4uY2IwODI5MjUzZjQ5YjgxM2ZlODhmZTdjMmE0ZTM0MmY3MTZmYWZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtMzksNiArMzksOCBAQCBOU1N0cmluZyAqIGNvbnN0
IFdLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlID0gQCJXS1dlYnNpdGVEYXRhVHlwZUxvY2Fs
U3RvcmFnZQogTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNl
cyA9IEAiV0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMiOwogTlNTdHJpbmcgKiBjb25z
dCBXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IEAiV0tXZWJzaXRlRGF0YVR5
cGVJbmRleGVkREJEYXRhYmFzZXMiOwogCitOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZU1lZGlhS2V5cyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIjsKKwogQGltcGxl
bWVudGF0aW9uIFdLV2Vic2l0ZURhdGFSZWNvcmQKIAogLSAodm9pZClkZWFsbG9jCkBAIC02OCw2
ICs3MCw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQgKmRhdGFU
eXBlcykKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKICAgICBpZiAoW2Rh
dGFUeXBlcyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
c10pCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkREIiXTsKKyAgICBpZiAoW2Rh
dGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQorICAg
ICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiTWVkaWEgS2V5cyJdOwogCiAgICAgcmV0dXJuIFthcnJh
eSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZEludGVybmFsLmgKaW5kZXggZWVhMDU2YjFjZTY0MTRlM2NkNGI2N2Y1MDliNzZjNjkzZWM0MjBk
Ni4uNmFmMWRiNjc0MDhhZGQyMWVmZWViZmZhM2NiY2NhZDdmMzBiNDQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZC5o
IgorI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCIKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKQEAgLTYwLDYgKzYwLDggQEAgc3RhdGljIGlubGluZSBXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZXMgdG9XZWJzaXRlRGF0YVR5cGVzKE5TU2V0ICp3a1dlYnNpdGVEYXRhVHkKICAgICAg
ICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVX
ZWJTUUxEYXRhYmFzZXM7CiAgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmpl
Y3Q6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXNdKQogICAgICAgICB3ZWJzaXRl
RGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRh
dGFiYXNlczsKKyAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tX
ZWJzaXRlRGF0YVR5cGVNZWRpYUtleXNdKQorICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdl
YnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5czsKIAogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJzaXRlRGF0YVR5cGVzPih3ZWJzaXRlRGF0YVR5cGVzKTsKIH0KQEAgLTg2
LDYgKzg4LDggQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRvV0tXZWJzaXRlRGF0
YVR5cGVzKGludCB3ZWJzaXRlRGF0YVR5cGVzKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVz
IGFkZE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlc107CiAgICAgaWYgKHdl
YnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVJbmRleGVk
REJEYXRhYmFzZXMpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0OldLV2Vi
c2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzXTsKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBl
cyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cykKKyAgICAgICAg
W3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlz
XTsKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQyMTk1NzM5M2VmMTQ4MjUwOTE5YWRjMTU3ZTU3ZmM4
NTlkMzMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFSZWNvcmQuaD4KKworI2lmIFdL
X0FQSV9FTkFCTEVECisKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRh
VHlwZU1lZGlhS2V5cyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
YjU1NzlhMzM1ZjZlNjI3YjE2NjQ3NzQyZGFjM2U0MzIwMmRjNGVjNC4uM2M5ZGVmMmZkMWFmNmUx
MjkxOThkN2QyZDVmYzFkM2QxYTRjOGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgc3RhdGljIFdlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
QVBJOjoKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID0gV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggY2M2ZWE3NTNiYmU5YjdmNTgyM2I1MGM5YjQ3YjJlNDg3NWY0
ZjI4My4uMjZiOTI2YjBkY2FjZWEzYWE0Mzg3ZjNkYzg0MTcyNmM4Njk3OWRiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTY5LDYgKzcwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX25ldHdvcmtDYWNoZURpcmVjdG9y
eShXVEY6Om1vdmUoY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkpKQogICAgICwg
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdURjo6bW92ZShjb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQogICAgICwgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShX
VEY6Om1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCisgICAgLCBt
X21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
KSkpCiAgICAgLCBtX3F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0Lldl
YnNpdGVEYXRhU3RvcmUiKSkKIHsKQEAgLTE0MCw3ICsxNDIsNyBAQCBzdGF0aWMgUHJvY2Vzc0Fj
Y2Vzc1R5cGUgY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YUZldGNoKFdlYnNpdGVE
YXRhVHlwZQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5
cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNv
cmQ+KT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRv
ciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4geworICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVn
YXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgewpAQCAtMzQzLDYgKzM0NSwyNCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywg
c3RkOjpmdW5jdGlvbjx2b2lkCiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGF0YVR5cGVzICYg
V2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzICYmIGlzUGVyc2lzdGVudCgpKSB7CisgICAgICAgIFdU
Rjo6U3RyaW5nQ2FwdHVyZSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IHsgbV9tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IH07CisKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5k
aW5nQ2FsbGJhY2soKTsKKworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBhdXRvIG9y
aWdpbnMgPSBtZWRpYUtleU9yaWdpbnMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5zdHJpbmco
KSk7CisKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dy
ZWdhdG9yLCBvcmlnaW5zXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRh
IHdlYnNpdGVEYXRhOworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lu
cykKKyAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0
ZURhdGE6OkVudHJ5IHsgV1RGOjptb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZU1lZGlhS2V5
cyB9KTsKKworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGlu
Z0NhbGxiYWNrKFdURjo6bW92ZSh3ZWJzaXRlRGF0YSkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0pOworICAgIH0KKwogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7
CiB9CiAKQEAgLTM3Nyw3ICszOTcsNyBAQCBzdGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0
ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoV2Vic2l0ZURhdGFUeQogCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7
CisgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dy
ZWdhdG9yIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAg
ICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQog
ICAgICAgICB7CkBAIC01MTYsNiArNTM2LDIwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVt
b3ZlRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlCiAg
ICAgfQogI2VuZGlmCiAKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlTWVkaWFL
ZXlzICYmIGlzUGVyc2lzdGVudCgpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSB9OworCisgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisKKyAgICAgICAg
bV9xdWV1ZS0+ZGlzcGF0Y2goW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIGNhbGxiYWNrQWdn
cmVnYXRvciwgbW9kaWZpZWRTaW5jZV0geworICAgICAgICAgICAgcmVtb3ZlTWVkaWFLZXlzKG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkuc3RyaW5nKCksIG1vZGlmaWVkU2luY2UpOworCisgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0gewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNr
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgLy8gVGhlcmUn
cyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBz
bywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXku
CiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKIH0KQEAgLTY4OSw2ICs3
MjMsMjUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlw
ZXMgZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vic2kKICAgICB9CiAjZW5kaWYKIAorICAgIGlm
IChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgJiYgaXNQZXJzaXN0ZW50KCkp
IHsKKyAgICAgICAgU3RyaW5nQ2FwdHVyZSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IHsgbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IH07CisgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBk
YXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
b3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQorICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRk
KG9yaWdpbik7CisgICAgICAgIH0KKworICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBl
bmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zXSB7CisKKyAgICAgICAg
ICAgIHJlbW92ZU1lZGlhS2V5cyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LnN0cmluZygpLCBv
cmlnaW5zKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92
ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0K
KwogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBwZW5kaW5n
IGNhbGxiYWNrcy4gSWYgc28sIHdlIHdhbnQgdG8gZGlzcGF0Y2ggdGhlIGNvbXBsZXRpb24gaGFu
ZGxlciByaWdodCBhd2F5LgogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7
CiB9CkBAIC03NTYsNCArODA5LDYxIEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4g
V2Vic2l0ZURhdGFTdG9yZTo6cHJvY2Vzc1Bvb2xzKCkgY29uc3QKICAgICByZXR1cm4gcHJvY2Vz
c1Bvb2xzOwogfQogCitWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gV2Vi
c2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSkKK3sKKyAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKTsKKworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
PiBvcmlnaW5zOworCisgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6
bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgICAg
IGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG9yaWdp
blBhdGgpOworCisgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoV1RGOjptb3ZlKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgfQorCisgICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3N0YXRpYyBTdHJp
bmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQor
eworICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlE
aXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQor
eworICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOworCisg
ICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6Omxpc3REaXJl
Y3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRvIG1l
ZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOworCisg
ICAgICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgICAg
IGlmICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2Rp
ZmljYXRpb25UaW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2RpZmljYXRpb25UaW1lKSA8IG1v
ZGlmaWVkU2luY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSwgY29uc3QgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgb3Jp
Z2lucykKK3sKKyAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgp
KTsKKworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAgICBh
dXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworCisgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworCisgICAg
ICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgIH0KK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggMzBkMWEzMDE3YTY0ZmI4YTA0Yjk1ODNmZjI3NWJjOTcwYzdhYTFj
Zi4uNGZkMDkwZmI4MGIxMmVmMDg5ZGZjYTU5MjBiNDhlNjIzNTk3ZjEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJQcm9jZXNzTGlmZXRpbWVPYnNl
cnZlci5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMzYsNiAr
MzcsMTAgQEAKICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5T3JpZ2lu
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU3RvcmFnZU1hbmFnZXI7CkBAIC01
MSw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFN0
cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIH07CiAgICAgc3RhdGljIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJl
ZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbik7CkBAIC04Niw2ICs5
MiwxMCBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBw
cm9jZXNzUG9vbHMoKSBjb25zdDsKIAorICAgIHN0YXRpYyBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPj4gbWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlTWVkaWFLZXlzKGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVN
ZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBjb25zdCBI
YXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+Jik7CisKICAgICBjb25zdCB1
aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgY29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwogCkBAIC05Myw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBjb25zdCBTdHJpbmcgbV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeTsKKyAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwogICAgIGNvbnN0IFJlZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdl
cjsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWNjYjIwMzVlNWVkZjI4MTM1
ZTYyNDQ1NGU4Y2MzYjBhYmRjMzg5ZC4uNGQyZDBmZDI0Njc0MGI5ODM1OTVkZjVlOTY3NWFkNzdl
NDAyZWI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzU4LDYgKzM1OCw3IEBACiAJCTFBQTU3NjAyMTQ5NkI5NzkwMEE0RUUw
NiAvKiBFdmVudERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBNTc1RkYxNDk2QjdDMDAwQTRFRTA2IC8q
IEV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQTU4ODkyMTFF
RTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBNTg4OTAxMUVFNzA0MDAwNjFCODgyIC8q
IE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggKi87IH07CiAJCTFBQTU4ODkzMTFFRTcwNDAwMDYxQjg4
MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE1ODg5MTExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwICovOyB9OworCQkxQUE2NTREMTFCMTRGNzE0MDBCRjFEM0UgLyogV0tX
ZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQTY1NEQwMUIxNEY3MTQwMEJGMUQzRSAvKiBXS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBQTgzRjZDMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgz
RjZBMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJ
MUFBODNGNkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgzRjZCMUE1QjYzRkYw
MDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggKi87IH07CiAJCTFBQTlCQUUxMTg0RkZB
QzcwMDNCNkJDNiAvKiBXZWFrT2JqQ1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFBOUJBRTAxODRGRkFDNzAwM0I2QkM2IC8qIFdlYWtPYmpDUHRy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1
MDIsNiArMjUwMyw3IEBACiAJCTFBQTU3NjAwMTQ5NkI3QzAwMEE0RUUwNiAvKiBFdmVudERpc3Bh
dGNoZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERp
c3BhdGNoZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE1ODg5
MDExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUFBNTg4OTExMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHNj
YXBlUGx1Z2luU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFBNjU0
RDAxQjE0RjcxNDAwQkYxRDNFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTgzRjZBMUE1QjYzRkYwMDAyNkVDNiAv
KiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUE4M0Y2QjFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZVByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTlCQUUwMTg0RkZBQzcwMDNCNkJDNiAvKiBX
ZWFrT2JqQ1B0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrT2JqQ1B0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0OCw2ICs1NDUwLDcgQEAKIAkJ
CQkxQUFGMDg5QzE5MjY3RkM4MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCAqLywK
IAkJCQkxQTQ4MzJDQTFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICov
LAogCQkJCTFBNDgzMkM5MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLm1t
ICovLAorCQkJCTFBQTY1NEQwMUIxNEY3MTQwMEJGMUQzRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3Jk
UHJpdmF0ZS5oICovLAogCQkJCTFBNDgzMkNEMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVE
YXRhUmVjb3JkSW50ZXJuYWwuaCAqLywKIAkJCQk3NUE4RDJDNDE4N0NDRjlGMDBDMzlDOUUgLyog
V0tXZWJzaXRlRGF0YVN0b3JlLmggKi8sCiAJCQkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8q
IFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLywKQEAgLTgwODcsNiArODA5MCw3IEBACiAJCQkJMUNB
OEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JV
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQTY1NEQxMUIxNEY3MTQw
MEJGMUQzRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFBOUUxMDYxMzE1Q0NGQzAwOUU3MDMxIC8qIFdlYktleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjI4MEM1MTkxOTk0OUYwMDZBRDlG
OSAvKiBXZWJLaXQuaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="review"
          id="278696"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>