<?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>91617</bug_id>
          
          <creation_ts>2012-07-18 04:54:23 -0700</creation_ts>
          <short_desc>Web Inspector: count DOM storage cache memory for native snapshot</short_desc>
          <delta_ts>2012-08-01 06:55:31 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92740</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexei Filippov">alph</reporter>
          <assigned_to name="Alexei Filippov">alph</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>michaeln</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672251</commentid>
    <comment_count>0</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-18 04:54:23 -0700</bug_when>
    <thetext>EOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672281</commentid>
    <comment_count>1</comment_count>
      <attachid>152997</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-18 05:38:18 -0700</bug_when>
    <thetext>Created attachment 152997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672284</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 05:43:23 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674044</commentid>
    <comment_count>3</comment_count>
      <attachid>152997</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-19 16:30:25 -0700</bug_when>
    <thetext>Comment on attachment 152997
Patch

Looks OK to me, but I&apos;d like michaeln@ to review this as well since it pertains to DOMStorage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674337</commentid>
    <comment_count>4</comment_count>
      <attachid>152997</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-20 01:58:09 -0700</bug_when>
    <thetext>Comment on attachment 152997
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:639
&gt; +    size_t size = instrumentingAgents-&gt;inspectorDOMStorageAgent()-&gt;memoryBytesUsedByStorageCache();

You should never access agents in instrumentingAgents, only InspecorInstrumentation can do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674682</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-07-20 10:19:51 -0700</bug_when>
    <thetext>Thnx for cc&apos;ing me on the patch. Seems fine and good to me.

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

&gt; Source/Platform/chromium/public/WebStorageArea.h:88
&gt; +    virtual size_t memoryBytesUsedByCache() const { return 0; }

Do you have a CL for the chromium-side of this in the works?

&gt; Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:226
&gt; +        size += it-&gt;second-&gt;storageArea()-&gt;memoryBytesUsedByCache();

I see that it&apos;s not possible for multiple area&apos;s in this collection to refer to the same &lt;origin,type&gt; because &lt;host,type&gt; duplicates are detected and weeded out when the collection is added to. I was going to ask, &quot;can there be &lt;origin,type&gt; dups such that usage is over counted&quot;... but now i&apos;ll ask, why filter on &lt;host,type&gt; instead of &lt;origin,type&gt;... given that filtering i think usage can be under counted since if both https://host and http://host are in use, you&apos;ll only tally the usage of which ever was first added to the inspector agency.

&gt; Source/WebCore/storage/StorageAreaImpl.cpp:269
&gt; +    return 0;

Is the plan to return a non-zero value in a later patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675261</commentid>
    <comment_count>6</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-21 11:38:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Thnx for cc&apos;ing me on the patch. Seems fine and good to me.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152997&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebStorageArea.h:88
&gt; &gt; +    virtual size_t memoryBytesUsedByCache() const { return 0; }
&gt; 
&gt; Do you have a CL for the chromium-side of this in the works?

https://chromiumcodereview.appspot.com/10799008/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683088</commentid>
    <comment_count>7</comment_count>
      <attachid>155544</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-31 08:16:16 -0700</bug_when>
    <thetext>Created attachment 155544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683089</commentid>
    <comment_count>8</comment_count>
      <attachid>152997</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-31 08:16:58 -0700</bug_when>
    <thetext>Comment on attachment 152997
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:639
&gt;&gt; +    size_t size = instrumentingAgents-&gt;inspectorDOMStorageAgent()-&gt;memoryBytesUsedByStorageCache();
&gt; 
&gt; You should never access agents in instrumentingAgents, only InspecorInstrumentation can do that.

ok. fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683093</commentid>
    <comment_count>9</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-31 08:21:40 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Thnx for cc&apos;ing me on the patch. Seems fine and good to me.
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152997&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebStorageArea.h:88
&gt; &gt; +    virtual size_t memoryBytesUsedByCache() const { return 0; }
&gt; 
&gt; Do you have a CL for the chromium-side of this in the works?

https://chromiumcodereview.appspot.com/10799008/

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:226
&gt; &gt; +        size += it-&gt;second-&gt;storageArea()-&gt;memoryBytesUsedByCache();
&gt; 
&gt; I see that it&apos;s not possible for multiple area&apos;s in this collection to refer to the same &lt;origin,type&gt; because &lt;host,type&gt; duplicates are detected and weeded out when the collection is added to. I was going to ask, &quot;can there be &lt;origin,type&gt; dups such that usage is over counted&quot;... but now i&apos;ll ask, why filter on &lt;host,type&gt; instead of &lt;origin,type&gt;... given that filtering i think usage can be under counted since if both https://host and http://host are in use, you&apos;ll only tally the usage of which ever was first added to the inspector agency.

It should be fixed with https://bugs.webkit.org/show_bug.cgi?id=92740

&gt; 
&gt; &gt; Source/WebCore/storage/StorageAreaImpl.cpp:269
&gt; &gt; +    return 0;
&gt; 
&gt; Is the plan to return a non-zero value in a later patch?

Yep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683100</commentid>
    <comment_count>10</comment_count>
      <attachid>155544</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-31 08:25:40 -0700</bug_when>
    <thetext>Comment on attachment 155544
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:1254
&gt; +inline size_t InspectorInstrumentation::memoryBytesUsedByStorageCache(Page* page)

InspectorInstrumentation is common place for inspector hooks called from the rest of WebCore and you shouldn&apos;t go though it for the operations that can be performed in the inspector code solely. In your case you can pass InspectorDOMStorageAgent to the InspectorMemoryAgent constructor so that it can be accessed when the memory snapshot is requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683103</commentid>
    <comment_count>11</comment_count>
      <attachid>155544</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-07-31 08:26:28 -0700</bug_when>
    <thetext>Comment on attachment 155544
Patch

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

&gt; Source/Platform/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

Please add a description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683234</commentid>
    <comment_count>12</comment_count>
      <attachid>155579</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-31 10:13:59 -0700</bug_when>
    <thetext>Created attachment 155579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683235</commentid>
    <comment_count>13</comment_count>
      <attachid>155544</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-07-31 10:15:08 -0700</bug_when>
    <thetext>Comment on attachment 155544
Patch

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

&gt;&gt; Source/Platform/ChangeLog:6
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; Please add a description.

done

&gt;&gt; Source/WebCore/inspector/InspectorInstrumentation.h:1254
&gt;&gt; +inline size_t InspectorInstrumentation::memoryBytesUsedByStorageCache(Page* page)
&gt; 
&gt; InspectorInstrumentation is common place for inspector hooks called from the rest of WebCore and you shouldn&apos;t go though it for the operations that can be performed in the inspector code solely. In your case you can pass InspectorDOMStorageAgent to the InspectorMemoryAgent constructor so that it can be accessed when the memory snapshot is requested.

Thanks for the explanation. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684021</commentid>
    <comment_count>14</comment_count>
      <attachid>155764</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-08-01 02:33:34 -0700</bug_when>
    <thetext>Created attachment 155764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684024</commentid>
    <comment_count>15</comment_count>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-08-01 02:33:59 -0700</bug_when>
    <thetext>Rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684162</commentid>
    <comment_count>16</comment_count>
      <attachid>155764</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 06:55:24 -0700</bug_when>
    <thetext>Comment on attachment 155764
Patch

Clearing flags on attachment: 155764

Committed r124332: &lt;http://trac.webkit.org/changeset/124332&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684163</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 06:55:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152997</attachid>
            <date>2012-07-18 05:38:18 -0700</date>
            <delta_ts>2012-07-31 08:16:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91617-20120718163816.patch</filename>
            <type>text/plain</type>
            <size>12869</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxZmU5OWIxM2Q2ODkx
ZTg2MzBkOTU2MWI0YTQ0NThmMzUzMzI0NzYxLi5lZTBiMThmZWFhYzQ5ZTUxMmI0NjViMTYwMzZk
ZDVjOTQ1YWI4ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOCAg
QWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZvciBuYXRpdmUgc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKFdlYlN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUp
OgorCiAyMDEyLTA3LTEzICBUb255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZW1vdmUgV2lkZ2V0IGZyb20gc2NyZWVuQ29sb3JQcm9maWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTk5MjJiMTZlNTcxMzQ5NGM2M2FjYmU3ODkxZmEwY2U2NDRmM2IyNi4uYzE5NGEzZWE1NGI1OGI5
NTMwMmQ2MjZmMGFkN2Y2YWE3ODBjYTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDEyLTA3LTE4ICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjb3VudCBET00gc3RvcmFnZSBjYWNoZSBtZW1vcnkgZm9yIG5h
dGl2ZSBzbmFwc2hvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE2MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjptZW1vcnlCeXRlc1VzZWRCeVN0b3Jh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAg
IChNZW1vcnlCbG9ja05hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkdW1wRE9NU3RvcmFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9y
eUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUJs
b2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUpOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZUFyZWEuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYUltcGw6Om1lbW9y
eUJ5dGVzVXNlZEJ5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhSW1wbCk6CisKIDIwMTIt
MDctMTggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAg
ICAgIFtBTkdMRV0gT24gUVQsIHVzZSBCaXNvbiBhbmQgRmxleCBkdXJpbmcgQU5HTEUgYnVpbGQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTY1NGNjNjc1YzkxMjYwZWFlM2VhNzQ5ODRk
MzMyNzg2MGQ4MjI1OS4uMTIyZGJlZjljODllNGVlODI2Zjg5MmFlN2RmNTVhY2IyMjBkNzMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0xOCAg
QWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZvciBuYXRpdmUgc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
U3RvcmFnZUFyZWFQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5
OjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHNyYy9TdG9yYWdlQXJlYVByb3h5Lmg6CisgICAgICAgIChTdG9yYWdlQXJlYVByb3h5KToKKwog
MjAxMi0wNy0xOCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIERlY2ltYWw6OnRvU3RyaW5nIHNob3VsZCBub3Qgcm91bmQgaW50ZWdlciB2YWx1ZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaAppbmRl
eCBmNzVlNTZkNGE5YWU4YTk2NWM3Mjg2YzcyNzU2ZjM5MWJhY2VkZjM2Li4zYjFmOTY3YWQyMjNm
ZTBiYzA1M2I5ZTlmMDI0NGYwNzBmMGRkZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oCkBAIC04NCw2ICs4NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgY2xlYXIocGFnZVVybCwgdW51c2VkKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5z
IGFtb3VudCBvZiBieXRlcyBvY2N1cGllZCBieSB0aGUgc3RvcmFnZSBjYWNoZSBpbiBwaHlzaWNh
bCBtZW1vcnkuCisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKwogICAgIC8vIERFUFJFQ0FURUQgLSBiZWluZyByZXBsYWNlZCBi
eSB0aGUgYXN5bmMgdmFyaWFudHMgYWJvdmUgd2hpY2ggZG8gbm90IHJldHVybiBvbGRWYWx1ZXMg
b3IgYmxvY2sgdW50aWwgY29tcGxldGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbShjb25z
dCBXZWJTdHJpbmcmIGtleSwgY29uc3QgV2ViU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgV2ViVVJM
JiwgUmVzdWx0JiwgV2ViU3RyaW5nJiBvbGRWYWx1ZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlVSTCYgcGFnZVVybCwgV2Vi
U3RyaW5nJiBvbGRWYWx1ZSkgIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCA3MjZlZjcyYmI0M2EwMjc2NTA2
ZGRlZjY0ZjUxZDdiMGJmZGNlNWQ3Li5kYzI3OTNmNWY3NTI3MDgyZTAzMDI1ZWVkN2I5NzBmMDhi
MDgzNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMjE5LDYgKzIxOSwxNCBAQCB2b2lkIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6Y2xlYXJSZXNvdXJjZXMoKQogICAgIG1fcmVzb3VyY2VzLmNsZWFyKCk7
CiB9CiAKK3NpemVfdCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Om1lbW9yeUJ5dGVzVXNlZEJ5
U3RvcmFnZUNhY2hlKCkgY29uc3QKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgZm9yIChE
T01TdG9yYWdlUmVzb3VyY2VzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJl
Z2luKCk7IGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpOyArK2l0KQorICAgICAgICBzaXplICs9IGl0
LT5zZWNvbmQtPnN0b3JhZ2VBcmVhKCktPm1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKTsKKyAgICBy
ZXR1cm4gc2l6ZTsKK30KKwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBm
NjlmMDk3NDEyYzM3OWIyNmJmZmNhNDY5MThmOTUxNzY1YjJhNDRiLi42NjY0YThkYjViYzkyY2Qy
MjE5OTAzMDA5ZDQzMDIxY2RjMjhkMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC03OCw2ICs3OCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFVzZURPTVN0b3JhZ2UoU3RvcmFnZUFyZWEqLCBib29sIGlzTG9jYWxT
dG9yYWdlLCBGcmFtZSopOwogICAgIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3
VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKIAorICAgIC8vIENh
bGxlZCBmcm9tIEluc3BlY3Rvck1lbW9yeUFnZW50CisgICAgc2l6ZV90IG1lbW9yeUJ5dGVzVXNl
ZEJ5U3RvcmFnZUNhY2hlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRl
eCBiZjFkNWFlMWIwOGU0MmZhZTU5ZjY4ZDEyYTY0YzQ0MjYxZjY2MTg3Li5kNmM2ZjY2ZWZmYWEy
OTBlZjNiNTYyYjNkM2Q1Y2ViMWE0ZmM3MmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXJNYXAuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKQEAgLTk3LDYgKzk4LDggQEAgc3RhdGljIGNvbnN0
IGNoYXIgZG9tVHJlZURPTVtdID0gIkRPTVRyZWVET00iOwogc3RhdGljIGNvbnN0IGNoYXIgZG9t
VHJlZUNTU1tdID0gIkRPTVRyZWVDU1MiOwogc3RhdGljIGNvbnN0IGNoYXIgZG9tVHJlZUJpbmRp
bmdbXSA9ICJET01UcmVlQmluZGluZyI7CiBzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlTG9hZGVy
W10gPSAiRE9NVHJlZUxvYWRlciI7CisKK3N0YXRpYyBjb25zdCBjaGFyIGRvbVN0b3JhZ2VDYWNo
ZVtdID0gIkRPTVN0b3JhZ2VDYWNoZSI7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC02MzEsNiArNjM0
LDE0IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBqc0V4dGVybmFs
UmVzb3VyY2VzSW5mbyhWaXNpdGVkT2JqZWN0cyYKICAgICByZXR1cm4gZXh0ZXJuYWxSZXNvdXJj
ZXNTdGF0cy5yZWxlYXNlKCk7CiB9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkdW1wRE9NU3RvcmFnZUNhY2hlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCit7CisgICAgc2l6ZV90IHNpemUgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKS0+bWVtb3J5Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUo
KTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVN0b3JhZ2VDYWNoZSA9IElu
c3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9t
U3RvcmFnZUNhY2hlKTsKKyAgICBkb21TdG9yYWdlQ2FjaGUtPnNldFNpemUoc2l6ZSk7CisgICAg
cmV0dXJuIGRvbVN0b3JhZ2VDYWNoZTsKK30KKwogdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4mIHByb2Nlc3NNZW1vcnkpCiB7CiAgICAgcHJvY2Vzc01lbW9yeSA9IElu
c3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6cHJv
Y2Vzc1ByaXZhdGVNZW1vcnkpOwpAQCAtNjQ2LDYgKzY1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zCiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZG9tVHJlZUluZm8obV9wYWdlLCB2aXNpdGVk
T2JqZWN0cywgJmluc3BlY3RvckRhdGEpKTsgLy8gRklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdl
cz8KICAgICBjaGlsZHJlbi0+YWRkSXRlbShqc0V4dGVybmFsUmVzb3VyY2VzSW5mbyh2aXNpdGVk
T2JqZWN0cykpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRhdGEuZHVtcFN0YXRp
c3RpY3MoKSk7CisgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZHVtcERPTVN0b3JhZ2VDYWNoZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMpKTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGlsZHJlbihjaGls
ZHJlbik7CiAKICAgICBzaXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggOTFmM2ZiZWQ1MWJiNTZm
NWU3NzA1ODczMzhlYjA4MTQ2OTBmNTRlZS4uNzljNmViMzIyMDUwY2M1ODlmMWMyOTk2MGI0MDZk
Y2IxNjE1ODg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgKQEAgLTM4LDEwICszOCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIElu
c3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0
b3JTdGF0ZTsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKIGNsYXNzIFBhZ2U7CiAKQEAgLTYxLDcgKzYyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+JiBkb21Hcm91cHMsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzPiYgc3RyaW5ncyk7CiAgICAgdmly
dHVhbCB2b2lkIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2s+JiBwcm9jZXNzTWVtb3J5KTsKIAot
CiBwcml2YXRlOgogICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpOwog
ICAgIFBhZ2UqIG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKaW5kZXggYjgzNDcw
YTUzZDU0NGYzOWU0MzhiZTdmNmI4N2QxYjQ1MjQ5NGYwNC4uNDQ2ZjBmMmNkZTMxMDg0NjdlNmY5
MTE0MTY2YmU1YTBjMTYyOGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKQEAgLTIy
NCw2ICsyMjQsNyBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGllcy5faW5p
dGlhbGl6ZSA9IGZ1bmN0aW9uKCkKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgNTAlLCAgODAlKSIs
ICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHN0cmluZ3MiKTsKICAg
ICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JEYXRhIiwgIkluc3Bl
Y3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwgIDgwJSkiLCAiTWVtb3J5
Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOworICAgIGFkZEJsb2NrKCJoc2woIDM1
LCA2MCUsICA4MCUpIiwgIkRPTVN0b3JhZ2VDYWNoZSIsICJET00gc3RvcmFnZSBjYWNoZSIpOwog
ICAgIGFkZEJsb2NrKCJoc2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVBbGxvY2F0ZWQi
LCAiUmVuZGVyIHRyZWUiKTsKICAgICBhZGRCbG9jaygiaHNsKCA2MCwgNjAlLCAgODAlKSIsICJS
ZW5kZXJUcmVlVXNlZCIsICJSZW5kZXIgdHJlZSB1c2VkIik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VBcmVhLmgKaW5kZXggM2IyNDkyYTY3MTE0OWU1ZDQyZDM0NzkzNmQ2NGRiMjBmNzdj
NTAwNy4uMmVhOTExNzI1N2MwNGY3NjJmNTAyYzljZGIwMmEyYTQxYTFjZTQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAtNTYsNiArNTYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJ
bkZyYW1lKGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3QgPSAwOwogCisgICAgICAgIHZp
cnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdCA9IDA7CisKICAgICAg
ICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKaW5kZXggNjk0YTk3YTZiZmI1ODFkZjI0N2U5
NWY5ZDU4NjQyNTNmNDc3OGZkNy4uMzdjNGY1OTZjYTU3MDE3M2ExODIyOTc3N2VmM2E3MzM1MTQ2
MjUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAt
MjY0LDYgKzI2NCwxMSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6YmxvY2tVbnRpbEltcG9ydENv
bXBsZXRlKCkgY29uc3QKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPmJsb2NrVW50aWxJbXBv
cnRDb21wbGV0ZSgpOwogfQogCitzaXplX3QgU3RvcmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1Vz
ZWRCeUNhY2hlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBTdG9yYWdlQXJl
YUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkKIHsKICAgICBtX2FjY2Vzc0NvdW50Kys7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAppbmRleCBiZTA0NTFjODUwYmE0
MmM3MWNiYWQ4YTZkOWExOWJhMGQ4ZjA2MDdiLi4xYTFmNTk0Mjk4MWM2OTc0OWExNGJjZjg4M2Vh
MDIyNzIyMGQxYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
QEAgLTU0LDYgKzU0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFtZSogc291cmNl
RnJhbWUpIGNvbnN0OwogCisgICAgICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5
Q2FjaGUoKSBjb25zdDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291
bnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKaW5kZXgg
NTc2MTA1YzRkNTMyMmY5OGRhM2I5NzYzZjU2YWUyZTQ5NjhlYjA4Yy4uNzIyZTgwZjUzMmMxZGRl
NmIwYWI4Mjc0MmQyZWI3MDNjNmVjNzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKQEAgLTEyMCw2ICsxMjAsMTEgQEAgYm9vbCBTdG9y
YWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdlKEZyYW1lKiBmcmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9u
Q2xpZW50KCktPmFsbG93U3RvcmFnZSh3ZWJGcmFtZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0
b3JhZ2UpOwogfQogCitzaXplX3QgU3RvcmFnZUFyZWFQcm94eTo6bWVtb3J5Qnl0ZXNVc2VkQnlD
YWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUFyZWEtPm1lbW9yeUJ5dGVzVXNl
ZEJ5Q2FjaGUoKTsKK30KKwogdm9pZCBTdG9yYWdlQXJlYVByb3h5OjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3VwLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNv
dXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCmluZGV4IDgzZjJlYWUxNzNk
Mjc5YWY3ZTc0MzQ3ZjhjYjNmNmY4YTBlMWM0MmIuLmNhZTM1OTM1ODIyMDc5Y2MwMjI5OTY4OGQ5
M2FkNzJlYTM3YTcwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0
b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdl
QXJlYVByb3h5LmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJbkZyYW1lKGNvbnN0IEZyYW1lKikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2Fj
aGUoKSBjb25zdDsKKwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQo
CiAgICAgICAgICAgICBQYWdlR3JvdXAqLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKICAgICAgICAgICAgIFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgV2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291
cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJblByb2Nlc3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155544</attachid>
            <date>2012-07-31 08:16:16 -0700</date>
            <delta_ts>2012-07-31 10:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91617-20120731191559.patch</filename>
            <type>text/plain</type>
            <size>15618</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmYTU1ODUwNmNiYWFj
MzBiZDVmOWI1NzVkYjc4ZDQ0N2Y2YmZjNjBmLi4yMjlmN2U3M2I4ZTA1YTUwODQ0NzhiMWVkM2My
OTU3YjNlMDNhM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0xOCAg
QWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZvciBuYXRpdmUgc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJv
bWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKFdlYlN0b3JhZ2VBcmVhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUp
OgorCiAyMDEyLTA3LTMwICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEltcGxlbWVudCBkYXRhbGlzdCBVSSBmb3IgaW5wdXQgdHlwZSBjb2xvciBmb3IgQ2hy
b21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA0NDExMDI0MWQ1YzExODJhZjMxNTAzZmE2YWI5OWY1Mjg5NTVl
MTg3Li40ZTUwODQ2ZjNjNzhiOTIyNTMyMDA5ZGI0ZTBiMGQxNDU2NDcxYWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDctMTggIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvdW50IERPTSBzdG9yYWdl
IGNhY2hlIG1lbW9yeSBmb3IgbmF0aXZlIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Om1l
bW9yeUJ5dGVzVXNlZEJ5U3RvcmFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcDoKKyAgICAgICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmR1bXBET01TdG9yYWdlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGllcy5faW5pdGlhbGl6ZSk6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYS5oOgorICAgICAgICAoU3RvcmFnZUFyZWEpOgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VBcmVhSW1wbDo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorICAgICAgICAoU3RvcmFn
ZUFyZWFJbXBsKToKKwogMjAxMi0wNy0zMSAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdGFrZSBpbnRvIGFjY291bnQgdGhl
IHdob2xlIHNlY3VyaXR5IG9yaWdpbiBpbnN0ZWFkIG9mIGp1c3QgaG9zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA1ZDA3ODE3ZjBjMWQyYmQ5YjNhNTBhODE3Mzg4Nzc2ZmZiOTJhMzUz
Li4wOGNiMTU3NWE0NmM5YTM2YjQxN2M0MjkzNGY4ZDEzZTI4NjRiMDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTE4ICBBbGV4ZWkgRmlsaXBw
b3YgIDxhbGV4ZWlmQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb3Vu
dCBET00gc3RvcmFnZSBjYWNoZSBtZW1vcnkgZm9yIG5hdGl2ZSBzbmFwc2hvdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2MTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9TdG9yYWdlQXJlYVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VBcmVhUHJveHk6Om1lbW9yeUJ5dGVz
VXNlZEJ5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3JjL1N0b3JhZ2VB
cmVhUHJveHkuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhUHJveHkpOgorCiAyMDEyLTA3LTMxICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTI0MTc5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oCmluZGV4IGY3NWU1NmQ0YTlhZThhOTY1YzcyODZj
NzI3NTZmMzkxYmFjZWRmMzYuLjNiMWY5NjdhZDIyM2ZlMGJjMDUzYjllOWYwMjQ0ZjA3MGYwZGRl
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFn
ZUFyZWEuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VB
cmVhLmgKQEAgLTg0LDYgKzg0LDkgQEAgcHVibGljOgogICAgICAgICBjbGVhcihwYWdlVXJsLCB1
bnVzZWQpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgYW1vdW50IG9mIGJ5dGVzIG9jY3VwaWVk
IGJ5IHRoZSBzdG9yYWdlIGNhY2hlIGluIHBoeXNpY2FsIG1lbW9yeS4KKyAgICB2aXJ0dWFsIHNp
emVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgY29uc3QgeyByZXR1cm4gMDsgfQorCiAgICAg
Ly8gREVQUkVDQVRFRCAtIGJlaW5nIHJlcGxhY2VkIGJ5IHRoZSBhc3luYyB2YXJpYW50cyBhYm92
ZSB3aGljaCBkbyBub3QgcmV0dXJuIG9sZFZhbHVlcyBvciBibG9jayB1bnRpbCBjb21wbGV0aW9u
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBX
ZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmLCBSZXN1bHQmLCBXZWJTdHJpbmcmIG9s
ZFZhbHVlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSXRlbShjb25zdCBXZWJTdHJpbmcm
IGtleSwgY29uc3QgV2ViVVJMJiBwYWdlVXJsLCBXZWJTdHJpbmcmIG9sZFZhbHVlKSAgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCmluZGV4IGY2Mjc4NGUxOTYzZmU5NzE2NDgyNzQwYjlmNjNkYzBiMDg4YjFmYzkuLjkz
OTk5ZDFmYmIwYmE2ODE5NmUyZTU5YTg5N2JiOTBmYmZlNzhlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0y
MTQsNiArMjE0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjbGVhclJlc291
cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0KIAorc2l6ZV90IEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDo6bWVtb3J5Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUoKSBjb25zdAorewor
ICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMu
ZW5kKCk7ICsraXQpCisgICAgICAgIHNpemUgKz0gaXQtPnNlY29uZC0+c3RvcmFnZUFyZWEoKS0+
bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpOworICAgIHJldHVybiBzaXplOworfQorCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IGY2OWYwOTc0MTJjMzc5YjI2YmZmY2E0Njkx
OGY5NTE3NjViMmE0NGIuLjY2NjRhOGRiNWJjOTJjZDIyMTk5MDMwMDlkNDMwMjFjZGMyOGQwYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgKQEAgLTc4LDYgKzc4LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkVXNlRE9NU3Rv
cmFnZShTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UsIEZyYW1lKik7CiAgICAgdm9p
ZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3Vy
aXR5T3JpZ2luKiwgUGFnZSopOwogCisgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9yTWVtb3J5
QWdlbnQKKyAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggODM4ZTg2MjE5YzJiN2Y5
YWMwMGFmYmY4MTUxNzlmYTYxOGNiMjNjMi4uYzNhOWYwMjgzOTdiMzZjODNjMTRmYzQ5NmJmMjlh
Y2Y4MmFlMWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTk3NSw2ICs5NzUsMTIgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnQKICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5kaWREaXNwYXRjaERPTVN0b3Jh
Z2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFnZVR5cGUsIHNlY3VyaXR5T3Jp
Z2luLCBwYWdlKTsKIH0KIAorc2l6ZV90IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVtb3J5
Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCit7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoKTsK
KyAgICByZXR1cm4gZG9tU3RvcmFnZUFnZW50ID8gZG9tU3RvcmFnZUFnZW50LT5tZW1vcnlCeXRl
c1VzZWRCeVN0b3JhZ2VDYWNoZSgpIDogMDsKK30KKwogI2lmIEVOQUJMRShXT1JLRVJTKQogYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAppbmRleCA2MTQ3Zjc3ZGVmODMyNDc0NmI5YjZhN2E5ZDQxYjY5YTNlYTEzMzNlLi40ZDQ1MDI1
MmM2M2I0MTlkZGVjZGFmYzU4ZTZmN2E5YmQ3ZTg2NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yMjEsNiArMjIx
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGlkVXNlRE9NU3RvcmFnZShQYWdlKiwg
U3RvcmFnZUFyZWEqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwogICAgIHN0YXRpYyB2
b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2Vj
dXJpdHlPcmlnaW4qLCBQYWdlKik7CisgICAgc3RhdGljIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRC
eVN0b3JhZ2VDYWNoZShQYWdlKik7CiAKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwpAQCAtMzkzLDYgKzM5NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBk
aWRVc2VET01TdG9yYWdlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3RvcmFnZUFyZWEqLCBi
b29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3Jh
Z2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBhZ2UqKTsKKyAgICBzdGF0aWMgc2l6ZV90IG1lbW9y
eUJ5dGVzVXNlZEJ5U3RvcmFnZUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAKICNp
ZiBFTkFCTEUoV09SS0VSUykKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdv
cmtlck9uU3RhcnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTEyNDksNiArMTI1MSwx
MiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9N
U3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYgawogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Ip
CiB9CiAKK2lubGluZSBzaXplX3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptZW1vcnlCeXRl
c1VzZWRCeVN0b3JhZ2VDYWNoZShQYWdlKiBwYWdlKQoreworICAgIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdl
KTsKKyAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50cyA/IG1lbW9yeUJ5dGVzVXNlZEJ5U3Rv
cmFnZUNhY2hlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKSA6IDA7Cit9CisKICNpZiBFTkFCTEUo
V09SS0VSUykKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1
c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcAppbmRleCAxM2MwODFlODZhMWY0MjYyOWE4OTMzODcyMGZjNDFiNTc0MWIzZmMyLi4zYmE4
ZGNlNjYyYjBkOThiOTU4M2JjNjQ1ZmI2NGZkNmNkZjZhODRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyTWFwLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtOTcsNiAr
OTgsOCBAQCBzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7CiBz
dGF0aWMgY29uc3QgY2hhciBkb21UcmVlQ1NTW10gPSAiRE9NVHJlZUNTUyI7CiBzdGF0aWMgY29u
c3QgY2hhciBkb21UcmVlQmluZGluZ1tdID0gIkRPTVRyZWVCaW5kaW5nIjsKIHN0YXRpYyBjb25z
dCBjaGFyIGRvbVRyZWVMb2FkZXJbXSA9ICJET01UcmVlTG9hZGVyIjsKKworc3RhdGljIGNvbnN0
IGNoYXIgZG9tU3RvcmFnZUNhY2hlW10gPSAiRE9NU3RvcmFnZUNhY2hlIjsKIH0KIAogbmFtZXNw
YWNlIHsKQEAgLTYwNyw2ICs2MTAsMTQgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVt
b3J5QmxvY2s+IGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKFZpc2l0ZWRPYmplY3RzJgogICAgIHJl
dHVybiBleHRlcm5hbFJlc291cmNlc1N0YXRzLnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGR1bXBET01TdG9yYWdlQ2FjaGUoUGFnZSogcGFn
ZSkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVtb3J5
Qnl0ZXNVc2VkQnlTdG9yYWdlQ2FjaGUocGFnZSk7CisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkb21TdG9yYWdlQ2FjaGUgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCku
c2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OmRvbVN0b3JhZ2VDYWNoZSk7CisgICAgZG9tU3RvcmFn
ZUNhY2hlLT5zZXRTaXplKHNpemUpOworICAgIHJldHVybiBkb21TdG9yYWdlQ2FjaGU7Cit9CisK
IHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24o
RXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+JiBwcm9jZXNzTWVtb3J5
KQogewogICAgIHByb2Nlc3NNZW1vcnkgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCku
c2V0TmFtZShNZW1vcnlCbG9ja05hbWU6OnByb2Nlc3NQcml2YXRlTWVtb3J5KTsKQEAgLTYyMiw2
ICs2MzMsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlz
dHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIGNoaWxkcmVuLT5hZGRJdGVt
KGRvbVRyZWVJbmZvKG1fcGFnZSwgdmlzaXRlZE9iamVjdHMsICZpbnNwZWN0b3JEYXRhKSk7IC8v
IEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oanNF
eHRlcm5hbFJlc291cmNlc0luZm8odmlzaXRlZE9iamVjdHMpKTsKICAgICBjaGlsZHJlbi0+YWRk
SXRlbShpbnNwZWN0b3JEYXRhLmR1bXBTdGF0aXN0aWNzKCkpOworICAgIGNoaWxkcmVuLT5hZGRJ
dGVtKGR1bXBET01TdG9yYWdlQ2FjaGUobV9wYWdlKSk7CiAgICAgcHJvY2Vzc01lbW9yeS0+c2V0
Q2hpbGRyZW4oY2hpbGRyZW4pOwogCiAgICAgc2l6ZV90IHByaXZhdGVCeXRlcyA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDkx
ZjNmYmVkNTFiYjU2ZjVlNzcwNTg3MzM4ZWIwODE0NjkwZjU0ZWUuLjc5YzZlYjMyMjA1MGNjNTg5
ZjFjMjk5NjBiNDA2ZGNiMTYxNTg4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC0zOCwxMCArMzgsMTEgQEAKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yQXJy
YXk7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwog
Y2xhc3MgSW5zcGVjdG9yU3RhdGU7Ci1jbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBQYWdlOwogCkBAIC02MSw3ICs2Miw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3Jv
dXBzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmlu
Z3MpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrPiYgcHJvY2Vz
c01lbW9yeSk7CiAKLQogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKiwgSW5zcGVjdG9yRE9NQWdlbnQq
IGRvbUFnZW50KTsKICAgICBQYWdlKiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3Lmpz
CmluZGV4IDkyZTI1ZGVlOTQ2NTNjMDIwMjJlMGViMTcyZjFhYTI3MzA5YzI2NDUuLjkxYWUxNDJh
YjE2NTA1OWQzODk2NWY2YzNiYWUzNDBmMDJjYTFlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzCkBAIC0yMjQsNiArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1By
b3BlcnRpZXMuX2luaXRpYWxpemUgPSBmdW5jdGlvbigpCiAgICAgYWRkQmxvY2soImhzbCggOTAs
IDUwJSwgIDgwJSkiLCAiSlNFeHRlcm5hbFN0cmluZ3MiLCAiSmF2YVNjcmlwdCBleHRlcm5hbCBz
dHJpbmdzIik7CiAgICAgYWRkQmxvY2soImhzbCgyMTAsIDYwJSwgIDgwJSkiLCAiSW5zcGVjdG9y
RGF0YSIsICJJbnNwZWN0b3IgZGF0YSIpOwogICAgIGFkZEJsb2NrKCJoc2woIDMwLCA2MCUsICA4
MCUpIiwgIk1lbW9yeUNhY2hlIiwgIk1lbW9yeSBjYWNoZSByZXNvdXJjZXMiKTsKKyAgICBhZGRC
bG9jaygiaHNsKCAzNSwgNjAlLCAgODAlKSIsICJET01TdG9yYWdlQ2FjaGUiLCAiRE9NIHN0b3Jh
Z2UgY2FjaGUiKTsKICAgICBhZGRCbG9jaygiaHNsKCA2MCwgNjAlLCAgODAlKSIsICJSZW5kZXJU
cmVlQWxsb2NhdGVkIiwgIlJlbmRlciB0cmVlIik7CiAgICAgYWRkQmxvY2soImhzbCggNjAsIDYw
JSwgIDgwJSkiLCAiUmVuZGVyVHJlZVVzZWQiLCAiUmVuZGVyIHRyZWUgdXNlZCIpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCmluZGV4IDNiMjQ5MmE2NzExNDllNWQ0MmQzNDc5
MzZkNjRkYjIwZjc3YzUwMDcuLjJlYTkxMTcyNTdjMDRmNzYyZjUwMmM5Y2RiMDJhMmE0MWExY2U0
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKQEAgLTU2LDYgKzU2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZEJ5UHJp
dmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0ID0gMDsK
IAorICAgICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgY29uc3Qg
PSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIHsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDY5NGE5N2E2
YmZiNTgxZGYyNDdlOTVmOWQ1ODY0MjUzZjQ3NzhmZDcuLjM3YzRmNTk2Y2E1NzAxNzNhMTgyMjk3
NzdlZjNhNzMzNTE0NjI1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHAKQEAgLTI2NCw2ICsyNjQsMTEgQEAgdm9pZCBTdG9yYWdlQXJlYUltcGw6OmJsb2Nr
VW50aWxJbXBvcnRDb21wbGV0ZSgpIGNvbnN0CiAgICAgICAgIG1fc3RvcmFnZUFyZWFTeW5jLT5i
bG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKTsKIH0KIAorc2l6ZV90IFN0b3JhZ2VBcmVhSW1wbDo6
bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIHZv
aWQgU3RvcmFnZUFyZWFJbXBsOjppbmNyZW1lbnRBY2Nlc3NDb3VudCgpCiB7CiAgICAgbV9hY2Nl
c3NDb3VudCsrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXgg
NGM5MGU1YmMwM2VkNTQ2NzRkNGZlODM0Zjg1N2E2MTBhMjg4NWI3NS4uMWYyYjdlMDgwMjQyMDZk
YjMyZWVhZGI5YjhjZTlhNTQ0ZTRkZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oCkBAIC01NCw2ICs1NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWRCeVByaXZhdGVCcm93c2luZ0luRnJhbWUoY29uc3Qg
RnJhbWUqIHNvdXJjZUZyYW1lKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIHNpemVfdCBtZW1v
cnlCeXRlc1VzZWRCeUNhY2hlKCkgY29uc3Q7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGluY3Jl
bWVudEFjY2Vzc0NvdW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3ND
b3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdl
QXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJv
eHkuY3BwCmluZGV4IDU3NjEwNWM0ZDUzMjJmOThkYTNiOTc2M2Y1NmFlMmU0OTY4ZWIwOGMuLjcy
MmU4MGY1MzJjMWRkZTZiMGFiODI3NDJkMmViNzAzYzZlYzcxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwCkBAIC0xMjAsNiArMTIwLDEx
IEBAIGJvb2wgU3RvcmFnZUFyZWFQcm94eTo6Y2FuQWNjZXNzU3RvcmFnZShGcmFtZSogZnJhbWUp
IGNvbnN0CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd1N0b3JhZ2Uod2ViRnJhbWUsIG1fc3RvcmFnZVR5
cGUgPT0gTG9jYWxTdG9yYWdlKTsKIH0KIAorc2l6ZV90IFN0b3JhZ2VBcmVhUHJveHk6Om1lbW9y
eUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0b3JhZ2VBcmVhLT5t
ZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCk7Cit9CisKIHZvaWQgU3RvcmFnZUFyZWFQcm94eTo6ZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudChQYWdlR3JvdXAqIHBhZ2VHcm91cCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBXZWJLaXQ6OldlYlN0
b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZEluUHJvY2VzcykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAppbmRl
eCA4M2YyZWFlMTczZDI3OWFmN2U3NDM0N2Y4Y2IzZjZmOGEwZTFjNDJiLi5jYWUzNTkzNTgyMjA3
OWNjMDIyOTk2ODhkOTNhZDcyZWEzN2E3MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nSW5GcmFtZShjb25zdCBGcmFt
ZSopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCkgY29uc3Q7CisKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KAogICAgICAgICAgICAgUGFnZUdyb3VwKiwgY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCiAgICAgICAg
ICAgICBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHBhZ2VVUkwsIFdlYktpdDo6V2ViU3Rv
cmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5hdGVkSW5Qcm9jZXNzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155579</attachid>
            <date>2012-07-31 10:13:59 -0700</date>
            <delta_ts>2012-08-01 02:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91617-20120731211342.patch</filename>
            <type>text/plain</type>
            <size>16031</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmYTU1ODUwNmNiYWFj
MzBiZDVmOWI1NzVkYjc4ZDQ0N2Y2YmZjNjBmLi45ZGZiZTFiY2I0YjU1NTlmZGFkYTYyOWVlZTJl
Y2VlMzU0NTI4NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0zMSAg
QWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZvciBuYXRpdmUgc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1l
bW9yeSBzaXplIHVzZWQgZm9yIERPTSBzdG9yYWdlIGNhY2hlIHJlcG9ydGluZyBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaDoKKyAgICAgICAg
KFdlYlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6Om1lbW9y
eUJ5dGVzVXNlZEJ5Q2FjaGUpOgorCiAyMDEyLTA3LTMwICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBkYXRhbGlzdCBVSSBmb3IgaW5wdXQg
dHlwZSBjb2xvciBmb3IgQ2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZTYyYjc1ZmViOTlkMzdjZDll
NzA0ZDZlNDkwYTQyZjkxYmJjYmQ2Li40YzFjOWFjNjM4OGZiMWZhNGNkYzAzMzRiYTcyMzMzMTBh
OWEzMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTItMDctMzEgIEFsZXhlaSBG
aWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGNvdW50IERPTSBzdG9yYWdlIGNhY2hlIG1lbW9yeSBmb3IgbmF0aXZlIHNuYXBzaG90CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZW1vcnkgc2l6
ZSB1c2VkIGZvciBET00gc3RvcmFnZSBjYWNoZSByZXBvcnRpbmcgaW50ZXJmYWNlLgorICAgICAg
ICBSZXBvcnQgaXQgdG8gdGhlIG5hdGl2ZSBtZW1vcnkgc25hcHNob3QgaW5zdHJ1bWVudGF0aW9u
IGZyYW1ld29yay4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjptZW1vcnlCeXRl
c1VzZWRCeVN0b3JhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpkdW1wRE9NU3RvcmFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUp
OgorICAgICAgICAoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUpOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJl
YUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhSW1w
bCk6CisKIDIwMTItMDctMzEgIEpvZSBNYXNvbiAgPGptYXNvbkByaW0uY29tPgogCiAgICAgICAg
IFtCbGFja0JlcnJ5XSBTdXBwb3J0IE5lZ290aWF0ZSBhdXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDVkMDc4MTdmMGMxZDJiZDliM2E1MGE4MTczODg3NzZmZmI5MmEzNTMuLmJmOWMz
M2MxMDkzMzA3Y2YyZDBmNmQ5ZjgyMjRhYWQyOTBmZDg2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMzEgIEFsZXhlaSBGaWxpcHBvdiAgPGFs
ZXhlaWZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvdW50IERPTSBz
dG9yYWdlIGNhY2hlIG1lbW9yeSBmb3IgbmF0aXZlIHNuYXBzaG90CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZW1vcnkgc2l6ZSB1c2VkIGZvciBE
T00gc3RvcmFnZSBjYWNoZSByZXBvcnRpbmcgaW50ZXJmYWNlLgorCisgICAgICAgICogc3JjL1N0
b3JhZ2VBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUFyZWFQcm94eTo6
bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBz
cmMvU3RvcmFnZUFyZWFQcm94eS5oOgorICAgICAgICAoU3RvcmFnZUFyZWFQcm94eSk6CisKIDIw
MTItMDctMzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjQxNzkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgKaW5kZXggZjc1ZTU2ZDRhOWFl
OGE5NjVjNzI4NmM3Mjc1NmYzOTFiYWNlZGYzNi4uM2IxZjk2N2FkMjIzZmUwYmMwNTNiOWU5ZjAy
NDRmMDcwZjBkZGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU3RvcmFnZUFyZWEuaApAQCAtODQsNiArODQsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFy
KHBhZ2VVcmwsIHVudXNlZCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyBhbW91bnQgb2YgYnl0
ZXMgb2NjdXBpZWQgYnkgdGhlIHN0b3JhZ2UgY2FjaGUgaW4gcGh5c2ljYWwgbWVtb3J5LgorICAg
IHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdCB7IHJldHVybiAw
OyB9CisKICAgICAvLyBERVBSRUNBVEVEIC0gYmVpbmcgcmVwbGFjZWQgYnkgdGhlIGFzeW5jIHZh
cmlhbnRzIGFib3ZlIHdoaWNoIGRvIG5vdCByZXR1cm4gb2xkVmFsdWVzIG9yIGJsb2NrIHVudGls
IGNvbXBsZXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBr
ZXksIGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYsIFJlc3VsdCYsIFdl
YlN0cmluZyYgb2xkVmFsdWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0
IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJVUkwmIHBhZ2VVcmwsIFdlYlN0cmluZyYgb2xkVmFs
dWUpICB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBhYjZlMzc3YzE1Y2FmODUwNDFhODBkNWUzNDUwNjM2NzAzZjA1YzViLi5l
MjZhMWMwNGI1OTU1ZDE5ZTU0MmIzYzZlNjgzOTZhY2VjNjQ2ODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTQsNyArMTE0
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAg
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdl
bnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxl
YXNlKCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRl
KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdlLCBtX2Rv
bUFnZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVh
dGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UsIGRv
bVN0b3JhZ2VBZ2VudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3Rh
dGUuZ2V0KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0b3IsCiAgICAgICAg
aW5zcGVjdG9yQ2xpZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0
ZS5nZXQoKSwgcGFnZUFnZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGY2Mjc4NGUxOTYzZmU5NzE2NDgy
NzQwYjlmNjNkYzBiMDg4YjFmYzkuLjkzOTk5ZDFmYmIwYmE2ODE5NmUyZTU5YTg5N2JiOTBmYmZl
NzhlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC0yMTQsNiArMjE0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50OjpjbGVhclJlc291cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsK
IH0KIAorc2l6ZV90IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6bWVtb3J5Qnl0ZXNVc2VkQnlT
dG9yYWdlQ2FjaGUoKSBjb25zdAoreworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBmb3IgKERP
TVN0b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpCisgICAgICAgIHNpemUgKz0gaXQt
PnNlY29uZC0+c3RvcmFnZUFyZWEoKS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpOworICAgIHJl
dHVybiBzaXplOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IGY2
OWYwOTc0MTJjMzc5YjI2YmZmY2E0NjkxOGY5NTE3NjViMmE0NGIuLjY2NjRhOGRiNWJjOTJjZDIy
MTk5MDMwMDlkNDMwMjFjZGMyOGQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTc4LDYgKzc4LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkVXNlRE9NU3RvcmFnZShTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0
b3JhZ2UsIEZyYW1lKik7CiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOwogCisgICAgLy8gQ2Fs
bGVkIGZyb20gSW5zcGVjdG9yTWVtb3J5QWdlbnQKKyAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2Vk
QnlTdG9yYWdlQ2FjaGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4
IDEzYzA4MWU4NmExZjQyNjI5YTg5MzM4NzIwZmM0MWI1NzQxYjNmYzIuLmFiMzUwNWM2YjczMTM0
MzA3ZjJlYWFjMjA1YmQwMDBlYzk2N2NlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1hcC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtOTcsNiArOTgsOCBAQCBzdGF0aWMgY29uc3Qg
Y2hhciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7CiBzdGF0aWMgY29uc3QgY2hhciBkb21U
cmVlQ1NTW10gPSAiRE9NVHJlZUNTUyI7CiBzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlQmluZGlu
Z1tdID0gIkRPTVRyZWVCaW5kaW5nIjsKIHN0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVMb2FkZXJb
XSA9ICJET01UcmVlTG9hZGVyIjsKKworc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUNhY2hl
W10gPSAiRE9NU3RvcmFnZUNhY2hlIjsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTYwNyw2ICs2MTAs
MTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGpzRXh0ZXJuYWxS
ZXNvdXJjZXNJbmZvKFZpc2l0ZWRPYmplY3RzJgogICAgIHJldHVybiBleHRlcm5hbFJlc291cmNl
c1N0YXRzLnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IGR1bXBET01TdG9yYWdlQ2FjaGUoc2l6ZV90IGNhY2hlU2l6ZSkKK3sKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVN0b3JhZ2VDYWNoZSA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tU3RvcmFnZUNhY2hl
KTsKKyAgICBkb21TdG9yYWdlQ2FjaGUtPnNldFNpemUoY2FjaGVTaXplKTsKKyAgICByZXR1cm4g
ZG9tU3RvcmFnZUNhY2hlOworfQorCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9j
ZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKICAgICBwcm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9y
TWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpwcm9jZXNzUHJp
dmF0ZU1lbW9yeSk7CkBAIC02MjIsNiArNjMyLDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMK
ICAgICBjaGlsZHJlbi0+YWRkSXRlbShkb21UcmVlSW5mbyhtX3BhZ2UsIHZpc2l0ZWRPYmplY3Rz
LCAmaW5zcGVjdG9yRGF0YSkpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogICAg
IGNoaWxkcmVuLT5hZGRJdGVtKGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKHZpc2l0ZWRPYmplY3Rz
KSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YS5kdW1wU3RhdGlzdGljcygp
KTsKKyAgICBjaGlsZHJlbi0+YWRkSXRlbShkdW1wRE9NU3RvcmFnZUNhY2hlKG1fZG9tU3RvcmFn
ZUFnZW50LT5tZW1vcnlCeXRlc1VzZWRCeVN0b3JhZ2VDYWNoZSgpKSk7CiAgICAgcHJvY2Vzc01l
bW9yeS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwogCiAgICAgc2l6ZV90IHByaXZhdGVCeXRlcyA9
IDA7CkBAIC02MzAsOSArNjQxLDEwIEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFBy
b2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgcHJv
Y2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMpOwogfQogCi1JbnNwZWN0b3JNZW1vcnlB
Z2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JE
T01BZ2VudCopCitJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0
YXRlLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2Vu
dCkKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD4oIk1lbW9y
eSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQogICAgICwgbV9wYWdlKHBhZ2UpCisgICAg
LCBtX2RvbVN0b3JhZ2VBZ2VudChkb21TdG9yYWdlQWdlbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggOTFmM2ZiZWQ1
MWJiNTZmNWU3NzA1ODczMzhlYjA4MTQ2OTBmNTRlZS4uM2I2NDg2NDJlYjkwZThlNTEwN2FhMGMz
NjJhOGE2MTE2NGU4ZThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmgKQEAgLTM4LDEwICszOCw5IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNs
YXNzIEluc3BlY3RvckZyb250ZW5kOworCitjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5z
dHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiAKQEAgLTUyLDE5ICs1MSwxOSBAQCBjbGFz
cyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yTWVtb3J5QWdlbnQ+LCBwdQogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxJ
bnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+ID4gSW5zcGVjdG9yQWdlbnRzOwogCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2Uq
IHBhZ2UsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSwgSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMs
IHN0YXRlLCBwYWdlLCBkb21BZ2VudCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElu
c3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdlLCBkb21T
dG9yYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+JiBk
b21Hcm91cHMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzPiYg
c3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24o
RXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5QmxvY2s+JiBw
cm9jZXNzTWVtb3J5KTsKIAotCiBwcml2YXRlOgotICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQpOworICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQq
KTsKICAgICBQYWdlKiBtX3BhZ2U7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2Rv
bVN0b3JhZ2VBZ2VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RW
aWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlT
bmFwc2hvdFZpZXcuanMKaW5kZXggOTJlMjVkZWU5NDY1M2MwMjAyMmUwZWIxNzJmMWFhMjczMDlj
MjY0NS4uOTFhZTE0MmFiMTY1MDU5ZDM4OTY1ZjZjM2JhZTM0MGYwMmNhMWUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hv
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVN
ZW1vcnlTbmFwc2hvdFZpZXcuanMKQEAgLTIyNCw2ICsyMjQsNyBAQCBXZWJJbnNwZWN0b3IuTWVt
b3J5QmxvY2tWaWV3UHJvcGVydGllcy5faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkKICAgICBhZGRC
bG9jaygiaHNsKCA5MCwgNTAlLCAgODAlKSIsICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2Ny
aXB0IGV4dGVybmFsIHN0cmluZ3MiKTsKICAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAl
KSIsICJJbnNwZWN0b3JEYXRhIiwgIkluc3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhz
bCggMzAsIDYwJSwgIDgwJSkiLCAiTWVtb3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNl
cyIpOworICAgIGFkZEJsb2NrKCJoc2woIDM1LCA2MCUsICA4MCUpIiwgIkRPTVN0b3JhZ2VDYWNo
ZSIsICJET00gc3RvcmFnZSBjYWNoZSIpOwogICAgIGFkZEJsb2NrKCJoc2woIDYwLCA2MCUsICA4
MCUpIiwgIlJlbmRlclRyZWVBbGxvY2F0ZWQiLCAiUmVuZGVyIHRyZWUiKTsKICAgICBhZGRCbG9j
aygiaHNsKCA2MCwgNjAlLCAgODAlKSIsICJSZW5kZXJUcmVlVXNlZCIsICJSZW5kZXIgdHJlZSB1
c2VkIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKaW5kZXggM2IyNDkyYTY3
MTE0OWU1ZDQyZDM0NzkzNmQ2NGRiMjBmNzdjNTAwNy4uMmVhOTExNzI1N2MwNGY3NjJmNTAyYzlj
ZGIwMmEyYTQxYTFjZTQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaApAQCAt
NTYsNiArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBib29s
IGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJbkZyYW1lKGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFt
ZSkgY29uc3QgPSAwOwogCisgICAgICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5
Q2FjaGUoKSBjb25zdCA9IDA7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjY2Vz
c0NvdW50KCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgp
IHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
aW5kZXggNjk0YTk3YTZiZmI1ODFkZjI0N2U5NWY5ZDU4NjQyNTNmNDc3OGZkNy4uMzdjNGY1OTZj
YTU3MDE3M2ExODIyOTc3N2VmM2E3MzM1MTQ2MjUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmNwcApAQCAtMjY0LDYgKzI2NCwxMSBAQCB2b2lkIFN0b3JhZ2VB
cmVhSW1wbDo6YmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCkgY29uc3QKICAgICAgICAgbV9zdG9y
YWdlQXJlYVN5bmMtPmJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpOwogfQogCitzaXplX3QgU3Rv
cmFnZUFyZWFJbXBsOjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gMDsKK30KKwogdm9pZCBTdG9yYWdlQXJlYUltcGw6OmluY3JlbWVudEFjY2Vzc0NvdW50KCkK
IHsKICAgICBtX2FjY2Vzc0NvdW50Kys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VBcmVhSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJl
YUltcGwuaAppbmRleCA0YzkwZTViYzAzZWQ1NDY3NGQ0ZmU4MzRmODU3YTYxMGEyODg1Yjc1Li4x
ZjJiN2UwODAyNDIwNmRiMzJlZWFkYjliOGNlOWE1NDRlNGRkNzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKQEAgLTU0LDYgKzU0LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBkaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5n
SW5GcmFtZShjb25zdCBGcmFtZSogc291cmNlRnJhbWUpIGNvbnN0OwogCisgICAgICAgIHZpcnR1
YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdDsKKwogICAgICAgICB2aXJ0
dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291bnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRl
Y3JlbWVudEFjY2Vzc0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
U3RvcmFnZUFyZWFQcm94eS5jcHAKaW5kZXggNTc2MTA1YzRkNTMyMmY5OGRhM2I5NzYzZjU2YWUy
ZTQ5NjhlYjA4Yy4uNzIyZTgwZjUzMmMxZGRlNmIwYWI4Mjc0MmQyZWI3MDNjNmVjNzE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5jcHAKQEAg
LTEyMCw2ICsxMjAsMTEgQEAgYm9vbCBTdG9yYWdlQXJlYVByb3h5OjpjYW5BY2Nlc3NTdG9yYWdl
KEZyYW1lKiBmcmFtZSkgY29uc3QKICAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGll
bnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93U3RvcmFnZSh3ZWJGcmFt
ZSwgbV9zdG9yYWdlVHlwZSA9PSBMb2NhbFN0b3JhZ2UpOwogfQogCitzaXplX3QgU3RvcmFnZUFy
ZWFQcm94eTo6bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c3RvcmFnZUFyZWEtPm1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKTsKK30KKwogdm9pZCBTdG9yYWdl
QXJlYVByb3h5OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KFBhZ2VHcm91cCogcGFnZUdyb3Vw
LCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5n
JiBuZXdWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHBhZ2VVUkws
IFdlYktpdDo6V2ViU3RvcmFnZUFyZWEqIHNvdXJjZUFyZWFJbnN0YW5jZSwgYm9vbCBvcmlnaW5h
dGVkSW5Qcm9jZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
U3RvcmFnZUFyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFy
ZWFQcm94eS5oCmluZGV4IDgzZjJlYWUxNzNkMjc5YWY3ZTc0MzQ3ZjhjYjNmNmY4YTBlMWM0MmIu
LmNhZTM1OTM1ODIyMDc5Y2MwMjI5OTY4OGQ5M2FkNzJlYTM3YTcwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmgKQEAgLTU4LDYgKzU4LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJbkZy
YW1lKGNvbnN0IEZyYW1lKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwg
c2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdDsKKwogICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoCiAgICAgICAgICAgICBQYWdlR3JvdXAqLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwKICAgICAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYgcGFnZVVSTCwg
V2ViS2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0
ZWRJblByb2Nlc3MpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155764</attachid>
            <date>2012-08-01 02:33:34 -0700</date>
            <delta_ts>2012-08-01 06:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91617-20120801133315.patch</filename>
            <type>text/plain</type>
            <size>16084</size>
            <attacher name="Alexei Filippov">alph</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1NDljYTUzOTI0NTNj
YTY4Zjk3ZDliMjlmMWIwYWQ3ZTIzN2UwMGRkLi4xMjU3ZjUxYTZjMjc0YzgxZTk1YWYwN2JjMzhh
NDI4YTdlN2VhMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0zMSAg
QWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZvciBuYXRpdmUgc25hcHNo
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1l
bW9yeSBzaXplIHVzZWQgZm9yIERPTSBzdG9yYWdlIGNhY2hlIHJlcG9ydGluZyBpbnRlcmZhY2Uu
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaDoKKyAgICAgICAg
KFdlYlN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZUFyZWE6Om1lbW9y
eUJ5dGVzVXNlZEJ5Q2FjaGUpOgorCiAyMDEyLTA3LTMxICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJz
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWxsb3cgQXVkaW9EZXN0aW5hdGlvbiB0byBzdXBwb3J0
IGxvY2FsL2xpdmUgYXVkaW8gaW5wdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNzc2NDc2NjE3Yzc4NWRlNmE3
NzlhMDAwNjAxOGRjNGJmNjJiOWJlLi4yNTIwNzkwMDMxNDk4OTIxMzZmNWIzNjhmOTgyMmUyNzdi
OWNhZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTItMDctMzEgIEFsZXhlaSBG
aWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGNvdW50IERPTSBzdG9yYWdlIGNhY2hlIG1lbW9yeSBmb3IgbmF0aXZlIHNuYXBzaG90CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTYxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtZW1vcnkgc2l6
ZSB1c2VkIGZvciBET00gc3RvcmFnZSBjYWNoZSByZXBvcnRpbmcgaW50ZXJmYWNlLgorICAgICAg
ICBSZXBvcnQgaXQgdG8gdGhlIG5hdGl2ZSBtZW1vcnkgc25hcHNob3QgaW5zdHJ1bWVudGF0aW9u
IGZyYW1ld29yay4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRy
b2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjptZW1vcnlCeXRl
c1VzZWRCeVN0b3JhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHA6CisgICAgICAgIChNZW1vcnlCbG9ja05hbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpkdW1wRE9NU3RvcmFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUp
OgorICAgICAgICAoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUpOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJl
YUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAgICAgICAgKFN0b3JhZ2VBcmVhSW1w
bCk6CisKIDIwMTItMDgtMDEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsrIGJ1aWxkIHdpdGggcmVjZW50IHZl
cnNpb24gb2YgR1RLKy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTljOTVjZTMyYjRk
N2Q2Nzg4MjhjMDdkYWNkNjI3OTk4ZDUwZDYwZS4uNTMxODNkNTA1NTNjYTIwZGIwNGQyZDczM2E4
Zjc2OTc5NzliN2QyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxMi0wNy0zMSAgQWxleGVpIEZpbGlwcG92ICA8YWxleGVpZkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogY291bnQgRE9NIHN0b3JhZ2UgY2FjaGUgbWVtb3J5IGZv
ciBuYXRpdmUgc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxNjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG1lbW9yeSBzaXplIHVzZWQgZm9yIERPTSBzdG9yYWdlIGNhY2hlIHJlcG9y
dGluZyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBzcmMvU3RvcmFnZUFyZWFQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlQXJlYVByb3h5OjptZW1vcnlCeXRlc1VzZWRCeUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHNyYy9TdG9yYWdlQXJlYVByb3h5Lmg6
CisgICAgICAgIChTdG9yYWdlQXJlYVByb3h5KToKKwogMjAxMi0wNy0zMSAgWW9zaGlmdW1pIElu
b3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRW5hYmxlIEVO
QUJMRV9JTlBVVF9UWVBFX1RJTUVfTVVMVElQTEVfRklFTERTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgKaW5kZXggZjc1ZTU2ZDRhOWFlOGE5
NjVjNzI4NmM3Mjc1NmYzOTFiYWNlZGYzNi4uM2IxZjk2N2FkMjIzZmUwYmMwNTNiOWU5ZjAyNDRm
MDcwZjBkZGU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTdG9yYWdlQXJlYS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3RvcmFnZUFyZWEuaApAQCAtODQsNiArODQsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyKHBh
Z2VVcmwsIHVudXNlZCk7CiAgICAgfQogCisgICAgLy8gUmV0dXJucyBhbW91bnQgb2YgYnl0ZXMg
b2NjdXBpZWQgYnkgdGhlIHN0b3JhZ2UgY2FjaGUgaW4gcGh5c2ljYWwgbWVtb3J5LgorICAgIHZp
cnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdCB7IHJldHVybiAwOyB9
CisKICAgICAvLyBERVBSRUNBVEVEIC0gYmVpbmcgcmVwbGFjZWQgYnkgdGhlIGFzeW5jIHZhcmlh
bnRzIGFib3ZlIHdoaWNoIGRvIG5vdCByZXR1cm4gb2xkVmFsdWVzIG9yIGJsb2NrIHVudGlsIGNv
bXBsZXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXks
IGNvbnN0IFdlYlN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYsIFJlc3VsdCYsIFdlYlN0
cmluZyYgb2xkVmFsdWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFdl
YlN0cmluZyYga2V5LCBjb25zdCBXZWJVUkwmIHBhZ2VVcmwsIFdlYlN0cmluZyYgb2xkVmFsdWUp
ICB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBhYjZlMzc3YzE1Y2FmODUwNDFhODBkNWUzNDUwNjM2NzAzZjA1YzViLi5lMjZh
MWMwNGI1OTU1ZDE5ZTU0MmIzYzZlNjgzOTZhY2VjNjQ2ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKICAgICBPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50PiBkb21TdG9yYWdlQWdlbnRQdHIoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpjcmVh
dGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAgSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQgPSBkb21TdG9yYWdlQWdlbnRQ
dHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKGRvbVN0b3JhZ2VBZ2VudFB0ci5yZWxlYXNl
KCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9wYWdlLCBtX2RvbUFn
ZW50KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3Rvck1lbW9yeUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX3BhZ2UsIGRvbVN0
b3JhZ2VBZ2VudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fc3RhdGUu
Z2V0KCksIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OlBhZ2VJbnNwZWN0b3IsCiAgICAgICAgaW5z
cGVjdG9yQ2xpZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5n
ZXQoKSwgcGFnZUFnZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGY2Mjc4NGUxOTYzZmU5NzE2NDgyNzQw
YjlmNjNkYzBiMDg4YjFmYzkuLjkzOTk5ZDFmYmIwYmE2ODE5NmUyZTU5YTg5N2JiOTBmYmZlNzhl
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCkBAIC0yMTQsNiArMjE0LDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpjbGVhclJlc291cmNlcygpCiAgICAgbV9yZXNvdXJjZXMuY2xlYXIoKTsKIH0K
IAorc2l6ZV90IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6bWVtb3J5Qnl0ZXNVc2VkQnlTdG9y
YWdlQ2FjaGUoKSBjb25zdAoreworICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBmb3IgKERPTVN0
b3JhZ2VSZXNvdXJjZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpCisgICAgICAgIHNpemUgKz0gaXQtPnNl
Y29uZC0+c3RvcmFnZUFyZWEoKS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpOworICAgIHJldHVy
biBzaXplOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IGY2OWYw
OTc0MTJjMzc5YjI2YmZmY2E0NjkxOGY5NTE3NjViMmE0NGIuLjY2NjRhOGRiNWJjOTJjZDIyMTk5
MDMwMDlkNDMwMjFjZGMyOGQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTc4LDYgKzc4LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkVXNlRE9NU3RvcmFnZShTdG9yYWdlQXJlYSosIGJvb2wgaXNMb2NhbFN0b3Jh
Z2UsIEZyYW1lKik7CiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSopOwogCisgICAgLy8gQ2FsbGVk
IGZyb20gSW5zcGVjdG9yTWVtb3J5QWdlbnQKKyAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlT
dG9yYWdlQ2FjaGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IGVk
MzJjZGNkY2NlNmMxZDQzYjJkMDZlMjRjMjQ3NDRhNWFhMjVjMWEuLmJkYTc1YjA5MzNjMDZlMzlh
Y2YyMDFhOWU2ODk2MTUwMmI1OWEwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1hcC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgpAQCAtOTcsNiArOTgsOCBAQCBzdGF0aWMgY29uc3QgY2hh
ciBkb21UcmVlRE9NW10gPSAiRE9NVHJlZURPTSI7CiBzdGF0aWMgY29uc3QgY2hhciBkb21UcmVl
Q1NTW10gPSAiRE9NVHJlZUNTUyI7CiBzdGF0aWMgY29uc3QgY2hhciBkb21UcmVlQmluZGluZ1td
ID0gIkRPTVRyZWVCaW5kaW5nIjsKIHN0YXRpYyBjb25zdCBjaGFyIGRvbVRyZWVMb2FkZXJbXSA9
ICJET01UcmVlTG9hZGVyIjsKKworc3RhdGljIGNvbnN0IGNoYXIgZG9tU3RvcmFnZUNhY2hlW10g
PSAiRE9NU3RvcmFnZUNhY2hlIjsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTU2OSw2ICs1NzIsMTMg
QEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGpzRXh0ZXJuYWxSZXNv
dXJjZXNJbmZvKFZpc2l0ZWRPYmplY3RzJgogICAgIHJldHVybiBleHRlcm5hbFJlc291cmNlc1N0
YXRzLnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGR1bXBET01TdG9yYWdlQ2FjaGUoc2l6ZV90IGNhY2hlU2l6ZSkKK3sKKyAgICBSZWZQdHI8
SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGRvbVN0b3JhZ2VDYWNoZSA9IEluc3BlY3Rvck1lbW9yeUJs
b2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6ZG9tU3RvcmFnZUNhY2hlKTsK
KyAgICBkb21TdG9yYWdlQ2FjaGUtPnNldFNpemUoY2FjaGVTaXplKTsKKyAgICByZXR1cm4gZG9t
U3RvcmFnZUNhY2hlOworfQorCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNz
TWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKICAgICBwcm9jZXNzTWVtb3J5ID0gSW5zcGVjdG9yTWVt
b3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpwcm9jZXNzUHJpdmF0
ZU1lbW9yeSk7CkBAIC01ODQsNiArNTk0LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6
Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAg
ICBjaGlsZHJlbi0+YWRkSXRlbShkb21UcmVlSW5mbyhtX3BhZ2UsIHZpc2l0ZWRPYmplY3RzLCAm
aW5zcGVjdG9yRGF0YSkpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKGpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKHZpc2l0ZWRPYmplY3RzKSk7
CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YS5kdW1wU3RhdGlzdGljcygpKTsK
KyAgICBjaGlsZHJlbi0+YWRkSXRlbShkdW1wRE9NU3RvcmFnZUNhY2hlKG1fZG9tU3RvcmFnZUFn
ZW50LT5tZW1vcnlCeXRlc1VzZWRCeVN0b3JhZ2VDYWNoZSgpKSk7CiAgICAgYWRkUGxhdGZvcm1D
b21wb25lbnRzSW5mbyhjaGlsZHJlbik7CiAgICAgcHJvY2Vzc01lbW9yeS0+c2V0Q2hpbGRyZW4o
Y2hpbGRyZW4pOwogCkBAIC01OTMsOSArNjA0LDEwIEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
CiAgICAgcHJvY2Vzc01lbW9yeS0+c2V0U2l6ZShwcml2YXRlQnl0ZXMpOwogfQogCi1JbnNwZWN0
b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JET01BZ2VudCopCitJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQqIGRvbVN0
b3JhZ2VBZ2VudCkKICAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2Vu
dD4oIk1lbW9yeSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQogICAgICwgbV9wYWdlKHBh
Z2UpCisgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudChkb21TdG9yYWdlQWdlbnQpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXgg
OTFmM2ZiZWQ1MWJiNTZmNWU3NzA1ODczMzhlYjA4MTQ2OTBmNTRlZS4uM2I2NDg2NDJlYjkwZThl
NTEwN2FhMGMzNjJhOGE2MTE2NGU4ZThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTM4LDEwICszOCw5IEBACiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJbnNwZWN0b3JET01B
Z2VudDsKLWNsYXNzIEluc3BlY3RvckZyb250ZW5kOworCitjbGFzcyBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIEluc3BlY3RvckFycmF5Owog
Y2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIFBhZ2U7CiAKQEAgLTUyLDE5ICs1MSwx
OSBAQCBjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+LCBwdQogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9y
PE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+ID4gSW5zcGVjdG9yQWdlbnRzOwog
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3Rh
dGUsIFBhZ2UqIHBhZ2UsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFn
ZSwgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRp
bmdBZ2VudHMsIHN0YXRlLCBwYWdlLCBkb21BZ2VudCkpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEluc3BlY3Rvck1lbW9yeUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBw
YWdlLCBkb21TdG9yYWdlQWdlbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVt
b3J5QWdlbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdy
b3VwPiA+JiBkb21Hcm91cHMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0
aXN0aWNzPiYgc3RyaW5ncyk7CiAgICAgdmlydHVhbCB2b2lkIGdldFByb2Nlc3NNZW1vcnlEaXN0
cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6TWVtb3J5
QmxvY2s+JiBwcm9jZXNzTWVtb3J5KTsKIAotCiBwcml2YXRlOgotICAgIEluc3BlY3Rvck1lbW9y
eUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNw
ZWN0b3JET01BZ2VudCogZG9tQWdlbnQpOworICAgIEluc3BlY3Rvck1lbW9yeUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQqKTsKICAgICBQYWdlKiBtX3BhZ2U7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5
U25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRp
dmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKaW5kZXggNmY4NGFiMGRmMDY3NGE5YzgyNjMyOWE1ZmNi
YTFlMGZhMGUzMmZlZC4uYjRkZDUxZDUwY2M0ODQ0MmE1NjYzMDBhMTE2YWZmODczYTcxNmNjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1v
cnlTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKQEAgLTIyNSw2ICsyMjUsNyBAQCBXZWJJbnNw
ZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJvcGVydGllcy5faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkK
ICAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JEYXRhIiwgIklu
c3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwgIDgwJSkiLCAiTWVt
b3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAgIGFkZEJsb2NrKCJoc2wo
IDQwLCA2MCUsICA4MCUpIiwgIkdseXBoQ2FjaGUiLCAiR2x5cGggY2FjaGUgcmVzb3VyY2VzIik7
CisgICAgYWRkQmxvY2soImhzbCggMzUsIDYwJSwgIDgwJSkiLCAiRE9NU3RvcmFnZUNhY2hlIiwg
IkRPTSBzdG9yYWdlIGNhY2hlIik7CiAgICAgYWRkQmxvY2soImhzbCggNjAsIDYwJSwgIDgwJSki
LCAiUmVuZGVyVHJlZUFsbG9jYXRlZCIsICJSZW5kZXIgdHJlZSIpOwogICAgIGFkZEJsb2NrKCJo
c2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVVc2VkIiwgIlJlbmRlciB0cmVlIHVzZWQi
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCAzYjI0OTJhNjcxMTQ5
ZTVkNDJkMzQ3OTM2ZDY0ZGIyMGY3N2M1MDA3Li4yZWE5MTE3MjU3YzA0Zjc2MmY1MDJjOWNkYjAy
YTJhNDFhMWNlNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01Niw2
ICs1Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgZGlz
YWJsZWRCeVByaXZhdGVCcm93c2luZ0luRnJhbWUoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lKSBj
b25zdCA9IDA7CiAKKyAgICAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNo
ZSgpIGNvbnN0ID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWNjZXNzQ291
bnQoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRl
eCA2OTRhOTdhNmJmYjU4MWRmMjQ3ZTk1ZjlkNTg2NDI1M2Y0Nzc4ZmQ3Li4zN2M0ZjU5NmNhNTcw
MTczYTE4MjI5Nzc3ZWYzYTczMzUxNDYyNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuY3BwCkBAIC0yNjQsNiArMjY0LDExIEBAIHZvaWQgU3RvcmFnZUFyZWFJ
bXBsOjpibG9ja1VudGlsSW1wb3J0Q29tcGxldGUoKSBjb25zdAogICAgICAgICBtX3N0b3JhZ2VB
cmVhU3luYy0+YmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CiB9CiAKK3NpemVfdCBTdG9yYWdl
QXJlYUltcGw6Om1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCiB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6aW5jcmVtZW50QWNjZXNzQ291bnQoKQogewog
ICAgIG1fYWNjZXNzQ291bnQrKzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCmluZGV4IDRjOTBlNWJjMDNlZDU0Njc0ZDRmZTgzNGY4NTdhNjEwYTI4ODViNzUuLjFmMmI3
ZTA4MDI0MjA2ZGIzMmVlYWRiOWI4Y2U5YTU0NGU0ZGQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNTQsNiArNTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGRpc2FibGVkQnlQcml2YXRlQnJvd3NpbmdJbkZy
YW1lKGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSkgY29uc3Q7CiAKKyAgICAgICAgdmlydHVhbCBz
aXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGNvbnN0OworCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVt
ZW50QWNjZXNzQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3RvcmFnZUFyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9y
YWdlQXJlYVByb3h5LmNwcAppbmRleCA1NzYxMDVjNGQ1MzIyZjk4ZGEzYjk3NjNmNTZhZTJlNDk2
OGViMDhjLi43MjJlODBmNTMyYzFkZGU2YjBhYjgyNzQyZDJlYjcwM2M2ZWM3MTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVByb3h5LmNwcApAQCAtMTIw
LDYgKzEyMCwxMSBAQCBib29sIFN0b3JhZ2VBcmVhUHJveHk6OmNhbkFjY2Vzc1N0b3JhZ2UoRnJh
bWUqIGZyYW1lKSBjb25zdAogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
IHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dTdG9yYWdlKHdlYkZyYW1lLCBt
X3N0b3JhZ2VUeXBlID09IExvY2FsU3RvcmFnZSk7CiB9CiAKK3NpemVfdCBTdG9yYWdlQXJlYVBy
b3h5OjptZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdG9y
YWdlQXJlYS0+bWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpOworfQorCiB2b2lkIFN0b3JhZ2VBcmVh
UHJveHk6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoUGFnZUdyb3VwKiBwYWdlR3JvdXAsIGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgcGFnZVVSTCwgV2Vi
S2l0OjpXZWJTdG9yYWdlQXJlYSogc291cmNlQXJlYUluc3RhbmNlLCBib29sIG9yaWdpbmF0ZWRJ
blByb2Nlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9y
YWdlQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TdG9yYWdlQXJlYVBy
b3h5LmgKaW5kZXggODNmMmVhZTE3M2QyNzlhZjdlNzQzNDdmOGNiM2Y2ZjhhMGUxYzQyYi4uY2Fl
MzU5MzU4MjIwNzljYzAyMjk5Njg4ZDkzYWQ3MmVhMzdhNzBiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvU3RvcmFnZUFyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1N0b3JhZ2VBcmVhUHJveHkuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWRCeVByaXZhdGVCcm93c2luZ0luRnJhbWUo
Y29uc3QgRnJhbWUqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBzaXpl
X3QgbWVtb3J5Qnl0ZXNVc2VkQnlDYWNoZSgpIGNvbnN0OworCiAgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCgKICAgICAgICAgICAgIFBhZ2VHcm91cCosIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVl
LAogICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiBwYWdlVVJMLCBXZWJL
aXQ6OldlYlN0b3JhZ2VBcmVhKiBzb3VyY2VBcmVhSW5zdGFuY2UsIGJvb2wgb3JpZ2luYXRlZElu
UHJvY2Vzcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>