<?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>40627</bug_id>
          
          <creation_ts>2010-06-15 09:21:07 -0700</creation_ts>
          <short_desc>Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)</short_desc>
          <delta_ts>2010-08-04 13:38:06 -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>WebCore Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43307</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>238416</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 09:21:07 -0700</bug_when>
    <thetext>Provide a way to limit the storage capacity of application caches
instead of allowing it to grow without checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238423</commentid>
    <comment_count>1</comment_count>
      <attachid>58788</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 09:52:40 -0700</bug_when>
    <thetext>Created attachment 58788
[PATCH] Part 1 - Add Per-Origin quota logic, and persistence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238425</commentid>
    <comment_count>2</comment_count>
      <attachid>58789</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 09:53:19 -0700</bug_when>
    <thetext>Created attachment 58789
[PATCH] Part 2 - Add Total and Per-Origin Quota Settings. (needs part 1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238428</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 09:54:48 -0700</bug_when>
    <thetext>Attachment 58788 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/page/ChromeClient.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238429</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 09:58:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/8032000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238430</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-15 10:00:17 -0700</bug_when>
    <thetext>Attachment 58788 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3267164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238437</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:04:32 -0700</bug_when>
    <thetext>Attachment 58788 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3267165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238438</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 10:06:08 -0700</bug_when>
    <thetext>Looks like INT64_MAX was missing for gtk and qt. Probably a missing include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238461</commentid>
    <comment_count>8</comment_count>
      <attachid>58797</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 10:45:06 -0700</bug_when>
    <thetext>Created attachment 58797
[PATCH] Part 1 - Add Per-Origin quota logic, and persistence. (include stdint.h)

Added &quot;#include &lt;stdint.h&gt;&quot; to ApplicationCacheStorage.h to try and fix gtk and qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238462</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:45:58 -0700</bug_when>
    <thetext>Attachment 58797 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/page/ChromeClient.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238466</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:52:04 -0700</bug_when>
    <thetext>Attachment 58797 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3316184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238468</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-15 10:53:37 -0700</bug_when>
    <thetext>Attachment 58797 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3331193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238469</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:54:22 -0700</bug_when>
    <thetext>Attachment 58788 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3312188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238501</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 12:32:17 -0700</bug_when>
    <thetext>Attachment 58797 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3294196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238580</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 15:21:01 -0700</bug_when>
    <thetext>&quot;#include &lt;limits&gt;&quot; includes &quot;std::numeric_limits&lt;long long&gt;::max()&quot;

However, I can&apos;t set that to a global:

  static const int64_t noQuota = std::numeric_limits&lt;long long&gt;::max();
  -&gt; Compile Error &quot;a function call cannot appear in a constant-expression&quot;

I can change this instead to a function:

  static const int64_t noQuota() { return std::numeric_limits&lt;long long&gt;::max(); }

But I don&apos;t like that solution. Is there an easy way to just #define INT64_MAX
for gtk and qt, or is another solution preferred?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238658</commentid>
    <comment_count>15</comment_count>
      <attachid>58849</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-15 20:29:42 -0700</bug_when>
    <thetext>Created attachment 58849
[PATCH] Part 3 - Test Case

This adds a test case but it doesn&apos;t call setQuota directly on an ApplicationCacheGroup,
instead it uses the preference, and creates a new cache group by changing the manifest url
(this causes a new group to be created).

After speaking with Alexey, and making these tests, I think &quot;Per-Origin&quot; is the wrong
name for this bug. And ApplicationCacheGroupQuota is misleading, because its
really a quota on the ApplicationCaches themselves, it just happens that the size counter
is in ApplicationCacheGroup because thats where the resource loads happen.

So, feel free to suggest better names or suggest that I move things around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238659</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 20:33:27 -0700</bug_when>
    <thetext>Attachment 58849 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/LayoutTestController.cpp:736:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238664</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 21:25:04 -0700</bug_when>
    <thetext>Attachment 58849 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3320208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239489</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-17 11:18:59 -0700</bug_when>
    <thetext>I&apos;m discussing this patch with Joseph. Not sure if per-appcache quota is the right way to go, given that we usually have per-origin quotas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239667</commentid>
    <comment_count>19</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-17 17:20:44 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I&apos;m discussing this patch with Joseph. Not sure if per-appcache quota
&gt; is the right way to go, given that we usually have per-origin quotas.

Background: 
-----------

I took a look at this and thought about what changes might be necessary
for this to happen. Databases use per-origin quotas. They do so with
&quot;DatabaseTracker&quot; which uses its own sqlite database (for persistence)
to store origins and their quotas. See
DatabaseTracker::openTrackerDatabase in:
http://trac.webkit.org/browser/trunk/WebCore/storage/DatabaseTracker.cpp

In Safari you can see this in ~/Library/Safari/Databases/Databases.db:

&gt;   &gt; sqlite3 ~/Library/Safari/Databases/Databases.db
&gt;   &gt; .dump
&gt;   CREATE TABLE Origins ( origin TEXT UNIQUE ON CONFLICT REPLACE
&gt;                        , quota INTEGER NOT NULL ON CONFLICT FAIL);
&gt;   CREATE TABLE Databases ( guid INTEGER PRIMARY KEY AUTOINCREMENT
&gt;                          , origin TEXT, name TEXT, displayName TEXT, estimatedSize INTEGER, path TEXT);


Application cache&apos;s currently only use origins in the fetching
process to select particular resources, ignore others, and so
on. Once the resources are downloading it doesn&apos;t look like
the origin is needed. So it didn&apos;t need to keep it around.
Instead, if it makes it far enough into the process, just keeps
the manifest url in its permanent tables see
ApplicationCacheStorage::openDatabase in:
http://trac.webkit.org/browser/trunk/WebCore/loader/appcache/ApplicationCacheStorage.cpp

In Safari the tables are put somewhere under /private/var/...:

&gt;   &gt; sqlite3 ApplicationCache.db
&gt;   &gt; .tables
&gt;   CacheAllowsAllNetworkRequests  CacheResources               
&gt;   CacheEntries                   CacheWhitelistURLs           
&gt;   CacheGroups                    Caches                       
&gt;   CacheResourceData              FallbackURLs
&gt;   &gt; .schema CacheGroups
&gt;   CREATE TABLE CacheGroups ( id INTEGER PRIMARY KEY AUTOINCREMENT
&gt;                            , manifestHostHash INTEGER NOT NULL ON CONFLICT FAIL
&gt;                            , manifestURL TEXT UNIQUE ON CONFLICT FAIL
&gt;                            , newestCache INTEGER);


My Patch So Far:
----------------

The patches I put up so far tacked a quota onto the `CacheGroups`
table. This means that if the website used a different manifest
URL, its using a different ApplicationCacheGroup with a different
quota. So, a website would be able use multiple manifests to
work around the individual quota limit. And, as Alexey points out
they could use &lt;iframe&gt;s to make use of each cache group&apos;s resources
all on a single page (bypassing the supposed quota). Dirty, but
possible.


Per-Origin Quotas:
------------------

To avoid the above problem we can use per-origin quotas. Taking
an approach similar to Databases we can just add a &quot;Origins&quot;
table to match up origins and quotas. The table schema could even
be the same as the Databases schema above:

    CREATE TABLE Origins ( origin TEXT UNIQUE ON CONFLICT REPLACE
                         , quota INTEGER NOT NULL ON CONFLICT FAIL);

CacheGroups already have a manifest URL from which the origin can
be extracted. WebCore::SecurityOrigin handles this nicely.

The complexity is tracking the quota across multiple cache groups.
WebCore::OriginQuotaManager (currently ENABLE(STORAGE) in
WebCore/storage/OriginQuotaManager.{cpp,h}) and OriginQuotaRecord
does this for Databases. The same model looks like it could carry
over to Application Cache Groups and share some code.


My Conclusion:
--------------

Sounds like real per-origin is probably the best solution. Do you
you think I should take that approach and r- what I have here and
&quot;do it right&quot;. Or continue with what I have here, and open up a new
bug to transfer it over to real per-origin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241493</commentid>
    <comment_count>20</comment_count>
      <attachid>59425</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-22 15:47:23 -0700</bug_when>
    <thetext>Created attachment 59425
[PATCH] Part 1 - Add Total and Per-Origin Quota Preferences.

Taking a different approach. Making the individual parts a little smaller so they
are easier to review. This part adds the Preferences. They are not page/Settings,
they are set on the global ApplicationCacheStorage object returned from
cacheStorage(). Setting the maximumSize empties the database, so I only
set it when the preference changes instead of the usual place. Part 2 will
make use of this preference. I&apos;m just making some tweaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241500</commentid>
    <comment_count>21</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-22 16:00:42 -0700</bug_when>
    <thetext>Attachment 59425 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3316585</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241594</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 18:47:31 -0700</bug_when>
    <thetext>Attachment 59425 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3282575</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241780</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-23 02:58:32 -0700</bug_when>
    <thetext>Attachment 59425 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3279581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241990</commentid>
    <comment_count>24</comment_count>
      <attachid>59545</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-23 11:43:06 -0700</bug_when>
    <thetext>Created attachment 59545
[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)

ChangeLog says it all. I made a decision here that could be debated:

In the Patch:
I ensure that `Origins` records only exist when there is a `Caches`
record that needs it. So, the lifetime of the quota is tied to whether
or not the origin has an application cache. If all caches on that
origin get deleted then the quota will be deleted as well.
  + There are never extra Origins records.
  - Requires an extra SELECT to count the number of Origin Records

Alternate Solution:
`Origins` records, and therefore quotas, should remain permanently,
or until the database is explicitly emptied. This way, once they are set
by the user for an origin, if the cache is deleted and later restored the
originally set quota would still be in effect.
  + Prevent reaching a low quota multiple times if caches come and go
  - May leave around stale Origins records.

Finally, I started taking the Databases Quota management approach, but
felt that was far to heavyweight. The approach I took just grabs the quota
and checks it again before committing to the new cache. The second
check may need to move into a SQL Transaction for storeNewestCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242647</commentid>
    <comment_count>25</comment_count>
      <attachid>59692</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-24 13:44:31 -0700</bug_when>
    <thetext>Created attachment 59692
[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)

After some more thought I changed things. This is much simpler as well.
  - persists `Origins` records even if caches are deleted
  - normalized `origin` foreign key to `CacheGroups` instead of `Caches`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242648</commentid>
    <comment_count>26</comment_count>
      <attachid>59693</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-24 13:45:43 -0700</bug_when>
    <thetext>Created attachment 59693
[PATCH] Part 3 - Refactor storeNewestCache to allow Failure Reason Output (needs part 2)

This is a little bit of refactoring that would be easier to review outside
of part 2. ChangeLog says it all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243210</commentid>
    <comment_count>27</comment_count>
      <attachid>59800</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-25 14:53:27 -0700</bug_when>
    <thetext>Created attachment 59800
[PATCH] Part 4 - Client Notification when the Quota is Reached (needs part 3)


Client notifications. I ran into an issue with WebSecurityOrigin. WebSecurityOrigin is
used in a private interface (WebUIDelegatePrivate.h). It also has Database Quota
management baked in. And finally it uses (unsigned long long) types. The problems are:

  - (unsigned long long) makes sense for a quota, but they are stored in a SQLite DB as
    (long long) anyways. So, there is a downcast. I&apos;ve changed the interface in
    WebSecurityOrigin to prevent any clients from providing too high a value, but
    Database&apos;s still have a potential downcast issue.
    
  - To not break the interface, I kept (WebSecurityOrigin*) as the type. And I give
    generic implementations of the quota management functions (usage, quota, setQuota)
    and instead rely on subclasses to handle it correctly. There are now Database
    and ApplicationCache subclasses which handle each of their respective quotas.

I think I&apos;ll stop here. Part 5 would be adding a test to make sure it all works, but
I don&apos;t want to go that far unless I&apos;ve got an okay on some of the patches before!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243212</commentid>
    <comment_count>28</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-25 14:55:59 -0700</bug_when>
    <thetext>&gt; Part 5 would be adding a test to make sure it all works [...]

Clarification: I&apos;ve tested this and made sure it works but a
test will make sure it works with future changes! =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256243</commentid>
    <comment_count>29</comment_count>
      <attachid>59425</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-26 14:36:36 -0700</bug_when>
    <thetext>Comment on attachment 59425
[PATCH] Part 1 - Add Total and Per-Origin Quota Preferences.

&gt; diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
&gt; +ifeq ($(findstring ENABLE_OFFLINE_WEB_APPLICATIONS,$(FEATURE_DEFINES)), ENABLE_OFFLINE_WEB_APPLICATIONS)
&gt; +    WEBCORE_EXPORT_DEPENDENCIES := $(WEBCORE_EXPORT_DEPENDENCIES) WebCore.OfflineWebApplications.exp
&gt; +endif
&gt; diff --git a/WebCore/WebCore.OfflineWebApplications.exp b/WebCore/WebCore.OfflineWebApplications.exp
&gt; +__ZN7WebCore23ApplicationCacheStorage14setMaximumSizeEx
&gt; +__ZN7WebCore23ApplicationCacheStorage16storeCopyOfCacheERKNS_6StringEPNS_20ApplicationCacheHostE
&gt; +__ZN7WebCore23ApplicationCacheStorage17setCacheDirectoryERKNS_6StringE
&gt; +__ZN7WebCore23ApplicationCacheStorage18vacuumDatabaseFileEv
&gt; +__ZN7WebCore23ApplicationCacheStorage21setDefaultOriginQuotaEx
&gt; +__ZN7WebCore23ApplicationCacheStorage5emptyEv
&gt; diff --git a/WebCore/WebCore.base.exp b/WebCore/WebCore.base.exp
&gt; -__ZN7WebCore23ApplicationCacheStorage14setMaximumSizeEx
&gt; -__ZN7WebCore23ApplicationCacheStorage16storeCopyOfCacheERKNS_6StringEPNS_20ApplicationCacheHostE
&gt; -__ZN7WebCore23ApplicationCacheStorage17setCacheDirectoryERKNS_6StringE
&gt; -__ZN7WebCore23ApplicationCacheStorage18vacuumDatabaseFileEv
&gt; -__ZN7WebCore23ApplicationCacheStorage5emptyEv
&gt; diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; +		A57302A611CBD9F500484CC3 /* WebCore.Geolocation.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.Geolocation.exp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		A57302A711CBD9F600484CC3 /* WebCore.OfflineWebApplications.exp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.exports; path = WebCore.OfflineWebApplications.exp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -11420,9 +11422,11 @@
&gt; +				A57302A611CBD9F500484CC3 /* WebCore.Geolocation.exp */,
&gt; +				A57302A711CBD9F600484CC3 /* WebCore.OfflineWebApplications.exp */,

This mechanism has changed on trunk since the patch was made (e.g. bit rot set it).  However, this is the correct approach, so it just needs to be updated to work with the new mechanism.

&gt; diff --git a/WebCore/loader/appcache/ApplicationCacheStorage.h b/WebCore/loader/appcache/ApplicationCacheStorage.h
&gt; +    static const int64_t noQuota = INT64_MAX;

It&apos;s unfortunate that this constant isn&apos;t &quot;-1&quot; since it&apos;s a signed value.  Has this ship already sailed for existing users?

&gt; diff --git a/WebKit/mac/WebView/WebPreferences.mm b/WebKit/mac/WebView/WebPreferences.mm
&gt; +- (int64_t)applicationCacheTotalQuota
&gt; +{
&gt; +    return [self _longLongValueForKey:WebKitApplicationCacheTotalQuota];
&gt; +}

I think an ASSERT() here would be good to make sure the dictionary and WebApplicationCache don&apos;t get out of sync, since you set the values in to places in -setApplicationCacheTotalQuota: below.

&gt; +- (void)setApplicationCacheTotalQuota:(int64_t)quota
&gt; +{
&gt; +    [self _setLongLongValue:quota forKey:WebKitApplicationCacheTotalQuota];
&gt; +
&gt; +    // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
&gt; +    [WebApplicationCache setMaximumSize:quota];
&gt; +}

r=me after updating the WebCore.*.exp changes to use the new WebCore.exp.in mechanism on trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256279</commentid>
    <comment_count>30</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-26 15:24:12 -0700</bug_when>
    <thetext>&gt; &gt; diff --git a/WebCore/loader/appcache/ApplicationCacheStorage.h b/WebCore/loader/appcache/ApplicationCacheStorage.h
&gt; &gt; +    static const int64_t noQuota = INT64_MAX;
&gt; 
&gt; It&apos;s unfortunate that this constant isn&apos;t &quot;-1&quot; since it&apos;s a signed value.  Has this ship already sailed for existing users?

I few points on this int64 part:

  - session storage uses the max as noQuota, so I went with the flow.
  - this is signed only because SQLite doesn&apos;t store unsigned. I thought about this later, and
    I think this value should actually be unsigned, and I check and log cases where the value
    attempts to be set more than INT64_MAX.
  - I actually use -1 later on to mean &quot;unknown&quot; or &quot;not set&quot; rather than using a boolean.

Also the build bots don&apos;t like INT64_MAX on other platforms. Do you know of a
platform independent constant I can use? Using numeric_limit&lt;int64_t&gt; gave
me a warning at compile time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256575</commentid>
    <comment_count>31</comment_count>
      <attachid>59692</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-27 07:36:05 -0700</bug_when>
    <thetext>Comment on attachment 59692
[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)

WebCore/ChangeLog:10
 +          Added an `Origins` table to the application cache databases.
Please don&apos;t use back-quotes in change logs.  Normal quotes are fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256647</commentid>
    <comment_count>32</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-27 09:28:14 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 59692 [details])
&gt; WebCore/ChangeLog:10
&gt;  +          Added an `Origins` table to the application cache databases.
&gt; Please don&apos;t use back-quotes in change logs.  Normal quotes are fine.

Good to know. What is the reason? Typically I use backticks around code
(because of Markdown) and when describing a shell command inline. I
can refrain from putting them in ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256677</commentid>
    <comment_count>33</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-27 10:22:12 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; &gt; &gt; diff --git a/WebCore/loader/appcache/ApplicationCacheStorage.h b/WebCore/loader/appcache/ApplicationCacheStorage.h
&gt; &gt; &gt; +    static const int64_t noQuota = INT64_MAX;
&gt; &gt; 
&gt; &gt; It&apos;s unfortunate that this constant isn&apos;t &quot;-1&quot; since it&apos;s a signed value.  Has this ship already sailed for existing users?
&gt; 
&gt; I few points on this int64 part:
&gt; 
&gt;   - session storage uses the max as noQuota, so I went with the flow.
&gt;   - this is signed only because SQLite doesn&apos;t store unsigned. I thought about this later, and
&gt;     I think this value should actually be unsigned, and I check and log cases where the value
&gt;     attempts to be set more than INT64_MAX.
&gt;   - I actually use -1 later on to mean &quot;unknown&quot; or &quot;not set&quot; rather than using a boolean.

Okay.

&gt; Also the build bots don&apos;t like INT64_MAX on other platforms. Do you know of a
&gt; platform independent constant I can use? Using numeric_limit&lt;int64_t&gt; gave
&gt; me a warning at compile time.

Maybe numeric_limit&lt;long long&gt;?  I think int64_t is just a typedef on most platforms.  At worst, I suppose we could define it for platforms that are missing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257935</commentid>
    <comment_count>34</comment_count>
      <attachid>59692</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-29 15:43:01 -0700</bug_when>
    <thetext>Comment on attachment 59692
[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)

WebCore/loader/appcache/ApplicationCacheStorage.h:87
 +      static const int64_t unknown = -1;

I think this should be called &quot;unknownQuota&quot; to make it more descriptive.


WebCore/loader/appcache/ApplicationCacheStorage.cpp:426
 +      // Using the count to determine if a record existed or not is a safe way to determine=

Not sure if it&apos;s a mail encoding issue, but there is a stray &quot;=&quot; at the end of &quot;determine&quot; here.


WebCore/loader/appcache/ApplicationCacheStorage.cpp:461
 +                  &quot; WHERE Origins.origin=?&quot;

Please put spaces around the &quot;=&quot; operator (unless this is the prevailing style for bound values in this file).

WebCore/loader/appcache/ApplicationCacheStorage.cpp:462
 +                  &quot;   AND Caches.id!=?&quot;;

Ditto.

WebCore/loader/appcache/ApplicationCacheStorage.cpp:468
 +                  &quot; WHERE Origins.origin=?&quot;;

Ditto.


WebCore/loader/appcache/ApplicationCacheStorage.cpp:501
 +      SQLiteStatement updateStatement(m_database, &quot;UPDATE Origins SET quota=? WHERE origin=?&quot;);

Ditto.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257941</commentid>
    <comment_count>35</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-29 15:49:47 -0700</bug_when>
    <thetext>&gt; WebCore/loader/appcache/ApplicationCacheStorage.h:87
&gt;  +      static const int64_t unknown = -1;
&gt; 
&gt; I think this should be called &quot;unknownQuota&quot; to make it more descriptive.

Sounds good.

&gt; WebCore/loader/appcache/ApplicationCacheStorage.cpp:426
&gt;  +      // Using the count to determine if a record existed or not is a safe way to determine=
&gt; 
&gt; Not sure if it&apos;s a mail encoding issue, but there is a stray &quot;=&quot; at the end of &quot;determine&quot; here.

My fault, a typo. I&apos;ll fix.

&gt; WebCore/loader/appcache/ApplicationCacheStorage.cpp:461
&gt;  +                  &quot; WHERE Origins.origin=?&quot;
&gt; 
&gt; Please put spaces around the &quot;=&quot; operator (unless this is the prevailing style for bound values in this file).

No space is the prevailing style:
http://trac.webkit.org/browser/trunk/WebCore/loader/appcache/ApplicationCacheStorage.cpp

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257942</commentid>
    <comment_count>36</comment_count>
      <attachid>59693</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-29 15:50:31 -0700</bug_when>
    <thetext>Comment on attachment 59693
[PATCH] Part 3 - Refactor storeNewestCache to allow Failure Reason Output (needs part 2)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257956</commentid>
    <comment_count>37</comment_count>
      <attachid>59800</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-29 16:17:02 -0700</bug_when>
    <thetext>Comment on attachment 59800
[PATCH] Part 4 - Client Notification when the Quota is Reached (needs part 3)

WebCore/WebCore.OfflineWebApplications.exp

REMINDER: These changes will need to be migrated to WebCore/WebCore.exp.in in trunk.

WebCore/loader/appcache/ApplicationCacheGroup.cpp:1024
 +      RefPtr&lt;Frame&gt; frameProtector = m_frame;
 +      OriginQuotaReachedCallbackTimer* timer = new OriginQuotaReachedCallbackTimer(this, frameProtector.get());

Do you really need a frameProtector if the OriginQuotaReachedCallbackTimer keeps its own RefPtr&lt;&gt; to the frame?

WebKit/WebKit.xcodeproj/project.pbxproj: 
 -  		51079D170CED11B00077247D /* WebSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51079D140CED11B00077247D /* WebSecurityOrigin.mm */; };

Please don&apos;t delete and the re-add files to the Xcode project file.  It causes more work when merging later, and creates unnecessary churn.  Please revert the project file and then move existing files and add the new files to fix this.


WebKit/mac/WebCoreSupport/WebApplicationCacheSecurityOrigin.mm:40
 +      return 0;

Just add the #endif above this line instead of having an #else / return 0; / #endif.

WebKit/mac/WebCoreSupport/WebApplicationCacheSecurityOrigin.mm:52
 +      return 0;

Ditto.


WebKit/mac/WebView/WebUIDelegatePrivate.h:92
 +  @protocol WebSecurityOriginQuotaManagement;

What is this and where is it defined?!

WebKit/mac/WebView/WebUIDelegatePrivate.h:93
 +  @protocol WebSecurityOriginQuotaManagementUnsigned;

Ditto.  I don&apos;t see this used anywhere, either.

WebKit/mac/WebView/WebUIDelegatePrivate.h:127
 +  - (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin&lt;WebSecurityOriginQuotaManagement&gt; *)origin database:(NSString *)databaseIdentifier;

I don&apos;t see @protocol WebSecurityOriginQuotaManagement defined anywhere.

WebKit/mac/WebView/WebUIDelegatePrivate.h:137
 +  - (void)webView:(WebView *)sender exceededApplicationCacheOriginQuotaForSecurityOrigin:(WebSecurityOrigin&lt;WebSecurityOriginQuotaManagement&gt; *)origin;

Ditto.

r=me assuming you can explain or remove the mysterious @protocols used.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257997</commentid>
    <comment_count>38</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-29 17:20:10 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; WebCore/loader/appcache/ApplicationCacheGroup.cpp:1024
&gt;  +      RefPtr&lt;Frame&gt; frameProtector = m_frame;
&gt;  +      OriginQuotaReachedCallbackTimer* timer = new OriginQuotaReachedCallbackTimer(this, frameProtector.get());
&gt; 
&gt; Do you really need a frameProtector if the OriginQuotaReachedCallbackTimer keeps its own RefPtr&lt;&gt; to the frame?

I will look into this. I could use some guidance on lifetime management. While the manifest
resources are downloading there is a Frame. However, OriginQuotaReachedCallbackTimer
is triggered asynchronously  at which point the frame could have been deleted. I try and
keep it around, so that when the callback triggers it can notify the client via:
  
  frame-&gt;page()-&gt;chrome()-&gt;client()-&gt;reachedApplicationCacheOriginQuota(m_origin.get());

I was worried that because the callback runs asynchronously I would need to protect the
Frame. However, now I think that even with the protector, the Frame&apos;s page() could have been
deleted. I&apos;ll look into this a bit more.


&gt; WebKit/WebKit.xcodeproj/project.pbxproj: 
&gt;  -          51079D170CED11B00077247D /* WebSecurityOrigin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51079D140CED11B00077247D /* WebSecurityOrigin.mm */; };
&gt; 
&gt; Please don&apos;t delete and the re-add files to the Xcode project file.  It causes more work when merging
&gt; later, and creates unnecessary churn.  Please revert the project file and then move existing files and add
&gt; the new files to fix this.

I seem to recall moved the file between groups. From WebView to WebCoreSupport,
or something similar. I should have mentioned this in the ChangeLog.


&gt; WebKit/mac/WebCoreSupport/WebApplicationCacheSecurityOrigin.mm:40
&gt;  +      return 0;
&gt; 
&gt; Just add the #endif above this line instead of having an #else / return 0; / #endif.

I thought this would produce an &quot;unreachable statement&quot; if the #if condition was
true. The produced could would look like:

  return ...;
  return 0;



&gt;  +  @protocol WebSecurityOriginQuotaManagement;
&gt;  +  @protocol WebSecurityOriginQuotaManagementUnsigned;
&gt; r=me assuming you can explain or remove the mysterious @protocols used.  :)

Sorry about that, this is stale code. I&apos;ll remove them. I did a few iterations
here learning Obj-C and writing a &quot;good&quot; typed interface that respected
the types of the quotas.

This was because the Database&apos;s quota is (unsigned long long)
and the ApplicationCacheQuota is (long long). I ended up removing it
all, because it would make a change to the existing public API. I&apos;ve
considered changing ApplicationCache&apos;s quota to be unsigned because
logically it makes sense to have the quota be unsigned. The reason I went
with just (long long) was because the value is stored in SQLite, which really
does store it as signed, so there would be downcast.

I am working on opening a bug for this, I just have to verify I can make
it happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258325</commentid>
    <comment_count>39</comment_count>
      <attachid>63091</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-30 12:10:55 -0700</bug_when>
    <thetext>Created attachment 63091
[PATCH] Updated Part 1 - Checking Compilation on Other Platforms

Changed constant noQuota to a function noQuota(). This no longer allows &quot;const&quot; =/,
but it should compile fine on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258468</commentid>
    <comment_count>40</comment_count>
      <attachid>63091</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-30 16:39:12 -0700</bug_when>
    <thetext>Comment on attachment 63091
[PATCH] Updated Part 1 - Checking Compilation on Other Platforms

Okay, it appears to build on all platforms (windows try bot didn&apos;t make it around to it). Part 4 required a minor change, which David Kilzer okayed. I&apos;ll be landing these tonight once the bots calm down a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258517</commentid>
    <comment_count>41</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-30 19:25:21 -0700</bug_when>
    <thetext>r64397 = d6f9d5d2898e3055125cb1d66f07cdb60c952cd4
http://trac.webkit.org/changeset/64397

r64398 = 37a5f072cf184af754ecf65f9e99de0f256538a2
http://trac.webkit.org/changeset/64398

r64399 = 21e047d7334ca1e78f7bacfa64b26e430ff18b8d
http://trac.webkit.org/changeset/64399

r64400 = 21fcd10785af135db90d464f52ba4b2a9e844ec2
http://trac.webkit.org/changeset/64400

Watching the bots!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258521</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 19:59:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64400 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/64400
http://trac.webkit.org/changeset/64397
http://trac.webkit.org/changeset/64398
http://trac.webkit.org/changeset/64399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258522</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 19:59:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64397 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/64400
http://trac.webkit.org/changeset/64397
http://trac.webkit.org/changeset/64398
http://trac.webkit.org/changeset/64399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258523</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 19:59:48 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64398 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/64400
http://trac.webkit.org/changeset/64397
http://trac.webkit.org/changeset/64398
http://trac.webkit.org/changeset/64399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258524</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 19:59:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64399 might have broken SnowLeopard Intel Release (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/64400
http://trac.webkit.org/changeset/64397
http://trac.webkit.org/changeset/64398
http://trac.webkit.org/changeset/64399</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258527</commentid>
    <comment_count>46</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-30 20:42:50 -0700</bug_when>
    <thetext>Landed a fix for the test here:
r64403 = b0417f9810fceef5fd87853cdc66b97de9dabc86
http://trac.webkit.org/changeset/64403

I was creating a WebDatabaseSecurityOrigin (a subclass of WebSecurityOrigin) and
passing it along as a WebSecurityOrigin, and when functions were called on it
that were implemented in the subclass, it didn&apos;t run the subclass&apos; functions... it
ran the empty ones.

I&apos;m going to have to clean this up, but I appreciate any insight into why the
subclasses&apos; functions weren&apos;t called. I&apos;ll leave this open but clear the r+ flags so
they don&apos;t show up in any queues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258624</commentid>
    <comment_count>47</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-31 12:00:24 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; Landed a fix for the test here:
&gt; r64403 = b0417f9810fceef5fd87853cdc66b97de9dabc86
&gt; http://trac.webkit.org/changeset/64403
&gt; 
&gt; I was creating a WebDatabaseSecurityOrigin (a subclass of WebSecurityOrigin) and
&gt; passing it along as a WebSecurityOrigin, and when functions were called on it
&gt; that were implemented in the subclass, it didn&apos;t run the subclass&apos; functions... it
&gt; ran the empty ones.
&gt; 
&gt; I&apos;m going to have to clean this up, but I appreciate any insight into why the
&gt; subclasses&apos; functions weren&apos;t called. I&apos;ll leave this open but clear the r+ flags so
&gt; they don&apos;t show up in any queues.

Are you sure the object was a WebDatabaseSecurityOrigin?  What does &quot;po &lt;variable&gt;&quot; say in gdb?  Were the signatures for the overridden methods identical?  Unlike C++, Objective-C should still call the subclass&apos; methods even if it was cast to a super class pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258625</commentid>
    <comment_count>48</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-31 12:02:38 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #46)
&gt; &gt; I was creating a WebDatabaseSecurityOrigin (a subclass of WebSecurityOrigin) and
&gt; &gt; passing it along as a WebSecurityOrigin, and when functions were called on it
&gt; &gt; that were implemented in the subclass, it didn&apos;t run the subclass&apos; functions... it
&gt; &gt; ran the empty ones.
&gt; &gt; 
&gt; &gt; I&apos;m going to have to clean this up, but I appreciate any insight into why the
&gt; &gt; subclasses&apos; functions weren&apos;t called. I&apos;ll leave this open but clear the r+ flags so
&gt; &gt; they don&apos;t show up in any queues.
&gt; 
&gt; Are you sure the object was a WebDatabaseSecurityOrigin?  What does &quot;po &lt;variable&gt;&quot;
&gt; say in gdb?  Were the signatures for the overridden methods identical?  Unlike C++,
&gt; Objective-C should still call the subclass&apos; methods even if it was cast to a super class
&gt; pointer.

I think the difference in the return values (long long vs unsigned long long) between the class and the subclass may have contributed to this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258627</commentid>
    <comment_count>49</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-07-31 12:23:33 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #47)
&gt; &gt; (In reply to comment #46)
&gt; &gt; &gt; I was creating a WebDatabaseSecurityOrigin (a subclass of WebSecurityOrigin) and
&gt; &gt; &gt; passing it along as a WebSecurityOrigin, and when functions were called on it
&gt; &gt; &gt; that were implemented in the subclass, it didn&apos;t run the subclass&apos; functions... it
&gt; &gt; &gt; ran the empty ones.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m going to have to clean this up, but I appreciate any insight into why the
&gt; &gt; &gt; subclasses&apos; functions weren&apos;t called. I&apos;ll leave this open but clear the r+ flags so
&gt; &gt; &gt; they don&apos;t show up in any queues.
&gt; &gt; 
&gt; &gt; Are you sure the object was a WebDatabaseSecurityOrigin?  What does &quot;po &lt;variable&gt;&quot;
&gt; &gt; say in gdb?  Were the signatures for the overridden methods identical?  Unlike C++,
&gt; &gt; Objective-C should still call the subclass&apos; methods even if it was cast to a super class
&gt; &gt; pointer.
&gt; 
&gt; I think the difference in the return values (long long vs unsigned long long) between
&gt; the class and the subclass may have contributed to this issue.

Nevermind, that doesn&apos;t make sense.  I also get compiler errors if the method signatures don&apos;t match.

I know this is a dumb question, but are you sure the #if ENABLE(DATABASE) macro was defined when compiling this file?  Were you able to step into the C++ code in those methods in gdb?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258637</commentid>
    <comment_count>50</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-07-31 14:04:35 -0700</bug_when>
    <thetext>&gt; Are you sure the object was a WebDatabaseSecurityOrigin?  What does &quot;po &lt;variable&gt;&quot;
&gt; say in gdb?  Were the signatures for the overridden methods identical?  Unlike C++,
&gt; Objective-C should still call the subclass&apos; methods even if it was cast to a super class
&gt; pointer.

I&apos;ll have to check what &quot;po&quot; prints. I had concerns, so my diagnosis consisted of setting a
breakpoint on WebDatabaseSecurityOrigin&apos;s setQuota and WebSecurityOrigin&apos;s setQuota.
I expected the latter&apos;s to never be called... however it was called from DumpRenderTree&apos;s
UIDelegate exceededDatabaseQuotaForOrigin.

The code path would have been approximately along the lines of:

&gt; WebDatabaseSecurityOrigin *webOrigin = [[WebDatabaseSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:frame-&gt;document()-&gt;securityOrigin()];
&gt; CallUIDelegate(m_webView, @selector(webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:), kit(frame), webOrigin, (NSString *)databaseName);
&gt; [webOrigin release];

I&apos;ll investigate this.


&gt; I know this is a dumb question, but are you sure the #if ENABLE(DATABASE) macro
&gt; was defined when compiling this file?  Were you able to step into the C++ code in
&gt; those methods in gdb?

My breakpoint for WebDatabaseSecurityOrigin was hit and did go into the
DatabaseTracker code as expected in other cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259076</commentid>
    <comment_count>51</comment_count>
      <attachid>63254</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-02 13:44:08 -0700</bug_when>
    <thetext>Created attachment 63254
[PATCH] Part 5 - Refactor Per Origin Quota Management

This factors out Quota Management from WebSecurityOrigin into managers.
Because now per-origin quotas are not just for Databases, but also for
ApplicationCaches, and maybe other things in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259082</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 13:47:46 -0700</bug_when>
    <thetext>Attachment 63254 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:34:  _applicationCacheQuotaManager is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:35:  _databaseQuotaManager is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259087</commentid>
    <comment_count>53</comment_count>
      <attachid>63254</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-02 13:53:01 -0700</bug_when>
    <thetext>Comment on attachment 63254
[PATCH] Part 5 - Refactor Per Origin Quota Management

&gt; +// Returns the quota of this security origin in bytes.

Whoops, a leftover. This will be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259260</commentid>
    <comment_count>54</comment_count>
      <attachid>63290</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-02 19:33:31 -0700</bug_when>
    <thetext>Created attachment 63290
[PATCH] Part 5 - Refactor Per Origin Quota Management

I think those style errors are wrong but I fixed some other style issues.
Also, I made sure to release the new quota managers. Should I do the
same in finialize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259261</commentid>
    <comment_count>55</comment_count>
      <attachid>63291</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-02 19:35:49 -0700</bug_when>
    <thetext>Created attachment 63291
[PATCH] Part 6 - LayoutTest and Cleanup

This test the behavior, which is a good thing because the async
callback, as I suspected, caused issues. The cache group was being
deleted before the callback fired. Very bad. So I removed the callback
completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259262</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 19:36:23 -0700</bug_when>
    <thetext>Attachment 63290 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:34:  _applicationCacheQuotaManager is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:35:  _databaseQuotaManager is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259580</commentid>
    <comment_count>57</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-08-03 11:28:44 -0700</bug_when>
    <thetext>I think this breaks older clients, so people using Webkit nightlies with Safari 5.0.1 would be broken.

General rule of thumb is we can make new WebKit apps that require a newer version of WebKit, but we can&apos;t make newer versions of WebKit break older WebKit apps.

You could leave the existing API around, leave a FIXME with a &quot;this is deprecated&quot; comment, and file a bug to remove it after a round or two of major releases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259655</commentid>
    <comment_count>58</comment_count>
      <attachid>63290</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-08-03 13:11:53 -0700</bug_when>
    <thetext>Comment on attachment 63290
[PATCH] Part 5 - Refactor Per Origin Quota Management

r=me as long as you leave the old WebSecurityOrigin methods in place to make Safari 5 work with newer WebKit nightly builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259657</commentid>
    <comment_count>59</comment_count>
      <attachid>63291</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-08-03 13:15:20 -0700</bug_when>
    <thetext>Comment on attachment 63291
[PATCH] Part 6 - LayoutTest and Cleanup

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259751</commentid>
    <comment_count>60</comment_count>
      <attachid>63391</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-03 16:58:24 -0700</bug_when>
    <thetext>Created attachment 63391
[DIFF] These are the changes I added to make to leave the old interface intact.

Doing final building and testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259798</commentid>
    <comment_count>61</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-03 18:52:15 -0700</bug_when>
    <thetext>Landed the final Parts 5 and 6:

r64612 = af3ef94bc530d7f6e09d78c0509a0a42efd48b22
http://trac.webkit.org/changeset/64612

r64613 = 87ee39b6fff8dee09225a8ae49398457613ee265
http://trac.webkit.org/changeset/64613

Watching the bots for new test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259799</commentid>
    <comment_count>62</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-03 18:53:37 -0700</bug_when>
    <thetext>FYI you can use &quot;webkit-patch rebaseline&quot; to pull down new results for tests which already have results.

Its an experimental command and won&apos;t necessarily do all that you want (like add new results when they&apos;re missing).  But it is helpful sometimes.  Patches welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259805</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 19:08:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64612 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/64612
http://trac.webkit.org/changeset/64613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259806</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 19:08:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/64613 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/64612
http://trac.webkit.org/changeset/64613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259816</commentid>
    <comment_count>65</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-03 19:33:21 -0700</bug_when>
    <thetext>Follow up patch skipping the tests on other platforms:
r64617 = 3aae04fe6480ebba40975848e4ad02acb355d135 (refs/remotes/trunk)
http://trac.webkit.org/changeset/64617

Filed bugs for other platforms:
Qt: https://bugs.webkit.org/show_bug.cgi?id=43455
Gtk: https://bugs.webkit.org/show_bug.cgi?id=43456
Win: https://bugs.webkit.org/show_bug.cgi?id=43458
Chromium: https://bugs.webkit.org/show_bug.cgi?id=43459</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259822</commentid>
    <comment_count>66</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-03 19:49:05 -0700</bug_when>
    <thetext>yippie ki yi ay I think this can be closed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259931</commentid>
    <comment_count>67</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-04 02:02:40 -0700</bug_when>
    <thetext>There seem to be new crashes on BuildBot, could they be related to this change? See &lt;http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r64630%20(18352)/&gt;, but sadly, I don&apos;t have a stack trace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260192</commentid>
    <comment_count>68</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-04 13:38:06 -0700</bug_when>
    <thetext>(In reply to comment #67)
&gt; There seem to be new crashes on BuildBot, could they be related to this change? See 
&gt; &lt;http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r64630%20(18352)/&gt;,
&gt; but sadly, I don&apos;t have a stack trace.

It happened again on the bots run for r64645. So I opened:
&lt;http://webkit.org/b/43506&gt; http/tests/appcache/idempotent-update.html occasionally crashes on Leopard Bot</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58788</attachid>
            <date>2010-06-15 09:52:40 -0700</date>
            <delta_ts>2010-06-15 10:45:06 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Add Per-Origin quota logic, and persistence.</desc>
            <filename>part1.patch</filename>
            <type>text/plain</type>
            <size>51658</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDliMDUzZS4uNjQwYzE1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxMC0wNi0xNCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDEgLSBBZGQgUGVy
LU9yaWdpbiBxdW90YSBsb2dpYywgYW5kIHBlcnNpc3RlbmNlLgorCisgICAgICAgIEFkZGVkIGFu
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBxdW90YSB0byBhbGxvdyBXZWJLaXQgY2xpZW50cworICAg
ICAgICB0byBsaW1pdCB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgYW4gaW5kaXZpZHVhbCBkb21haW4g
Y2FuIGhhdmUuCisgICAgICAgIFRoZSBwZXIgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXAgcXVvdGEg
aXMgcGVyc2lzdGVudGx5IHN0b3JlZAorICAgICAgICBpbiB0aGUgZGF0YWJhc2Ugd2l0aCBvdGhl
ciBzdGF0ZSB2YXJpYWJsZXMuCisKKyAgICAgICAgV2hlbiBmaWxsaW5nIGFuIEFwcGxpY2F0aW9u
IENhY2hlLCB0aGUgbG9hZGVkIHJlc291cmNlcyBhcmUKKyAgICAgICAgY2hlY2tlZCBhZ2FpbnN0
IHRoZSBxdW90YS4gSWYgaXQgb3ZlcmZsb3dzLCB0aGUgV2ViS2l0IGNsaWVudAorICAgICAgICBp
cyBub3RpZmllZCBieSByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhLiBUaGUgY2xpZW50IGNhbgor
ICAgICAgICBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3RhIG9yIG5vdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhlIHF1b3RhIGlzIGFsd2F5cyBub1F1b3RhIChVSU5UX01BWCkuIFRoaXMgd2ls
bAorICAgICAgICBjaGFuZ2UgdG8gYmUgYSBzZXR0aW5nIHdoaWNoIHRoZSBjbGllbnQgY2FuIGNv
bnRyb2wuCisKKyAgICAgICAgICBDaGFuZ2UgdGhlIERhdGFiYXNlIFNjaGVtYSB0byBpbmNsdWRl
IGEgYHF1b3RhIElOVEVHRVJgIGZvcgorICAgICAgICAgIGVhY2ggYXBwbGljYXRpb24gY2FjaGUg
Z3JvdXAuIFRoZSBxdW90YSBuZWVkcyB0byBiZSBwYXNzZWQKKyAgICAgICAgICBhcm91bmQsIGFu
ZCBpbmNsdWRlZCB3aGVuIGNyZWF0aW5nIG5ldyBjYWNoZSBncm91cHMsIGFuZAorICAgICAgICAg
IG5lZWRzIHRvIGJlIHBlcnNpc3RlbnRseSBzdG9yZWQgd2hlbiB1cGRhdGVkLgorCisgICAgICAg
ICAgVGhpcyBpcyBhIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIHNjaGVt
YS4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
R3JvdXApOiB1c2UgcXVvdGEgZnJvbSByZWNvcmQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6IHVzZSBxdW90YSBmcm9t
IHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNo
ZUdyb3VwRm9yVVJMKTogdXNlIHF1b3RhIGZyb20gcmVjb3JkLgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6IHVzZSBx
dW90YSBmcm9tIHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpvcGVuRGF0YWJhc2UpOiBhZGQgcXVvdGEgdG8gQ2FjaGVHcm91cHMgdGFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOiBzYXZlIHF1b3Rh
IGluIHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZVVwZGF0ZWRDYWNoZUdyb3VwUXVvdGEpOiB1cGRhdGUgcXVvdGEgaW4gcmVjb3JkLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2FjaGUp
OiB1c2UgcXVvdGEgZnJvbSBncm91cCBiZWluZyBjb3BpZWQuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UpOiBzd2l0Y2gg
dG8gbm9uLW1hZ2ljIHZhbHVlIGZvciBkZWZhdWx0IHZhbHVlLgorCisgICAgICAgICAgUmVzcGVj
dCB0aGUgcXVvdGEgd2hlbiBkb3dubG9hZGluZyByZXNvdXJjZXMgZm9yIHRoaXMKKyAgICAgICAg
ICBhcHBsaWNhdGlvbiBjYWNoZSBncm91cC4gSGFuZGxlIHVwZGF0aW5nIHRoZSBxdW90YSBhbmQK
KyAgICAgICAgICBub3RpZnlpbmcgdGhlIGNsaWVudCB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVk
LgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCk6IHNldCBxdW90YSBpbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOiBwcm92aWRlIGRlZmF1bHQgdmFsdWUg
Zm9yIGEgbmV3IHF1b3RhLiBOT1RFOiB3aWxsIHN3aXRjaCB0byBhIHNldHRpbmcuCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFF1b3RhKTogcGVyc2lzdGVudGx5
IHN0b3JlIGlmIHRoZSBxdW90YSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6IG1vbml0b3IgdGhlIGluY3JlYXNpbmcgc2l6
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9h
ZGluZyk6IGFjdCBhcHByb3ByaWF0ZWx5IGlmIHRoZSBxdW90YSBpcyByZWFjaGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWFjaEFwcENhY2hlR3JvdXBR
dW90YSk6IGFzeW5jaHJvbm91c2x5IG5vdGlmeSB0aGUgY2xpZW50IHRoZSBxdW90YSB3YXMgcmVh
Y2hlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKTogcmVzZXQgdGhlIHNpemUgbW9uaXRvci4KKyAgICAgICAgKFdlYkNvcmU6
Oik6IEdyb3VwUXVvdGFDYWxsYmFja1RpbWVyIGNsYXNzIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9u
b3VzIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6c2NoZWR1bGVSZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhQ2FsbGJhY2spOiBhc3luY2hyb25v
dXNseSBub3RpZnkgdGhlIGNsaWVudCB0aGUgcXVvdGEgd2FzIHJlYWNoZWQuCisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOiBhZGQgc3RhdGVzIGZvcjog
cXVvdGEsIHNpemUgbW9uaXRvciwgcXVvdGEgcmVhY2hlZCBmbGFnIHRvIHByZXZlbnQgZHVwbGlj
YXRlIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnF1b3RhKTogYWNjZXNzb3IuCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg6IGRlZmluZSAibm9TdG9yYWdlIiBmb3IgdW5saW1pdGVkIHN0b3Jh
Z2UuCisKKyAgICAgICAgICBEZWZpbmUgdGhlIGNsaWVudCBkZWxlZ2F0ZSByZWFjaGVkQXBwQ2Fj
aGVHcm91cFF1b3RhLgorICAgICAgICAgIEEgc3R1YiBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRl
ZCBmb3IgYWxsIGNsaWVudHMuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cmVhY2hlZEFwcENhY2hlR3JvdXBR
dW90YSk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKworICAgICAgICAgIFN0YXJ0
IG1vdmluZyBPZmZsaW5lV2ViQXBwbGljYXRpb24gZXhwb3J0cyB0byBhIHNlcGFyYXRlIGZpbGUu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuT2Zm
bGluZVdlYkFwcGxpY2F0aW9ucy5leHA6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgdGhlIG5ldyBmaWxlIGFuZCBzb21lIG5ldyBwcml2
YXRlIGV4cG9ydHMgZm9yIEFwcGxpY2F0aW9uIENhY2hlIGZpbGVzLgorCiAyMDEwLTA2LTE1ICBa
aGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdlYzkxNWYuLjdlMjhkZjYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTkxMSw2ICs5MTEsMTAgQEAgZWxzZQogZW5kaWYKIGVuZGlmCiAKK2lmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TLCQoRkVBVFVSRV9E
RUZJTkVTKSksIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgIFdFQkNPUkVf
RVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2Vi
Q29yZS5PZmZsaW5lV2ViQXBwbGljYXRpb25zLmV4cAorZW5kaWYKKwogaWZlcSAoJChzaGVsbCBn
Y2MgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX1BST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSyB8IGN1dCAtZCcgJyAtZjMpLCAxKQogICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lF
UyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5Qcm90ZWN0aW9uU3Bh
Y2VBdXRoQ2FsbGJhY2suZXhwCiBlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLk9m
ZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBs
aWNhdGlvbnMuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4M2E0YjMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9u
cy5leHAKQEAgLTAsMCArMSBAQAorX19aTjdXZWJDb3JlMjFBcHBsaWNhdGlvbkNhY2hlR3JvdXA4
c2V0UXVvdGFFeApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzODA3ZmYwLi44Yjk4OGNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDE2LDExICs0MTYsMTEgQEAKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4RjZCQjEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2Fj
aGUuY3BwICovOyB9OwogCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJMUE4
RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMzBEQjU1Q0RD
MDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCAqLzsgfTsKLQkJMUE4RjZCQkYw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9OworCQkxQThGNkJCRjBEQjU1Q0RDMDAx
REI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQThGNkJCNTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cCAqLzsgfTsKIAkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oICov
OyB9OwogCQkxQThGNkJDMjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJC
NzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07Ci0JCTFB
OEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCODBEQjU1Q0RDMDAx
REI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CisJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkM1MERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCQTBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZl
c3RQYXJzZXIuY3BwICovOyB9OwogCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZl
c3RQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBOEY2QkJCMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oICovOyB9OwogCQkx
QTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAv
KiBLVVJMQ0ZOZXQuY3BwICovOyB9OwpAQCAtNTg2LDcgKzU4Niw3IEBACiAJCTFDRkFFMzIzMEE2
RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9i
amMuZHlsaWIgKi87IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFw
cGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIy
OEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNEY1NEVBQzEwMUZFOTE0MDAw
QUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUExMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCAqLzsgfTsKLQkJMjRGNTRFQUQxMDFGRTkxNDAwMEFFNzQxIC8q
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkyNEY1NEVB
RDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0
MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTI1NDJGNERBMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2Vz
dHVyZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNTQyRjREODExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3Iu
Y3BwICovOyB9OwogCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1
NDJGNEQ5MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oICovOyB9Owog
CQkyOUE4MTIyNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIw
ODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgKi87IH07
CkBAIC04MTcxLDYgKzgxNzEsNyBAQAogCQlBNDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFi
ZWxzTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxzTm9k
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5RTNDMUMxMTU4MEY1MTAw
NzI5MjhFIC8qIEtleUV2ZW50Q29kZXNJUGhvbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gS2V5RXZlbnRDb2Rlc0lQaG9uZS5oOyBwYXRoID0gaXBob25lL0tleUV2ZW50Q29k
ZXNJUGhvbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5RTNDMUQxMTU4MEY1
MTAwNzI5MjhFIC8qIEtleUV2ZW50SVBob25lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gS2V5RXZlbnRJUGhvbmUubW07IHBhdGggPSBpcGhvbmUvS2V5RXZlbnRJ
UGhvbmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OUZEMjk2MTFCODdBMzIw
MDBCM0I5MiAvKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9ydHM7
IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMu
ZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1
Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NENG
MTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEtleUV2ZW50Q29jb2EuaDsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA5LDYgKzExNDEwLDcgQEAKIAkJ
CQlGRTQ5QkQzMDEwNjE3MTkxMDBEMEUxQUUgLyogV2ViQ29yZS5JbnNwZWN0b3IuZXhwICovLAog
CQkJCTQ0OTE5NTlDMEZCRTE3RDcwMEQ5RjgyNCAvKiBXZWJDb3JlLkpOSS5leHAgKi8sCiAJCQkJ
NDQ5MTk1OUEwRkJFMTdENzAwRDlGODI0IC8qIFdlYkNvcmUuTlBBUEkuZXhwICovLAorCQkJCUE1
OUZEMjk2MTFCODdBMzIwMDBCM0I5MiAvKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMu
ZXhwICovLAogCQkJCUZFMTM2QUU3MTA2NDNCRTUwMDc4Q0Y2RCAvKiBXZWJDb3JlLk9yaWVudGF0
aW9uRXZlbnRzLmV4cCAqLywKIAkJCQk0NDkxOTU5QjBGQkUxN0Q3MDBEOUY4MjQgLyogV2ViQ29y
ZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHAgKi8sCiAJCQkJMjcxMjQ1RDMxMTg5MEFCNzAwODNFODUy
IC8qIFdlYkNvcmUuUHJvdGVjdGlvblNwYWNlQXV0aENhbGxiYWNrLmV4cCAqLywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKaW5kZXggZTQyZWUxZC4uNDNlZTQxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAg
LTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCosIGludDY0X3QpIHsgfTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCA1MjYwNDNiLi5lYWMzODcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0
aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCitBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5p
ZmVzdFVSTCwgaW50NjRfdCBxdW90YSwgYm9vbCBpc0NvcHkpCiAgICAgOiBtX21hbmlmZXN0VVJM
KG1hbmlmZXN0VVJMKQogICAgICwgbV91cGRhdGVTdGF0dXMoSWRsZSkKICAgICAsIG1fZG93bmxv
YWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQoMCkKQEAgLTU3LDYgKzU3LDkg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3AKICAgICAsIG1fY29tcGxldGlvblR5cGUoTm9uZSkK
ICAgICAsIG1faXNDb3B5KGlzQ29weSkKICAgICAsIG1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hl
U2l6ZShmYWxzZSkKKyAgICAsIG1fbG9hZGVkU2l6ZSgwKQorICAgICwgbV9xdW90YShxdW90YSkK
KyAgICAsIG1fcXVvdGFSZWFjaGVkKGZhbHNlKQogewogfQogCkBAIC0xODIsNyArMTg1LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0b3JhZ2UoKS5maW5kT3JDcmVhdGVD
YWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gY2FjaGVTdG9yYWdlKCkuZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChtYW5pZmVzdFVSTCwgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEpOwogCiAgICAgZG9jdW1lbnRMb2FkZXItPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChn
cm91cCk7CiAgICAgZ3JvdXAtPm1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5hZGQoZG9j
dW1lbnRMb2FkZXIpOwpAQCAtMzc2LDYgKzM3OSwyMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6c2V0TmV3ZXN0Q2FjaGUoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBuZXdlc3RD
YQogICAgIG1fbmV3ZXN0Q2FjaGUtPnNldEdyb3VwKHRoaXMpOwogfQogCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2V0UXVvdGEoaW50NjRfdCBxdW90YSkKK3sKKyAgICBpZiAoaXNPYnNv
bGV0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocXVvdGEgPT0gbV9xdW90YSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBhbnl0aGluZyBzcGVj
aWFsIHdoZW4gdGhlIHF1b3RhCisgICAgLy8gaXMgYWN0dWFsbHkgbG93ZXJlZD8gUG90ZW50aWFs
bHkgZW1wdHkgdGhlIGNhY2hlPworCisgICAgaW50NjRfdCBvbGRRdW90YSA9IG1fcXVvdGE7Cisg
ICAgbV9xdW90YSA9IHF1b3RhOworICAgIGlmICghY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVk
Q2FjaGVHcm91cFF1b3RhKHRoaXMpKQorICAgICAgICBtX3F1b3RhID0gb2xkUXVvdGE7Cit9CisK
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jzb2xldGUoKQogewogICAgIGlmIChp
c09ic29sZXRlKCkpCkBAIC01MjMsNiArNTQzLDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGQK
ICAgICAKICAgICBBU1NFUlQobV9jdXJyZW50UmVzb3VyY2UpOwogICAgIG1fY3VycmVudFJlc291
cmNlLT5kYXRhKCktPmFwcGVuZChkYXRhLCBsZW5ndGgpOworCisgICAgbV9sb2FkZWRTaXplICs9
IGxlbmd0aDsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKQEAgLTUzMSw3ICs1NTMsMTcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSkKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gCisKKyAgICBpZiAobV9xdW90YSA+PSBtX2xvYWRlZFNpemUpCisgICAgICAgIG1f
cXVvdGFSZWFjaGVkID0gZmFsc2U7CisgICAgZWxzZSBpZiAoIW1fcXVvdGFSZWFjaGVkKSB7Cisg
ICAgICAgIG1fcXVvdGFSZWFjaGVkID0gdHJ1ZTsgLy8gUHJldmVudCBpbmZvcm1pbmcgdGhlIGNs
aWVudCBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOworICAg
ICAgICBzY2hlZHVsZVJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGFDYWxsYmFjaygpOworICAgICAg
ICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNT
RVJUKG1fY3VycmVudEhhbmRsZSA9PSBoYW5kbGUpOwogICAgIEFTU0VSVChtX3BlbmRpbmdFbnRy
aWVzLmNvbnRhaW5zKGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpKSk7CiAgICAgCkBAIC02ODcsNiAr
NzE5LDE4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWFjaE1heEFwcENhY2hl
U2l6ZSgpCiAgICAgY2hlY2tJZkxvYWRJc0NvbXBsZXRlKCk7CiB9CiAKK3ZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWFjaEFwcENhY2hlR3JvdXBRdW90YShQYXNzUmVmUHRyPEZyYW1l
PiBmcmFtZSwgaW50NjRfdCBsb2FkZWRTaXplKQoreworICAgIC8vIFF1b3RhIG1heSBoYXZlIGNo
YW5nZWQgYmVmb3JlIHdlIGV2ZW4gdG9sZCB0aGUgY2xpZW50LCBhbmQgdGhlcmUgY291bGQgbm93
IGJlIHNwYWNlLgorICAgIGludDY0X3Qgc3BhY2VOZWVkZWQgPSBsb2FkZWRTaXplIC0gbV9xdW90
YTsKKyAgICBpZiAoc3BhY2VOZWVkZWQgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
T3RoZXJ3aXNlLCBpbmZvcm0gdGhlIGNsaWVudCB0aGUgcXVvdGEgaGFzIGJlZW4gcmVhY2hlZCwg
dGhleSBtYXkgZGVjaWRlIHRvIGNoYW5nZSB0aGUgcXVvdGEuCisgICAgLy8gUGFzc2luZyB0aGUg
Z3JvdXAgaW4gY2FzZSB0aGUgY2xpZW50IHdhbnRzIHRvIGNoYW5nZSB0aGUgcXVvdGEuCisgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkQXBwQ2FjaGVHcm91cFF1
b3RhKHRoaXMsIHNwYWNlTmVlZGVkKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNhY2hlVXBkYXRlRmFpbGVkKCkKIHsKICAgICBzdG9wTG9hZGluZygpOwpAQCAtODM0LDYgKzg3
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUo
KQogICAgIG1fY29tcGxldGlvblR5cGUgPSBOb25lOwogICAgIG1fdXBkYXRlU3RhdHVzID0gSWRs
ZTsKICAgICBtX2ZyYW1lID0gMDsKKyAgICBtX2xvYWRlZFNpemUgPSAwOwogICAgIG1fY2FsbGVk
UmVhY2hlZE1heEFwcENhY2hlU2l6ZSA9IGZhbHNlOwogfQogCkBAIC05MzIsMTIgKzk3NywzNCBA
QCBwcml2YXRlOgogICAgICAgICBtX2NhY2hlR3JvdXAtPmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXpl
KCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KKwogICAgIC8vIE5vdGUgdGhhdCB0aGVy
ZSBpcyBubyBuZWVkIHRvIHVzZSBhIFJlZlB0ciBoZXJlLiBUaGUgQXBwbGljYXRpb25DYWNoZUdy
b3VwIGluc3RhbmNlIGlzIGd1YXJhbnRlZWQKICAgICAvLyB0byBiZSBhbGl2ZSB3aGVuIHRoZSB0
aW1lciBmaXJlcyBzaW5jZSBpbnZva2luZyB0aGUgQ2hyb21lQ2xpZW50IGNhbGxiYWNrIGlzIHBh
cnQgb2YgaXRzIG5vcm1hbAogICAgIC8vIHVwZGF0ZSBtYWNoaW5lcnkgYW5kIG5vdGhpbmcgY2Fu
IHlldCBjYXVzZSBpdCB0byBnZXQgZGVsZXRlZC4KICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAq
IG1fY2FjaGVHcm91cDsKIH07CiAKK2NsYXNzIEdyb3VwUXVvdGFDYWxsYmFja1RpbWVyOiBwdWJs
aWMgVGltZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBHcm91cFF1b3RhQ2FsbGJhY2tUaW1lcihBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXAsIEZyYW1lKiBmcmFtZSwgaW50NjRfdCBsb2Fk
ZWRTaXplKQorICAgICAgICA6IG1fY2FjaGVHcm91cChjYWNoZUdyb3VwKQorICAgICAgICAsIG1f
ZnJhbWUoZnJhbWUpCisgICAgICAgICwgbV9sb2FkZWRTaXplKGxvYWRlZFNpemUpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQorICAgIHsKKyAgICAg
ICAgbV9jYWNoZUdyb3VwLT5kaWRSZWFjaEFwcENhY2hlR3JvdXBRdW90YShtX2ZyYW1lLnJlbGVh
c2UoKSwgbV9sb2FkZWRTaXplKTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorCisgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBtX2NhY2hlR3JvdXA7CisgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOworICAgIGludDY0X3QgbV9sb2FkZWRTaXplOworfTsKKwogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtOTQ2LDYgKzEwMTMsMTUgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxi
YWNrKCkKICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMu
CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRBcHBDYWNo
ZUdyb3VwUXVvdGFDYWxsYmFjaygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lUHJvdGVjdG9yID0gbV9mcmFtZTsKKyAgICBHcm91cFF1b3Rh
Q2FsbGJhY2tUaW1lciogdGltZXIgPSBuZXcgR3JvdXBRdW90YUNhbGxiYWNrVGltZXIodGhpcywg
ZnJhbWVQcm90ZWN0b3IuZ2V0KCksIG1fbG9hZGVkU2l6ZSk7CisgICAgdGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKKyAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmly
ZXMuCit9CisKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxs
Q2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDhkZjUyY2MuLjBh
NTlkZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5oCkBAIC01NCw3ICs1NCw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlv
biB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCA6IHB1YmxpYyBOb25jb3B5YWJsZSwg
UmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAorICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgaW50NjRfdCBx
dW90YSwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAogICAgIH5BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7IElkbGUsIENoZWNraW5nLCBEb3du
bG9hZGluZyB9OwpAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNo
ZSogbmV3ZXN0Q2FjaGUoKSBjb25zdCB7IHJldHVybiBtX25ld2VzdENhY2hlLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXROZXdlc3RDYWNoZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+KTsKIAor
ICAgIGludDY0X3QgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9CisgICAgdm9pZCBz
ZXRRdW90YShpbnQ2NF90IHF1b3RhKTsKKwogICAgIHZvaWQgbWFrZU9ic29sZXRlKCk7CiAgICAg
Ym9vbCBpc09ic29sZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc09ic29sZXRlOyB9CiAKQEAgLTk0
LDYgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVy
Kj4mKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElELCBEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVk
TWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZEFwcENh
Y2hlR3JvdXBRdW90YUNhbGxiYWNrKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSk7CiAKQEAgLTExMCw2ICsxMTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwogICAgIHZvaWQgZGlkUmVhY2hNYXhB
cHBDYWNoZVNpemUoKTsKKyAgICB2b2lkIGRpZFJlYWNoQXBwQ2FjaGVHcm91cFF1b3RhKFBhc3NS
ZWZQdHI8RnJhbWU+IGZyYW1lLCBpbnQ2NF90IGxvYWRlZFNpemUpOwogICAgIAogICAgIHZvaWQg
c3RhcnRMb2FkaW5nRW50cnkoKTsKICAgICB2b2lkIGRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNl
cygpOwpAQCAtMTc5LDcgKzE4NCwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IG1fbWFuaWZlc3RSZXNvdXJjZTsKICAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IG1fbWFuaWZlc3RIYW5kbGU7CiAKKyAgICBpbnQ2NF90IG1fbG9hZGVkU2l6ZTsKKyAg
ICBpbnQ2NF90IG1fcXVvdGE7CisgICAgYm9vbCBtX3F1b3RhUmVhY2hlZDsKKwogICAgIGZyaWVu
ZCBjbGFzcyBDaHJvbWVDbGllbnRDYWxsYmFja1RpbWVyOworICAgIGZyaWVuZCBjbGFzcyBHcm91
cFF1b3RhQ2FsbGJhY2tUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApp
bmRleCA1OTIzMmE1Li5hNzlhNWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNv
bnN0IEtVUkwmIG1hbmlmCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNF
TEVDVCBpZCwgbWFuaWZlc3RVUkwsIG5ld2VzdENhY2hlIEZST00gQ2FjaGVHcm91cHMgV0hFUkUg
bmV3ZXN0Q2FjaGUgSVMgTk9UIE5VTEwgQU5EIG1hbmlmZXN0VVJMPT8iKTsKKyAgICBTUUxpdGVT
dGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBu
ZXdlc3RDYWNoZSwgcXVvdGEgRlJPTSBDYWNoZUdyb3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBO
T1QgTlVMTCBBTkQgbWFuaWZlc3RVUkw9PyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTExNyw4ICsxMTcs
MTAgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWYKICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2Fj
aGUpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5pZmVzdFVSTCk7CisKKyAg
ICBpbnQ2NF90IHF1b3RhID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0KDMpOworCisgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAobWFu
aWZlc3RVUkwsIHF1b3RhKTsKICAgICAgIAogICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgIGdyb3Vw
LT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtMTI2LDcgKzEyOCw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdy
b3VwKGNvbnN0IEtVUkwmIG1hbmlmCiAgICAgcmV0dXJuIGdyb3VwOwogfSAgICAKIAotQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2Fj
aGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwsIGludDY0X3Qgc3RhcnRpbmdHcm91cFF1b3RhKQogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCkBAIC0xNDIsNyArMTQ0
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICAKICAgICAvLyBJZiB0aGUgZ3JvdXAg
d2FzIG5vdCBmb3VuZCB3ZSBuZWVkIHRvIGNyZWF0ZSBpdAogICAgIGlmICghZ3JvdXApIHsKLSAg
ICAgICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAg
ICAgICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMLCBzdGFy
dGluZ0dyb3VwUXVvdGEpOwogICAgICAgICBtX2NhY2hlSG9zdFNldC5hZGQodXJsSG9zdEhhc2go
bWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCkBAIC0yMDksNyArMjExLDcgQEAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBLVVJMJiB1cmwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIC8vIENoZWNr
IHRoZSBkYXRhYmFzZS4gTG9vayBmb3IgYWxsIGNhY2hlIGdyb3VwcyB3aXRoIGEgbmV3ZXN0IGNh
Y2hlLgotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBp
ZCwgbWFuaWZlc3RVUkwsIG5ld2VzdENhY2hlIEZST00gQ2FjaGVHcm91cHMgV0hFUkUgbmV3ZXN0
Q2FjaGUgSVMgTk9UIE5VTEwiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBuZXdlc3RDYWNoZSwgcXVvdGEgRlJPTSBD
YWNoZUdyb3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBOT1QgTlVMTCIpOwogICAgIGlmIChzdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gMDsKICAgICAK
QEAgLTIzNiw3ICsyMzgsOSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmIHVybAogICAgICAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3Jv
dXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICAgICAgaW50
NjRfdCBxdW90YSA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgzKTsKKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5p
ZmVzdFVSTCwgcXVvdGEpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAg
ICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtMjc3LDcgKzI4
MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZh
bGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLCiAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAKICAgICAvLyBDaGVjayB0aGUgZGF0YWJhc2UuIExvb2sgZm9yIGFsbCBjYWNoZSBncm91cHMg
d2l0aCBhIG5ld2VzdCBjYWNoZS4KLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBuZXdlc3RDYWNoZSBGUk9NIENhY2hlR3Jv
dXBzIFdIRVJFIG5ld2VzdENhY2hlIElTIE5PVCBOVUxMIik7CisgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGlkLCBtYW5pZmVzdFVSTCwgbmV3ZXN0Q2Fj
aGUsIHF1b3RhIEZST00gQ2FjaGVHcm91cHMgV0hFUkUgbmV3ZXN0Q2FjaGUgSVMgTk9UIE5VTEwi
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCkBAIC0zMDMsNyArMzA3LDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IEsKICAgICAgICAgaWYgKGNhY2hlLT5yZXNvdXJjZUZvclVSTChmYWxsYmFja1VSTCktPnR5cGUo
KSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbikKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICAgICAgaW50NjRfdCBxdW90YSA9IHN0
YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgzKTsKKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5pZmVzdFVSTCwgcXVvdGEp
OwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAgICAgIGdyb3VwLT5zZXRO
ZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtNDI2LDcgKzQzMiwxMCBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZChjb25zdCBTdHJpbmcmIHNx
bCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY29uc3QgaW50IHNjaGVtYVZlcnNp
b24gPSA1OworLy8gVXBkYXRlIHRoZSBzY2hlbWFWZXJzaW9uIHdoZW4gdGhlIHNjaGVtYSBvZiBh
bnkgdGhlIEFwcGxpY2F0aW9uIENhY2hlCisvLyBTUUxpdGUgdGFibGVzIGNoYW5nZXMuIFRoaXMg
YWxsb3dzIHRoZSBkYXRhYmFzZSB0byBiZSByZWJ1aWx0IHdoZW4KKy8vIGEgbmV3LCBpbmNvbXBh
dGlibGUgY2hhbmdlIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gdGhlIGRhdGFiYXNlIHNjaGVtYS4K
K3N0YXRpYyBjb25zdCBpbnQgc2NoZW1hVmVyc2lvbiA9IDY7CiAgICAgCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKIHsKQEAgLTQ3NSw3ICs0ODQs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCkKICAgICAKICAgICAvLyBDcmVhdGUgdGFibGVzCiAgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlR3JvdXBzIChpZCBJ
TlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsICIKLSAgICAgICAgICAgICAgICAgICAg
ICAibWFuaWZlc3RIb3N0SGFzaCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1h
bmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVH
RVIpIik7CisgICAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0SG9zdEhhc2ggSU5URUdFUiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBtYW5pZmVzdFVSTCBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBGQUlMLCBuZXdlc3RDYWNoZSBJTlRFR0VSLCBxdW90YSBJTlRFR0VSKSIpOwogICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZXMgKGlkIElO
VEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgY2FjaGVHcm91cCBJTlRFR0VSLCBzaXpl
IElOVEVHRVIpIik7CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlV2hpdGVsaXN0VVJMcyAodXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCwgY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwogICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUFsbG93c0Fs
bE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CkBAIC01MjMs
MTIgKzUzMiwxMyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBHcm91cFN0b3JhZ2VJRAogICAgIEFTU0VSVChncm91cC0+
c3RvcmFnZUlEKCkgPT0gMCk7CiAgICAgQVNTRVJUKGpvdXJuYWwpOwogCi0gICAgU1FMaXRlU3Rh
dGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVHcm91cHMgKG1h
bmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJMKSBWQUxVRVMgKD8sID8pIik7CisgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVHcm91cHMg
KG1hbmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJMLCBxdW90YSkgVkFMVUVTICg/LCA/LCA/KSIp
OwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDEsIHVybEhvc3RIYXNoKGdy
b3VwLT5tYW5pZmVzdFVSTCgpKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIGdyb3VwLT5t
YW5pZmVzdFVSTCgpKTsKKyAgICBzdGF0ZW1lbnQuYmluZEludDY0KDMsIGdyb3VwLT5xdW90YSgp
KTsKIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC03MTAsNiArNzIwLDIxIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjCiAg
ICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQpOwogfQogCitib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRDYWNoZUdyb3VwUXVvdGEoQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCkKK3sKKyAgICBpZiAoZ3JvdXAtPmlzT2Jzb2xldGUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1FMaXRlU3RhdGVtZW50IHVwZGF0ZVN0YXRl
bWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIENhY2hlR3JvdXBzIFNFVCBxdW90YT0/IFdIRVJFIGlk
PT8iKTsKKyAgICBpZiAodXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBncm91cC0+cXVvdGEoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBncm91
cC0+c3RvcmFnZUlEKCkpOworCisgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3Rh
dGVtZW50KTsKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCiB7
CiAgICAgQVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSk7CkBAIC05OTksNyArMTAyNCw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3RyaW5n
JiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAgfQogICAgIAogICAgIC8vIE5vdyBjcmVhdGUgYSBu
ZXcgY2FjaGUgZ3JvdXAuCi0gICAgT3duUHRyPEFwcGxpY2F0aW9uQ2FjaGVHcm91cD4gZ3JvdXBD
b3B5KG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY2FjaGUtPmdyb3VwKCktPm1hbmlmZXN0VVJM
KCksIHRydWUpKTsKKyAgICBPd25QdHI8QXBwbGljYXRpb25DYWNoZUdyb3VwPiBncm91cENvcHko
bmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChjYWNoZS0+Z3JvdXAoKS0+bWFuaWZlc3RVUkwoKSwg
Y2FjaGUtPmdyb3VwKCktPnF1b3RhKCksIHRydWUpKTsKICAgICAKICAgICBncm91cENvcHktPnNl
dE5ld2VzdENhY2hlKGNhY2hlQ29weSk7CiAgICAgCkBAIC0xMTIwLDcgKzExNDUsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0Zvck1heFNpemVSZWFjaGVkKCkKIH0KIAog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkgCi0gICAg
OiBtX21heGltdW1TaXplKElOVF9NQVgpCisgICAgOiBtX21heGltdW1TaXplKG5vUXVvdGEpCiAg
ICAgLCBtX2lzTWF4aW11bVNpemVSZWFjaGVkKGZhbHNlKQogewogfQpAQCAtMTEyOCw3ICsxMTUz
LDcgQEAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkK
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBjYWNoZVN0b3JhZ2UoKQogewogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UsIHN0b3JhZ2UsICgpKTsKLSAgICAK
KwogICAgIHJldHVybiBzdG9yYWdlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCBhYWE1YzljLi4wOWM2MThjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
CisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
QEAgLTU3LDEzICs1NywxNCBAQCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVz
b3VyY2UgZnJvbS4KICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91
cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkg
dG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KIAot
ICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBL
VVJMJiBtYW5pZmVzdFVSTCk7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVh
dGVDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBpbnQ2NF90IHN0YXJ0aW5nUXVv
dGEpOwogICAgIHZvaWQgY2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlR3JvdXAq
KTsKICAgICB2b2lkIGNhY2hlR3JvdXBNYWRlT2Jzb2xldGUoQXBwbGljYXRpb25DYWNoZUdyb3Vw
Kik7Ci0gICAgICAgIAorCiAgICAgYm9vbCBzdG9yZU5ld2VzdENhY2hlKEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCopOyAvLyBVcGRhdGVzIHRoZSBjYWNoZSBncm91cCwgYnV0IGRvZXNuJ3QgcmVtb3Zl
IG9sZCBjYWNoZS4KICAgICBib29sIHN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSosIEFw
cGxpY2F0aW9uQ2FjaGUqKTsKICAgICBib29sIHN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiwgQXBwbGljYXRpb25DYWNoZSopOworICAgIGJvb2wgc3RvcmVVcGRhdGVk
Q2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogCiAgICAgLy8gUmVtb3Zl
cyB0aGUgZ3JvdXAgaWYgdGhlIGNhY2hlIHRvIGJlIHJlbW92ZWQgaXMgdGhlIG5ld2VzdCBvbmUg
KHNvLCBzdG9yZU5ld2VzdENhY2hlKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZWhhbmQgd2hl
biB1cGRhdGluZykuCiAgICAgdm9pZCByZW1vdmUoQXBwbGljYXRpb25DYWNoZSopOwpAQCAtNzYs
NiArNzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYWNoZUdyb3VwU2l6ZShjb25zdCBTdHJpbmcm
IG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKTsKICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAo
Y29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUo
KTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IG5vUXVvdGEgPSBJTlQ2NF9NQVg7CiBwcml2
YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgUGFzc1JlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAppbmRleCBjOTNiM2M5Li5kZmQ4OWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKKysrIGIvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIE5TUmVzcG9uZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNs
YXNzIEZpbGVDaG9vc2VyOwogICAgIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTE2MSw2ICsxNjIsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBUaGUgY2hyb21lIGNsaWVudCB3b3Vs
ZCBuZWVkIHRvIHRha2Ugc29tZSBhY3Rpb24gc3VjaCBhcyBldmljdGluZyBzb21lCiAgICAgICAg
IC8vIG9sZCBjYWNoZXMuCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3Qgc3BhY2VOZWVkZWQpID0gMDsKKworICAgICAgICAvLyBDYWxsYmFjayBpbnZv
a2VkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwIHF1b3RhIGlzIHJlYWNoZWQuIFRo
aXMKKyAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgcmVzb3VyY2VzIGF0dGVtcHRpbmcgdG8gYmUg
Y2FjaGVkIHZpYSB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgIC8vIG1vcmUgdGhhbiBhbGxvd2Vk
LiBUaGlzIGNhbGxiYWNrIGFsbG93cyB0aGUgY2hyb21lIGNsaWVudCB0byB0YWtlIGFjdGlvbiwK
KyAgICAgICAgLy8gc3VjaCBhcyBwcm9tcHRpbmcgdGhlIHVzZXIgdG8gYXNrIHRvIGluY3JlYXNl
IHRoZSBxdW90YSBmb3IgdGhpcworICAgICAgICAvLyBpbmRpdmlkdWFsIGFwcGxpY2F0aW9uIGNh
Y2hlIGdyb3VwLgorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcENhY2hlR3JvdXBRdW90
YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKSA9IDA7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1dlYktpdC9D
aGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzZDNlODcuLjMyNjJjYjUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQg
QXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChR
dW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDYyNworCisgICAgICAgIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBkZWxl
Z2F0ZSBtZXRob2QuCisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6cmVhY2hlZEFwcENh
Y2hlR3JvdXBRdW90YSk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5oOgorCiAyMDEwLTA2LTE1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGJ1aWxkIGZpeC4gU2ltcGxlIHR5cG8uCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBhNThlOTVkLi5iYTllYTA4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMC0wNi0xNCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbWl0IEFw
cGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVv
dGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2
MjcKKworICAgICAgICBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgZGVsZWdh
dGUgbWV0aG9kLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKToK
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorCiAyMDEwLTA2LTE0ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IENocm9taXVtIGJ1
aWxkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNTU5YTYy
Yi4uOTBiMDhjNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJOYW1l
cy5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKQEAgLTU3OCw2ICs1NzksMTEgQEAgdm9pZCBDaHJv
bWVDbGllbnRJbXBsOjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQp
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CisKK3ZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2
NF90IHNwYWNlTmVlZGVkKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQogI2VuZGlm
CiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFz
c1JlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCmluZGV4IDg0MzU1YzMuLmEwYWY5MzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CitjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA7CiBjbGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIEhUTUxQYXJzZXJRdWlya3M7CiBjbGFzcyBQ
b3B1cENvbnRhaW5lcjsKQEAgLTExOCw2ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkNv
cmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBkYXRhYmFzZU5hbWUpOwogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRN
YXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwKiwg
aW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9u
UHJlc2VudGVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKaW5kZXggYzUxYmVmYi4uYTNkZGU5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAi
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUg
IkRhdGFiYXNlRGV0YWlscy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgpAQCAtMzUx
LDYgKzM1MiwxMSBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6cmVhY2hlZE1heEFwcENhY2hlU2l6
ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwordm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRB
cHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5l
ZWRlZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOyAgICAKK30KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmgKaW5kZXggMzk5ZWY3Zi4uOGM0Y2NjZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0xMTAsNiArMTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1h
eEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZEFwcENhY2hlR3JvdXBRdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFt
ZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOTg0MWNiYS4uZTc4NzcyNiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0xNCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBD
YXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBuZXcgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpyZWFjaGVkQXBw
Q2FjaGVHcm91cFF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuaDoKKwogMjAxMC0wNi0xNCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggNTc1OTYwMS4uMTIxZDFlNCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogCisjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCiAjaW5jbHVkZSAiQ29u
c29sZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5o
IgpAQCAtNTIyLDYgKzUyMywxMSBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3Bh
Y2UuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwordm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNo
ZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFj
ZU5lZWRlZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogI2VuZGlmCiAKIHZvaWQgQ2hy
b21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBw
cnBGaWxlQ2hvb3NlcikKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCmluZGV4IDQ2ZDAxNWUuLjU4NzIyYTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTA4LDYgKzEwOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxl
Q2hvb3NlciopOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKaW5kZXggZDcxYzVlNC4uNTU1ZTg2NSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTAtMDYtMTQgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBB
cHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1
b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
NjI3CisKKyAgICAgICAgQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVn
YXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwQ2FjaGVH
cm91cFF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5o
OgorCiAyMDEwLTA2LTE0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKaW5kZXggMmNmNWMzMS4uNWFi
MmMyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
SGFpa3UuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50SGFpa3UuaCIKIAorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMzQ1LDYgKzM0NiwxMSBAQCB2b2lkIENocm9tZUNs
aWVudFd4OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwordm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFw
cENhY2hlR3JvdXBRdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVl
ZGVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBDaHJvbWVD
bGllbnRIYWlrdTo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiwg
R2VvbG9jYXRpb24qKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmggYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuaAppbmRleCBkNWEzNzJiLi5mYjUzMjYwIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaAorKysgYi9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaApAQCAtMTMwLDYgKzEzMCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3Bh
Y2VOZWVkZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcENhY2hlR3JvdXBRdW90
YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgog
CiAgICAgICAgIC8vIFRoaXMgaXMgYW4gYXN5bmNocm9ub3VzIGNhbGwuIFRoZSBDaHJvbWVDbGll
bnQgY2FuIGRpc3BsYXkgVUkgYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDhh
ZjQxNGQuLjg3ZGM2ZWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDYtMTQgIEpvc2VwaCBQ
ZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQ
ZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgQWRkZWQgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4gRXhhbXBsZQorICAg
ICAgICBiZWhhdmlvciB3b3VsZCBiZSB0byBwcm9tcHQgdGhlIHVzZXIgaWYgdGhleSB3b3VsZCBs
aWtlIHRvIGluY3JlYXNlCisgICAgICAgIHRoZSBxdW90YSBmb3IgdGhpcyBkb21haW4uIElmIHBy
b3ZpZGVkIHdpdGggYSBuZXcgcXVvdGEsIHRoZSBxdW90YQorICAgICAgICBpcyBzZXQgb24gdGhl
IGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwLCBhbmQgd2lsbCBiZSB1c2VkIHRoZSBuZXh0CisgICAg
ICAgIHRpbWUgdGhlIHJlc291cmNlcyBhcmUgZmV0Y2hlZC4KKworICAgICAgICAgIEhhbmRsZSBX
ZWJDb3JlJ3MgZGVsZWdhdGUgbWV0aG9kIHdoZW4gdGhlIHF1b3RhIGlzIHJlYWNoZWQuCisgICAg
ICAgICAgUGFzcyBvbiB0byB0aGUgV2ViVUkgZGVsZWdhdGUuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBDYWNo
ZUdyb3VwUXVvdGEpOgorCisgICAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBwcm9tcHRp
bmcgZm9yIGEgbmV3IHF1b3RhLiBSZXR1cm5pbmcKKyAgICAgICAgICBuaWwsIGxlYXZlcyB0aGUg
cXVvdGEgdW5jaGFuZ2VkLgorCisgICAgICAgICogRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0
VUlEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtXZWJEZWZhdWx0VUlEZWxlZ2F0ZSB3ZWJWaWV3OmV4
Y2VlZGVkQXBwbGljYXRpb25DYWNoZVF1b3RhV2l0aE9sZFF1b3RhOnNwYWNlTmVlZGVkOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKwogMjAxMC0wNi0xNSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
aG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2Vi
RGVmYXVsdFVJRGVsZWdhdGUubSBiL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZh
dWx0VUlEZWxlZ2F0ZS5tCmluZGV4IDY4ZmEwNWUuLjRkYzk5ZjAgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCisrKyBiL1dlYktp
dC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCkBAIC0yMzcsNCAr
MjM3LDkgQEAgLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGdlbmVyYXRl
UmVwbGFjZW1lbnRGaWxlOihOU1N0cmluZyAqKXBhdGgKICAgICByZXR1cm4gbmlsOwogfQogCist
IChOU051bWJlciAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlv
bkNhY2hlUXVvdGFXaXRoT2xkUXVvdGE6KE5TTnVtYmVyICopb2xkUXVvdGEgc3BhY2VOZWVkZWQ6
KE5TTnVtYmVyICopc3BhY2VOZWVkZWQKK3sKKyAgICByZXR1cm4gbmlsOworfQorCiBAZW5kCmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3ZGVlYTc5
Li5lMjdlYjFjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTExNSw2ICsxMTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2Fj
aGVHcm91cFF1b3RhKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3Bh
Y2VOZWVkZWQpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtz
KCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5k
ZXggMGE1MmE5Zi4uZmI5YWQ3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIldlYlZpZXcuaCIKICNp
bXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9CbG9ja0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29uc29sZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC01NjAsNiArNTYxLDI1IEBAIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQp
CiB7CiAgICAgLy8gRklYTUU6IEZyZWUgc29tZSBzcGFjZS4KIH0KKwordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBh
cHBsaWNhdGlvbkNhY2hlR3JvdXAsIGludDY0X3Qgc3BhY2VOZWVkZWQpCit7ICAgIAorICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIC8vIFByb21wdCB0aGUgdXNlciBmb3Ig
YSBxdW90YSBpbmNyZWFzZS4KKyAgICBOU051bWJlciAqb2xkUXVvdGEgPSBbW05TTnVtYmVyIGFs
bG9jXSBpbml0V2l0aExvbmdMb25nOmFwcGxpY2F0aW9uQ2FjaGVHcm91cC0+cXVvdGEoKV07Cisg
ICAgTlNOdW1iZXIgKmRpZmZlcmVuY2UgPSBbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aExvbmdM
b25nOnNwYWNlTmVlZGVkXTsKKyAgICBOU051bWJlciAqbmV3UXVvdGEgPSBDYWxsVUlEZWxlZ2F0
ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZVF1
b3RhV2l0aE9sZFF1b3RhOnNwYWNlTmVlZGVkOiksIG9sZFF1b3RhLCBkaWZmZXJlbmNlKTsKKwor
ICAgIC8vIFNldCB0aGUgbmV3IHF1b3RhLgorICAgIGlmIChuZXdRdW90YSAmJiBuZXdRdW90YSAh
PSBvbGRRdW90YSkKKyAgICAgICAgYXBwbGljYXRpb25DYWNoZUdyb3VwLT5zZXRRdW90YShbbmV3
UXVvdGEgbG9uZ0xvbmdWYWx1ZV0pOworCisgICAgW29sZFF1b3RhIHJlbGVhc2VdOworICAgIFtk
aWZmZXJlbmNlIHJlbGVhc2VdOworIAorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9
CiAjZW5kaWYKICAgICAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRMaW5r
cygpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDMyN2E3
NDUuLjc0YmNkYmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRl
UHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
CkBAIC0xMjQsNiArMTI0LDE4IEBAIGVudW0gewogKi8KIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFG
b3JTZWN1cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0YWJhc2U6KE5T
U3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyOwogCisvKiEKKyAgICBAbWV0aG9kIHdlYlZpZXc6
ZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlUXVvdGFXaXRoT2xkUXVvdGE6c3BhY2VOZWVkZWQ6Cisg
ICAgQHBhcmFtIHNlbmRlciBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBkZWxlZ2F0ZSBtZXRob2Qu
CisgICAgQHBhcmFtIG9sZFF1b3RhIFRoZSBwcmV2aW91cyBhcHBsaWNhdGlvbiBjYWNoZSBncm91
cCBxdW90YS4KKyAgICBAcGFyYW0gc3BhY2VOZWVkZWQgVGhlIG51bWJlciBvZiBieXRlcyBuZWVk
ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIHRvIHN0b3JlIHRoZSBuZXh0IHJlc291cmNlLgor
ICAgIEByZXN1bHQgVGhlIG5ldyBxdW90YSBmb3IgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIGdyb3Vw
LCBvciBuaWwgdG8gbm90IGNoYW5nZSBpdC4KKyAgICBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBp
cyBjYWxsZWQgd2hlbiBhIHBhZ2UgYXR0ZW1wdHMgdG8gc3RvcmUgbW9yZSBpbiB0aGUgQXBwbGlj
YXRpb25DYWNoZQorICAgIHRoZW4gd2FzIGFsbG93ZWQgYnkgdGhlIHF1b3RhLiBUaGlzIGFsbG93
cyB0aGUgdXNlciB0byBiZSBwcm9tcHRlZCB0byBjaGFuZ2UgdGhlIHF1b3RhLCBmb3IKKyAgICBp
bnN0YW5jZSB0byBpbmNyZWFzZSBpdCwgZm9yIHRoaXMgc2luZ2xlIGFwcGxpY2F0aW9uIGNhY2hl
IGdyb3VwLgorKi8KKy0gKE5TTnVtYmVyICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNl
ZWRlZEFwcGxpY2F0aW9uQ2FjaGVRdW90YVdpdGhPbGRRdW90YTooTlNOdW1iZXIgKilvbGRRdW90
YSBzcGFjZU5lZWRlZDooTlNOdW1iZXIgKilzcGFjZU5lZWRlZDsKKwogLSAoV2ViVmlldyAqKXdl
YlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgY3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHdpbmRvd0ZlYXR1cmVzOihOU0RpY3Rpb25hcnkgKilmZWF0dXJlczsK
IAogLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNob3VsZFJlcGxhY2VVcGxvYWRG
aWxlOihOU1N0cmluZyAqKXBhdGggdXNpbmdHZW5lcmF0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKiop
ZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0No
YW5nZUxvZwppbmRleCA4YmMyZDlkLi45OTVmYWIzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0w
Ni0xNCAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2Fj
aGUgVG90YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAg
ICBBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgZGVsZWdhdGUgbWV0aG9kLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMTAtMDYtMTUgIExh
c3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIFN5bWJpYW4gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKaW5kZXggOThmZmQ4YS4uNmNhNmU4NSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKIAorI2luY2x1ZGUgIkFw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQ4Myw2ICs0ODQs
MTEgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90
KQogICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YShBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCAwMzk2YWVmLi4wM2M1Njkz
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAor
KysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMTMwLDYg
KzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogI2lmIEVOQUJMRShPRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hl
ZEFwcENhY2hlR3JvdXBRdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQg
YS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY2ZDZm
ZjEuLmRhMjVhMzYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMTQgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXIt
T3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgQWRkZWQgc3R1YiBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorCiAyMDEwLTA2LTE0ICBDaGFuZyBTaHUgIDxjaGFuZy5zaHVAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IDU4NzYzN2YuLjM1YmJkYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQor
I2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db25zb2xlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZXh0TWVudS5oPgpAQCAtNTkwLDYgKzU5MSwxMSBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogICAg
IC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KKwor
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRp
b25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQogI2VuZGlmCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpwb3B1bGF0ZVZpc2l0ZWRM
aW5rcygpCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCA2OTU0ZmRlLi5mZjljNzZhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
Q2FjaGVHcm91cFF1b3RhKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qg
c3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVWaXNpdGVk
TGlua3MoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hh
bmdlTG9nCmluZGV4IGFlZmUyYTEuLjFiMjcwNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2
LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNo
ZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAg
IEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBkZWxlZ2F0ZSBtZXRob2QuCisK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDYtMTQgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJv
bWVDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5j
cHAKaW5kZXggYTE5NjQ0ZC4uYWQ1ZTI0OSAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmNwcApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50V3guaCIKKworI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAj
aW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00MjksNiArNDMxLDExIEBAIHZvaWQgQ2hy
b21lQ2xpZW50V3g6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorCit2b2lkIENocm9tZUNsaWVudFd4OjpyZWFj
aGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3Bh
Y2VOZWVkZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KICNlbmRpZgogCiB2b2lkIENo
cm9tZUNsaWVudFd4OjpzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNs
aWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCmluZGV4
IGI5MDBmM2UuLjY0OTQxZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0No
cm9tZUNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50
V3guaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUo
aW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBDYWNoZUdy
b3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAj
ZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRy
PEZpbGVDaG9vc2VyPik7CmRpZmYgLS1naXQgYS9XZWJLaXQyL0NoYW5nZUxvZyBiL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDMwMjk5ZGEuLjZjOTAxMzMgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYt
MTQgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hl
IFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAg
QWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1
b3RhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorCiAyMDEwLTA2LTE0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgV2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGU0NDM1MzAuLmY2
MWM2M2UgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0zMzksNiArMzM5LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVv
dGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggZmU1ZjE0YS4uM2U3NGZiOSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTIzLDYgKzEyMyw3IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOworICAgIHZpcnR1
YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58789</attachid>
            <date>2010-06-15 09:53:19 -0700</date>
            <delta_ts>2010-06-22 15:47:23 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Add Total and Per-Origin Quota Settings. (needs part 1)</desc>
            <filename>part2.patch</filename>
            <type>text/plain</type>
            <size>15383</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjQwYzE1OC4uMzYwNDhlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzNSBAQAogICAgICAgICBMaW1pdCBBcHBsaWNhdGlv
bkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CiAKKyAg
ICAgICAgUGFydCAyIC0gQWRkIFRvdGFsIGFuZCBQZXItT3JpZ2luIFF1b3RhIFNldHRpbmdzLgor
CisgICAgICAgIEFsbG93IHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBkYXRhYmFzZSBtYXhpbXVtIHNp
emUgdG8gYmUgc2V0LiBBbHNvCisgICAgICAgIGFkZHMgYSBzZXR0aW5nIGZvciBhIGRlZmF1bHQg
dmFsdWUgZm9yIGFuIGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwLgorCisgICAgICAgICAgVGhlIHVz
dWFsIHNldHRpbmdzIGJvaWxlcnBsYXRlLiBTZXR0ZXJzLCBnZXR0ZXJzLCBleHBvcnRpbmcuCisK
KyAgICAgICAgKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwOiBleHBvcnQgdGhl
IFNldHRpbmdzIHNldHRlcnMgdG8gY2xpZW50cy4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEpOiBzZXQgdGhlIG1h
eGltdW0gc2l6ZSBvbiB0aGUgZ2xvYmFsIGNhY2hlU3RvcmFnZSBzbyBpdCBpcyByZXNwZWN0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVm
YXVsdFF1b3RhKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6YXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OmFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YSk6CisKKyAgICAg
ICAgICBVc2UgdGhlIGRlZmF1bHQgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXAgc2l6ZSBzZXR0aW5n
IHdoZW4KKyAgICAgICAgICBtYWtpbmcgYSBuZXcgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXAuCisK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOgorCisy
MDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRp
b25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCiAg
ICAgICAgIFBhcnQgMSAtIEFkZCBQZXItT3JpZ2luIHF1b3RhIGxvZ2ljLCBhbmQgcGVyc2lzdGVu
Y2UuCiAKICAgICAgICAgQWRkZWQgYW4gQXBwbGljYXRpb25DYWNoZUdyb3VwIHF1b3RhIHRvIGFs
bG93IFdlYktpdCBjbGllbnRzCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdl
YkFwcGxpY2F0aW9ucy5leHAgYi9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9u
cy5leHAKaW5kZXggZjgzYTRiMy4uN2M1NDRmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5PZmZsaW5l
V2ViQXBwbGljYXRpb25zLmV4cApAQCAtMSArMSwzIEBACitfX1pON1dlYkNvcmU4U2V0dGluZ3My
OXNldEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhRXgKK19fWk43V2ViQ29yZThTZXR0aW5nczM2
c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhRXgKIF9fWk43V2ViQ29yZTIxQXBw
bGljYXRpb25DYWNoZUdyb3VwOHNldFF1b3RhRXgKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGVhYzM4NzEuLjU3MTU5YWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RD
YWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gY2FjaGVT
dG9yYWdlKCkuZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChtYW5pZmVzdFVSTCwgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om5vUXVvdGEpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAg
PSBjYWNoZVN0b3JhZ2UoKS5maW5kT3JDcmVhdGVDYWNoZUdyb3VwKG1hbmlmZXN0VVJMLCBmcmFt
ZS0+c2V0dGluZ3MoKS0+YXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhKCkpOwogCiAg
ICAgZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNldENhbmRpZGF0ZUFw
cGxpY2F0aW9uQ2FjaGVHcm91cChncm91cCk7CiAgICAgZ3JvdXAtPm1fcGVuZGluZ01hc3RlclJl
c291cmNlTG9hZGVycy5hZGQoZG9jdW1lbnRMb2FkZXIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzE5YTlh
Mi4uYzE0YTc2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIlN0
b3JhZ2VNYXAuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAKKyNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgs
NiArNzIsMTAgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2xvY2Fs
U3RvcmFnZVF1b3RhKDUgKiAxMDI0ICogMTAyNCkgIC8vIFN1Z2dlc3RlZCBieSB0aGUgSFRNTDUg
c3BlYy4KICAgICAsIG1fc2Vzc2lvblN0b3JhZ2VRdW90YShTdG9yYWdlTWFwOjpub1F1b3RhKQog
I2VuZGlmCisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKKyAgICAsIG1fYXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGEoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEp
CisgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YShBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bm9RdW90YSkKKyNlbmRpZgogICAgICwgbV9wbHVnaW5BbGxvd2VkUnVuVGlt
ZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICwgbV96b29tTW9kZShab29t
UGFnZSkKICAgICAsIG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZmFsc2UpCkBAIC0yOTcs
NiArMzA1LDE5IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNlc3Npb25TdG9yYWdlUXVvdGEodW5zaWdu
ZWQgc2Vzc2lvblN0b3JhZ2VRdW90YSkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKK3ZvaWQgU2V0dGluZ3M6OnNldEFwcGxpY2F0aW9uQ2FjaGVUb3Rh
bFF1b3RhKGludDY0X3QgYXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEpCit7CisgICAgbV9hcHBs
aWNhdGlvbkNhY2hlVG90YWxRdW90YSA9IGFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhOworICAg
IGNhY2hlU3RvcmFnZSgpLnNldE1heGltdW1TaXplKGFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3Rh
KTsKK30KKwordm9pZCBTZXR0aW5nczo6c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1
b3RhKGludDY0X3QgYXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhKQoreworICAgIG1f
YXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhID0gYXBwbGljYXRpb25DYWNoZUdyb3Vw
RGVmYXVsdFF1b3RhOworfQorI2VuZGlmCisKIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIGlmIChtX3By
aXZhdGVCcm93c2luZ0VuYWJsZWQgPT0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggNGZiYjlmMi4uZGVlYjQ1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTE0MCw2ICsxNDAsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBzZXNzaW9uU3RvcmFnZVF1b3RhKCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZVF1b3RhOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgICAgIHZvaWQgc2V0QXBwbGljYXRpb25D
YWNoZVRvdGFsUXVvdGEoaW50NjRfdCk7CisgICAgICAgIHVuc2lnbmVkIGFwcGxpY2F0aW9uQ2Fj
aGVUb3RhbFF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90
YTsgfQorCisgICAgICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3Rh
KGludDY0X3QpOworICAgICAgICB1bnNpZ25lZCBhcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0
UXVvdGEoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90
YTsgfQorI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJv
b2wpOwogICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7IH0KIApAQCAtMzI0LDYgKzMzMiwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fbG9jYWxTdG9yYWdlUXVvdGE7CiAg
ICAgICAgIHVuc2lnbmVkIG1fc2Vzc2lvblN0b3JhZ2VRdW90YTsKICNlbmRpZgorI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgICAgIGludDY0X3QgbV9hcHBsaWNhdGlv
bkNhY2hlVG90YWxRdW90YTsKKyAgICAgICAgaW50NjRfdCBtX2FwcGxpY2F0aW9uQ2FjaGVHcm91
cERlZmF1bHRRdW90YTsKKyNlbmRpZgogICAgICAgICB1bnNpZ25lZCBtX3BsdWdpbkFsbG93ZWRS
dW5UaW1lOwogICAgICAgICBab29tTW9kZSBtX3pvb21Nb2RlOwogICAgICAgICBib29sIG1faXNT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4N2RjNmVmLi5lMGZjYzMxIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtNSw2ICs1LDM3IEBACiAgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5k
IFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKIAorICAgICAgICBBbGxvdyB0aGUg
YXBwbGljYXRpb24gY2FjaGUgZGF0YWJhc2UgbWF4aW11bSBzaXplIHRvIGJlIHNldC4gQWxzbwor
ICAgICAgICBhZGRzIGEgc2V0dGluZyBmb3IgYSBkZWZhdWx0IHZhbHVlIGZvciBhbiBhcHBsaWNh
dGlvbiBjYWNoZSBncm91cC4KKyAgICAgICAgQm90aCBkZWZhdWx0IHRvIG5vUXVvdGEsIHNvIHRo
ZXJlIGlzIG5vIGNoYW5nZSBpbiBiZWhhdmlvciBmb3IKKyAgICAgICAgdGhpcyBwYXRjaC4KKwor
ICAgICAgICAgIFN0b3JhZ2UgcXVvdGFzIHdlcmUgaW50NjRfdCAobG9uZyBsb25nKS4gQm9pbGVy
cGxhdGUgZm9yCisgICAgICAgICAgdGhlc2UgdHlwZXMgd2FzIGFkZGVkIHNvIHRoZSBjb2RlIGxv
b2tlZCBjb25zaXN0ZW50LgorCisgICAgICAgICogTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMu
aDoKKyAgICAgICAgKiBNaXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tOgorICAgICAgICAoLVtO
U011dGFibGVEaWN0aW9uYXJ5IF93ZWJraXRfc2V0TG9uZ0xvbmc6Zm9yS2V5Ol0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6
ZV0pOiBkZWZhdWx0cyB0byBub1F1b3RhIGZvciBib3RoIHNldHRpbmdzLgorICAgICAgICAoLVtX
ZWJQcmVmZXJlbmNlcyBfbG9uZ0xvbmdWYWx1ZUZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldExvbmdMb25nVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBhcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YV0pOgorICAgICAgICAoLVtXZWJQcmVm
ZXJlbmNlcyBzZXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YTpdKToKKyAgICAgICAgKC1bV2Vi
UHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIHNldEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YTpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFu
Z2VkTm90aWZpY2F0aW9uOl0pOiByZXNwZWN0IHVwZGF0ZXMgdG8gdGhlIHNldHRpbmdzLgorCisy
MDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRp
b25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCiAg
ICAgICAgIEFkZGVkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBkZWxlZ2F0ZSBt
ZXRob2QuIEV4YW1wbGUKICAgICAgICAgYmVoYXZpb3Igd291bGQgYmUgdG8gcHJvbXB0IHRoZSB1
c2VyIGlmIHRoZXkgd291bGQgbGlrZSB0byBpbmNyZWFzZQogICAgICAgICB0aGUgcXVvdGEgZm9y
IHRoaXMgZG9tYWluLiBJZiBwcm92aWRlZCB3aXRoIGEgbmV3IHF1b3RhLCB0aGUgcXVvdGEKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCBiL1dlYktp
dC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMuaAppbmRleCA5NTQ0NWY4Li4wYmJjNWQ1
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgKKysr
IGIvV2ViS2l0L21hYy9NaXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5oCkBAIC00Myw1ICs0Myw2
IEBACiAtICh2b2lkKV93ZWJraXRfc2V0SW50OihpbnQpdmFsdWUgZm9yS2V5OihpZClrZXk7CiAt
ICh2b2lkKV93ZWJraXRfc2V0RmxvYXQ6KGZsb2F0KXZhbHVlIGZvcktleTooaWQpa2V5OwogLSAo
dm9pZClfd2Via2l0X3NldEJvb2w6KEJPT0wpdmFsdWUgZm9yS2V5OihpZClrZXk7CistICh2b2lk
KV93ZWJraXRfc2V0TG9uZ0xvbmc6KGxvbmcgbG9uZyl2YWx1ZSBmb3JLZXk6KGlkKWtleTsKIC0g
KHZvaWQpX3dlYmtpdF9zZXRVbnNpZ25lZExvbmdMb25nOih1bnNpZ25lZCBsb25nIGxvbmcpdmFs
dWUgZm9yS2V5OihpZClrZXk7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2Vi
TlNEaWN0aW9uYXJ5RXh0cmFzLm0gYi9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0aW9uYXJ5RXh0
cmFzLm0KaW5kZXggYTQ3ZmQwYi4uMzY2ZjM2MSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNj
L1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rp
b25hcnlFeHRyYXMubQpAQCAtMTA4LDYgKzEwOCwxMyBAQCAtKHZvaWQpX3dlYmtpdF9zZXRCb29s
OihCT09MKXZhbHVlIGZvcktleTooaWQpa2V5CiAgICAgW29iamVjdCByZWxlYXNlXTsKIH0KIAor
LSAodm9pZClfd2Via2l0X3NldExvbmdMb25nOihsb25nIGxvbmcpdmFsdWUgZm9yS2V5OihpZClr
ZXkKK3sKKyAgICBOU051bWJlciAqb2JqZWN0ID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhM
b25nTG9uZzp2YWx1ZV07CisgICAgW3NlbGYgc2V0T2JqZWN0Om9iamVjdCBmb3JLZXk6a2V5XTsK
KyAgICBbb2JqZWN0IHJlbGVhc2VdOworfQorCiAtICh2b2lkKV93ZWJraXRfc2V0VW5zaWduZWRM
b25nTG9uZzoodW5zaWduZWQgbG9uZyBsb25nKXZhbHVlIGZvcktleTooaWQpa2V5CiB7CiAgICAg
TlNOdW1iZXIgKm9iamVjdCA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoVW5zaWduZWRMb25n
TG9uZzp2YWx1ZV07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKaW5kZXggYzM4YjM5NS4uMGMxYjFmNiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtODMsNiArODMsOCBAQAogI2RlZmluZSBXZWJL
aXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IEAiV2ViS2l0TG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0RW5hYmxlRnVsbERv
Y3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5IEAiV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVh
cmRvd24iCiAjZGVmaW5lIFdlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQiCisj
ZGVmaW5lIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhIEAiV2ViS2l0QXBwbGljYXRp
b25DYWNoZVRvdGFsUXVvdGEiCisjZGVmaW5lIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVHcm91cERl
ZmF1bHRRdW90YSBAIldlYktpdEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YSIKICNk
ZWZpbmUgV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkgQCJXZWJLaXRab29tc1RleHRP
bmx5IgogI2RlZmluZSBXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5j
ZUtleSBAIldlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiCiAjZGVmaW5lIFdlYktp
dFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFhTU0F1ZGl0b3JFbmFibGVk
IgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDM2YWVmMWYuLmE3YWE3YTgg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgIldlYktpdFZlcnNpb25DaGVja3MuaCIKICNpbXBvcnQgIldlYk5TRGljdGlvbmFyeUV4
dHJhcy5oIgogI2ltcG9ydCAiV2ViTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KIAogTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiA9IEAiV2ViUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uIjsKIE5T
U3RyaW5nICpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24gPSBAIldlYlByZWZlcmVu
Y2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiI7CkBAIC0xNzAsNiArMTcxLDggQEAgc3RhdGljIFdlYkNh
Y2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9pZCkKIC0gKHZvaWQpX3NldEludGVn
ZXJWYWx1ZTooaW50KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CiAtIChmbG9hdClfZmxv
YXRWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CiAtICh2b2lkKV9zZXRGbG9hdFZhbHVlOihm
bG9hdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0TG9uZ0xvbmdW
YWx1ZToobG9uZyBsb25nKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistIChsb25nIGxv
bmcpX2xvbmdMb25nVmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwogLSAodm9pZClfc2V0VW5z
aWduZWRMb25nTG9uZ1ZhbHVlOih1bnNpZ25lZCBsb25nIGxvbmcpdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleTsKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZylfdW5zaWduZWRMb25nTG9uZ1ZhbHVl
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKIEBlbmQKQEAgLTM2MCw2ICszNjMsOCBAQCBzdGF0aWMg
V2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFVzZXNQcm94aWVkT3BlblBhbmVsUHJl
ZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDo0XSwg
V2ViS2l0UGx1Z2luQWxsb3dlZFJ1blRpbWVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVm
ZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOldlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhXSwgV2ViS2l0QXBwbGljYXRpb25DYWNo
ZVRvdGFsUXVvdGEsCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6V2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGFdLCBXZWJLaXRBcHBsaWNhdGlvbkNh
Y2hlR3JvdXBEZWZhdWx0UXVvdGEsCiAgICAgICAgIG5pbF07CiAKICAgICAvLyBUaGlzIHZhbHVl
IHNob3VsZG4ndCBldmVyIGNoYW5nZSwgd2hpY2ggaXMgYXNzdW1lZCBpbiB0aGUgaW5pdGlhbGl6
YXRpb24gb2YgV2ViS2l0UERGRGlzcGxheU1vZGVQcmVmZXJlbmNlS2V5IGFib3ZlCkBAIC00NTcs
NiArNDYyLDIzIEBAIHN0YXRpYyBXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxl
KHZvaWQpCiAgICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb25dOwog
fQogCistIChsb25nIGxvbmcpX2xvbmdMb25nVmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7
CisgICAgaWQgbyA9IFtzZWxmIF92YWx1ZUZvcktleTprZXldOworICAgIHJldHVybiBbbyByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGxvbmdMb25nVmFsdWUpXSA/IFtvIGxvbmdMb25nVmFs
dWVdIDogMDsKK30KKworLSAodm9pZClfc2V0TG9uZ0xvbmdWYWx1ZToobG9uZyBsb25nKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBpZiAoW3NlbGYgX2xvbmdMb25nVmFsdWVG
b3JLZXk6a2V5XSA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIE5TU3RyaW5nICpfa2V5
ID0gS0VZKGtleSk7CisgICAgW19wcml2YXRlLT52YWx1ZXMgX3dlYmtpdF9zZXRMb25nTG9uZzp2
YWx1ZSBmb3JLZXk6X2tleV07CisgICAgaWYgKF9wcml2YXRlLT5hdXRvc2F2ZXMpCisgICAgICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aExvbmdMb25nOnZhbHVlXSBmb3JLZXk6X2tleV07CisgICAgW3NlbGYgX3Bv
c3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb25dOworfQorCiAtICh1bnNpZ25lZCBsb25n
IGxvbmcpX3Vuc2lnbmVkTG9uZ0xvbmdWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkKIHsKICAg
ICBpZCBvID0gW3NlbGYgX3ZhbHVlRm9yS2V5OmtleV07CkBAIC05NTksNiArOTgxLDI2IEBAIHN0
YXRpYyBXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKHZvaWQpCiAgICAgW3Nl
bGYgX3NldEZsb2F0VmFsdWU6ZmFjdG9yIGZvcktleTpXZWJLaXRQREZTY2FsZUZhY3RvclByZWZl
cmVuY2VLZXldOwogfQogCistIChpbnQ2NF90KWFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhCit7
CisgICAgcmV0dXJuIFtzZWxmIF9sb25nTG9uZ1ZhbHVlRm9yS2V5OldlYktpdEFwcGxpY2F0aW9u
Q2FjaGVUb3RhbFF1b3RhXTsKK30KKworLSAodm9pZClzZXRBcHBsaWNhdGlvbkNhY2hlVG90YWxR
dW90YTooaW50NjRfdClxdW90YQoreworICAgIFtzZWxmIF9zZXRMb25nTG9uZ1ZhbHVlOnF1b3Rh
IGZvcktleTpXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YV07Cit9CisKKy0gKGludDY0
X3QpYXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhCit7CisgICAgcmV0dXJuIFtzZWxm
IF9sb25nTG9uZ1ZhbHVlRm9yS2V5OldlYktpdEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRR
dW90YV07Cit9CisKKy0gKHZvaWQpc2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3Rh
OihpbnQ2NF90KXF1b3RhCit7CisgICAgW3NlbGYgX3NldExvbmdMb25nVmFsdWU6cXVvdGEgZm9y
S2V5OldlYktpdEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YV07Cit9CisKIC0gKFBE
RkRpc3BsYXlNb2RlKVBERkRpc3BsYXlNb2RlCiB7CiAgICAgUERGRGlzcGxheU1vZGUgdmFsdWUg
PSBbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5j
ZUtleV07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXgg
YzlhODllZS4uNGMxODJkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1By
aXZhdGUuaApAQCAtMTMxLDYgKzEzMSwxMiBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVu
Y2VzUmVtb3ZlZE5vdGlmaWNhdGlvbjsKIC0gKGZsb2F0KVBERlNjYWxlRmFjdG9yOwogLSAodm9p
ZClzZXRQREZTY2FsZUZhY3RvcjooZmxvYXQpc2NhbGU7CiAKKy0gKGludDY0X3QpYXBwbGljYXRp
b25DYWNoZVRvdGFsUXVvdGE7CistICh2b2lkKXNldEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3Rh
OihpbnQ2NF90KXF1b3RhOworCistIChpbnQ2NF90KWFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1
bHRRdW90YTsKKy0gKHZvaWQpc2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhOihp
bnQ2NF90KXF1b3RhOworCiAtIChXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvcillZGl0YWJsZUxp
bmtCZWhhdmlvcjsKIC0gKHZvaWQpc2V0RWRpdGFibGVMaW5rQmVoYXZpb3I6KFdlYktpdEVkaXRh
YmxlTGlua0JlaGF2aW9yKWJlaGF2aW9yOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDAwMjM1
MDkuLjEzYTUzZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMzkyLDcgKzEzOTIsNiBAQCBz
dGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogICAgIHNldHRpbmdzLT5z
ZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhfcHJpdmF0ZS0+dXNlU2l0ZVNwZWNpZmljU3Bvb2Zp
bmcpOwogICAgIHNldHRpbmdzLT5zZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZChbcHJlZmVy
ZW5jZXMgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0TG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgbG9jYWxGaWxlQ29udGVu
dFNuaWZmaW5nRW5hYmxlZF0pOwotICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoW3ByZWZlcmVuY2VzIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRab29tTW9kZShbcHJlZmVyZW5jZXMgem9vbXNUZXh0
T25seV0gPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CiAgICAgc2V0dGluZ3MtPnNldEphdmFT
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoW3ByZWZlcmVuY2VzIGphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmRdKTsKICAgICBzZXR0aW5ncy0+c2V0WFNTQXVkaXRvckVuYWJsZWQoW3ByZWZlcmVu
Y2VzIGlzWFNTQXVkaXRvckVuYWJsZWRdKTsKQEAgLTE0MDksNiArMTQwOCwxMCBAQCBzdGF0aWMg
Ym9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogICAgIHNldHRpbmdzLT5zZXRGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBpc0ZyYW1lRmxhdHRlbmluZ0VuYWJsZWRd
KTsKICAgICBzZXR0aW5ncy0+c2V0SFRNTDVQYXJzZXJFbmFibGVkKFtwcmVmZXJlbmNlcyBodG1s
NVBhcnNlckVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRF
bmFibGVkKFtwcmVmZXJlbmNlcyBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWRdKTsKKworICAg
IHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoW3ByZWZlcmVu
Y2VzIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZF0pOworICAgIHNldHRpbmdzLT5z
ZXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YShbcHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNo
ZVRvdGFsUXVvdGFdKTsKKyAgICBzZXR0aW5ncy0+c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVm
YXVsdFF1b3RhKFtwcmVmZXJlbmNlcyBhcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGFd
KTsKIH0KIAogc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58797</attachid>
            <date>2010-06-15 10:45:06 -0700</date>
            <delta_ts>2010-06-22 15:47:23 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Add Per-Origin quota logic, and persistence. (include stdint.h)</desc>
            <filename>part1b.patch</filename>
            <type>text/plain</type>
            <size>51809</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDliMDUzZS4uNjQwYzE1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxMC0wNi0xNCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDEgLSBBZGQgUGVy
LU9yaWdpbiBxdW90YSBsb2dpYywgYW5kIHBlcnNpc3RlbmNlLgorCisgICAgICAgIEFkZGVkIGFu
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBxdW90YSB0byBhbGxvdyBXZWJLaXQgY2xpZW50cworICAg
ICAgICB0byBsaW1pdCB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgYW4gaW5kaXZpZHVhbCBkb21haW4g
Y2FuIGhhdmUuCisgICAgICAgIFRoZSBwZXIgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXAgcXVvdGEg
aXMgcGVyc2lzdGVudGx5IHN0b3JlZAorICAgICAgICBpbiB0aGUgZGF0YWJhc2Ugd2l0aCBvdGhl
ciBzdGF0ZSB2YXJpYWJsZXMuCisKKyAgICAgICAgV2hlbiBmaWxsaW5nIGFuIEFwcGxpY2F0aW9u
IENhY2hlLCB0aGUgbG9hZGVkIHJlc291cmNlcyBhcmUKKyAgICAgICAgY2hlY2tlZCBhZ2FpbnN0
IHRoZSBxdW90YS4gSWYgaXQgb3ZlcmZsb3dzLCB0aGUgV2ViS2l0IGNsaWVudAorICAgICAgICBp
cyBub3RpZmllZCBieSByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhLiBUaGUgY2xpZW50IGNhbgor
ICAgICAgICBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3RhIG9yIG5vdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhlIHF1b3RhIGlzIGFsd2F5cyBub1F1b3RhIChVSU5UX01BWCkuIFRoaXMgd2ls
bAorICAgICAgICBjaGFuZ2UgdG8gYmUgYSBzZXR0aW5nIHdoaWNoIHRoZSBjbGllbnQgY2FuIGNv
bnRyb2wuCisKKyAgICAgICAgICBDaGFuZ2UgdGhlIERhdGFiYXNlIFNjaGVtYSB0byBpbmNsdWRl
IGEgYHF1b3RhIElOVEVHRVJgIGZvcgorICAgICAgICAgIGVhY2ggYXBwbGljYXRpb24gY2FjaGUg
Z3JvdXAuIFRoZSBxdW90YSBuZWVkcyB0byBiZSBwYXNzZWQKKyAgICAgICAgICBhcm91bmQsIGFu
ZCBpbmNsdWRlZCB3aGVuIGNyZWF0aW5nIG5ldyBjYWNoZSBncm91cHMsIGFuZAorICAgICAgICAg
IG5lZWRzIHRvIGJlIHBlcnNpc3RlbnRseSBzdG9yZWQgd2hlbiB1cGRhdGVkLgorCisgICAgICAg
ICAgVGhpcyBpcyBhIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIHNjaGVt
YS4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hl
R3JvdXApOiB1c2UgcXVvdGEgZnJvbSByZWNvcmQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cCk6IHVzZSBxdW90YSBmcm9t
IHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNo
ZUdyb3VwRm9yVVJMKTogdXNlIHF1b3RhIGZyb20gcmVjb3JkLgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6IHVzZSBx
dW90YSBmcm9tIHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpvcGVuRGF0YWJhc2UpOiBhZGQgcXVvdGEgdG8gQ2FjaGVHcm91cHMgdGFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOiBzYXZlIHF1b3Rh
IGluIHJlY29yZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpz
dG9yZVVwZGF0ZWRDYWNoZUdyb3VwUXVvdGEpOiB1cGRhdGUgcXVvdGEgaW4gcmVjb3JkLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2FjaGUp
OiB1c2UgcXVvdGEgZnJvbSBncm91cCBiZWluZyBjb3BpZWQuCisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UpOiBzd2l0Y2gg
dG8gbm9uLW1hZ2ljIHZhbHVlIGZvciBkZWZhdWx0IHZhbHVlLgorCisgICAgICAgICAgUmVzcGVj
dCB0aGUgcXVvdGEgd2hlbiBkb3dubG9hZGluZyByZXNvdXJjZXMgZm9yIHRoaXMKKyAgICAgICAg
ICBhcHBsaWNhdGlvbiBjYWNoZSBncm91cC4gSGFuZGxlIHVwZGF0aW5nIHRoZSBxdW90YSBhbmQK
KyAgICAgICAgICBub3RpZnlpbmcgdGhlIGNsaWVudCB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVk
LgorCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCk6IHNldCBxdW90YSBpbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOiBwcm92aWRlIGRlZmF1bHQgdmFsdWUg
Zm9yIGEgbmV3IHF1b3RhLiBOT1RFOiB3aWxsIHN3aXRjaCB0byBhIHNldHRpbmcuCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFF1b3RhKTogcGVyc2lzdGVudGx5
IHN0b3JlIGlmIHRoZSBxdW90YSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6IG1vbml0b3IgdGhlIGluY3JlYXNpbmcgc2l6
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9h
ZGluZyk6IGFjdCBhcHByb3ByaWF0ZWx5IGlmIHRoZSBxdW90YSBpcyByZWFjaGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWFjaEFwcENhY2hlR3JvdXBR
dW90YSk6IGFzeW5jaHJvbm91c2x5IG5vdGlmeSB0aGUgY2xpZW50IHRoZSBxdW90YSB3YXMgcmVh
Y2hlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxv
YWRJc0NvbXBsZXRlKTogcmVzZXQgdGhlIHNpemUgbW9uaXRvci4KKyAgICAgICAgKFdlYkNvcmU6
Oik6IEdyb3VwUXVvdGFDYWxsYmFja1RpbWVyIGNsYXNzIHRvIGhhbmRsZSB0aGUgYXN5bmNocm9u
b3VzIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6c2NoZWR1bGVSZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhQ2FsbGJhY2spOiBhc3luY2hyb25v
dXNseSBub3RpZnkgdGhlIGNsaWVudCB0aGUgcXVvdGEgd2FzIHJlYWNoZWQuCisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oOiBhZGQgc3RhdGVzIGZvcjog
cXVvdGEsIHNpemUgbW9uaXRvciwgcXVvdGEgcmVhY2hlZCBmbGFnIHRvIHByZXZlbnQgZHVwbGlj
YXRlIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnF1b3RhKTogYWNjZXNzb3IuCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg6IGRlZmluZSAibm9TdG9yYWdlIiBmb3IgdW5saW1pdGVkIHN0b3Jh
Z2UuCisKKyAgICAgICAgICBEZWZpbmUgdGhlIGNsaWVudCBkZWxlZ2F0ZSByZWFjaGVkQXBwQ2Fj
aGVHcm91cFF1b3RhLgorICAgICAgICAgIEEgc3R1YiBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRl
ZCBmb3IgYWxsIGNsaWVudHMuCisKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9tZUNsaWVudDo6cmVhY2hlZEFwcENhY2hlR3JvdXBR
dW90YSk6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKworICAgICAgICAgIFN0YXJ0
IG1vdmluZyBPZmZsaW5lV2ViQXBwbGljYXRpb24gZXhwb3J0cyB0byBhIHNlcGFyYXRlIGZpbGUu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUuT2Zm
bGluZVdlYkFwcGxpY2F0aW9ucy5leHA6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgdGhlIG5ldyBmaWxlIGFuZCBzb21lIG5ldyBwcml2
YXRlIGV4cG9ydHMgZm9yIEFwcGxpY2F0aW9uIENhY2hlIGZpbGVzLgorCiAyMDEwLTA2LTE1ICBa
aGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdlYzkxNWYuLjdlMjhkZjYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTkxMSw2ICs5MTEsMTAgQEAgZWxzZQogZW5kaWYKIGVuZGlmCiAKK2lmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TLCQoRkVBVFVSRV9E
RUZJTkVTKSksIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCisgICAgIFdFQkNPUkVf
RVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2Vi
Q29yZS5PZmZsaW5lV2ViQXBwbGljYXRpb25zLmV4cAorZW5kaWYKKwogaWZlcSAoJChzaGVsbCBn
Y2MgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX1BST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSyB8IGN1dCAtZCcgJyAtZjMpLCAxKQogICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lF
UyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5Qcm90ZWN0aW9uU3Bh
Y2VBdXRoQ2FsbGJhY2suZXhwCiBlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLk9m
ZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBs
aWNhdGlvbnMuZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4M2E0YjMK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9u
cy5leHAKQEAgLTAsMCArMSBAQAorX19aTjdXZWJDb3JlMjFBcHBsaWNhdGlvbkNhY2hlR3JvdXA4
c2V0UXVvdGFFeApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzODA3ZmYwLi44Yjk4OGNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDE2LDExICs0MTYsMTEgQEAKIAkJMUE4RjZCQkMwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4RjZCQjEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2Fj
aGUuY3BwICovOyB9OwogCQkxQThGNkJCRDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
RjZCQjIwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJMUE4
RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCMzBEQjU1Q0RD
MDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCAqLzsgfTsKLQkJMUE4RjZCQkYw
REI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCQjQwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5oICovOyB9OworCQkxQThGNkJCRjBEQjU1Q0RDMDAx
REI3OTQgLyogQXBwbGljYXRpb25DYWNoZUdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCNDBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUE4RjZCQzAwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQThGNkJCNTBEQjU1Q0RDMDAxREI3OTQgLyogQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cCAqLzsgfTsKIAkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4RjZCQjYwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oICov
OyB9OwogCQkxQThGNkJDMjBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJC
NzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgKi87IH07Ci0JCTFB
OEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCODBEQjU1Q0RDMDAx
REI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CisJCTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QThGNkJCODBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOEY2QkM1MERCNTVD
REMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThGNkJCQTBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZl
c3RQYXJzZXIuY3BwICovOyB9OwogCQkxQThGNkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZl
c3RQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBOEY2QkJCMERCNTVDREMwMDFEQjc5NCAvKiBNYW5pZmVzdFBhcnNlci5oICovOyB9OwogCQkx
QTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAv
KiBLVVJMQ0ZOZXQuY3BwICovOyB9OwpAQCAtNTg2LDcgKzU4Niw3IEBACiAJCTFDRkFFMzIzMEE2
RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9i
amMuZHlsaWIgKi87IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFw
cGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIy
OEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyNEY1NEVBQzEwMUZFOTE0MDAw
QUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGNTRFQUExMDFGRTkxNDAwMEFFNzQxIC8qIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcCAqLzsgfTsKLQkJMjRGNTRFQUQxMDFGRTkxNDAwMEFFNzQxIC8q
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNEY1NEVBQjEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OworCQkyNEY1NEVB
RDEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNoZUhvc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjU0RUFCMTAxRkU5MTQwMDBBRTc0
MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTI1NDJGNERBMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2Vz
dHVyZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNTQyRjREODExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRpY2F0b3Iu
Y3BwICovOyB9OwogCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI1
NDJGNEQ5MTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVyZUluZGljYXRvci5oICovOyB9Owog
CQkyOUE4MTIyNjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIw
ODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgKi87IH07
CkBAIC04MTcxLDYgKzgxNzEsNyBAQAogCQlBNDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFi
ZWxzTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxzTm9k
ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5RTNDMUMxMTU4MEY1MTAw
NzI5MjhFIC8qIEtleUV2ZW50Q29kZXNJUGhvbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gS2V5RXZlbnRDb2Rlc0lQaG9uZS5oOyBwYXRoID0gaXBob25lL0tleUV2ZW50Q29k
ZXNJUGhvbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5RTNDMUQxMTU4MEY1
MTAwNzI5MjhFIC8qIEtleUV2ZW50SVBob25lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gS2V5RXZlbnRJUGhvbmUubW07IHBhdGggPSBpcGhvbmUvS2V5RXZlbnRJ
UGhvbmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1OUZEMjk2MTFCODdBMzIw
MDBCM0I5MiAvKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9ydHM7
IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMu
ZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1
Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NENG
MTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEtleUV2ZW50Q29jb2EuaDsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDA5LDYgKzExNDEwLDcgQEAKIAkJ
CQlGRTQ5QkQzMDEwNjE3MTkxMDBEMEUxQUUgLyogV2ViQ29yZS5JbnNwZWN0b3IuZXhwICovLAog
CQkJCTQ0OTE5NTlDMEZCRTE3RDcwMEQ5RjgyNCAvKiBXZWJDb3JlLkpOSS5leHAgKi8sCiAJCQkJ
NDQ5MTk1OUEwRkJFMTdENzAwRDlGODI0IC8qIFdlYkNvcmUuTlBBUEkuZXhwICovLAorCQkJCUE1
OUZEMjk2MTFCODdBMzIwMDBCM0I5MiAvKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMu
ZXhwICovLAogCQkJCUZFMTM2QUU3MTA2NDNCRTUwMDc4Q0Y2RCAvKiBXZWJDb3JlLk9yaWVudGF0
aW9uRXZlbnRzLmV4cCAqLywKIAkJCQk0NDkxOTU5QjBGQkUxN0Q3MDBEOUY4MjQgLyogV2ViQ29y
ZS5QbHVnaW5Ib3N0UHJvY2Vzcy5leHAgKi8sCiAJCQkJMjcxMjQ1RDMxMTg5MEFCNzAwODNFODUy
IC8qIFdlYkNvcmUuUHJvdGVjdGlvblNwYWNlQXV0aENhbGxiYWNrLmV4cCAqLywKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKaW5kZXggZTQyZWUxZC4uNDNlZTQxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAg
LTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCosIGludDY0X3QpIHsgfTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCA1MjYwNDNiLi5lYWMzODcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0
aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCitBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5p
ZmVzdFVSTCwgaW50NjRfdCBxdW90YSwgYm9vbCBpc0NvcHkpCiAgICAgOiBtX21hbmlmZXN0VVJM
KG1hbmlmZXN0VVJMKQogICAgICwgbV91cGRhdGVTdGF0dXMoSWRsZSkKICAgICAsIG1fZG93bmxv
YWRpbmdQZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzQ291bnQoMCkKQEAgLTU3LDYgKzU3LDkg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3AKICAgICAsIG1fY29tcGxldGlvblR5cGUoTm9uZSkK
ICAgICAsIG1faXNDb3B5KGlzQ29weSkKICAgICAsIG1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hl
U2l6ZShmYWxzZSkKKyAgICAsIG1fbG9hZGVkU2l6ZSgwKQorICAgICwgbV9xdW90YShxdW90YSkK
KyAgICAsIG1fcXVvdGFSZWFjaGVkKGZhbHNlKQogewogfQogCkBAIC0xODIsNyArMTg1LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0b3JhZ2UoKS5maW5kT3JDcmVhdGVD
YWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gY2FjaGVTdG9yYWdlKCkuZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChtYW5pZmVzdFVSTCwgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEpOwogCiAgICAgZG9jdW1lbnRMb2FkZXItPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChn
cm91cCk7CiAgICAgZ3JvdXAtPm1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5hZGQoZG9j
dW1lbnRMb2FkZXIpOwpAQCAtMzc2LDYgKzM3OSwyMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6c2V0TmV3ZXN0Q2FjaGUoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBuZXdlc3RD
YQogICAgIG1fbmV3ZXN0Q2FjaGUtPnNldEdyb3VwKHRoaXMpOwogfQogCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2V0UXVvdGEoaW50NjRfdCBxdW90YSkKK3sKKyAgICBpZiAoaXNPYnNv
bGV0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocXVvdGEgPT0gbV9xdW90YSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBhbnl0aGluZyBzcGVj
aWFsIHdoZW4gdGhlIHF1b3RhCisgICAgLy8gaXMgYWN0dWFsbHkgbG93ZXJlZD8gUG90ZW50aWFs
bHkgZW1wdHkgdGhlIGNhY2hlPworCisgICAgaW50NjRfdCBvbGRRdW90YSA9IG1fcXVvdGE7Cisg
ICAgbV9xdW90YSA9IHF1b3RhOworICAgIGlmICghY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVk
Q2FjaGVHcm91cFF1b3RhKHRoaXMpKQorICAgICAgICBtX3F1b3RhID0gb2xkUXVvdGE7Cit9CisK
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jzb2xldGUoKQogewogICAgIGlmIChp
c09ic29sZXRlKCkpCkBAIC01MjMsNiArNTQzLDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGQK
ICAgICAKICAgICBBU1NFUlQobV9jdXJyZW50UmVzb3VyY2UpOwogICAgIG1fY3VycmVudFJlc291
cmNlLT5kYXRhKCktPmFwcGVuZChkYXRhLCBsZW5ndGgpOworCisgICAgbV9sb2FkZWRTaXplICs9
IGxlbmd0aDsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKQEAgLTUzMSw3ICs1NTMsMTcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSkKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gCisKKyAgICBpZiAobV9xdW90YSA+PSBtX2xvYWRlZFNpemUpCisgICAgICAgIG1f
cXVvdGFSZWFjaGVkID0gZmFsc2U7CisgICAgZWxzZSBpZiAoIW1fcXVvdGFSZWFjaGVkKSB7Cisg
ICAgICAgIG1fcXVvdGFSZWFjaGVkID0gdHJ1ZTsgLy8gUHJldmVudCBpbmZvcm1pbmcgdGhlIGNs
aWVudCBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgbV9jdXJyZW50UmVzb3VyY2UgPSAwOworICAg
ICAgICBzY2hlZHVsZVJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGFDYWxsYmFjaygpOworICAgICAg
ICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgQVNT
RVJUKG1fY3VycmVudEhhbmRsZSA9PSBoYW5kbGUpOwogICAgIEFTU0VSVChtX3BlbmRpbmdFbnRy
aWVzLmNvbnRhaW5zKGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpKSk7CiAgICAgCkBAIC02ODcsNiAr
NzE5LDE4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWFjaE1heEFwcENhY2hl
U2l6ZSgpCiAgICAgY2hlY2tJZkxvYWRJc0NvbXBsZXRlKCk7CiB9CiAKK3ZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWFjaEFwcENhY2hlR3JvdXBRdW90YShQYXNzUmVmUHRyPEZyYW1l
PiBmcmFtZSwgaW50NjRfdCBsb2FkZWRTaXplKQoreworICAgIC8vIFF1b3RhIG1heSBoYXZlIGNo
YW5nZWQgYmVmb3JlIHdlIGV2ZW4gdG9sZCB0aGUgY2xpZW50LCBhbmQgdGhlcmUgY291bGQgbm93
IGJlIHNwYWNlLgorICAgIGludDY0X3Qgc3BhY2VOZWVkZWQgPSBsb2FkZWRTaXplIC0gbV9xdW90
YTsKKyAgICBpZiAoc3BhY2VOZWVkZWQgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
T3RoZXJ3aXNlLCBpbmZvcm0gdGhlIGNsaWVudCB0aGUgcXVvdGEgaGFzIGJlZW4gcmVhY2hlZCwg
dGhleSBtYXkgZGVjaWRlIHRvIGNoYW5nZSB0aGUgcXVvdGEuCisgICAgLy8gUGFzc2luZyB0aGUg
Z3JvdXAgaW4gY2FzZSB0aGUgY2xpZW50IHdhbnRzIHRvIGNoYW5nZSB0aGUgcXVvdGEuCisgICAg
ZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkQXBwQ2FjaGVHcm91cFF1
b3RhKHRoaXMsIHNwYWNlTmVlZGVkKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmNhY2hlVXBkYXRlRmFpbGVkKCkKIHsKICAgICBzdG9wTG9hZGluZygpOwpAQCAtODM0LDYgKzg3
OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUo
KQogICAgIG1fY29tcGxldGlvblR5cGUgPSBOb25lOwogICAgIG1fdXBkYXRlU3RhdHVzID0gSWRs
ZTsKICAgICBtX2ZyYW1lID0gMDsKKyAgICBtX2xvYWRlZFNpemUgPSAwOwogICAgIG1fY2FsbGVk
UmVhY2hlZE1heEFwcENhY2hlU2l6ZSA9IGZhbHNlOwogfQogCkBAIC05MzIsMTIgKzk3NywzNCBA
QCBwcml2YXRlOgogICAgICAgICBtX2NhY2hlR3JvdXAtPmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXpl
KCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KKwogICAgIC8vIE5vdGUgdGhhdCB0aGVy
ZSBpcyBubyBuZWVkIHRvIHVzZSBhIFJlZlB0ciBoZXJlLiBUaGUgQXBwbGljYXRpb25DYWNoZUdy
b3VwIGluc3RhbmNlIGlzIGd1YXJhbnRlZWQKICAgICAvLyB0byBiZSBhbGl2ZSB3aGVuIHRoZSB0
aW1lciBmaXJlcyBzaW5jZSBpbnZva2luZyB0aGUgQ2hyb21lQ2xpZW50IGNhbGxiYWNrIGlzIHBh
cnQgb2YgaXRzIG5vcm1hbAogICAgIC8vIHVwZGF0ZSBtYWNoaW5lcnkgYW5kIG5vdGhpbmcgY2Fu
IHlldCBjYXVzZSBpdCB0byBnZXQgZGVsZXRlZC4KICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAq
IG1fY2FjaGVHcm91cDsKIH07CiAKK2NsYXNzIEdyb3VwUXVvdGFDYWxsYmFja1RpbWVyOiBwdWJs
aWMgVGltZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBHcm91cFF1b3RhQ2FsbGJhY2tUaW1lcihBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXAsIEZyYW1lKiBmcmFtZSwgaW50NjRfdCBsb2Fk
ZWRTaXplKQorICAgICAgICA6IG1fY2FjaGVHcm91cChjYWNoZUdyb3VwKQorICAgICAgICAsIG1f
ZnJhbWUoZnJhbWUpCisgICAgICAgICwgbV9sb2FkZWRTaXplKGxvYWRlZFNpemUpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQorICAgIHsKKyAgICAg
ICAgbV9jYWNoZUdyb3VwLT5kaWRSZWFjaEFwcENhY2hlR3JvdXBRdW90YShtX2ZyYW1lLnJlbGVh
c2UoKSwgbV9sb2FkZWRTaXplKTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorCisgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBtX2NhY2hlR3JvdXA7CisgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOworICAgIGludDY0X3QgbV9sb2FkZWRTaXplOworfTsKKwogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtOTQ2LDYgKzEwMTMsMTUgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxi
YWNrKCkKICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMu
CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRBcHBDYWNo
ZUdyb3VwUXVvdGFDYWxsYmFjaygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lUHJvdGVjdG9yID0gbV9mcmFtZTsKKyAgICBHcm91cFF1b3Rh
Q2FsbGJhY2tUaW1lciogdGltZXIgPSBuZXcgR3JvdXBRdW90YUNhbGxiYWNrVGltZXIodGhpcywg
ZnJhbWVQcm90ZWN0b3IuZ2V0KCksIG1fbG9hZGVkU2l6ZSk7CisgICAgdGltZXItPnN0YXJ0T25l
U2hvdCgwKTsKKyAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmly
ZXMuCit9CisKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxs
Q2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDhkZjUyY2MuLjBh
NTlkZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5oCkBAIC01NCw3ICs1NCw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlv
biB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCA6IHB1YmxpYyBOb25jb3B5YWJsZSwg
UmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAorICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgaW50NjRfdCBx
dW90YSwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAogICAgIH5BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7IElkbGUsIENoZWNraW5nLCBEb3du
bG9hZGluZyB9OwpAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25DYWNo
ZSogbmV3ZXN0Q2FjaGUoKSBjb25zdCB7IHJldHVybiBtX25ld2VzdENhY2hlLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXROZXdlc3RDYWNoZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+KTsKIAor
ICAgIGludDY0X3QgcXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3F1b3RhOyB9CisgICAgdm9pZCBz
ZXRRdW90YShpbnQ2NF90IHF1b3RhKTsKKwogICAgIHZvaWQgbWFrZU9ic29sZXRlKCk7CiAgICAg
Ym9vbCBpc09ic29sZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc09ic29sZXRlOyB9CiAKQEAgLTk0
LDYgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVy
Kj4mKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElELCBEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVk
TWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZEFwcENh
Y2hlR3JvdXBRdW90YUNhbGxiYWNrKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSk7CiAKQEAgLTExMCw2ICsxMTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0RGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpOwogICAgIHZvaWQgZGlkUmVhY2hNYXhB
cHBDYWNoZVNpemUoKTsKKyAgICB2b2lkIGRpZFJlYWNoQXBwQ2FjaGVHcm91cFF1b3RhKFBhc3NS
ZWZQdHI8RnJhbWU+IGZyYW1lLCBpbnQ2NF90IGxvYWRlZFNpemUpOwogICAgIAogICAgIHZvaWQg
c3RhcnRMb2FkaW5nRW50cnkoKTsKICAgICB2b2lkIGRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNl
cygpOwpAQCAtMTc5LDcgKzE4NCwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U+IG1fbWFuaWZlc3RSZXNvdXJjZTsKICAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IG1fbWFuaWZlc3RIYW5kbGU7CiAKKyAgICBpbnQ2NF90IG1fbG9hZGVkU2l6ZTsKKyAg
ICBpbnQ2NF90IG1fcXVvdGE7CisgICAgYm9vbCBtX3F1b3RhUmVhY2hlZDsKKwogICAgIGZyaWVu
ZCBjbGFzcyBDaHJvbWVDbGllbnRDYWxsYmFja1RpbWVyOworICAgIGZyaWVuZCBjbGFzcyBHcm91
cFF1b3RhQ2FsbGJhY2tUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApp
bmRleCA1OTIzMmE1Li5hNzlhNWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNv
bnN0IEtVUkwmIG1hbmlmCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNF
TEVDVCBpZCwgbWFuaWZlc3RVUkwsIG5ld2VzdENhY2hlIEZST00gQ2FjaGVHcm91cHMgV0hFUkUg
bmV3ZXN0Q2FjaGUgSVMgTk9UIE5VTEwgQU5EIG1hbmlmZXN0VVJMPT8iKTsKKyAgICBTUUxpdGVT
dGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBu
ZXdlc3RDYWNoZSwgcXVvdGEgRlJPTSBDYWNoZUdyb3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBO
T1QgTlVMTCBBTkQgbWFuaWZlc3RVUkw9PyIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTExNyw4ICsxMTcs
MTAgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWYKICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gY2FjaGUgPSBsb2FkQ2FjaGUobmV3ZXN0Q2FjaGVTdG9yYWdlSUQpOwogICAgIGlmICghY2Fj
aGUpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5pZmVzdFVSTCk7CisKKyAg
ICBpbnQ2NF90IHF1b3RhID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0KDMpOworCisgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAobWFu
aWZlc3RVUkwsIHF1b3RhKTsKICAgICAgIAogICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSkpOwogICAgIGdyb3Vw
LT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtMTI2LDcgKzEyOCw3IEBAIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdy
b3VwKGNvbnN0IEtVUkwmIG1hbmlmCiAgICAgcmV0dXJuIGdyb3VwOwogfSAgICAKIAotQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2Fj
aGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwsIGludDY0X3Qgc3RhcnRpbmdHcm91cFF1b3RhKQogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCkBAIC0xNDIsNyArMTQ0
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICAKICAgICAvLyBJZiB0aGUgZ3JvdXAg
d2FzIG5vdCBmb3VuZCB3ZSBuZWVkIHRvIGNyZWF0ZSBpdAogICAgIGlmICghZ3JvdXApIHsKLSAg
ICAgICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAg
ICAgICAgZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMLCBzdGFy
dGluZ0dyb3VwUXVvdGEpOwogICAgICAgICBtX2NhY2hlSG9zdFNldC5hZGQodXJsSG9zdEhhc2go
bWFuaWZlc3RVUkwpKTsKICAgICB9CiAgICAgCkBAIC0yMDksNyArMjExLDcgQEAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBLVVJMJiB1cmwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIC8vIENoZWNr
IHRoZSBkYXRhYmFzZS4gTG9vayBmb3IgYWxsIGNhY2hlIGdyb3VwcyB3aXRoIGEgbmV3ZXN0IGNh
Y2hlLgotICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBp
ZCwgbWFuaWZlc3RVUkwsIG5ld2VzdENhY2hlIEZST00gQ2FjaGVHcm91cHMgV0hFUkUgbmV3ZXN0
Q2FjaGUgSVMgTk9UIE5VTEwiKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBuZXdlc3RDYWNoZSwgcXVvdGEgRlJPTSBD
YWNoZUdyb3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBOT1QgTlVMTCIpOwogICAgIGlmIChzdGF0
ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICByZXR1cm4gMDsKICAgICAK
QEAgLTIzNiw3ICsyMzgsOSBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmIHVybAogICAgICAgICBpZiAo
cmVzb3VyY2UtPnR5cGUoKSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbikKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3Jv
dXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICAgICAgaW50
NjRfdCBxdW90YSA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgzKTsKKworICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5p
ZmVzdFVSTCwgcXVvdGEpOwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAg
ICAgIGdyb3VwLT5zZXROZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtMjc3LDcgKzI4
MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZh
bGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLCiAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAKICAgICAvLyBDaGVjayB0aGUgZGF0YWJhc2UuIExvb2sgZm9yIGFsbCBjYWNoZSBncm91cHMg
d2l0aCBhIG5ld2VzdCBjYWNoZS4KLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0
YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0VVJMLCBuZXdlc3RDYWNoZSBGUk9NIENhY2hlR3Jv
dXBzIFdIRVJFIG5ld2VzdENhY2hlIElTIE5PVCBOVUxMIik7CisgICAgU1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGlkLCBtYW5pZmVzdFVSTCwgbmV3ZXN0Q2Fj
aGUsIHF1b3RhIEZST00gQ2FjaGVHcm91cHMgV0hFUkUgbmV3ZXN0Q2FjaGUgSVMgTk9UIE5VTEwi
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgCkBAIC0zMDMsNyArMzA3LDkgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IEsKICAgICAgICAgaWYgKGNhY2hlLT5yZXNvdXJjZUZvclVSTChmYWxsYmFja1VSTCktPnR5cGUo
KSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbikKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKG1hbmlmZXN0VVJMKTsKKyAgICAgICAgaW50NjRfdCBxdW90YSA9IHN0
YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgzKTsKKworICAgICAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gbmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChtYW5pZmVzdFVSTCwgcXVvdGEp
OwogICAgICAgICAKICAgICAgICAgZ3JvdXAtPnNldFN0b3JhZ2VJRChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiAgICAgICAgIGdyb3VwLT5zZXRO
ZXdlc3RDYWNoZShjYWNoZS5yZWxlYXNlKCkpOwpAQCAtNDI2LDcgKzQzMiwxMCBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFuZChjb25zdCBTdHJpbmcmIHNx
bCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY29uc3QgaW50IHNjaGVtYVZlcnNp
b24gPSA1OworLy8gVXBkYXRlIHRoZSBzY2hlbWFWZXJzaW9uIHdoZW4gdGhlIHNjaGVtYSBvZiBh
bnkgdGhlIEFwcGxpY2F0aW9uIENhY2hlCisvLyBTUUxpdGUgdGFibGVzIGNoYW5nZXMuIFRoaXMg
YWxsb3dzIHRoZSBkYXRhYmFzZSB0byBiZSByZWJ1aWx0IHdoZW4KKy8vIGEgbmV3LCBpbmNvbXBh
dGlibGUgY2hhbmdlIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gdGhlIGRhdGFiYXNlIHNjaGVtYS4K
K3N0YXRpYyBjb25zdCBpbnQgc2NoZW1hVmVyc2lvbiA9IDY7CiAgICAgCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkKIHsKQEAgLTQ3NSw3ICs0ODQs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVh
dGVJZkRvZXNOb3RFeGlzdCkKICAgICAKICAgICAvLyBDcmVhdGUgdGFibGVzCiAgICAgZXhlY3V0
ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlR3JvdXBzIChpZCBJ
TlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsICIKLSAgICAgICAgICAgICAgICAgICAg
ICAibWFuaWZlc3RIb3N0SGFzaCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1h
bmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVH
RVIpIik7CisgICAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0SG9zdEhhc2ggSU5URUdFUiBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBtYW5pZmVzdFVSTCBURVhUIFVOSVFVRSBPTiBDT05G
TElDVCBGQUlMLCBuZXdlc3RDYWNoZSBJTlRFR0VSLCBxdW90YSBJTlRFR0VSKSIpOwogICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZXMgKGlkIElO
VEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgY2FjaGVHcm91cCBJTlRFR0VSLCBzaXpl
IElOVEVHRVIpIik7CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIENhY2hlV2hpdGVsaXN0VVJMcyAodXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1Qg
RkFJTCwgY2FjaGUgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwogICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZUFsbG93c0Fs
bE5ldHdvcmtSZXF1ZXN0cyAod2lsZGNhcmQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBG
QUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CkBAIC01MjMs
MTIgKzUzMiwxMyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBHcm91cFN0b3JhZ2VJRAogICAgIEFTU0VSVChncm91cC0+
c3RvcmFnZUlEKCkgPT0gMCk7CiAgICAgQVNTRVJUKGpvdXJuYWwpOwogCi0gICAgU1FMaXRlU3Rh
dGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVHcm91cHMgKG1h
bmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJMKSBWQUxVRVMgKD8sID8pIik7CisgICAgU1FMaXRl
U3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gQ2FjaGVHcm91cHMg
KG1hbmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJMLCBxdW90YSkgVkFMVUVTICg/LCA/LCA/KSIp
OwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDEsIHVybEhvc3RIYXNoKGdy
b3VwLT5tYW5pZmVzdFVSTCgpKSk7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIGdyb3VwLT5t
YW5pZmVzdFVSTCgpKTsKKyAgICBzdGF0ZW1lbnQuYmluZEludDY0KDMsIGdyb3VwLT5xdW90YSgp
KTsKIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC03MTAsNiArNzIwLDIxIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjCiAg
ICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQpOwogfQogCitib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRDYWNoZUdyb3VwUXVvdGEoQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCkKK3sKKyAgICBpZiAoZ3JvdXAtPmlzT2Jzb2xldGUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1FMaXRlU3RhdGVtZW50IHVwZGF0ZVN0YXRl
bWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIENhY2hlR3JvdXBzIFNFVCBxdW90YT0/IFdIRVJFIGlk
PT8iKTsKKyAgICBpZiAodXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBncm91cC0+cXVvdGEoKSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBncm91
cC0+c3RvcmFnZUlEKCkpOworCisgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3Rh
dGVtZW50KTsKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUpCiB7
CiAgICAgQVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSk7CkBAIC05OTksNyArMTAyNCw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3RyaW5n
JiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAgfQogICAgIAogICAgIC8vIE5vdyBjcmVhdGUgYSBu
ZXcgY2FjaGUgZ3JvdXAuCi0gICAgT3duUHRyPEFwcGxpY2F0aW9uQ2FjaGVHcm91cD4gZ3JvdXBD
b3B5KG5ldyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY2FjaGUtPmdyb3VwKCktPm1hbmlmZXN0VVJM
KCksIHRydWUpKTsKKyAgICBPd25QdHI8QXBwbGljYXRpb25DYWNoZUdyb3VwPiBncm91cENvcHko
bmV3IEFwcGxpY2F0aW9uQ2FjaGVHcm91cChjYWNoZS0+Z3JvdXAoKS0+bWFuaWZlc3RVUkwoKSwg
Y2FjaGUtPmdyb3VwKCktPnF1b3RhKCksIHRydWUpKTsKICAgICAKICAgICBncm91cENvcHktPnNl
dE5ld2VzdENhY2hlKGNhY2hlQ29weSk7CiAgICAgCkBAIC0xMTIwLDcgKzExNDUsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0Zvck1heFNpemVSZWFjaGVkKCkKIH0KIAog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkgCi0gICAg
OiBtX21heGltdW1TaXplKElOVF9NQVgpCisgICAgOiBtX21heGltdW1TaXplKG5vUXVvdGEpCiAg
ICAgLCBtX2lzTWF4aW11bVNpemVSZWFjaGVkKGZhbHNlKQogewogfQpAQCAtMTEyOCw3ICsxMTUz
LDcgQEAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCkK
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBjYWNoZVN0b3JhZ2UoKQogewogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UsIHN0b3JhZ2UsICgpKTsKLSAgICAK
KwogICAgIHJldHVybiBzdG9yYWdlOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCBhYWE1YzljLi43NmE1Nzg0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
CisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKIAorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NywxMyArNTgsMTQgQEAg
cHVibGljOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogY2FjaGVHcm91cEZvclVSTChjb25z
dCBLVVJMJik7IC8vIENhY2hlIHRvIGxvYWQgYSBtYWluIHJlc291cmNlIGZyb20uCiAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYp
OyAvLyBDYWNoZSB0aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxvYWQgYSBtYWluIHJlc291
cmNlIGZyb20gaWYgbm9ybWFsIGxvYWRpbmcgZmFpbHMuCiAKLSAgICBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOwor
ICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBL
VVJMJiBtYW5pZmVzdFVSTCwgaW50NjRfdCBzdGFydGluZ1F1b3RhKTsKICAgICB2b2lkIGNhY2hl
R3JvdXBEZXN0cm95ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgdm9pZCBjYWNoZUdy
b3VwTWFkZU9ic29sZXRlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwotICAgICAgICAKKwogICAg
IGJvb2wgc3RvcmVOZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsgLy8gVXBkYXRl
cyB0aGUgY2FjaGUgZ3JvdXAsIGJ1dCBkb2Vzbid0IHJlbW92ZSBvbGQgY2FjaGUuCiAgICAgYm9v
bCBzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqLCBBcHBsaWNhdGlvbkNhY2hlKik7CiAg
ICAgYm9vbCBzdG9yZVVwZGF0ZWRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSosIEFwcGxp
Y2F0aW9uQ2FjaGUqKTsKKyAgICBib29sIHN0b3JlVXBkYXRlZENhY2hlR3JvdXBRdW90YShBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqKTsKIAogICAgIC8vIFJlbW92ZXMgdGhlIGdyb3VwIGlmIHRoZSBj
YWNoZSB0byBiZSByZW1vdmVkIGlzIHRoZSBuZXdlc3Qgb25lIChzbywgc3RvcmVOZXdlc3RDYWNo
ZSgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmVoYW5kIHdoZW4gdXBkYXRpbmcpLgogICAgIHZv
aWQgcmVtb3ZlKEFwcGxpY2F0aW9uQ2FjaGUqKTsKQEAgLTc2LDYgKzc4LDggQEAgcHVibGljOgog
ICAgIGJvb2wgY2FjaGVHcm91cFNpemUoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCwgaW50NjRf
dCogc2l6ZSk7CiAgICAgYm9vbCBkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZl
c3RVUkwpOwogICAgIHZvaWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CisKKyAgICBzdGF0aWMgY29u
c3QgaW50NjRfdCBub1F1b3RhID0gSU5UNjRfTUFYOwogcHJpdmF0ZToKICAgICBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZSgpOwogICAgIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbG9hZENh
Y2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmggYi9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzkzYjNjOS4uZGZk
ODljMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBOU1Jlc3BvbmRl
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUdy
b3VwOwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBGaWxlQ2hvb3NlcjsKICAg
ICBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xNjEsNiArMTYyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gVGhlIGNocm9tZSBjbGllbnQgd291bGQgbmVlZCB0byB0YWtlIHNvbWUg
YWN0aW9uIHN1Y2ggYXMgZXZpY3Rpbmcgc29tZQogICAgICAgICAvLyBvbGQgY2FjaGVzLgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKSA9IDA7CisKKyAgICAgICAgLy8gQ2FsbGJhY2sgaW52b2tlZCB3aGVuIHRoZSBhcHBsaWNh
dGlvbiBjYWNoZSBncm91cCBxdW90YSBpcyByZWFjaGVkLiBUaGlzCisgICAgICAgIC8vIG1lYW5z
IHRoYXQgdGhlIHJlc291cmNlcyBhdHRlbXB0aW5nIHRvIGJlIGNhY2hlZCB2aWEgdGhlIG1hbmlm
ZXN0IGFyZQorICAgICAgICAvLyBtb3JlIHRoYW4gYWxsb3dlZC4gVGhpcyBjYWxsYmFjayBhbGxv
d3MgdGhlIGNocm9tZSBjbGllbnQgdG8gdGFrZSBhY3Rpb24sCisgICAgICAgIC8vIHN1Y2ggYXMg
cHJvbXB0aW5nIHRoZSB1c2VyIHRvIGFzayB0byBpbmNyZWFzZSB0aGUgcXVvdGEgZm9yIHRoaXMK
KyAgICAgICAgLy8gaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBjYWNoZSBncm91cC4KKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkgPSAwOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyM2QzZTg3Li4zMjYyY2I1IDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0xNCAg
Sm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90
YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBBZGRl
ZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgZGVsZWdhdGUgbWV0aG9kLgorCisgICAg
ICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEpOgorICAg
ICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaDoKKwogMjAxMC0wNi0x
NSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkIEVGTCBidWlsZCBmaXguIFNpbXBsZSB0eXBvLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTU4ZTk1
ZC4uYmE5ZWEwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMTQgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFs
IGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgQWRkZWQg
c3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YSk6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuaDoKKwogMjAxMC0wNi0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBDaHJvbWl1bSBidWlsZC4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDU1OWE2MmIuLjkwYjA4YzcgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRlICJBWE9i
amVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyTmFtZXMuaCIKICNpbmNsdWRlICJDb25z
b2xlLmgiCkBAIC01NzgsNiArNTc5LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVhY2hl
ZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQorCit2b2lkIENocm9tZUNsaWVudEltcGw6OnJlYWNoZWRBcHBDYWNoZUdy
b3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KICNlbmRpZgogCiB2b2lkIENocm9tZUNsaWVu
dEltcGw6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+
IGZpbGVDaG9vc2VyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCA4
NDM1NWMzLi5hMGFmOTMwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApA
QCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBY2Nlc3NpYmls
aXR5T2JqZWN0OworY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgRmlsZUNob29z
ZXI7CiBjbGFzcyBIVE1MUGFyc2VyUXVpcmtzOwogY2xhc3MgUG9wdXBDb250YWluZXI7CkBAIC0x
MTgsNiArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgZGF0YWJhc2VOYW1lKTsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0
X3Qgc3BhY2VOZWVkZWQpOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1
b3RhKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3Bw
IGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IGM1
MWJlZmIuLmEzZGRlOWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oIgogI2lmIEVOQUJMRShEQVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFzZURldGFpbHMuaCIK
ICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTM1MSw2ICszNTIsMTEgQEAgdm9pZCBD
aHJvbWVDbGllbnRFZmw6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRl
ZCkKICAgICAvLyBGSVhNRTogRnJlZSBzb21lIHNwYWNlLgogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CisKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFw
cGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsgICAgCit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmggYi9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmluZGV4IDM5OWVmN2YuLjhj
NGNjY2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
RWZsLmgKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaApA
QCAtMTEwLDYgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRf
dCBzcGFjZU5lZWRlZCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBDYWNoZUdyb3VwUXVv
dGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPik7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IDk4NDFjYmEuLmU3ODc3MjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTAtMDYtMTQgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlv
bkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAg
ICAgICAgQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhv
ZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisKIDIwMTAtMDYtMTQg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCmluZGV4IDU3NTk2MDEuLjEyMWQxZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkFw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKQEAgLTUyMiw2ICs1MjMsMTEg
QEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFj
ZU5lZWRlZCkKICAgICAvLyBGSVhNRTogRnJlZSBzb21lIHNwYWNlLgogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CisKK3ZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3Rh
KEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KICNlbmRpZgogCiB2b2lkIENocm9tZUNsaWVudDo6cnVuT3BlblBh
bmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCA0NmQwMTVlLi41
ODcyMmE2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
QEAgLTEwOCw2ICsxMDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICNlbmRpZgogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
TWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YShXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hv
b3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUNob29zZXIqKTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4
IGQ3MWM1ZTQuLjU1NWU4NjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2LTE0ICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3Rh
bCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIEFkZGVk
IHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0xNCAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50SGFpa3UuY3BwCmluZGV4IDJjZjVjMzEuLjVhYjJjMmIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAKKysrIGIvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEhhaWt1
LmgiCiAKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKQEAgLTM0NSw2ICszNDYsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZE1heEFw
cENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CisKK3ZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBw
bGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQogI2VuZGlmCiAKIHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6OnJlcXVlc3RH
ZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShGcmFtZSosIEdlb2xvY2F0aW9uKikKZGlmZiAt
LWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKaW5kZXggZDVh
MzcyYi4uZmI1MzI2MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEhhaWt1LmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBUaGlzIGlz
IGFuIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xpZW50IGNhbiBkaXNwbGF5IFVJIGFz
a2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4YWY0MTRkLi44N2RjNmVmIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMwIEBACisyMDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENh
cGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDYyNworCisgICAgICAgIEFkZGVkIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIG5ldyBkZWxlZ2F0ZSBtZXRob2QuIEV4YW1wbGUKKyAgICAgICAgYmVoYXZpb3Igd291bGQg
YmUgdG8gcHJvbXB0IHRoZSB1c2VyIGlmIHRoZXkgd291bGQgbGlrZSB0byBpbmNyZWFzZQorICAg
ICAgICB0aGUgcXVvdGEgZm9yIHRoaXMgZG9tYWluLiBJZiBwcm92aWRlZCB3aXRoIGEgbmV3IHF1
b3RhLCB0aGUgcXVvdGEKKyAgICAgICAgaXMgc2V0IG9uIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBn
cm91cCwgYW5kIHdpbGwgYmUgdXNlZCB0aGUgbmV4dAorICAgICAgICB0aW1lIHRoZSByZXNvdXJj
ZXMgYXJlIGZldGNoZWQuCisKKyAgICAgICAgICBIYW5kbGUgV2ViQ29yZSdzIGRlbGVnYXRlIG1l
dGhvZCB3aGVuIHRoZSBxdW90YSBpcyByZWFjaGVkLgorICAgICAgICAgIFBhc3Mgb24gdG8gdGhl
IFdlYlVJIGRlbGVnYXRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKToKKworICAg
ICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcHJvbXB0aW5nIGZvciBhIG5ldyBxdW90YS4g
UmV0dXJuaW5nCisgICAgICAgICAgbmlsLCBsZWF2ZXMgdGhlIHF1b3RhIHVuY2hhbmdlZC4KKwor
ICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubToKKyAgICAg
ICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2Fj
aGVRdW90YVdpdGhPbGRRdW90YTpzcGFjZU5lZWRlZDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlVJRGVsZWdhdGVQcml2YXRlLmg6CisKIDIwMTAtMDYtMTUgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9EZWZhdWx0RGVsZWdhdGVzL1dlYkRlZmF1bHRVSURlbGVnYXRlLm0g
Yi9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQppbmRl
eCA2OGZhMDVlLi40ZGM5OWYwIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQorKysgYi9XZWJLaXQvbWFjL0RlZmF1bHREZWxlZ2F0
ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubQpAQCAtMjM3LDQgKzIzNyw5IEBAIC0gKE5TU3RyaW5n
ICopd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZTooTlNT
dHJpbmcgKilwYXRoCiAgICAgcmV0dXJuIG5pbDsKIH0KIAorLSAoTlNOdW1iZXIgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZVF1b3RhV2l0aE9sZFF1
b3RhOihOU051bWJlciAqKW9sZFF1b3RhIHNwYWNlTmVlZGVkOihOU051bWJlciAqKXNwYWNlTmVl
ZGVkCit7CisgICAgcmV0dXJuIG5pbDsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggN2RlZWE3OS4uZTI3ZWIxYyAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMTUsNiArMTE1LDcg
QEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YShXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDBhNTJhOWYuLmZiOWFkN2Ig
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC00
Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJXZWJWaWV3LmgiCiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnNvbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxl
bWVudC5oPgpAQCAtNTYwLDYgKzU2MSwyNSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hl
ZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKQogewogICAgIC8vIEZJWE1FOiBG
cmVlIHNvbWUgc3BhY2UuCiB9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2Fj
aGVHcm91cFF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogYXBwbGljYXRpb25DYWNoZUdyb3Vw
LCBpbnQ2NF90IHNwYWNlTmVlZGVkKQoreyAgICAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICAvLyBQcm9tcHQgdGhlIHVzZXIgZm9yIGEgcXVvdGEgaW5jcmVhc2UuCisg
ICAgTlNOdW1iZXIgKm9sZFF1b3RhID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhMb25nTG9u
ZzphcHBsaWNhdGlvbkNhY2hlR3JvdXAtPnF1b3RhKCldOworICAgIE5TTnVtYmVyICpkaWZmZXJl
bmNlID0gW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhMb25nTG9uZzpzcGFjZU5lZWRlZF07Cisg
ICAgTlNOdW1iZXIgKm5ld1F1b3RhID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0
b3Iod2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVRdW90YVdpdGhPbGRRdW90YTpzcGFj
ZU5lZWRlZDopLCBvbGRRdW90YSwgZGlmZmVyZW5jZSk7CisKKyAgICAvLyBTZXQgdGhlIG5ldyBx
dW90YS4KKyAgICBpZiAobmV3UXVvdGEgJiYgbmV3UXVvdGEgIT0gb2xkUXVvdGEpCisgICAgICAg
IGFwcGxpY2F0aW9uQ2FjaGVHcm91cC0+c2V0UXVvdGEoW25ld1F1b3RhIGxvbmdMb25nVmFsdWVd
KTsKKworICAgIFtvbGRRdW90YSByZWxlYXNlXTsKKyAgICBbZGlmZmVyZW5jZSByZWxlYXNlXTsK
KyAKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQogI2VuZGlmCiAgICAgCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cG9wdWxhdGVWaXNpdGVkTGlua3MoKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCAzMjdhNzQ1Li43NGJjZGJhIDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMTI0LDYgKzEyNCwxOCBA
QCBlbnVtIHsKICovCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZnJhbWU6KFdl
YkZyYW1lICopZnJhbWUgZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGRhdGFiYXNlOihOU1N0cmluZyAqKWRhdGFiYXNlSWRl
bnRpZmllcjsKIAorLyohCisgICAgQG1ldGhvZCB3ZWJWaWV3OmV4Y2VlZGVkQXBwbGljYXRpb25D
YWNoZVF1b3RhV2l0aE9sZFF1b3RhOnNwYWNlTmVlZGVkOgorICAgIEBwYXJhbSBzZW5kZXIgVGhl
IFdlYlZpZXcgc2VuZGluZyB0aGUgZGVsZWdhdGUgbWV0aG9kLgorICAgIEBwYXJhbSBvbGRRdW90
YSBUaGUgcHJldmlvdXMgYXBwbGljYXRpb24gY2FjaGUgZ3JvdXAgcXVvdGEuCisgICAgQHBhcmFt
IHNwYWNlTmVlZGVkIFRoZSBudW1iZXIgb2YgYnl0ZXMgbmVlZGVkIGJ5IHRoZSBhcHBsaWNhdGlv
biBjYWNoZSB0byBzdG9yZSB0aGUgbmV4dCByZXNvdXJjZS4KKyAgICBAcmVzdWx0IFRoZSBuZXcg
cXVvdGEgZm9yIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBncm91cCwgb3IgbmlsIHRvIG5vdCBjaGFu
Z2UgaXQuCisgICAgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBwYWdl
IGF0dGVtcHRzIHRvIHN0b3JlIG1vcmUgaW4gdGhlIEFwcGxpY2F0aW9uQ2FjaGUKKyAgICB0aGVu
IHdhcyBhbGxvd2VkIGJ5IHRoZSBxdW90YS4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gYmUgcHJv
bXB0ZWQgdG8gY2hhbmdlIHRoZSBxdW90YSwgZm9yCisgICAgaW5zdGFuY2UgdG8gaW5jcmVhc2Ug
aXQsIGZvciB0aGlzIHNpbmdsZSBhcHBsaWNhdGlvbiBjYWNoZSBncm91cC4KKyovCistIChOU051
bWJlciAqKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hl
UXVvdGFXaXRoT2xkUXVvdGE6KE5TTnVtYmVyICopb2xkUXVvdGEgc3BhY2VOZWVkZWQ6KE5TTnVt
YmVyICopc3BhY2VOZWVkZWQ7CisKIC0gKFdlYlZpZXcgKil3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3aW5k
b3dGZWF0dXJlczooTlNEaWN0aW9uYXJ5ICopZmVhdHVyZXM7CiAKIC0gKEJPT0wpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBzaG91bGRSZXBsYWNlVXBsb2FkRmlsZTooTlNTdHJpbmcgKilwYXRo
IHVzaW5nR2VuZXJhdGVkRmlsZW5hbWU6KE5TU3RyaW5nICoqKWZpbGVuYW1lOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGJjMmQ5
ZC4uOTk1ZmFiMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMTQgIEpvc2VwaCBQZWNvcmFy
byAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3Jp
Z2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgQWRkZWQgc3R1YiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgbmV3IGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oOgorCiAyMDEwLTA2LTE1ICBMYXN6bG8gR29tYm9zICA8bGFzemxv
LjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBTeW1iaWFuIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCmluZGV4
IDk4ZmZkOGEuLjZjYTZlODUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNocm9tZUNsaWVudFF0LmgiCiAKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC00ODMsNiArNDg0LDExIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKICAgICAvLyBGSVhNRTogRnJl
ZSBzb21lIHNwYWNlLgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CisKK3ZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OnJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEoQXBwbGljYXRpb25DYWNoZUdyb3VwKiwg
aW50NjRfdCBzcGFjZU5lZWRlZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmgKaW5kZXggMDM5NmFlZi4uMDNjNTY5MyAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTEzMCw2ICsxMzAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjZW5kaWYKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBDYWNoZUdyb3VwUXVvdGEo
QXBwbGljYXRpb25DYWNoZUdyb3VwKiwgaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2NmQ2ZmYxLi5kYTI1YTM2IDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFj
aXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDYyNworCisgICAgICAgIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5l
dyBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2FjaGVHcm91
cFF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwog
MjAxMC0wNi0xNCAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA1ODc2MzdmLi4zNWJiZGI0IDEw
MDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJX
ZWJWaWV3LmgiCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29uc29sZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUu
aD4KQEAgLTU5MCw2ICs1OTEsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhB
cHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICAvLyBGSVhNRTogRnJlZSBzb21l
IHNwYWNlLgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIGludDY0
X3Qgc3BhY2VOZWVkZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KICNlbmRpZgogCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6cG9wdWxhdGVWaXNpdGVkTGlua3MoKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNjk1NGZkZS4uZmY5Yzc2YSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMTYs
NiArMTE2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNl
TmVlZGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YShXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCBhZWZlMmEx
Li4xYjI3MDc3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0xNCAgSm9zZXBoIFBlY29yYXJv
ICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1Pcmln
aW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBBZGRlZCBzdHViIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBuZXcgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9DaHJvbWVDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRX
eDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YSk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5oOgorCiAyMDEwLTA2LTE0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCmluZGV4IGExOTY0NGQuLmFk
NWUyNDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKQEAg
LTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudFd4LmgiCisKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCIKICNpbmNsdWRl
ICJDb25zb2xlLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlVHJh
Y2tlci5oIgpAQCAtNDI5LDYgKzQzMSwxMSBAQCB2b2lkIENocm9tZUNsaWVudFd4OjpyZWFjaGVk
TWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KKwordm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90
YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNwYWNlTmVlZGVkKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBDaHJvbWVDbGllbnRXeDo6c2Nyb2xs
KGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oIGIvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAppbmRleCBiOTAwZjNlLi42NDk0MWQ3IDEw
MDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5oCisrKyBi
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmgKQEAgLTEyNSw2ICsxMjUs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAg
IHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQp
OworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMDI5
OWRhLi42YzkwMTMzIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2LTE0ICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdp
biBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIEFkZGVkIHN0dWIgaW1wbGVtZW50
YXRpb24gb2YgdGhlIG5ldyBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcENhY2hlR3JvdXBRdW90YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAxMC0wNi0xNCAg
U3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3Mg
YnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlNDQzNTMwLi5mNjFjNjNlIDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtMzM5LDYgKzMzOSwxMSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENh
Y2hlU2l6ZShpbnQ2NF90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CisKK3ZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwQ2FjaGVHcm91cFF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCosIGludDY0X3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KICNlbmRpZgogCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGZlNWYxNGEuLjNlNzRmYjkg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hl
U2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcENh
Y2hlR3JvdXBRdW90YShXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58849</attachid>
            <date>2010-06-15 20:29:42 -0700</date>
            <delta_ts>2010-06-22 15:47:23 -0700</delta_ts>
            <desc>[PATCH] Part 3 - Test Case</desc>
            <filename>part-3.patch</filename>
            <type>text/plain</type>
            <size>16012</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NWUzMWJjLi41MmUxZjUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYt
MTUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hl
IFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAg
VGVzdHMgZm9yIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBncm91cCBxdW90YS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvZ3JvdXAtcXVvdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2dyb3VwLXF1b3RhLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2dyb3VwLXF1b3RhLXNlY29uZC5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wNi0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2dyb3VwLXF1b3RhLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZ3JvdXAtcXVvdGEtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NzgyZDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2dyb3VwLXF1b3RhLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKK0xpbWl0IGFuIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCBxdW90
YSBhbmQgZW5zdXJlIHRoYXQgYW4gZXJyb3IgaXMgdGhyb3VnaCBpZiBhIHJlc291cmNlIGlzIHRv
byBsYXJnZSB0byBmaXQuCisKK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9ncm91cC1xdW90YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9ncm91cC1xdW90YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMxNzk3NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2dyb3VwLXF1b3RhLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWwgbWFuaWZl
c3Q9InJlc291cmNlcy9lbXB0eS5tYW5pZmVzdCI+Cis8Ym9keT4KKzxzY3JpcHQ+CisKKyAgICAv
LyBUaGlzIGlzIGNoYW5naW5nIHRoZSBwcmVmZXJlbmNlLiBBZnRlciB3ZSByZWRpcmVjdCB0aGUg
bmV3CisgICAgLy8gbWFuaWZlc3QgVVJMIHdpbGwgY2F1c2UgYSBuZXcgYXBwbGljYXRpb24gY2Fj
aGUgZ3JvdXAgdG8KKyAgICAvLyBiZSBjcmVhdGVkIHVzaW5nIHRoaXMgbmV3IHByZWZlcmVuY2Vz
IGFzIHRoZSBxdW90YS4gVGhpcworICAgIC8vIHdheSB3ZSBkb24ndCBuZWVkIHRvIGdvIGFuZCBk
aXJlY3RseSB1cGRhdGUgYSBjYWNoZSBncm91cAorICAgIC8vIHdoaWNoIG1heSBvciBtYXkgbm90
IGV4aXN0dC4gMTAgS0Igd2lsbCBiZSB0b28gc21hbGwKKyAgICAvLyBhbmQgd2lsbCBjYXVzZSBh
biBlcnJvci4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGEoMTAgKiAxMDI0KTsKKyAgICB9CisK
KyAgICAvLyBXaGVuIHRoZSBwYWdlIGxvYWRzIHJlZGlyZWN0IHRvIHBvaW50IHRvIGEgcGFnZSB3
aXRoIGEgbmV3CisgICAgLy8gbWFuaWZlc3QgVVJMLiBUaGUgcXVvdGEgaGFzIGJlZW4gc2V0IGxv
dywgc28gd2Ugc2hvdWxkCisgICAgLy8gc2VlIGl0IGdldCBhbiBlcnJvci4KKyAgICB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJj
ZXMvZ3JvdXAtcXVvdGEtc2Vjb25kLmh0bWwiOworICAgIH0KKworPC9zY3JpcHQ+Cis8cD5MaW1p
dCBhbiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgcXVvdGEgYW5kIGVuc3VyZSB0aGF0IGFuIGVycm9y
IGlzIHRocm91Z2ggaWYgYSByZXNvdXJjZSBpcyB0b28gbGFyZ2UgdG8gZml0LiBJZiB5b3UgZ290
IHRoaXMgbWVzc2FnZSB0aGVuIHRoZSBwYWdlIGRpZG4ndCByZWRpcmVjdC48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9ncm91cC1xdW90YS1zZWNvbmQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL2dyb3VwLXF1b3RhLXNlY29uZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0OTU5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9ncm91cC1xdW90YS1zZWNvbmQuaHRt
bApAQCAtMCwwICsxLDI0IEBACis8aHRtbCBtYW5pZmVzdD0ibWF4c2l6ZS5tYW5pZmVzdCI+Cis8
Ym9keT4KKzxzY3JpcHQ+CisKKyAgICAvLyBXZSBleHBlY3QgdG8gcmVjZWl2ZSBhbiBvbmVycm9y
IGFwcGxpY2F0aW9uQ2FjaGUgZXZlbnQsIGJlY2F1c2Ugd2l0aAorICAgIC8vIHRoZSBsb3dlcmVk
IHF1b3RhIHdlIHdvbid0IGhhdmUgZW5vdWdoIHNwYWNlIHRvIGZpdCB0aGUgcmVzb3VyY2VzLgor
ICAgIC8vIFRoZXJlZm9yZSB3ZSBkbyBub3QgZXhwZWN0IHRvIHJlY2VpdmUgdGhlIG90aGVyIGV2
ZW50cy4KKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbG9nKCJT
VUNDRVNTIik7IH0KKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVuY3Rpb24oKSB7
IGxvZygiRkFJTDogcmVjZWl2ZWQgdW5leHBlY3RlZCBjYWNoZWQgZXZlbnQiKTsgfQorICAgIGFw
cGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBsb2coIkZBSUw6IHJlY2Vp
dmVkIHVuZXhwZWN0ZWQgb25ub3VwZGF0ZSBldmVudCIpOyB9CisgICAgYXBwbGljYXRpb25DYWNo
ZS5vbnVwZGF0ZXJlYWR5ID0gZnVuY3Rpb24oKSB7IGxvZygiRkFJTDogcmVjZWl2ZWQgdW5leHBl
Y3RlZCBvbnVwZGF0ZXJlYWR5IGV2ZW50Iik7IH0KKworICAgIC8vIFdoZW4gd2UgbG9nIGEgbWVz
c2FnZSwgaXRzIHNhZmUgdG8gYXNzdW1lIHdlIGNhbiBlbmQgdGhlIHRlc3QuCisgICAgZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICAgIH0KKworPC9zY3JpcHQ+Cis8cD5MaW1pdCBhbiBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAgcXVvdGEgYW5kIGVuc3VyZSB0aGF0IGFuIGVycm9yIGlzIHRocm91Z2ggaWYgYSBy
ZXNvdXJjZSBpcyB0b28gbGFyZ2UgdG8gZml0LjwvcD4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYjQ4MTYyZC4uMGZlOGE5OSAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUyIEBACisyMDEwLTA2LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlt
aXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5
IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MDYyNworCisgICAgICAgIFN1cHBvcnQgZm9yIHRlc3RpbmcgdGhlIGFwcGxpY2F0aW9uIGNh
Y2hlIGdyb3VwIHF1b3RhLiBUaGlzCisgICAgICAgIGFkZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhKC4uLikKKyAgICAgICAgc28gdGhh
dCBhIHRlc3QgZmlsZSBjYW4gdXBkYXRlIHRoZSBwcmVmZXJlbmNlLiBUaGUgdGVzdCBmaWxlIGNh
bgorICAgICAgICB0aGVuIHJlZGlyZWN0LCBvciB1c2UgYW4gaWZyYW1lIHdpdGggYSBuZXcgbWFu
aWZlc3QsIHRvIHRlc3QgdGhlCisgICAgICAgIGFuIGFwcGxpY2F0aW9uIGNhY2hlIGdyb3VwIHdp
dGggdGhhdCBkZWZhdWx0IHF1b3RhLgorCisgICAgICAgIFRoZSBwcmVmZXJlbmNlIGdldHMgcmVz
ZXQgYWZ0ZXIgZXZlcnkgdGVzdCBzbyBubyBmdXR1cmUgdGVzdHMKKyAgICAgICAgYXJlIGFmZmVj
dGVkLgorCisgICAgICAgICAgQ3JlYXRlIGFuZCBpbnN0YWxsIHRoZSBKYXZhU2NyaXB0IGNhbGxi
YWNrLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZUNhbGxiYWNrKToKKyAgICAgICAgKHNl
dEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YUNhbGxiYWNrKToKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorCisgICAgICAgICAgTWFjIGlt
cGwsIHNldHMgdGhlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YQorICAgICAgICAg
IHByZWZlcmVuY2UgdG8gdGhlIHByb3ZpZGVkIHZhbHVlLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YSk6CisKKyAg
ICAgICAgICBTdG9yZSBhbmQgUmVzdG9yZSB0aGUgQXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVs
dFF1b3RhCisgICAgICAgICAgcHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgd2hlbiB0
ZXN0cyBzdGFydGVkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNl
dERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZyk6CisKKyAgICAgICAgICBTdHVi
IGltcGxlbWVudGF0aW9ucyBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgY3VycmVudGx5CisgICAg
ICAgICAgc3VwcG9ydCB0aGUgcHJlZmVyZW5jZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1b3RhKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVv
dGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVH
cm91cERlZmF1bHRRdW90YSk6CisKIDIwMTAtMDYtMTUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29o
Y2dAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAppbmRleCBiOTZhOWM5Li5hMGJmNmJjIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02ODMsNyAr
NjgzLDIxIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSCiAgICAgICAgIGNvbnRyb2xsZXItPnNl
dEFwcENhY2hlTWF4aW11bVNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXpl
KSk7CiAgICAgICAgIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0QXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1
b3RhQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBt
YWMgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAorICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworCisgICAgZG91YmxlIHNpemUgPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBOVUxMKTsKKyAgICBpZiAoIWlzbmFu
KHNpemUpKQorICAgICAgICBjb250cm9sbGVyLT5zZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZh
dWx0UXVvdGEoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzaXplKSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1
dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CkBAIC0xNjE5LDcgKzE2MzMsOCBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0QWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMiLCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIs
IHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENh
Y2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKKyAgICAgICAgeyAic2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJzZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGEiLCBzZXRBcHBsaWNh
dGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGFDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkIiwgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUiLCBzZXRB
dXRoZW50aWNhdGlvblVzZXJuYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQiLCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAppbmRleCA4ZmYzOGQxLi4zNDM3NmM1IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTc0LDYgKzc0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THMoYm9vbCk7CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7
CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGEobG9uZyBs
b25nIHF1b3RhKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wp
OwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwogICAgIHZvaWQgc2V0Q3VzdG9tUG9saWN5
RGVsZWdhdGUoYm9vbCBzZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKTsKQEAgLTEwNSw3ICsx
MDYsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHdlYkhpc3RvcnlJdGVtQ291bnQoKTsKICAgICB1
bnNpZ25lZCB3b3JrZXJUaHJlYWRDb3VudCgpIGNvbnN0OwogICAgIGludCB3aW5kb3dDb3VudCgp
OwotICAgIAorCiAgICAgdm9pZCBncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpT
U3RyaW5nUmVmIG9yaWdpbik7CiAgICAgYm9vbCBjaGVja0Rlc2t0b3BOb3RpZmljYXRpb25QZXJt
aXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU4
Yjg2MjcuLmM1MjdjZDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNTI1LDYgKzUyNSwxMSBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2ln
bmVkIGxvbmcgbG9uZyBzaXplKQogICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9jYWNoZV9zZXRfbWF4
aW11bV9zaXplKHNpemUpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBs
aWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGEobG9uZyBsb25nIHF1b3RhKTsKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50LCBhZGQgYSBQcmVmZXJlbmNlIGZvciB0aGUgQXBwbGljYXRpb25D
YWNoZUdyb3VwRGVmYXVsdFF1b3RhCit9CisKIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
dXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSB0aW1lLCBKU1N0cmluZ1JlZiBlbGVtZW50SWQpCiB7ICAgIAogICAgIGdjaGFy
KiBuYW1lID0gSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoYW5pbWF0aW9uTmFtZSk7CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggOWU0
YjIwMy4uYWExYTdkNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQpAQCAtMTQyLDYgKzE0Miw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiBzdGF0aWMgV2Vi
SGlzdG9yeUl0ZW0gKnByZXZUZXN0QkZJdGVtID0gbmlsOyAgLy8gY3VycmVudCBiL2YgaXRlbSBh
dCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyB0ZXN0CiAKK3N0YXRpYyBpbnQ2NF90IG9yaWdpbmFs
QXBwbGljYXRpb25DYWNoZUdyb3VwUXVvdGEgPSBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJl
ZmVyZW5jZXNdIGFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YV07CisKICNpZiBfX09C
SkMyX18KIHN0YXRpYyB2b2lkIHN3aXp6bGVBbGxNZXRob2RzKENsYXNzIGltcG9zdGVyLCBDbGFz
cyBvcmlnaW5hbCkKIHsKQEAgLTQxMiw2ICs0MTQsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIAogICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKIAorICAgIFtwcmVmZXJl
bmNlcyBzZXRBcHBsaWNhdGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGE6b3JpZ2luYWxBcHBsaWNh
dGlvbkNhY2hlR3JvdXBRdW90YV07CiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMczpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdGFuZGFyZEZvbnRG
YW1pbHk6QCJUaW1lcyJdOwpAQCAtNDc0LDcgKzQ3Nyw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNrUGF0aDpbcGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJVUkxDYWNoZSJdXTsKICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNo
ZTpzaGFyZWRDYWNoZV07CiAgICAgW3NoYXJlZENhY2hlIHJlbGVhc2VdOwotCiB9CiAKIHN0YXRp
YyB2b2lkKiBydW5UaHJlYWQodm9pZCogYXJnKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGViMDEw
OTAuLjczYWRiZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTI3MSw2ICsyNzEsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBs
b25nIGxvbmcgc2l6ZSkKICAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBzZXRNYXhpbXVtU2l6ZTpz
aXplXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNo
ZUdyb3VwRGVmYXVsdFF1b3RhKGxvbmcgbG9uZyBxdW90YSkKK3sKKyAgICBbW1dlYlByZWZlcmVu
Y2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRR
dW90YTpxdW90YV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmll
d10gcHJlZmVyZW5jZXNdIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOmZsYWddOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAppbmRleCA4NDUwMzc2Li5lYzQ1OTA5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAt
MzU2LDYgKzM1NiwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBDYWNoZU1h
eGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKICAgICBtX2RydC0+d2ViUGFnZSgp
LT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsK
IH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZUdyb3Vw
RGVmYXVsdFF1b3RhKGxvbmcgbG9uZyBxdW90YSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
LCBhZGQgYSBQcmVmZXJlbmNlIGZvciB0aGUgQXBwbGljYXRpb25DYWNoZUdyb3VwRGVmYXVsdFF1
b3RhCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIHNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
ZW5hYmxlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaAppbmRleCBhMDQxYWQwLi42ZDg2ZDkwIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
CkBAIC0xMzQsNiArMTM0LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgc2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFwcENhY2hl
TWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKKyAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cERlZmF1bHRRdW90YShsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQg
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEZpeGVk
Q29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApp
bmRleCBjNzBiNTE3Li5hYTgxNjczIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTkxNyw2ICs5
MTcsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6
ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSkKICAgICBwcmludGYoIkVSUk9SOiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSgpIG5vdCBpbXBsZW1lbnRlZFxuIik7
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVHcm91
cERlZmF1bHRRdW90YShsb25nIGxvbmcgcXVvdGEpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dCwgYWRkIGEgUHJlZmVyZW5jZSBmb3IgdGhlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cERlZmF1bHRR
dW90YQorICAgIHByaW50ZigiRVJST1I6IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNh
dGlvbkNhY2hlR3JvdXBEZWZhdWx0UXVvdGEoKSBub3QgaW1wbGVtZW50ZWRcbiIpOworfQorCiBi
b29sIExheW91dFRlc3RDb250cm9sbGVyOjpwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdp
dGhJZChKU1N0cmluZ1JlZiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZSwgSlNTdHJpbmdSZWYg
ZWxlbWVudElkKQogewogICAgIENPTVB0cjxJRE9NRG9jdW1lbnQ+IGRvY3VtZW50OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxl
cld4LmNwcAppbmRleCAyNjU4MDJkLi5kZjVhMjkxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcApAQCAtMzcs
OCArMzcsNiBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotCi0KIExheW91dFRlc3RDb250cm9s
bGVyOjp+TGF5b3V0VGVzdENvbnRyb2xsZXIoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
QEAgLTI0OCw2ICsyNDYsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2Fj
aGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSkKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cERlZmF1bHRRdW90YShsb25nIGxvbmcgcXVvdGEpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudCwgYWRkIGEgUHJlZmVyZW5jZSBmb3IgdGhlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cERl
ZmF1bHRRdW90YQorfQorCiB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59425</attachid>
            <date>2010-06-22 15:47:23 -0700</date>
            <delta_ts>2010-07-30 20:43:19 -0700</delta_ts>
            <desc>[PATCH] Part 1 - Add Total and Per-Origin Quota Preferences.</desc>
            <filename>2-part-1.patch</filename>
            <type>text/plain</type>
            <size>19301</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTQ1NTg1MS4uZTBkOTA2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0xOCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDEgLSBBZGQgVG90
YWwgYW5kIFBlci1PcmlnaW4gUXVvdGEgUHJlZmVyZW5jZXMuCisKKyAgICAgICAgQWxsb3cgdGhl
IGFwcGxpY2F0aW9uIGNhY2hlIHRvdGFsIHNpemUgdG8gYmUgYSBwcmVmZXJlbmNlLCBhbmQKKyAg
ICAgICAgYWRkIGEgbmV3IHByZWZlcmVuY2UgZm9yIHRoZSBkZWZhdWx0IHBlci1vcmlnaW4gcXVv
dGEuCisKKyAgICAgICAgICBIYW5kbGUgdGhlIHBlci1vcmlnaW4gcXVvdGEgaW4gdGhlIGdsb2Jh
bCBjYWNoZVN0b3JhZ2UoKSBvYmplY3QuCisgICAgICAgICAgVGhlIHBlci1vcmlnaW4gcXVvdGEg
d2lsbCBiZSB1c2VkIGluIGEgbGF0ZXIgcGFydCwgdGhpcyBqdXN0CisgICAgICAgICAgaGFuZGxl
cyBpbnRlcmFjdGlvbiB3aXRoIGl0IGZyb20gYSBjbGllbnQuCisKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNldERlZmF1bHRPcmlnaW5RdW90YSk6IHNldHRlcgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlKTogZGVmYXVsdCB0byAibm9RdW90YSIgb24gY29uc3RydWN0aW9uCisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6IGNvbnN0YW50ICJu
b1F1b3RhIiB0byBtZWFuIHVubGltaXRlZCBzdG9yYWdlCisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6ZGVmYXVsdE9yaWdpblF1b3RhKTogYWNjZXNzb3IKKworICAg
ICAgICAgIE1vdmUgYXJvdW5kIHNvbWUgZXhwb3J0cyBhcm91bmQgZm9yIE9mZmxpbmUgV2ViIEFw
cGxpY2F0aW9ucy4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IHB1dCBFTkFCTEUo
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSBpbiB0aGVpciBvd24gZXhwb3J0cyBmaWxlLgorICAg
ICAgICAqIFdlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9ucy5leHA6IEFkZGVkLiBleHBvcnQg
dGhlIFNldHRpbmdzIHNldHRlcnMgdG8gY2xpZW50cy4KKyAgICAgICAgKiBXZWJDb3JlLmJhc2Uu
ZXhwOiBtb3ZlZCBzb21lIGV4cG9ydHMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBhZGRlZCBuZXcgZXhwb3J0cyBmaWxlIGFuZCBhbm90aGVyIG1pc3Npbmcg
ZXhwb3J0cyBmaWxlLgorCiAyMDEwLTA2LTE4ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA3ZWM5MTVmLi45MWQyNWUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05
MTEsNiArOTExLDEwIEBAIGVsc2UKIGVuZGlmCiBlbmRpZgogCitpZmVxICgkKGZpbmRzdHJpbmcg
RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUywkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVO
Q0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5PZmZsaW5lV2Vi
QXBwbGljYXRpb25zLmV4cAorZW5kaWYKKwogaWZlcSAoJChzaGVsbCBnY2MgLUUgLVAgLWRNICQo
RlJBTUVXT1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5o
IHwgZ3JlcCBXVEZfVVNFX1BST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyB8IGN1dCAtZCcg
JyAtZjMpLCAxKQogICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVf
RVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5Qcm90ZWN0aW9uU3BhY2VBdXRoQ2FsbGJhY2su
ZXhwCiBlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNh
dGlvbnMuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZWJjYTMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9ucy5leHAKQEAgLTAsMCAr
MSw2IEBACitfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRzZXRNYXhpbXVt
U2l6ZUV4CitfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTZzdG9yZUNvcHlP
ZkNhY2hlRVJLTlNfNlN0cmluZ0VQTlNfMjBBcHBsaWNhdGlvbkNhY2hlSG9zdEUKK19fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxN3NldENhY2hlRGlyZWN0b3J5RVJLTlNfNlN0
cmluZ0UKK19fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOHZhY3V1bURhdGFi
YXNlRmlsZUV2CitfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjFzZXREZWZh
dWx0T3JpZ2luUXVvdGFFeAorX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVl
bXB0eUV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAgYi9XZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKaW5kZXggZTY1YTAyOS4uMzdmMzdmNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cApAQCAtNDU0
LDExICs0NTQsNiBAQCBfX1pON1dlYkNvcmUyMmFwcGxpY2F0aW9uSXNBcHBsZU1haWxFdgogX19a
TjdXZWJDb3JlMjJjb3VudGVyVmFsdWVGb3JFbGVtZW50RVBOU183RWxlbWVudEUKIF9fWk43V2Vi
Q29yZTIyY3JlYXRlRnJhZ21lbnRGcm9tVGV4dEVQTlNfNVJhbmdlRVJLTlNfNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKLV9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKLV9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNnN0b3JlQ29weU9mQ2FjaGVFUktOU182U3Ry
aW5nRVBOU18yMEFwcGxpY2F0aW9uQ2FjaGVIb3N0RQotX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTE3c2V0Q2FjaGVEaXJlY3RvcnlFUktOU182U3RyaW5nRQotX19aTjdXZWJD
b3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE4dmFjdXVtRGF0YWJhc2VGaWxlRXYKLV9fWk43
V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U1ZW1wdHlFdgogX19aTjdXZWJDb3JlMjNS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMxRVBOU184RG9jdW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfMTZEb2N1bWVudEZyYWdtZW50RUVFYmJiYmJOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNv
cmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJ
UE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxpc3RXcml0ZXIx
N3dyaXRlUHJvcGVydHlMaXN0RXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNmFmMzliZS4uNjBjNGVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTgxODEsNiArODE4MSw4IEBACiAJCUE0NTQ0MjREMTE5QjM2
ODcwMDlCRTkxMiAvKiBSZW5kZXJNZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNDU2RkEy
NDExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTGFiZWxzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNDU2RkEyNTExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGFiZWxzTm9kZUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3MzAyQTYxMUNCRDlGNTAwNDg0Q0MzIC8qIFdl
YkNvcmUuR2VvbG9jYXRpb24uZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBwYXRo
ID0gV2ViQ29yZS5HZW9sb2NhdGlvbi5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE1NzMwMkE3MTFDQkQ5RjYwMDQ4NENDMyAvKiBXZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlv
bnMuZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBwYXRoID0gV2ViQ29yZS5PZmZs
aW5lV2ViQXBwbGljYXRpb25zLmV4cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU5
RTNDMUMxMTU4MEY1MTAwNzI5MjhFIC8qIEtleUV2ZW50Q29kZXNJUGhvbmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gS2V5RXZlbnRDb2Rlc0lQaG9uZS5oOyBwYXRoID0gaXBo
b25lL0tleUV2ZW50Q29kZXNJUGhvbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU5RTNDMUQxMTU4MEY1MTAwNzI5MjhFIC8qIEtleUV2ZW50SVBob25lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gS2V5RXZlbnRJUGhvbmUubW07IHBhdGggPSBp
cGhvbmUvS2V5RXZlbnRJUGhvbmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExNDIwLDkgKzExNDIyLDExIEBACiAJCQkJRkVGRDEwMkMxMDVDNDE0NzAwMDI4
NTVFIC8qIFdlYkNvcmUuQ29udGV4dE1lbnVzLmV4cCAqLywKIAkJCQk0NDkxOTU5RDBGQkUxN0Q3
MDBEOUY4MjQgLyogV2ViQ29yZS5EYXNoYm9hcmRTdXBwb3J0LmV4cCAqLywKIAkJCQlGRUE0MTMz
RjEwNUQ2N0FFMDAwNzIzNkYgLyogV2ViQ29yZS5EcmFnU3VwcG9ydC5leHAgKi8sCisJCQkJQTU3
MzAyQTYxMUNCRDlGNTAwNDg0Q0MzIC8qIFdlYkNvcmUuR2VvbG9jYXRpb24uZXhwICovLAogCQkJ
CUZFNDlCRDMwMTA2MTcxOTEwMEQwRTFBRSAvKiBXZWJDb3JlLkluc3BlY3Rvci5leHAgKi8sCiAJ
CQkJNDQ5MTk1OUMwRkJFMTdENzAwRDlGODI0IC8qIFdlYkNvcmUuSk5JLmV4cCAqLywKIAkJCQk0
NDkxOTU5QTBGQkUxN0Q3MDBEOUY4MjQgLyogV2ViQ29yZS5OUEFQSS5leHAgKi8sCisJCQkJQTU3
MzAyQTcxMUNCRDlGNjAwNDg0Q0MzIC8qIFdlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9ucy5l
eHAgKi8sCiAJCQkJRkUxMzZBRTcxMDY0M0JFNTAwNzhDRjZEIC8qIFdlYkNvcmUuT3JpZW50YXRp
b25FdmVudHMuZXhwICovLAogCQkJCTQ0OTE5NTlCMEZCRTE3RDcwMEQ5RjgyNCAvKiBXZWJDb3Jl
LlBsdWdpbkhvc3RQcm9jZXNzLmV4cCAqLywKIAkJCQkyNzEyNDVEMzExODkwQUI3MDA4M0U4NTIg
LyogV2ViQ29yZS5Qcm90ZWN0aW9uU3BhY2VBdXRoQ2FsbGJhY2suZXhwICovLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4
IDU5MjMyYTUuLmIxOTQ5NzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTQxNCw2ICs0MTQsMTEgQEAgaW50NjRfdCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3BhY2VOZWVkZWQoaW50NjRfdCBjYWNoZVRvU2F2ZSkK
ICAgICByZXR1cm4gc3BhY2VOZWVkZWQ7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnNldERlZmF1bHRPcmlnaW5RdW90YShpbnQ2NF90IHF1b3RhKQoreworICAgIG1fZGVmYXVs
dE9yaWdpblF1b3RhID0gcXVvdGE7Cit9CisKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmV4ZWN1dGVTUUxDb21tYW5kKGNvbnN0IFN0cmluZyYgc3FsKQogewogICAgIEFTU0VSVChtX2Rh
dGFiYXNlLmlzT3BlbigpKTsKQEAgLTExMjAsOCArMTEyNSw5IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNoZWNrRm9yTWF4U2l6ZVJlYWNoZWQoKQogfQogCiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKSAKLSAgICA6IG1fbWF4aW11bVNp
emUoSU5UX01BWCkKKyAgICA6IG1fbWF4aW11bVNpemUobm9RdW90YSkKICAgICAsIG1faXNNYXhp
bXVtU2l6ZVJlYWNoZWQoZmFsc2UpCisgICAgLCBtX2RlZmF1bHRPcmlnaW5RdW90YShub1F1b3Rh
KQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaAppbmRleCBhYWE1YzljLi4zZDk3NDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTU0LDYgKzU0LDkgQEAg
cHVibGljOgogICAgIGJvb2wgaXNNYXhpbXVtU2l6ZVJlYWNoZWQoKSBjb25zdDsKICAgICBpbnQ2
NF90IHNwYWNlTmVlZGVkKGludDY0X3QgY2FjaGVUb1NhdmUpOwogCisgICAgaW50NjRfdCBkZWZh
dWx0T3JpZ2luUXVvdGEoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRPcmlnaW5RdW90YTsgfQor
ICAgIHZvaWQgc2V0RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3QgcXVvdGEpOworCiAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2Fj
aGUgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbS4KICAgICBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hlIHRoYXQg
aGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3Jt
YWwgbG9hZGluZyBmYWlscy4KIApAQCAtNzYsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
YWNoZUdyb3VwU2l6ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKTsK
ICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAg
ICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90
IG5vUXVvdGEgPSBJTlQ2NF9NQVg7CiBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlKCk7CiAgICAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBsb2FkQ2FjaGUodW5zaWdu
ZWQgc3RvcmFnZUlEKTsKQEAgLTEwNSw2ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIGludDY0X3Qg
bV9tYXhpbXVtU2l6ZTsKICAgICBib29sIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQ7CiAKKyAgICBp
bnQ2NF90IG1fZGVmYXVsdE9yaWdpblF1b3RhOworCiAgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRh
YmFzZTsKIAogICAgIC8vIEluIG9yZGVyIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4g
cmVzb3VyY2UgZXhpc3RzIGluIGFuIGFwcGxpY2F0aW9uIGNhY2hlLApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxYTBmMWIwLi41
YmRlYTQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTA2LTE4ICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdp
biBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBhcnQgMSAtIEFkZCBUb3RhbCBh
bmQgUGVyLU9yaWdpbiBRdW90YSBQcmVmZXJlbmNlcy4KKworICAgICAgICBBbGxvdyB0aGUgYXBw
bGljYXRpb24gY2FjaGUgdG90YWwgc2l6ZSB0byBiZSBhIHByZWZlcmVuY2UsIGFuZAorICAgICAg
ICBhZGQgYSBuZXcgcHJlZmVyZW5jZSBmb3IgdGhlIGRlZmF1bHQgcGVyLW9yaWdpbiBxdW90YS4K
KworICAgICAgICAgIFN0b3JhZ2UgcXVvdGFzIHdlcmUgaW50NjRfdCAobG9uZyBsb25nKS4gQm9p
bGVycGxhdGUgZm9yCisgICAgICAgICAgdGhlc2UgdHlwZXMgYWRkZWQgZm9yIGNvbnNpc3RlbmN5
LgorCisgICAgICAgICogTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMuaDoKKyAgICAgICAgKiBN
aXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tOgorICAgICAgICAoLVtOU011dGFibGVEaWN0aW9u
YXJ5IF93ZWJraXRfc2V0TG9uZ0xvbmc6Zm9yS2V5Ol0pOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJB
cHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJBcHBsaWNhdGlvbkNhY2hlIGRlZmF1
bHRPcmlnaW5RdW90YV0pOgorICAgICAgICAoK1tXZWJBcHBsaWNhdGlvbkNhY2hlIHNldERlZmF1
bHRPcmlnaW5RdW90YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgr
W1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogZGVmYXVsdHMgdG8gbm9RdW90YSBmb3IgYm90
aCBwcmVmZXJlbmNlcy4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX2xvbmdMb25nVmFsdWVG
b3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRMb25nTG9uZ1ZhbHVlOmZv
cktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYXBwbGljYXRpb25DYWNoZVRvdGFs
UXVvdGFdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0QXBwbGljYXRpb25DYWNoZVRv
dGFsUXVvdGE6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGFwcGxpY2F0aW9uQ2FjaGVE
ZWZhdWx0T3JpZ2luUXVvdGFdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0QXBwbGlj
YXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOl0pOiByZXNwZWN0
IHVwZGF0ZXMgdG8gdGhlIHByZWZlcmVuY2VzLgorCiAyMDEwLTA2LTE1ICBEdW1pdHJ1IERhbmls
aXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCBi
L1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMuaAppbmRleCA5NTQ0NWY4Li4w
YmJjNWQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0aW9uYXJ5RXh0cmFz
LmgKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5oCkBAIC00Myw1
ICs0Myw2IEBACiAtICh2b2lkKV93ZWJraXRfc2V0SW50OihpbnQpdmFsdWUgZm9yS2V5OihpZClr
ZXk7CiAtICh2b2lkKV93ZWJraXRfc2V0RmxvYXQ6KGZsb2F0KXZhbHVlIGZvcktleTooaWQpa2V5
OwogLSAodm9pZClfd2Via2l0X3NldEJvb2w6KEJPT0wpdmFsdWUgZm9yS2V5OihpZClrZXk7Cist
ICh2b2lkKV93ZWJraXRfc2V0TG9uZ0xvbmc6KGxvbmcgbG9uZyl2YWx1ZSBmb3JLZXk6KGlkKWtl
eTsKIC0gKHZvaWQpX3dlYmtpdF9zZXRVbnNpZ25lZExvbmdMb25nOih1bnNpZ25lZCBsb25nIGxv
bmcpdmFsdWUgZm9yS2V5OihpZClrZXk7CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLm0gYi9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0aW9u
YXJ5RXh0cmFzLm0KaW5kZXggYTQ3ZmQwYi4uMzY2ZjM2MSAxMDA2NDQKLS0tIGEvV2ViS2l0L21h
Yy9NaXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJO
U0RpY3Rpb25hcnlFeHRyYXMubQpAQCAtMTA4LDYgKzEwOCwxMyBAQCAtKHZvaWQpX3dlYmtpdF9z
ZXRCb29sOihCT09MKXZhbHVlIGZvcktleTooaWQpa2V5CiAgICAgW29iamVjdCByZWxlYXNlXTsK
IH0KIAorLSAodm9pZClfd2Via2l0X3NldExvbmdMb25nOihsb25nIGxvbmcpdmFsdWUgZm9yS2V5
OihpZClrZXkKK3sKKyAgICBOU051bWJlciAqb2JqZWN0ID0gW1tOU051bWJlciBhbGxvY10gaW5p
dFdpdGhMb25nTG9uZzp2YWx1ZV07CisgICAgW3NlbGYgc2V0T2JqZWN0Om9iamVjdCBmb3JLZXk6
a2V5XTsKKyAgICBbb2JqZWN0IHJlbGVhc2VdOworfQorCiAtICh2b2lkKV93ZWJraXRfc2V0VW5z
aWduZWRMb25nTG9uZzoodW5zaWduZWQgbG9uZyBsb25nKXZhbHVlIGZvcktleTooaWQpa2V5CiB7
CiAgICAgTlNOdW1iZXIgKm9iamVjdCA9IFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoVW5zaWdu
ZWRMb25nTG9uZzp2YWx1ZV07CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5oCmluZGV4IDI4MjE1N2YuLmE4ODg3MGEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCkBAIC0yOSw0ICsyOSw4IEBA
CiB9CiAKICsgKHZvaWQpc2V0TWF4aW11bVNpemU6KHVuc2lnbmVkIGxvbmcgbG9uZylzaXplOwor
CisrIChsb25nIGxvbmcpZGVmYXVsdE9yaWdpblF1b3RhOworKyAodm9pZClzZXREZWZhdWx0T3Jp
Z2luUXVvdGE6KGxvbmcgbG9uZylzaXplOworCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0gYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggNGNhNzQ5Yy4uNGY3NzA0ZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hl
Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5t
bQpAQCAtMzksNiArMzksMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgY2FjaGVT
dG9yYWdlKCkuc2V0TWF4aW11bVNpemUoc2l6ZSk7CiB9CiAKKysgKGxvbmcgbG9uZylkZWZhdWx0
T3JpZ2luUXVvdGEKK3sKKyAgICByZXR1cm4gY2FjaGVTdG9yYWdlKCkuZGVmYXVsdE9yaWdpblF1
b3RhKCk7Cit9CisKKysgKHZvaWQpc2V0RGVmYXVsdE9yaWdpblF1b3RhOihsb25nIGxvbmcpc2l6
ZQoreworICAgIGNhY2hlU3RvcmFnZSgpLnNldERlZmF1bHRPcmlnaW5RdW90YShzaXplKTsKK30K
KwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAppbmRleCBjMzhiMzk1Li41M2JkOWQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC04Myw2ICs4Myw4IEBACiAjZGVmaW5l
IFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkgQCJXZWJLaXRMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRFbmFibGVG
dWxsRG9jdW1lbnRUZWFyZG93blByZWZlcmVuY2VLZXkgQCJXZWJLaXRFbmFibGVGdWxsRG9jdW1l
bnRUZWFyZG93biIKICNkZWZpbmUgV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCIKKyNkZWZpbmUgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEgQCJXZWJLaXRBcHBs
aWNhdGlvbkNhY2hlVG90YWxRdW90YSIKKyNkZWZpbmUgV2ViS2l0QXBwbGljYXRpb25DYWNoZURl
ZmF1bHRPcmlnaW5RdW90YSBAIldlYktpdEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVv
dGEiCiAjZGVmaW5lIFdlYktpdFpvb21zVGV4dE9ubHlQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Wm9v
bXNUZXh0T25seSIKICNkZWZpbmUgV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIgogI2RlZmlu
ZSBXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRYU1NBdWRpdG9y
RW5hYmxlZCIKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAwYTE5MmY5Li44
OTkxMWRlIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
KysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0zMCw2ICszMCw3
IEBACiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oIgogCisjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlLmgiCiAj
aW1wb3J0ICJXZWJLaXRMb2dnaW5nLmgiCiAjaW1wb3J0ICJXZWJLaXROU1N0cmluZ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtQml0cy5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2ltcG9y
dCAiV2ViS2l0VmVyc2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViTlNEaWN0aW9uYXJ5RXh0cmFz
LmgiCiAjaW1wb3J0ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oPgogCiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDaGFuZ2VkTm90
aWZpY2F0aW9uID0gQCJXZWJQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24iOwogTlNTdHJp
bmcgKldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiA9IEAiV2ViUHJlZmVyZW5jZXNS
ZW1vdmVkTm90aWZpY2F0aW9uIjsKQEAgLTE3MCw2ICsxNzIsOCBAQCBzdGF0aWMgV2ViQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogLSAodm9pZClfc2V0SW50ZWdlclZh
bHVlOihpbnQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKIC0gKGZsb2F0KV9mbG9hdFZh
bHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIC0gKHZvaWQpX3NldEZsb2F0VmFsdWU6KGZsb2F0
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRMb25nTG9uZ1ZhbHVl
Oihsb25nIGxvbmcpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKGxvbmcgbG9uZylf
bG9uZ0xvbmdWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CiAtICh2b2lkKV9zZXRVbnNpZ25l
ZExvbmdMb25nVmFsdWU6KHVuc2lnbmVkIGxvbmcgbG9uZyl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5OwogLSAodW5zaWduZWQgbG9uZyBsb25nKV91bnNpZ25lZExvbmdMb25nVmFsdWVGb3JL
ZXk6KE5TU3RyaW5nICopa2V5OwogQGVuZApAQCAtMzYxLDYgKzM2NSw4IEBAIHN0YXRpYyBXZWJD
YWNoZU1vZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKHZvaWQpCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6NF0sIFdlYktpdFBsdWdpbkFsbG93ZWRSdW5UaW1lUHJl
ZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJL
aXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOllFU10sICAgV2ViS2l0SFRNTDVQYXJzZXJFbmFibGVkUHJlZmVyZW5j
ZUtleSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3Rh
bFF1b3RhLAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOldlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZURl
ZmF1bHRPcmlnaW5RdW90YSwKICAgICAgICAgbmlsXTsKIAogICAgIC8vIFRoaXMgdmFsdWUgc2hv
dWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBpcyBhc3N1bWVkIGluIHRoZSBpbml0aWFsaXphdGlv
biBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkgYWJvdmUKQEAgLTQ1OCw2ICs0
NjQsMjMgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9p
ZCkKICAgICBbc2VsZiBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbl07CiB9CiAK
Ky0gKGxvbmcgbG9uZylfbG9uZ0xvbmdWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAg
ICBpZCBvID0gW3NlbGYgX3ZhbHVlRm9yS2V5OmtleV07CisgICAgcmV0dXJuIFtvIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IobG9uZ0xvbmdWYWx1ZSldID8gW28gbG9uZ0xvbmdWYWx1ZV0g
OiAwOworfQorCistICh2b2lkKV9zZXRMb25nTG9uZ1ZhbHVlOihsb25nIGxvbmcpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleQoreworICAgIGlmIChbc2VsZiBfbG9uZ0xvbmdWYWx1ZUZvcktl
eTprZXldID09IHZhbHVlKQorICAgICAgICByZXR1cm47CisgICAgTlNTdHJpbmcgKl9rZXkgPSBL
RVkoa2V5KTsKKyAgICBbX3ByaXZhdGUtPnZhbHVlcyBfd2Via2l0X3NldExvbmdMb25nOnZhbHVl
IGZvcktleTpfa2V5XTsKKyAgICBpZiAoX3ByaXZhdGUtPmF1dG9zYXZlcykKKyAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoTG9uZ0xvbmc6dmFsdWVdIGZvcktleTpfa2V5XTsKKyAgICBbc2VsZiBfcG9zdFBy
ZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbl07Cit9CisKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylfdW5zaWduZWRMb25nTG9uZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQogewogICAgIGlk
IG8gPSBbc2VsZiBfdmFsdWVGb3JLZXk6a2V5XTsKQEAgLTk2MCw2ICs5ODMsMjkgQEAgc3RhdGlj
IFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9pZCkKICAgICBbc2VsZiBf
c2V0RmxvYXRWYWx1ZTpmYWN0b3IgZm9yS2V5OldlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVyZW5j
ZUtleV07CiB9CiAKKy0gKGludDY0X3QpYXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX2xvbmdMb25nVmFsdWVGb3JLZXk6V2ViS2l0QXBwbGljYXRpb25DYWNo
ZVRvdGFsUXVvdGFdOworfQorCistICh2b2lkKXNldEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3Rh
OihpbnQ2NF90KXF1b3RhCit7CisgICAgW3NlbGYgX3NldExvbmdMb25nVmFsdWU6cXVvdGEgZm9y
S2V5OldlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhXTsKKworICAgIC8vIEFwcGxpY2F0
aW9uIENhY2hlIFByZWZlcmVuY2VzIGFyZSBzdG9yZWQgb24gdGhlIGdsb2JhbCBjYWNoZSBzdG9y
YWdlIG1hbmFnZXIsIG5vdCBpbiBTZXR0aW5ncy4KKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBz
ZXRNYXhpbXVtU2l6ZTpxdW90YV07Cit9CisKKy0gKGludDY0X3QpYXBwbGljYXRpb25DYWNoZURl
ZmF1bHRPcmlnaW5RdW90YQoreworICAgIHJldHVybiBbc2VsZiBfbG9uZ0xvbmdWYWx1ZUZvcktl
eTpXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhXTsKK30KKworLSAodm9p
ZClzZXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhOihpbnQ2NF90KXF1b3RhCit7
CisgICAgW3NlbGYgX3NldExvbmdMb25nVmFsdWU6cXVvdGEgZm9yS2V5OldlYktpdEFwcGxpY2F0
aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGFdOworfQorCiAtIChQREZEaXNwbGF5TW9kZSlQREZE
aXNwbGF5TW9kZQogewogICAgIFBERkRpc3BsYXlNb2RlIHZhbHVlID0gW3NlbGYgX2ludGVnZXJW
YWx1ZUZvcktleTpXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGM5YTg5ZWUuLjg0YTViMWMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAor
KysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTEzMSw2
ICsxMzEsMTIgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmlj
YXRpb247CiAtIChmbG9hdClQREZTY2FsZUZhY3RvcjsKIC0gKHZvaWQpc2V0UERGU2NhbGVGYWN0
b3I6KGZsb2F0KXNjYWxlOwogCistIChpbnQ2NF90KWFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3Rh
OworLSAodm9pZClzZXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YTooaW50NjRfdClxdW90YTsK
KworLSAoaW50NjRfdClhcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhOworLSAodm9p
ZClzZXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhOihpbnQ2NF90KXF1b3RhOwor
CiAtIChXZWJLaXRFZGl0YWJsZUxpbmtCZWhhdmlvcillZGl0YWJsZUxpbmtCZWhhdmlvcjsKIC0g
KHZvaWQpc2V0RWRpdGFibGVMaW5rQmVoYXZpb3I6KFdlYktpdEVkaXRhYmxlTGlua0JlaGF2aW9y
KWJlaGF2aW9yOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQzNmRjM2MuLjA4OTBjYTUgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJET01DU1NTdHls
ZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZS5o
IgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcuaCIKICNpbXBvcnQgIldlYkNhY2hlLmgiCkBAIC0xNDEwLDYg
KzE0MTEsOSBAQCBzdGF0aWMgYm9vbCBmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKQogICAg
IHNldHRpbmdzLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBpc0ZyYW1l
RmxhdHRlbmluZ0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0SFRNTDVQYXJzZXJFbmFibGVk
KFtwcmVmZXJlbmNlcyBodG1sNVBhcnNlckVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0UGFn
aW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKFtwcmVmZXJlbmNlcyBwYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWRdKTsKKworICAgIC8vIEFwcGxpY2F0aW9uIENhY2hlIFByZWZlcmVuY2VzIGFyZSBz
dG9yZWQgb24gdGhlIGdsb2JhbCBjYWNoZSBzdG9yYWdlIG1hbmFnZXIsIG5vdCBpbiBTZXR0aW5n
cy4KKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBzZXREZWZhdWx0T3JpZ2luUXVvdGE6W3ByZWZl
cmVuY2VzIGFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGFdXTsKIH0KIAogc3RhdGlj
IGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59545</attachid>
            <date>2010-06-23 11:43:06 -0700</date>
            <delta_ts>2010-06-24 13:44:31 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)</desc>
            <filename>2-part-2.patch</filename>
            <type>text/plain</type>
            <size>23428</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTBkOTA2OC4uYjFjZDU4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0wNi0yMSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDIgLSBVcGRhdGUg
U2NoZW1hIGFuZCBlbmZvcmNlIFBlci1PcmlnaW4gUXVvdGFzCisKKyAgICAgICAgQWRkZWQgYW4g
YE9yaWdpbnNgIHRhYmxlIHRvIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBkYXRhYmFzZXMuCisgICAg
ICAgIFRoaXMsIGxpa2UgdGhlIERhdGFiYXNlJ3MgT3JpZ2lucyB0YWJsZSwgaXMgYSBsaXN0IG9m
IG9yaWdpbgorICAgICAgICBhbmQgcXVvdGEgcGFpcnMuIE9yaWdpbiByZWNvcmRzIGFyZSBhZGRl
ZCB3aGVuIGFwcGxpY2F0aW9uCisgICAgICAgIGNhY2hlcyBhcmUgYWRkZWQgKHJlY29yZHMgaW4g
YENhY2hlc2ApIGFuZCByZW1vdmVkIHdoZW4gbm8KKyAgICAgICAgbW9yZSBjYWNoZXMgd2l0aCB0
aGF0IG9yaWdpbiBleGlzdC4gTGlrZXdpc2UgdGhlIGBDYWNoZXNgCisgICAgICAgIHRhYmxlIG5v
dyBoYXMgYW4gb3JpZ2luIGNvbHVtbiwgd2hpY2ggaXMgYSBmb3JlaWduIGtleSB0bworICAgICAg
ICB0aGUgT3JpZ2lucyB0YWJsZS4KKworICAgICAgICBUbyBlbmZvcmNlIHRoZSBxdW90YXMsIHJl
bWFpbmluZyBxdW90YSBzcGFjZSBpcyBjaGVja2VkIGF0CisgICAgICAgIHRoZSBzdGFydCBvZiB1
cGRhdGUgYXMgYW4gZXN0aW1hdGUgYW5kIGF0IHRoZSBlbmQgYmVmb3JlCisgICAgICAgIGluc2Vy
dGluZy4gQ3VycmVudGx5LCByZWFjaGluZyB0aGUgcXVvdGEgbGltaXQgd2lsbCBzaW1wbHkKKyAg
ICAgICAgY2F1c2UgYW4gdXBkYXRlIGVycm9yLiBBIGxhdGVyIHBhcnQgd2lsbCBwcm92aWRlIGEK
KyAgICAgICAgbm90aWZpY2F0aW9uIHRvIHRoZSBjbGllbnQgdG8gYWxsb3cgYW4gYWN0aW9uLgor
CisgICAgICAgICAgUmVzcGVjdCB0aGUgcXVvdGEgZHVyaW5nIHRoZSB1cGRhdGUgcHJvY2Vzcy4g
QW5kIGNhdXNlCisgICAgICAgICAgdGhlIHVwZGF0ZSBwcm9jZXNzIHRvIGZhaWwgd2hlbiB0aGUg
cXVvdGEgaXMgcmVhY2hlZC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaDogYWRkZWQgc2VjdXJpdHkgb3JpZ2lu
LCBiYXNlZCBvbiB0aGUgbWFuaWZlc3QgVVJMCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6Om9yaWdpbik6IGFjY2Vzc29yCisKKyAgICAgICAgICBVcGRhdGVzIHRoZSBz
Y2hlbWEgb2YgdGhlIGRhdGFiYXNlIHRhYmxlcyBhcyBkZXNjcmliZWQKKyAgICAgICAgICBhYm92
ZS4gSGFuZGxlIG90aGVyIFNRTCBvcGVyYXRpb25zIHN1Y2ggYXMgY2hlY2tpbmcgdGhlCisgICAg
ICAgICAgcmVtYWluaW5nIHNwYWNlIGFuZCBpbnNlcnRpbmcgYW5kIGRlbGV0aW5nIE9yaWdpbnMg
cmVjb3Jkcy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cXVv
dGFGb3JPcmlnaW4pOiBxdWVyeSBmb3IgdGhlIHF1b3RhIG9mIGFuIG9yaWdpbiwgbWF5IHJldHVy
biB0aGUgZGVmYXVsdCBvcmlnaW4gcXVvdGEgaWYgaXQgZGlkbid0IGV4aXN0LgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnJlbWFpbmluZ1NpemVGb3JPcmlnaW5F
eGNsdWRpbmdDYWNoZSk6IGNhbGN1bGF0ZSB0aGUgcmVtYWluaW5nIHNpemUgaW4gYSBxdW90YSBm
b3IgYW4gb3JpZ2luLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKTogcGVyc2lzdGVudCB1cGRhdGUuCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKTogdXBkYXRl
ZCBzY2hlbWEgZm9yIENhY2hlcywgYWRkZWQgbmV3IHRhYmxlIE9yaWdpbnMuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOiBwb3NzaWJseSBjcmVhdGUg
YW4gT3JpZ2lucyByZWNvcmQuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6cmVtb3ZlKTogcG9zc2libHkgZGVsZXRlIGFuIE9yaWdpbnMgcmVjb3JkLgorICAgICAg
ICAoV2ViQ29yZTo6bnVtYmVyT2ZDYWNoZXNXaXRoT3JpZ2luKTogaGVscGVyIHRvIHNlZSBpZiBh
biBPcmlnaW5zIHJlY29yZCBleGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6cmVtb3ZlT3JpZ2luSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZU9yaWdpbklmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0eSk6IHdpcGUgT3JpZ2lucyB0YWJs
ZSBhcyB3ZWxsLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmRl
bGV0ZUNhY2hlR3JvdXApOiB0aGlzIHdpbGwgdHJpZ2dlciBkZWxldGluZyBDYWNoZXMgcmVjb3Jk
cywgc28gT3JpZ2lucyByZWNvcmRzIG1heSBuZWVkIHRvIGJlIGRlbGV0ZWQgYXMgd2VsbC4KKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDogYWRkZWQg
YHVua25vd25gIGNvbnN0YW50LgorCiAyMDEwLTA2LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA1MjYwNDNiLi5kYTY0OTc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtNDksNiArNTAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGlj
YXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29weSkKICAg
ICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCisgICAgLCBtX29yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG1hbmlmZXN0VVJMKSkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUpCiAg
ICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50KDApCiAg
ICAgLCBtX2ZyYW1lKDApCkBAIC01Nyw2ICs1OSw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29w
CiAgICAgLCBtX2NvbXBsZXRpb25UeXBlKE5vbmUpCiAgICAgLCBtX2lzQ29weShpc0NvcHkpCiAg
ICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUoZmFsc2UpCisgICAgLCBtX2xvYWRl
ZFNpemUoMCkKKyAgICAsIG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjp1bmtub3duKQogewogfQogCkBAIC01MjMsNiArNTI3LDggQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IGNoYXIqIGQKICAgICAKICAgICBBU1NFUlQobV9jdXJyZW50UmVzb3VyY2UpOwogICAgIG1f
Y3VycmVudFJlc291cmNlLT5kYXRhKCktPmFwcGVuZChkYXRhLCBsZW5ndGgpOworCisgICAgbV9s
b2FkZWRTaXplICs9IGxlbmd0aDsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKQEAgLTUzMSw3ICs1MzcsMjMg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSkKICAgICAgICAgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gCisKKyAgICAvLyBBZnRlciBmaW5pc2hpbmcgdGhlIGxvYWRp
bmcgb2YgYW55IHJlc291cmNlLCB3ZSBjaGVjayBpZiBpdCB3aWxsCisgICAgLy8gZml0IGluIG91
ciBsYXN0IGtub3duIHF1b3RhIGxpbWl0LgorICAgIGlmIChtX2F2YWlsYWJsZVNwYWNlSW5RdW90
YSA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93bikgeworICAgICAgICAvLyBGYWls
ZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgbGVmdCBpbiB0aGUgcXVvdGEuIEZhbGxiYWNrIHRvIGFs
bG93aW5nIGFueXRoaW5nLgorICAgICAgICBpZiAoIWNhY2hlU3RvcmFnZSgpLnJlbWFpbmluZ1Np
emVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwgbV9uZXdlc3RDYWNoZS5n
ZXQoKSwgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEpKQorICAgICAgICAgICAgbV9hdmFpbGFibGVT
cGFjZUluUXVvdGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YTsKKyAgICB9CisK
KyAgICAvLyBDaGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2FkcywgdG8gc2VlIGlmIGl0IHdv
dWxkIGZpdCBpbiBvdXIKKyAgICAvLyBpZGVhIG9mIHRoZSBhdmFpbGFibGUgcXVvdGEgc3BhY2Uu
CisgICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9sb2FkZWRTaXplKSB7CisgICAg
ICAgIG1fY3VycmVudFJlc291cmNlID0gMDsKKyAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChtX2N1cnJlbnRIYW5kbGUgPT0g
aGFuZGxlKTsKICAgICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5jb250YWlucyhoYW5kbGUtPnJl
cXVlc3QoKS51cmwoKSkpOwogICAgIApAQCAtNzc3LDYgKzc5OSwxNSBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKCkKIAogICAgICAgICBSZWZQdHI8
QXBwbGljYXRpb25DYWNoZT4gb2xkTmV3ZXN0Q2FjaGUgPSAobV9uZXdlc3RDYWNoZSA9PSBtX2Nh
Y2hlQmVpbmdVcGRhdGVkKSA/IDAgOiBtX25ld2VzdENhY2hlOwogCisgICAgICAgIC8vIENoZWNr
IG9uZSBtb3JlIHRpbWUsIGJlZm9yZSBjb21taXR0aW5nIHRvIHRoZSBuZXcgY2FjaGUsIGlmIHRo
ZSBjYWNoZSB3aWxsIGZpdCBpbiB0aGUgcXVvdGEuCisgICAgICAgIGludDY0X3QgcmVtYWluaW5n
U3BhY2VJbk9yaWdpbjsKKyAgICAgICAgaWYgKGNhY2hlU3RvcmFnZSgpLnJlbWFpbmluZ1NpemVG
b3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwgb2xkTmV3ZXN0Q2FjaGUuZ2V0
KCksIHJlbWFpbmluZ1NwYWNlSW5PcmlnaW4pKSB7CisgICAgICAgICAgICBpZiAobV9jYWNoZUJl
aW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpID4gcmVtYWluaW5nU3BhY2VJbk9y
aWdpbikgeworICAgICAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBzZXROZXdl
c3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7CiAgICAgICAgIGlmIChjYWNo
ZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hlKHRoaXMpKSB7CiAgICAgICAgICAgICAvLyBOZXcg
Y2FjaGUgc3RvcmVkLCBub3cgcmVtb3ZlIHRoZSBvbGQgY2FjaGUuCkBAIC04MzQsNiArODY1LDgg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAg
ICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vbmU7CiAgICAgbV91cGRhdGVTdGF0dXMgPSBJZGxlOwog
ICAgIG1fZnJhbWUgPSAwOworICAgIG1fbG9hZGVkU2l6ZSA9IDA7CisgICAgbV9hdmFpbGFibGVT
cGFjZUluUXVvdGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93bjsKICAgICBtX2Nh
bGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmggYi9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCA4ZGY1MmNjLi5iMjQ2
ZDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCiAKLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0KICNpbmNsdWRlICJE
T01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCkBAIC0zOSw2ICszNSwxMCBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZTsK
QEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOworY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB7CiAgICAg
QXBwbGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQsCkBAIC02Niw2ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVS
TChGcmFtZSopOwogICAgIAogICAgIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYW5pZmVzdFVSTDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAgIFVwZGF0ZVN0YXR1cyB1cGRh
dGVTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZVN0YXR1czsgfQogCiAgICAgdm9pZCBz
ZXRTdG9yYWdlSUQodW5zaWduZWQgc3RvcmFnZUlEKSB7IG1fc3RvcmFnZUlEID0gc3RvcmFnZUlE
OyB9CkBAIC0xMTAsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNYW5p
ZmVzdERhdGEoY29uc3QgY2hhciosIGludCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QoKTsKICAgICB2b2lkIGRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCk7Ci0gICAgCisKICAg
ICB2b2lkIHN0YXJ0TG9hZGluZ0VudHJ5KCk7CiAgICAgdm9pZCBkZWxpdmVyRGVsYXllZE1haW5S
ZXNvdXJjZXMoKTsKICAgICB2b2lkIGNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpOwpAQCAtMTI0LDYg
KzEyNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogICAgIAogICAgIEtV
UkwgbV9tYW5pZmVzdFVSTDsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwog
ICAgIFVwZGF0ZVN0YXR1cyBtX3VwZGF0ZVN0YXR1czsKICAgICAKICAgICAvLyBUaGlzIGlzIHRo
ZSBuZXdlc3QgY29tcGxldGUgY2FjaGUgaW4gdGhlIGdyb3VwLgpAQCAtMTc5LDYgKzE4Miw5IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gbV9tYW5pZmVz
dFJlc291cmNlOwogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9tYW5pZmVzdEhhbmRsZTsK
IAorICAgIGludDY0X3QgbV9sb2FkZWRTaXplOworICAgIGludDY0X3QgbV9hdmFpbGFibGVTcGFj
ZUluUXVvdGE7CisKICAgICBmcmllbmQgY2xhc3MgQ2hyb21lQ2xpZW50Q2FsbGJhY2tUaW1lcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAppbmRleCBiMTk0OTc4Li5lMGJjZTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSwxMyArMjksMTQgQEAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZS5oIgotI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUdyb3VwLmgiCisjaW5jbHVkZSAiQXBw
bGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KQEAgLTQxOSw2ICs0MjAsOTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2V0
RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3QgcXVvdGEpCiAgICAgbV9kZWZhdWx0T3JpZ2luUXVv
dGEgPSBxdW90YTsKIH0KIAorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cXVvdGFGb3JP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCYgcXVvdGEpCit7Cisg
ICAgLy8gSWYgYW4gT3JpZ2luIHJlY29yZCBkb2Vzbid0IGV4aXN0LCB0aGVuIHRoZSBDT1VOVCB3
aWxsIGJlIDAgYW5kIHF1b3RhIHdpbGwgYmUgMC4KKyAgICAvLyBVc2luZyB0aGUgY291bnQgdG8g
ZGV0ZXJtaW5lIGlmIGEgcmVjb3JkIGV4aXN0ZWQgb3Igbm90IGlzIGEgc2FmZSB3YXkgdG8gZGV0
ZXJtaW5lPQorICAgIC8vIGlmIGEgcXVvdGEgb2YgMCBpcyByZWFsLCBmcm9tIHRoZSByZWNvcmQs
IG9yIGZyb20gbnVsbC4KKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2Us
ICJTRUxFQ1QgQ09VTlQocXVvdGEpLCBxdW90YSBGUk9NIE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8i
KTsKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOworCisg
ICAgLy8gUmV0dXJuIHRoZSBxdW90YSwgb3IgaWYgaXQgd2FzIG51bGwgdGhlIGRlZmF1bHQuCisg
ICAgaWYgKHJlc3VsdCA9PSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAgYm9vbCB3YXNOb1JlY29y
ZCA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKSA9PSAwOworICAgICAgICBxdW90YSA9IHdh
c05vUmVjb3JkID8gbV9kZWZhdWx0T3JpZ2luUXVvdGEgOiBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
NjQoMSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExPR19FUlJPUigiQ291
bGQgbm90IGdldCB0aGUgcmVtYWluaW5nIHNpemUgb2YgYW4gb3JpZ2luLCBlcnJvciBcIiVzXCIi
LCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRp
bmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBBcHBsaWNhdGlvbkNhY2hlKiBj
YWNoZSwgaW50NjRfdCYgcmVtYWluaW5nU2l6ZSkKK3sKKyAgICBvcGVuRGF0YWJhc2UoZmFsc2Up
OworICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gUmVtYWluaW5nIHNpemUgPSB0b3RhbCBvcmlnaW4gcXVvdGEgLSBzaXplIG9mIGFs
bCBjYWNoZXMgd2l0aCBvcmlnaW4gZXhjbHVkaW5nIHRoZSBwcm92aWRlZCBjYWNoZS4KKyAgICAv
LyBLZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY2FjaGVzIHNvIHdlIGNhbiB0ZWxsIGlmIHRo
ZSByZXN1bHQgd2FzIGEgY2FsY3VsYXRpb24gb3Igbm90LgorICAgIGNvbnN0IGNoYXIqIHF1ZXJ5
OworICAgIGludDY0X3QgZXhjbHVkaW5nQ2FjaGVJZGVudGlmaWVyID0gY2FjaGUgPyBjYWNoZS0+
c3RvcmFnZUlEKCkgOiAwOworICAgIGlmIChleGNsdWRpbmdDYWNoZUlkZW50aWZpZXIgIT0gMCkg
eworICAgICAgICBxdWVyeSA9ICJTRUxFQ1QgQ09VTlQoQ2FjaGVzLnNpemUpLCBPcmlnaW5zLnF1
b3RhIC0gU1VNKENhY2hlcy5zaXplKSIKKyAgICAgICAgICAgICAgICAiICBGUk9NIENhY2hlcyBJ
Tk5FUiBKT0lOIE9yaWdpbnMgT04gQ2FjaGVzLm9yaWdpbiA9IE9yaWdpbnMub3JpZ2luIgorICAg
ICAgICAgICAgICAgICIgV0hFUkUgT3JpZ2lucy5vcmlnaW49PyIKKyAgICAgICAgICAgICAgICAi
ICAgQU5EIENhY2hlcy5pZCE9PyI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcXVlcnkgPSAiU0VM
RUNUIENPVU5UKENhY2hlcy5zaXplKSwgT3JpZ2lucy5xdW90YSAtIFNVTShDYWNoZXMuc2l6ZSki
CisgICAgICAgICAgICAgICAgIiAgRlJPTSBDYWNoZXMgSU5ORVIgSk9JTiBPcmlnaW5zIE9OIENh
Y2hlcy5vcmlnaW4gPSBPcmlnaW5zLm9yaWdpbiIKKyAgICAgICAgICAgICAgICAiIFdIRVJFIE9y
aWdpbnMub3JpZ2luPT8iOworICAgIH0KKworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgcXVlcnkpOworICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJl
c3VsdE9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQo
MSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKGV4Y2x1ZGluZ0NhY2hl
SWRlbnRpZmllciAhPSAwKQorICAgICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDIsIGV4Y2x1ZGlu
Z0NhY2hlSWRlbnRpZmllcik7CisgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CisK
KyAgICAvLyBJZiB0aGUgY291bnQgd2FzIDAgdGhhdCB0aGVuIHdlIGhhdmUgdG8gcXVlcnkgdGhl
IG9yaWdpbiB0YWJsZSBkaXJlY3RseQorICAgIC8vIGZvciBpdHMgcXVvdGEuIE90aGVyd2lzZSB3
ZSBjYW4gdXNlIHRoZSBjYWxjdWxhdGVkIHZhbHVlLgorICAgIGlmIChyZXN1bHQgPT0gU1FMUmVz
dWx0Um93KSB7CisgICAgICAgIGludDY0X3QgbnVtYmVyT2ZDYWNoZXMgPSBzdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50NjQoMCk7CisgICAgICAgIGlmIChudW1iZXJPZkNhY2hlcyA9PSAwKQorICAgICAg
ICAgICAgcXVvdGFGb3JPcmlnaW4ob3JpZ2luLCByZW1haW5pbmdTaXplKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVtYWluaW5nU2l6ZSA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgx
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgZ2V0IHRoZSByZW1haW5pbmcgc2l6ZSBvZiBhbiBvcmlnaW4sIGVycm9yIFwiJXNcIiIsIG1f
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCBxdW90YSkKK3sKKyAgICBvcGVuRGF0YWJh
c2UoZmFsc2UpOworICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgU1FMaXRlU3RhdGVtZW50IHVwZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNl
LCAiVVBEQVRFIE9yaWdpbnMgU0VUIHF1b3RhPT8gV0hFUkUgb3JpZ2luPT8iKTsKKyAgICBpZiAo
dXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBxdW90YSk7CisgICAg
dXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworCisgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3RhdGVtZW50KTsKK30KKwog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZXhlY3V0ZVNRTENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBzcWwpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwpAQCAtNDMxLDcg
KzUxNiwxMCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpleGVjdXRlU1FMQ29tbWFu
ZChjb25zdCBTdHJpbmcmIHNxbCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY29u
c3QgaW50IHNjaGVtYVZlcnNpb24gPSA1OworLy8gVXBkYXRlIHRoZSBzY2hlbWFWZXJzaW9uIHdo
ZW4gdGhlIHNjaGVtYSBvZiBhbnkgdGhlIEFwcGxpY2F0aW9uIENhY2hlCisvLyBTUUxpdGUgdGFi
bGVzIGNoYW5nZXMuIFRoaXMgYWxsb3dzIHRoZSBkYXRhYmFzZSB0byBiZSByZWJ1aWx0IHdoZW4K
Ky8vIGEgbmV3LCBpbmNvbXBhdGlibGUgY2hhbmdlIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gdGhl
IGRhdGFiYXNlIHNjaGVtYS4KK3N0YXRpYyBjb25zdCBpbnQgc2NoZW1hVmVyc2lvbiA9IDY7CiAg
ICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlTY2hlbWFWZXJzaW9uKCkK
IHsKQEAgLTQ4MSw3ICs1NjksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVu
RGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICAvLyBDcmVhdGUgdGFibGVz
CiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hl
R3JvdXBzIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsICIKICAgICAgICAg
ICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZM
SUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIG5ld2Vz
dENhY2hlIElOVEVHRVIpIik7Ci0gICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJ
RiBOT1QgRVhJU1RTIENhY2hlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5U
LCBjYWNoZUdyb3VwIElOVEVHRVIsIHNpemUgSU5URUdFUikiKTsKKyAgICBleGVjdXRlU1FMQ29t
bWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVzIChpZCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIGNhY2hlR3JvdXAgSU5URUdFUiwgc2l6ZSBJTlRFR0VSLCBv
cmlnaW4gVEVYVCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5P
VCBFWElTVFMgQ2FjaGVXaGl0ZWxpc3RVUkxzICh1cmwgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMLCBjYWNoZSBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpIik7CiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIENhY2hlQWxsb3dz
QWxsTmV0d29ya1JlcXVlc3RzICh3aWxkY2FyZCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNU
IEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKICAgICBl
eGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgRmFsbGJhY2tVUkxz
IChuYW1lc3BhY2UgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBmYWxsYmFja1VSTCBU
RVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsICIKQEAgLTQ5MCw2ICs1NzgsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNO
b3RFeGlzdCkKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElT
VFMgQ2FjaGVSZXNvdXJjZXMgKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwg
dXJsIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgIgogICAgICAgICAgICAgICAgICAg
ICAgICJzdGF0dXNDb2RlIElOVEVHRVIgTk9UIE5VTEwsIHJlc3BvbnNlVVJMIFRFWFQgTk9UIE5V
TEwsIG1pbWVUeXBlIFRFWFQsIHRleHRFbmNvZGluZ05hbWUgVEVYVCwgaGVhZGVycyBURVhULCBk
YXRhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKICAgICBleGVjdXRlU1FM
Q29tbWFuZCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgQ2FjaGVSZXNvdXJjZURhdGEgKGlk
IElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgZGF0YSBCTE9CKSIpOworICAgIGV4
ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBPcmlnaW5zIChvcmln
aW4gVEVYVCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgcXVvdGEgSU5URUdFUiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSIpOwogCiAgICAgLy8gV2hlbiBhIGNhY2hlIGlzIGRlbGV0ZWQs
IGFsbCBpdHMgZW50cmllcyBhbmQgaXRzIHdoaXRlbGlzdCBzaG91bGQgYmUgZGVsZXRlZC4KICAg
ICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRSSUdHRVIgSUYgTk9UIEVYSVNUUyBDYWNoZURl
bGV0ZWQgQUZURVIgREVMRVRFIE9OIENhY2hlcyIKQEAgLTU0OCwxOSArNjM3LDI3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlLCBS
ZXNvdXJjZVN0b3JhZ2VJREpvCiAgICAgQVNTRVJUKGNhY2hlLT5zdG9yYWdlSUQoKSA9PSAwKTsK
ICAgICBBU1NFUlQoY2FjaGUtPmdyb3VwKCktPnN0b3JhZ2VJRCgpICE9IDApOwogICAgIEFTU0VS
VChzdG9yYWdlSURKb3VybmFsKTsKLSAgICAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJJTlNFUlQgSU5UTyBDYWNoZXMgKGNhY2hlR3JvdXAsIHNpemUpIFZBTFVF
UyAoPywgPykiKTsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IklOU0VSVCBJTlRPIENhY2hlcyAoY2FjaGVHcm91cCwgc2l6ZSwgb3JpZ2luKSBWQUxVRVMgKD8s
ID8sID8pIik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4g
PSBjYWNoZS0+Z3JvdXAoKS0+b3JpZ2luKCk7CisKICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDEs
IGNhY2hlLT5ncm91cCgpLT5zdG9yYWdlSUQoKSk7CiAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgy
LCBjYWNoZS0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRl
eHQoMywgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAgICBpZiAoIWV4ZWN1dGVT
dGF0ZW1lbnQoc3RhdGVtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHVu
c2lnbmVkIGNhY2hlU3RvcmFnZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJhc2Uu
bGFzdEluc2VydFJvd0lEKCkpOwogCisgICAgLy8gQ3JlYXRlIE9yaWdpbiBpZiBuZWVkZWQuCisg
ICAgeworICAgICAgICBjcmVhdGVPcmlnaW5JZk5lZWRlZChvcmlnaW4pOworICAgIH0KKwogICAg
IC8vIFN0b3JlIGFsbCByZXNvdXJjZXMKICAgICB7CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGU6
OlJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjYWNoZS0+ZW5kKCk7CkBAIC05NTks
OCArMTA1Niw4MSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpyZW1vdmUoQXBwbGlj
YXRpb25DYWNoZSogY2FjaGUpCiAgICAgICAgIGV4ZWN1dGVTdGF0ZW1lbnQoZ3JvdXBTdGF0ZW1l
bnQpOwogCiAgICAgICAgIGNhY2hlLT5ncm91cCgpLT5jbGVhclN0b3JhZ2VJRCgpOworCisgICAg
ICAgIHJlbW92ZU9yaWdpbklmTmVlZGVkKGNhY2hlLT5ncm91cCgpLT5vcmlnaW4oKSk7CiAgICAg
fQotfSAgICAKK30KKworc3RhdGljIGJvb2wgbnVtYmVyT2ZDYWNoZXNXaXRoT3JpZ2luKFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBpbnQ2
NF90JiBjb3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChkYXRhYmFzZS5p
c09wZW4oKSk7CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgY291bnRTdGF0ZW1lbnQoZGF0YWJhc2Us
ICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBDYWNoZXMgV0hFUkUgb3JpZ2luPT8iKTsKKyAgICBpZiAo
Y291bnRTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb3VudFN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW5JZGVudGlmaWVy
KTsKKworICAgIGludCByZXN1bHQgPSBjb3VudFN0YXRlbWVudC5zdGVwKCk7CisgICAgaWYgKHJl
c3VsdCA9PSBTUUxSZXN1bHREb25lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
cmVzdWx0ICE9IFNRTFJlc3VsdFJvdykgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
b3VudCB0aGUgbnVtYmVyIG9mIGNhY2hlcyB3aXRoIGFuIG9yaWdpbiwgZXJyb3IgXCIlc1wiIiwg
ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY291bnQgPSBjb3VudFN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgwKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cmVtb3ZlT3JpZ2lu
SWZOZWVkZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sKKyAgICAvLyBOT1RFOiBU
aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIERFTEVURSBmcm9tIENhY2hlcy4KKyAg
ICAvLyBGSVhNRTogVHVybiB0aGlzIGludG8gYSAiQ2FjaGVzIE9OIElOU0VSVCIgdHJpZ2dlcj8K
KworICAgIGludDY0X3QgY291bnQ7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmln
aW4tPmRhdGFiYXNlSWRlbnRpZmllcigpOworCisgICAgaWYgKCFudW1iZXJPZkNhY2hlc1dpdGhP
cmlnaW4obV9kYXRhYmFzZSwgb3JpZ2luSWRlbnRpZmllciwgY291bnQpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBTYWZlIHRvIHJlbW92ZSB0aGlzIG9yaWdpbiBiZWNhdXNlIHRoZXJlIGFy
ZSBubworICAgIC8vIG1vcmUgY2FjaGVzIHRoYXQgdXNlIGl0LgorICAgIGlmIChjb3VudCA9PSAw
KSB7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBkZWxldGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IkRFTEVURSBGUk9NIE9yaWdpbnMgV0hFUkUgb3JpZ2luPT8iKTsKKyAgICAgICAgaWYgKGRlbGV0
ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZGVsZXRlU3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbklkZW50aWZpZXIp
OworICAgICAgICBleGVjdXRlU3RhdGVtZW50KGRlbGV0ZVN0YXRlbWVudCk7CisgICAgfQorfQor
Cit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGVPcmlnaW5JZk5lZWRlZChjb25z
dCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGFmdGVyIGFuIElOU0VSVCBpbnRvIENhY2hlcy4KKyAgICAvLyBGSVhNRTog
VHVybiB0aGlzIGludG8gYSAiQ2FjaGVzIE9OIERFTEVURSIgdHJpZ2dlcj8KKworICAgIGludDY0
X3QgY291bnQ7CisgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpOworCisgICAgaWYgKCFudW1iZXJPZkNhY2hlc1dpdGhPcmlnaW4obV9kYXRh
YmFzZSwgb3JpZ2luSWRlbnRpZmllciwgY291bnQpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBTYWZlIHRvIGFkZCB0aGlzIG9yaWdpbiBiZWNhdXNlIHRoZXJlIGlzIGp1c3QgdGhlIG9uZQor
ICAgIC8vIG5ld2x5IGNyZWF0ZWQgY2FjaGUgdGhhdCB1c2UgaXQuCisgICAgaWYgKGNvdW50ID09
IDEpIHsKKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IGluc2VydFN0YXRlbWVudChtX2RhdGFiYXNl
LCAiSU5TRVJUIElOVE8gT3JpZ2lucyAob3JpZ2luLCBxdW90YSkgVkFMVUVTICg/LCA/KSIpOwor
ICAgICAgICBpZiAoaW5zZXJ0U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnNlcnRTdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luSWRlbnRpZmllcik7CisgICAgICAgIGluc2VydFN0YXRlbWVudC5iaW5kSW50NjQoMiwg
bV9kZWZhdWx0T3JpZ2luUXVvdGEpOworICAgICAgICBleGVjdXRlU3RhdGVtZW50KGluc2VydFN0
YXRlbWVudCk7CisgICAgfQorfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjplbXB0
eSgpCiB7CkBAIC05NjksOSArMTEzOSwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjplbXB0eSgpCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgLy8gQ2xlYXIgY2FjaGUgZ3JvdXBzLCBjYWNoZXMgYW5kIGNhY2hlIHJlc291
cmNlcy4KKyAgICAvLyBDbGVhciBjYWNoZSBncm91cHMsIGNhY2hlcywgY2FjaGUgcmVzb3VyY2Vz
LCBhbmQgb3JpZ2lucy4KICAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVH
cm91cHMiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gQ2FjaGVzIik7Cisg
ICAgZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIE9yaWdpbnMiKTsKICAgICAKICAgICAv
LyBDbGVhciB0aGUgc3RvcmFnZSBJRHMgZm9yIHRoZSBjYWNoZXMgaW4gbWVtb3J5LgogICAgIC8v
IFRoZSBjYWNoZXMgd2lsbCBzdGlsbCB3b3JrLCBidXQgY2FjaGVkIHJlc291cmNlcyB3aWxsIG5v
dCBiZSBzYXZlZCB0byBkaXNrIApAQCAtMTEwMyw2ICsxMjc0LDkgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJM
KQogICAgICAgICBleGVjdXRlU3RhdGVtZW50KGNhY2hlU3RhdGVtZW50KTsKICAgICAgICAgZ3Jv
dXBTdGF0ZW1lbnQuYmluZEludDY0KDEsIGdyb3VwSWQpOwogICAgICAgICBleGVjdXRlU3RhdGVt
ZW50KGdyb3VwU3RhdGVtZW50KTsKKworICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG1hbmlmZXN0VVJMKTsKKyAg
ICAgICAgcmVtb3ZlT3JpZ2luSWZOZWVkZWQob3JpZ2luLmdldCgpKTsKICAgICB9CiAKICAgICBk
ZWxldGVUcmFuc2FjdGlvbi5jb21taXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDNkOTc0ODkuLmE1NWYxOTUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
KysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzcsMTIgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGU7Ci1jbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDsKK2NsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgS1VSTDsKIHRlbXBsYXRlIDxjbGFzcyBUPgogY2xhc3MgU3Rv
cmFnZUlESm91cm5hbDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CkBAIC01Niw2ICs1
Nyw5IEBAIHB1YmxpYzoKIAogICAgIGludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0T3JpZ2luUXVvdGE7IH0KICAgICB2b2lkIHNldERlZmF1bHRPcmln
aW5RdW90YShpbnQ2NF90IHF1b3RhKTsKKyAgICBib29sIHF1b3RhRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgcXVvdGEpOworICAgIGJvb2wgcmVtYWluaW5nU2l6ZUZv
ck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgQXBwbGljYXRpb25D
YWNoZSosIGludDY0X3QmIHJlbWFpbmluZ1NpemUpOworICAgIGJvb2wgc3RvcmVVcGRhdGVkUXVv
dGFGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHF1b3RhKTsKIAogICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogY2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJik7IC8v
IENhY2hlIHRvIGxvYWQgYSBtYWluIHJlc291cmNlIGZyb20uCiAgICAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYpOyAvLyBDYWNoZSB0
aGF0IGhhcyBhIGZhbGxiYWNrIGVudHJ5IHRvIGxvYWQgYSBtYWluIHJlc291cmNlIGZyb20gaWYg
bm9ybWFsIGxvYWRpbmcgZmFpbHMuCkBAIC04MCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCB2
YWN1dW1EYXRhYmFzZUZpbGUoKTsKIAorICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IHVua25vd24g
PSAtMTsKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBub1F1b3RhID0gSU5UNjRfTUFYOwogcHJp
dmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtOTMsNiArOTgsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgc3RvcmUoQXBwbGljYXRpb25DYWNoZSosIFJlc291cmNlU3RvcmFn
ZUlESm91cm5hbCopOwogICAgIGJvb2wgc3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiwg
dW5zaWduZWQgY2FjaGVTdG9yYWdlSUQpOwogCisgICAgdm9pZCByZW1vdmVPcmlnaW5JZk5lZWRl
ZChjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKTsKKyAgICB2b2lkIGNyZWF0ZU9yaWdpbklm
TmVlZGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pOworCiAgICAgdm9pZCBsb2FkTWFu
aWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCiAgICAgdm9pZCB2ZXJpZnlTY2hlbWFWZXJzaW9uKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59692</attachid>
            <date>2010-06-24 13:44:31 -0700</date>
            <delta_ts>2010-07-30 20:43:23 -0700</delta_ts>
            <desc>[PATCH] Part 2 - Update Schema and enforce Per-Origin Quotas (needs part 1)</desc>
            <filename>2-part-2.patch</filename>
            <type>text/plain</type>
            <size>19707</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTBkOTA2OC4uNjIzNmYzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wNi0yNCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDIgLSBVcGRhdGUg
U2NoZW1hIGFuZCBlbmZvcmNlIFBlci1PcmlnaW4gUXVvdGFzCisKKyAgICAgICAgQWRkZWQgYW4g
YE9yaWdpbnNgIHRhYmxlIHRvIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBkYXRhYmFzZXMuCisgICAg
ICAgIFRoaXMsIGxpa2UgdGhlIERhdGFiYXNlJ3MgT3JpZ2lucyB0YWJsZSwgaXMgYSBsaXN0IG9m
IG9yaWdpbgorICAgICAgICBhbmQgcXVvdGEgcGFpcnMuIE9yaWdpbnMgcmVjb3JkcyBhcmUgYWRk
ZWQgYXMgc29vbiBhcyB0aGV5IGFyZQorICAgICAgICBuZWVkZWQsIGFuZCBkZWxldGVkIG9ubHkg
d2hlbiB0aGUgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgaXMKKyAgICAgICAgZW1wdGllZC4gVGhp
cyBtZWFucyBPcmlnaW5zIHJlY29yZHMgcGVyc2lzdCBldmVuIGFmdGVyIGFsbAorICAgICAgICBj
YWNoZXMgZm9yIHRoYXQgb3JpZ2luIG1heSBiZSBkZWxldGVkLiBUaGUgYENhY2hlR3JvdXBzYCB0
YWJsZQorICAgICAgICBub3cgaGFzIGEgZm9yZWlnbiBrZXkgY29sdW1uIGBvcmlnaW5gIHdoaWNo
IHJlbGF0ZXMgdG8gdGhlCisgICAgICAgIGBPcmlnaW5zYCB0YWJsZS4KKworICAgICAgICBUbyBl
bmZvcmNlIHRoZSBxdW90YXMsIHJlbWFpbmluZyBxdW90YSBzcGFjZSBpcyBjaGVja2VkIGF0Cisg
ICAgICAgIHRoZSBzdGFydCBvZiB1cGRhdGUgYXMgYW4gZXN0aW1hdGUgYW5kIGF0IHRoZSBlbmQg
YmVmb3JlCisgICAgICAgIGluc2VydGluZy4gQ3VycmVudGx5LCByZWFjaGluZyB0aGUgcXVvdGEg
bGltaXQgd2lsbCBzaW1wbHkKKyAgICAgICAgY2F1c2UgYW4gdXBkYXRlIGVycm9yLiBBIGxhdGVy
IHBhcnQgd2lsbCBwcm92aWRlIGEKKyAgICAgICAgbm90aWZpY2F0aW9uIHRvIHRoZSBjbGllbnQg
dG8gYWxsb3cgYW4gYWN0aW9uLCBhbmQgcmVmYWN0b3IKKyAgICAgICAgdGhlIGZpbmFsIHF1b3Rh
IGxpbWl0IGNoZWNrIGludG8gYSB0cmFuc2FjdGlvbi4KKworICAgICAgICAgIFJlc3BlY3QgdGhl
IHF1b3RhIGR1cmluZyB0aGUgdXBkYXRlIHByb2Nlc3MuIEFuZCBjYXVzZQorICAgICAgICAgIHRo
ZSB1cGRhdGUgcHJvY2VzcyB0byBmYWlsIHdoZW4gdGhlIHF1b3RhIGlzIHJlYWNoZWQuCisKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDogYWRkZWQg
bG9hZGluZyBjb3VudGVyLCBjb3VudHMgYnl0ZXMgYXMgdGhleSBsb2FkCisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXND
b21wbGV0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oOiBhZGRlZCBzZWN1cml0eSBvcmlnaW4sIGJhc2VkIG9uIHRoZSBtYW5pZmVzdCBVUkwKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6b3JpZ2luKTogYWNjZXNzb3IK
KworICAgICAgICAgIFVwZGF0ZXMgdGhlIHNjaGVtYSBvZiB0aGUgZGF0YWJhc2UgdGFibGVzIGFz
IGRlc2NyaWJlZAorICAgICAgICAgIGFib3ZlLiBIYW5kbGUgb3RoZXIgU1FMIG9wZXJhdGlvbnMg
c3VjaCBhcyBjaGVja2luZyB0aGUKKyAgICAgICAgICByZW1haW5pbmcgc3BhY2UgYW5kIGluc2Vy
dGluZyBhbmQgZGVsZXRpbmcgT3JpZ2lucyByZWNvcmRzLgorCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpxdW90YUZvck9yaWdpbik6IHF1ZXJ5IGZvciB0aGUgcXVv
dGEgb2YgYW4gb3JpZ2luLCBtYXkgcmV0dXJuIHRoZSBkZWZhdWx0IG9yaWdpbiBxdW90YSBpZiBp
dCBkaWRuJ3QgZXhpc3QuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6cmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKTogY2FsY3VsYXRlIHRoZSBy
ZW1haW5pbmcgc2l6ZSBpbiBhIHF1b3RhIGZvciBhbiBvcmlnaW4sIHBvc3NpYmx5IGV4Y2x1ZGlu
ZyBhIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKTogcGVyc2lzdGVudCB1cGRhdGUuCisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKTogdXBkYXRlZCBz
Y2hlbWEgZm9yIENhY2hlc0dyb3VwcywgYWRkZWQgbmV3IHRhYmxlIE9yaWdpbnMuCisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZW1wdHkpOiB3aXBlIE9yaWdpbnMg
dGFibGUgYXMgd2VsbC4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaDogYWRkZWQgYHVua25vd25gIGNvbnN0YW50LgorCiAyMDEwLTA2LTE4ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAppbmRleCA1MjYwNDNiLi5kYTY0OTc1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJNYW5pZmVzdFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIApAQCAtNDksNiArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJM
LCBib29sIGlzQ29weSkKICAgICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCisgICAgLCBt
X29yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1hbmlmZXN0VVJMKSkKICAgICAsIG1fdXBk
YXRlU3RhdHVzKElkbGUpCiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNl
TG9hZGVyc0NvdW50KDApCiAgICAgLCBtX2ZyYW1lKDApCkBAIC01Nyw2ICs1OSw4IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlm
ZXN0VVJMLCBib29sIGlzQ29wCiAgICAgLCBtX2NvbXBsZXRpb25UeXBlKE5vbmUpCiAgICAgLCBt
X2lzQ29weShpc0NvcHkpCiAgICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUoZmFs
c2UpCisgICAgLCBtX2xvYWRlZFNpemUoMCkKKyAgICAsIG1fYXZhaWxhYmxlU3BhY2VJblF1b3Rh
KEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duKQogewogfQogCkBAIC01MjMsNiArNTI3
LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGQKICAgICAKICAgICBBU1NFUlQobV9jdXJyZW50
UmVzb3VyY2UpOwogICAgIG1fY3VycmVudFJlc291cmNlLT5kYXRhKCktPmFwcGVuZChkYXRhLCBs
ZW5ndGgpOworCisgICAgbV9sb2FkZWRTaXplICs9IGxlbmd0aDsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkK
QEAgLTUzMSw3ICs1MzcsMjMgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICAgICAgZGlkRmluaXNoTG9hZGlu
Z01hbmlmZXN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gCisKKyAgICAvLyBBZnRlciBm
aW5pc2hpbmcgdGhlIGxvYWRpbmcgb2YgYW55IHJlc291cmNlLCB3ZSBjaGVjayBpZiBpdCB3aWxs
CisgICAgLy8gZml0IGluIG91ciBsYXN0IGtub3duIHF1b3RhIGxpbWl0LgorICAgIGlmIChtX2F2
YWlsYWJsZVNwYWNlSW5RdW90YSA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93bikg
eworICAgICAgICAvLyBGYWlsZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgbGVmdCBpbiB0aGUgcXVv
dGEuIEZhbGxiYWNrIHRvIGFsbG93aW5nIGFueXRoaW5nLgorICAgICAgICBpZiAoIWNhY2hlU3Rv
cmFnZSgpLnJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQo
KSwgbV9uZXdlc3RDYWNoZS5nZXQoKSwgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEpKQorICAgICAg
ICAgICAgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bm9RdW90YTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBlYWNoIHJlc291cmNlLCBhcyBpdCBsb2Fk
cywgdG8gc2VlIGlmIGl0IHdvdWxkIGZpdCBpbiBvdXIKKyAgICAvLyBpZGVhIG9mIHRoZSBhdmFp
bGFibGUgcXVvdGEgc3BhY2UuCisgICAgaWYgKG1fYXZhaWxhYmxlU3BhY2VJblF1b3RhIDwgbV9s
b2FkZWRTaXplKSB7CisgICAgICAgIG1fY3VycmVudFJlc291cmNlID0gMDsKKyAgICAgICAgY2Fj
aGVVcGRhdGVGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVCht
X2N1cnJlbnRIYW5kbGUgPT0gaGFuZGxlKTsKICAgICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5j
b250YWlucyhoYW5kbGUtPnJlcXVlc3QoKS51cmwoKSkpOwogICAgIApAQCAtNzc3LDYgKzc5OSwx
NSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKCkK
IAogICAgICAgICBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gb2xkTmV3ZXN0Q2FjaGUgPSAobV9u
ZXdlc3RDYWNoZSA9PSBtX2NhY2hlQmVpbmdVcGRhdGVkKSA/IDAgOiBtX25ld2VzdENhY2hlOwog
CisgICAgICAgIC8vIENoZWNrIG9uZSBtb3JlIHRpbWUsIGJlZm9yZSBjb21taXR0aW5nIHRvIHRo
ZSBuZXcgY2FjaGUsIGlmIHRoZSBjYWNoZSB3aWxsIGZpdCBpbiB0aGUgcXVvdGEuCisgICAgICAg
IGludDY0X3QgcmVtYWluaW5nU3BhY2VJbk9yaWdpbjsKKyAgICAgICAgaWYgKGNhY2hlU3RvcmFn
ZSgpLnJlbWFpbmluZ1NpemVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShtX29yaWdpbi5nZXQoKSwg
b2xkTmV3ZXN0Q2FjaGUuZ2V0KCksIHJlbWFpbmluZ1NwYWNlSW5PcmlnaW4pKSB7CisgICAgICAg
ICAgICBpZiAobV9jYWNoZUJlaW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpID4g
cmVtYWluaW5nU3BhY2VJbk9yaWdpbikgeworICAgICAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFp
bGVkKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KwogICAgICAgICBzZXROZXdlc3RDYWNoZShtX2NhY2hlQmVpbmdVcGRhdGVkLnJlbGVhc2UoKSk7
CiAgICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5zdG9yZU5ld2VzdENhY2hlKHRoaXMpKSB7CiAg
ICAgICAgICAgICAvLyBOZXcgY2FjaGUgc3RvcmVkLCBub3cgcmVtb3ZlIHRoZSBvbGQgY2FjaGUu
CkBAIC04MzQsNiArODY1LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSXNDb21wbGV0ZSgpCiAgICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vbmU7CiAgICAgbV91cGRh
dGVTdGF0dXMgPSBJZGxlOwogICAgIG1fZnJhbWUgPSAwOworICAgIG1fbG9hZGVkU2l6ZSA9IDA7
CisgICAgbV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
dW5rbm93bjsKICAgICBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUgPSBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmggYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaApp
bmRleCA4ZGY1MmNjLi4yOGVkNmU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDYgQEAKIAogI2lm
IEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0KICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC0zOSw2ICszNSwxMCBAQAogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZTsKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEZyYW1lOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGVudW0gQXBwbGljYXRpb25DYWNoZVVw
ZGF0ZU9wdGlvbiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRl
eHQsCkBAIC02Niw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNo
ZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSopOwogICAgIAogICAgIGNvbnN0IEtVUkwmIG1hbmlm
ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tYW5pZmVzdFVSTDsgfQorICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAg
IFVwZGF0ZVN0YXR1cyB1cGRhdGVTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZVN0YXR1
czsgfQogCiAgICAgdm9pZCBzZXRTdG9yYWdlSUQodW5zaWduZWQgc3RvcmFnZUlEKSB7IG1fc3Rv
cmFnZUlEID0gc3RvcmFnZUlEOyB9CkBAIC0xMjQsNiArMTI2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0b3BMb2FkaW5nKCk7CiAgICAgCiAgICAgS1VSTCBtX21hbmlmZXN0VVJMOworICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgVXBkYXRlU3RhdHVzIG1fdXBkYXRl
U3RhdHVzOwogICAgIAogICAgIC8vIFRoaXMgaXMgdGhlIG5ld2VzdCBjb21wbGV0ZSBjYWNoZSBp
biB0aGUgZ3JvdXAuCkBAIC0xNzksNiArMTgyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBtX21hbmlmZXN0UmVzb3VyY2U7CiAgICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBtX21hbmlmZXN0SGFuZGxlOwogCisgICAgaW50NjRfdCBtX2xvYWRlZFNp
emU7CisgICAgaW50NjRfdCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YTsKKwogICAgIGZyaWVuZCBj
bGFzcyBDaHJvbWVDbGllbnRDYWxsYmFja1RpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGIxOTQ5Nzgu
LjdhMjIwY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEzICsyOSwxNCBAQAogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hl
LmgiCi0jaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlR3JvdXAuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5j
bHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgpAQCAtNDE5LDYgKzQyMCw5NCBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzZXREZWZhdWx0T3JpZ2luUXVvdGEoaW50NjRf
dCBxdW90YSkKICAgICBtX2RlZmF1bHRPcmlnaW5RdW90YSA9IHF1b3RhOwogfQogCitib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpxdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBpbnQ2NF90JiBxdW90YSkKK3sKKyAgICAvLyBJZiBhbiBPcmlnaW4gcmVjb3Jk
IGRvZXNuJ3QgZXhpc3QsIHRoZW4gdGhlIENPVU5UIHdpbGwgYmUgMCBhbmQgcXVvdGEgd2lsbCBi
ZSAwLgorICAgIC8vIFVzaW5nIHRoZSBjb3VudCB0byBkZXRlcm1pbmUgaWYgYSByZWNvcmQgZXhp
c3RlZCBvciBub3QgaXMgYSBzYWZlIHdheSB0byBkZXRlcm1pbmU9CisgICAgLy8gaWYgYSBxdW90
YSBvZiAwIGlzIHJlYWwsIGZyb20gdGhlIHJlY29yZCwgb3IgZnJvbSBudWxsLgorICAgIFNRTGl0
ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBDT1VOVChxdW90YSksIHF1
b3RhIEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOworICAgIGlmIChzdGF0ZW1lbnQucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0
ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgaW50
IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CisKKyAgICAvLyBSZXR1cm4gdGhlIHF1b3RhLCBv
ciBpZiBpdCB3YXMgbnVsbCB0aGUgZGVmYXVsdC4KKyAgICBpZiAocmVzdWx0ID09IFNRTFJlc3Vs
dFJvdykgeworICAgICAgICBib29sIHdhc05vUmVjb3JkID0gc3RhdGVtZW50LmdldENvbHVtbklu
dDY0KDApID09IDA7CisgICAgICAgIHF1b3RhID0gd2FzTm9SZWNvcmQgPyBtX2RlZmF1bHRPcmln
aW5RdW90YSA6IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgxKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IHRoZSBxdW90YSBvZiBh
biBvcmlnaW4sIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cmVtYWlu
aW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0NhY2hlKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlLCBpbnQ2NF90JiByZW1haW5pbmdTaXplKQorewor
ICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CisgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBSZW1haW5pbmcgc2l6ZSA9IHRvdGFsIG9y
aWdpbiBxdW90YSAtIHNpemUgb2YgYWxsIGNhY2hlcyB3aXRoIG9yaWdpbiBleGNsdWRpbmcgdGhl
IHByb3ZpZGVkIGNhY2hlLgorICAgIC8vIEtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjYWNo
ZXMgc28gd2UgY2FuIHRlbGwgaWYgdGhlIHJlc3VsdCB3YXMgYSBjYWxjdWxhdGlvbiBvciBub3Qu
CisgICAgY29uc3QgY2hhciogcXVlcnk7CisgICAgaW50NjRfdCBleGNsdWRpbmdDYWNoZUlkZW50
aWZpZXIgPSBjYWNoZSA/IGNhY2hlLT5zdG9yYWdlSUQoKSA6IDA7CisgICAgaWYgKGV4Y2x1ZGlu
Z0NhY2hlSWRlbnRpZmllciAhPSAwKSB7CisgICAgICAgIHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChD
YWNoZXMuc2l6ZSksIE9yaWdpbnMucXVvdGEgLSBTVU0oQ2FjaGVzLnNpemUpIgorICAgICAgICAg
ICAgICAgICIgIEZST00gQ2FjaGVHcm91cHMiCisgICAgICAgICAgICAgICAgIiBJTk5FUiBKT0lO
IE9yaWdpbnMgT04gQ2FjaGVHcm91cHMub3JpZ2luID0gT3JpZ2lucy5vcmlnaW4iCisgICAgICAg
ICAgICAgICAgIiBJTk5FUiBKT0lOIENhY2hlcyBPTiBDYWNoZUdyb3Vwcy5pZCA9IENhY2hlcy5j
YWNoZUdyb3VwIgorICAgICAgICAgICAgICAgICIgV0hFUkUgT3JpZ2lucy5vcmlnaW49PyIKKyAg
ICAgICAgICAgICAgICAiICAgQU5EIENhY2hlcy5pZCE9PyI7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcXVlcnkgPSAiU0VMRUNUIENPVU5UKENhY2hlcy5zaXplKSwgT3JpZ2lucy5xdW90YSAtIFNV
TShDYWNoZXMuc2l6ZSkiCisgICAgICAgICAgICAgICAgIiAgRlJPTSBDYWNoZUdyb3VwcyIKKyAg
ICAgICAgICAgICAgICAiIElOTkVSIEpPSU4gT3JpZ2lucyBPTiBDYWNoZUdyb3Vwcy5vcmlnaW4g
PSBPcmlnaW5zLm9yaWdpbiIKKyAgICAgICAgICAgICAgICAiIElOTkVSIEpPSU4gQ2FjaGVzIE9O
IENhY2hlR3JvdXBzLmlkID0gQ2FjaGVzLmNhY2hlR3JvdXAiCisgICAgICAgICAgICAgICAgIiBX
SEVSRSBPcmlnaW5zLm9yaWdpbj0/IjsKKyAgICB9CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsIHF1ZXJ5KTsKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxSZXN1bHRPaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGVtZW50LmJp
bmRUZXh0KDEsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGlmIChleGNsdWRp
bmdDYWNoZUlkZW50aWZpZXIgIT0gMCkKKyAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBl
eGNsdWRpbmdDYWNoZUlkZW50aWZpZXIpOworICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3Rl
cCgpOworCisgICAgLy8gSWYgdGhlIGNvdW50IHdhcyAwIHRoYXQgdGhlbiB3ZSBoYXZlIHRvIHF1
ZXJ5IHRoZSBvcmlnaW4gdGFibGUgZGlyZWN0bHkKKyAgICAvLyBmb3IgaXRzIHF1b3RhLiBPdGhl
cndpc2Ugd2UgY2FuIHVzZSB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KKyAgICBpZiAocmVzdWx0ID09
IFNRTFJlc3VsdFJvdykgeworICAgICAgICBpbnQ2NF90IG51bWJlck9mQ2FjaGVzID0gc3RhdGVt
ZW50LmdldENvbHVtbkludDY0KDApOworICAgICAgICBpZiAobnVtYmVyT2ZDYWNoZXMgPT0gMCkK
KyAgICAgICAgICAgIHF1b3RhRm9yT3JpZ2luKG9yaWdpbiwgcmVtYWluaW5nU2l6ZSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlbWFpbmluZ1NpemUgPSBzdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50NjQoMSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIExPR19FUlJPUigi
Q291bGQgbm90IGdldCB0aGUgcmVtYWluaW5nIHNpemUgb2YgYW4gb3JpZ2luJ3MgcXVvdGEsIGVy
cm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCBxdW90YSkKK3sK
KyAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOworICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1FMaXRlU3RhdGVtZW50IHVwZGF0ZVN0YXRl
bWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIE9yaWdpbnMgU0VUIHF1b3RhPT8gV0hFUkUgb3JpZ2lu
PT8iKTsKKyAgICBpZiAodXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBxdW90YSk7CisgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0KDIsIG9yaWdpbi0+ZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworCisgICAgcmV0dXJuIGV4ZWN1dGVTdGF0ZW1lbnQodXBkYXRlU3Rh
dGVtZW50KTsKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZXhlY3V0ZVNRTENv
bW1hbmQoY29uc3QgU3RyaW5nJiBzcWwpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVu
KCkpOwpAQCAtNDMxLDcgKzUyMCwxMCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpl
eGVjdXRlU1FMQ29tbWFuZChjb25zdCBTdHJpbmcmIHNxbCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgY29uc3QgaW50IHNjaGVtYVZlcnNpb24gPSA1OworLy8gVXBkYXRlIHRoZSBz
Y2hlbWFWZXJzaW9uIHdoZW4gdGhlIHNjaGVtYSBvZiBhbnkgdGhlIEFwcGxpY2F0aW9uIENhY2hl
CisvLyBTUUxpdGUgdGFibGVzIGNoYW5nZXMuIFRoaXMgYWxsb3dzIHRoZSBkYXRhYmFzZSB0byBi
ZSByZWJ1aWx0IHdoZW4KKy8vIGEgbmV3LCBpbmNvbXBhdGlibGUgY2hhbmdlIGhhcyBiZWVuIGlu
dHJvZHVjZWQgdG8gdGhlIGRhdGFiYXNlIHNjaGVtYS4KK3N0YXRpYyBjb25zdCBpbnQgc2NoZW1h
VmVyc2lvbiA9IDY7CiAgICAgCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp2ZXJpZnlT
Y2hlbWFWZXJzaW9uKCkKIHsKQEAgLTQ4MCw3ICs1NzIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKICAgICAK
ICAgICAvLyBDcmVhdGUgdGFibGVzCiAgICAgZXhlY3V0ZVNRTENvbW1hbmQoIkNSRUFURSBUQUJM
RSBJRiBOT1QgRVhJU1RTIENhY2hlR3JvdXBzIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9J
TkNSRU1FTlQsICIKLSAgICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3RIb3N0SGFzaCBJTlRF
R0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIG1hbmlmZXN0VVJMIFRFWFQgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG5ld2VzdENhY2hlIElOVEVHRVIpIik7CisgICAgICAgICAgICAgICAg
ICAgICAgIm1hbmlmZXN0SG9zdEhhc2ggSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
LCBtYW5pZmVzdFVSTCBURVhUIFVOSVFVRSBPTiBDT05GTElDVCBGQUlMLCBuZXdlc3RDYWNoZSBJ
TlRFR0VSLCBvcmlnaW4gVEVYVCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgQ2FjaGVzIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNS
RU1FTlQsIGNhY2hlR3JvdXAgSU5URUdFUiwgc2l6ZSBJTlRFR0VSKSIpOwogICAgIGV4ZWN1dGVT
UUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVdoaXRlbGlzdFVSTHMg
KHVybCBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGNhY2hlIElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCkiKTsKICAgICBleGVjdXRlU1FMQ29tbWFuZCgiQ1JFQVRFIFRB
QkxFIElGIE5PVCBFWElTVFMgQ2FjaGVBbGxvd3NBbGxOZXR3b3JrUmVxdWVzdHMgKHdpbGRjYXJk
IElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgY2FjaGUgSU5URUdFUiBOT1QgTlVM
TCBPTiBDT05GTElDVCBGQUlMKSIpOwpAQCAtNDkwLDYgKzU4Miw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQog
ICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJl
c291cmNlcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCB1cmwgVEVYVCBO
T1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCAiCiAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1
c0NvZGUgSU5URUdFUiBOT1QgTlVMTCwgcmVzcG9uc2VVUkwgVEVYVCBOT1QgTlVMTCwgbWltZVR5
cGUgVEVYVCwgdGV4dEVuY29kaW5nTmFtZSBURVhULCBoZWFkZXJzIFRFWFQsIGRhdGEgSU5URUdF
UiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKSIpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJD
UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBDYWNoZVJlc291cmNlRGF0YSAoaWQgSU5URUdFUiBQ
UklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCBkYXRhIEJMT0IpIik7CisgICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIE9yaWdpbnMgKG9yaWdpbiBURVhUIFVO
SVFVRSBPTiBDT05GTElDVCBJR05PUkUsIHF1b3RhIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJ
Q1QgRkFJTCkiKTsKIAogICAgIC8vIFdoZW4gYSBjYWNoZSBpcyBkZWxldGVkLCBhbGwgaXRzIGVu
dHJpZXMgYW5kIGl0cyB3aGl0ZWxpc3Qgc2hvdWxkIGJlIGRlbGV0ZWQuCiAgICAgZXhlY3V0ZVNR
TENvbW1hbmQoIkNSRUFURSBUUklHR0VSIElGIE5PVCBFWElTVFMgQ2FjaGVEZWxldGVkIEFGVEVS
IERFTEVURSBPTiBDYWNoZXMiCkBAIC01MjgsMTYgKzYyMSwzMSBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBHcm91cFN0
b3JhZ2VJRAogICAgIEFTU0VSVChncm91cC0+c3RvcmFnZUlEKCkgPT0gMCk7CiAgICAgQVNTRVJU
KGpvdXJuYWwpOwogCi0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAi
SU5TRVJUIElOVE8gQ2FjaGVHcm91cHMgKG1hbmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJMKSBW
QUxVRVMgKD8sID8pIik7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNl
LCAiSU5TRVJUIElOVE8gQ2FjaGVHcm91cHMgKG1hbmlmZXN0SG9zdEhhc2gsIG1hbmlmZXN0VVJM
LCBvcmlnaW4pIFZBTFVFUyAoPywgPywgPykiKTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIgPSBncm91cC0+b3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpOwor
CiAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCB1cmxIb3N0SGFzaChncm91cC0+bWFuaWZlc3RV
UkwoKSkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBncm91cC0+bWFuaWZlc3RVUkwoKSk7
CisgICAgc3RhdGVtZW50LmJpbmRUZXh0KDMsIG9yaWdpbklkZW50aWZpZXIpOwogCiAgICAgaWYg
KCFleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIC8vIENyZWF0ZSBPcmlnaW4gaWYgbmVlZGVkLgorICAgIHsKKyAgICAgICAgU1FMaXRlU3Rh
dGVtZW50IGluc2VydE9yaWdpblN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIElOVE8gT3Jp
Z2lucyAob3JpZ2luLCBxdW90YSkgVkFMVUVTICg/LCA/KSIpOworICAgICAgICBpZiAoaW5zZXJ0
T3JpZ2luU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwg
b3JpZ2luSWRlbnRpZmllcik7CisgICAgICAgIGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kSW50
NjQoMiwgbV9kZWZhdWx0T3JpZ2luUXVvdGEpOworICAgICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1l
bnQoaW5zZXJ0T3JpZ2luU3RhdGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICBncm91cC0+c2V0U3RvcmFnZUlEKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Rh
dGFiYXNlLmxhc3RJbnNlcnRSb3dJRCgpKSk7CiAgICAgam91cm5hbC0+YWRkKGdyb3VwLCAwKTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2OSw5ICsxMDc3LDEwIEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmVtcHR5KCkKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICAvLyBDbGVhciBjYWNoZSBncm91cHMsIGNhY2hlcyBhbmQg
Y2FjaGUgcmVzb3VyY2VzLgorICAgIC8vIENsZWFyIGNhY2hlIGdyb3VwcywgY2FjaGVzLCBjYWNo
ZSByZXNvdXJjZXMsIGFuZCBvcmlnaW5zLgogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUg
RlJPTSBDYWNoZUdyb3VwcyIpOwogICAgIGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBD
YWNoZXMiKTsKKyAgICBleGVjdXRlU1FMQ29tbWFuZCgiREVMRVRFIEZST00gT3JpZ2lucyIpOwog
ICAgIAogICAgIC8vIENsZWFyIHRoZSBzdG9yYWdlIElEcyBmb3IgdGhlIGNhY2hlcyBpbiBtZW1v
cnkuCiAgICAgLy8gVGhlIGNhY2hlcyB3aWxsIHN0aWxsIHdvcmssIGJ1dCBjYWNoZWQgcmVzb3Vy
Y2VzIHdpbGwgbm90IGJlIHNhdmVkIHRvIGRpc2sgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCAzZDk3NDg5Li4xNDk0MWYwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDEyICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlOwotY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA7CitjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEtVUkw7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIGNsYXNz
IFN0b3JhZ2VJREpvdXJuYWw7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgpAQCAtNTYs
NiArNTcsOSBAQCBwdWJsaWM6CiAKICAgICBpbnQ2NF90IGRlZmF1bHRPcmlnaW5RdW90YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdE9yaWdpblF1b3RhOyB9CiAgICAgdm9pZCBzZXREZWZhdWx0
T3JpZ2luUXVvdGEoaW50NjRfdCBxdW90YSk7CisgICAgYm9vbCBxdW90YUZvck9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QmIHF1b3RhKTsKKyAgICBib29sIHJlbWFpbmluZ1Np
emVGb3JPcmlnaW5FeGNsdWRpbmdDYWNoZShjb25zdCBTZWN1cml0eU9yaWdpbiosIEFwcGxpY2F0
aW9uQ2FjaGUqLCBpbnQ2NF90JiByZW1haW5pbmdTaXplKTsKKyAgICBib29sIHN0b3JlVXBkYXRl
ZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CiAK
ICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYp
OyAvLyBDYWNoZSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgogICAgIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2Fj
aGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9t
IGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgpAQCAtODAsNiArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkZWxldGVDYWNoZUdyb3VwKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwpOwogICAgIHZv
aWQgdmFjdXVtRGF0YWJhc2VGaWxlKCk7CiAKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCB1bmtu
b3duID0gLTE7CiAgICAgc3RhdGljIGNvbnN0IGludDY0X3Qgbm9RdW90YSA9IElOVDY0X01BWDsK
IHByaXZhdGU6CiAgICAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59693</attachid>
            <date>2010-06-24 13:45:43 -0700</date>
            <delta_ts>2010-07-30 20:43:26 -0700</delta_ts>
            <desc>[PATCH] Part 3 - Refactor storeNewestCache to allow Failure Reason Output (needs part 2)</desc>
            <filename>2-part-3.patch</filename>
            <type>text/plain</type>
            <size>12407</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjIzNmYzMi4uMDI5NTk1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzOCBAQAogICAgICAgICBMaW1pdCBBcHBsaWNhdGlv
bkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CiAKKyAg
ICAgICAgUGFydCAzIC0gUmVmYWN0b3Igc3RvcmVOZXdlc3RDYWNoZSB0byBhbGxvdyBGYWlsdXJl
IFJlYXNvbiBPdXRwdXQKKworICAgICAgICBTdG9yaW5nIGNhbiByZXN1bHQgaW4gYW4gZXJyb3Ig
aW4gYSBudW1iZXIgb2YgcmVhc29ucy4gUHJldmlvdXNseQorICAgICAgICB0aGUgcmVhc29ucyB3
ZXJlIGdsb2JhbCBhbmQgYmluYXJ5IGFuZCBjb3VsZCBiZSBkZXRlcm1pbmVkIGJ5CisgICAgICAg
IGNoZWNraW5nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIHN0YXRlLiBOb3csIHdpdGggcGVyLW9y
aWdpbiBxdW90YXMKKyAgICAgICAgYSBwZXItb3JpZ2luIHF1b3RhIGNhbiBjYXVzZSBhIGZhaWx1
cmUgdGhhdCBpcyBub3QgaW4gZ2xvYmFsIHN0YXRlLgorICAgICAgICBDdXJyZW50IGZhaWx1cmUg
cmVhc29ucyBhcmU6CisgICAgICAgIAorICAgICAgICAgIE9yaWdpblF1b3RhUmVhY2hlZCA9IHBl
ci1vcmlnaW4gcXVvdGEgcmVhY2hlZCwgbm8gc3RvcmFnZSBpcyBhbGxvd2VkLgorICAgICAgICAg
IFRvdGFsUXVvdGFSZWFjaGVkICA9IGRhdGFiYXNlIHF1b3RhIHJlYWNoZWQsIG5vIHN0b3JhZ2Ug
aXMgYWxsb3dlZC4KKyAgICAgICAgICBEaXNrT3JPcGVyYXRpb25GYWlsdXJlID0gU1FMIGVycm9y
IHN1Y2ggYXMgZmFpbGVkIHByZXBhcmUgb3IgcXVlcnkuIE5vdCBleHBlY3RlZCB0byBoYXBwZW4u
CisKKyAgICAgICAgVGhpcyBwYXJ0IHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHN0b3Jl
TmV3ZXN0Q2FjaGUgZm9yIHRob3NlCisgICAgICAgIHRoYXQgY2FyZSBhYm91dCB0aGUgZmFpbHVy
ZSByZWFzb24sIGFuZCBub3QganVzdCBpZiBpdCBzdWNjZWVkZWQKKyAgICAgICAgb3Igbm90LiBU
aGlzIG1vdmVzIHRoZSBmaW5hbCBvcmlnaW4gcXVvdGEgY2hlY2sgaW50byB0aGUgdHJhbnNhY3Rp
b24uCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oOiBzdHls
ZSBmaXggZm9yIGZvcndhcmRpbmcgaGVhZGVycy4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBsZXRlKTogbW92ZSBvcmlnaW4gcXVvdGEgY2hl
Y2sgaW50byBzdG9yZU5ld2VzdENhY2hlJ3MgU1FMIHRyYW5zYWN0aW9uLgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZSk6IG9sZCBpbXBs
ZW1lbnRhdGlvbiBjYWxscyB0aGUgbmV3IGltcGxlbWVudGF0aW9uIGlnbm9yaW5nIGZhaWx1cmUg
cmVhc29uLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
TmV3ZXN0Q2FjaGUpOiBuZXcgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgYSBmYWlsdXJlIHJlYXNv
biBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6KTogYWRkZWQgRmFpbHVyZVJlYXNvbiBlbnVtIGFuZCBzdG9yZU5ld2VzdENhY2hlIGFs
bG93aW5nIGl0LgorCisyMDEwLTA2LTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFj
aXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDYyNworCiAgICAgICAgIFBhcnQgMiAtIFVwZGF0ZSBTY2hlbWEgYW5kIGVuZm9yY2Ug
UGVyLU9yaWdpbiBRdW90YXMKIAogICAgICAgICBBZGRlZCBhbiBgT3JpZ2luc2AgdGFibGUgdG8g
dGhlIGFwcGxpY2F0aW9uIGNhY2hlIGRhdGFiYXNlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCAwOGUyZGQzLi5kNmUxNWVkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsK
IGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgS1VSTDsKLQogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogCiB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8S1VSTCwgS1VSTD4gPiBGYWxsYmFja1VS
TFZlY3RvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCmluZGV4IGRhNjQ5NzUuLjczZTU3YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNzk3LDI2ICs3OTcsMjUg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAg
ICAgICAgICAgICBBU1NFUlQoY2FjaGVTdG9yYWdlKCkuaXNNYXhpbXVtU2l6ZVJlYWNoZWQoKSAm
JiBtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUpOwogICAgICAgICB9CiAKKyAgICAgICAg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OkZhaWx1cmVSZWFzb24gZmFpbHVyZVJlYXNvbjsKICAg
ICAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG9sZE5ld2VzdENhY2hlID0gKG1fbmV3ZXN0
Q2FjaGUgPT0gbV9jYWNoZUJlaW5nVXBkYXRlZCkgPyAwIDogbV9uZXdlc3RDYWNoZTsKLQotICAg
ICAgICAvLyBDaGVjayBvbmUgbW9yZSB0aW1lLCBiZWZvcmUgY29tbWl0dGluZyB0byB0aGUgbmV3
IGNhY2hlLCBpZiB0aGUgY2FjaGUgd2lsbCBmaXQgaW4gdGhlIHF1b3RhLgotICAgICAgICBpbnQ2
NF90IHJlbWFpbmluZ1NwYWNlSW5PcmlnaW47Ci0gICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5y
ZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUobV9vcmlnaW4uZ2V0KCksIG9sZE5l
d2VzdENhY2hlLmdldCgpLCByZW1haW5pbmdTcGFjZUluT3JpZ2luKSkgewotICAgICAgICAgICAg
aWYgKG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSA+IHJlbWFp
bmluZ1NwYWNlSW5PcmlnaW4pIHsKLSAgICAgICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KICAg
ICAgICAgc2V0TmV3ZXN0Q2FjaGUobV9jYWNoZUJlaW5nVXBkYXRlZC5yZWxlYXNlKCkpOwotICAg
ICAgICBpZiAoY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzKSkgeworICAgICAg
ICBpZiAoY2FjaGVTdG9yYWdlKCkuc3RvcmVOZXdlc3RDYWNoZSh0aGlzLCBvbGROZXdlc3RDYWNo
ZS5nZXQoKSwgZmFpbHVyZVJlYXNvbikpIHsKICAgICAgICAgICAgIC8vIE5ldyBjYWNoZSBzdG9y
ZWQsIG5vdyByZW1vdmUgdGhlIG9sZCBjYWNoZS4KICAgICAgICAgICAgIGlmIChvbGROZXdlc3RD
YWNoZSkKICAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3ZXN0Q2Fj
aGUuZ2V0KCkpOwogICAgICAgICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudHMuCiAgICAg
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFkZUF0dGVtcHQgPyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6VVBEQVRFUkVBRFlfRVZFTlQgOiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0FDSEVE
X0VWRU5ULCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGNhY2hlU3RvcmFnZSgpLmlzTWF4aW11bVNpemVSZWFjaGVkKCkgJiYg
IW1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgeworICAgICAgICAgICAgaWYgKGZhaWx1
cmVSZWFzb24gPT0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ok9yaWdpblF1b3RhUmVhY2hlZCkg
eworICAgICAgICAgICAgICAgIC8vIFdlIHJhbiBvdXQgb2Ygc3BhY2UgZm9yIHRoaXMgb3JpZ2lu
LiBSb2xsIGJhY2sgdG8gcHJldmlvdXMgc3RhdGUuCisgICAgICAgICAgICAgICAgaWYgKG9sZE5l
d2VzdENhY2hlKQorICAgICAgICAgICAgICAgICAgICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RD
YWNoZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZmFpbHVyZVJlYXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNo
ZWQgJiYgIW1fY2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgewogICAgICAgICAgICAgICAg
IC8vIFdlIHJhbiBvdXQgb2Ygc3BhY2UuIEFsbCB0aGUgY2hhbmdlcyBpbiB0aGUgY2FjaGUgc3Rv
cmFnZSBoYXZlCiAgICAgICAgICAgICAgICAgLy8gYmVlbiByb2xsZWQgYmFjay4gV2Ugcm9sbCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBzdGF0ZSBpbiBoZXJlLAogICAgICAgICAgICAgICAgIC8vIGFz
IHdlbGwsIGNhbGwgdGhlIGNocm9tZSBjbGllbnQgYXN5bmNocm9ub3VzbHkgYW5kIHJldHJ5IHRv
CkBAIC04MzAsMzAgKzgyOSwzMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJ
ZkxvYWRJc0NvbXBsZXRlKCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc2No
ZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFJ1biB0
aGUgImNhY2hlIGZhaWx1cmUgc3RlcHMiCisgICAgICAgICAgICAvLyBGaXJlIHRoZSBlcnJvciBl
dmVudHMgdG8gYWxsIHBlbmRpbmcgbWFzdGVyIGVudHJpZXMsIGFzIHdlbGwgYW55IG90aGVyIGNh
Y2hlIGhvc3RzCisgICAgICAgICAgICAvLyBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGEgY2Fj
aGUgaW4gdGhpcyBncm91cC4KKyAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOwor
ICAgICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHRoZSBwZW5kaW5nIG1hc3RlciBlbnRyaWVzIGZy
b20gdGhlIGZhaWxlZCBuZXcgY2FjaGUuIE5vdGUgdGhhdAorICAgICAgICAgICAgLy8gYWxsIG90
aGVyIGxvYWRlcnMgaW4gdGhlIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyBhcmUgc3RpbGwg
YXNzb2NpYXRlZCB3aXRoCisgICAgICAgICAgICAvLyBzb21lIG90aGVyIGNhY2hlIGluIHRoaXMg
Z3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZhaWxlZCBuZXcgY2FjaGUu
CisKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gY29weSBsb2FkZXJzLCBiZWNhdXNlIHRoZSBjYWNo
ZSBncm91cCBtYXkgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgaXRlcmF0aW9uLgorICAgICAg
ICAgICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsKKyAgICAgICAgICAgIGNvcHlU
b1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMsIGxvYWRlcnMpOworICAgICAg
ICAgICAgc2l6ZV90IGNvdW50ID0gbG9hZGVycy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIGRpc2Fzc29jaWF0
ZURvY3VtZW50TG9hZGVyKGxvYWRlcnNbaV0pOyAvLyBUaGlzIGNhbiBkZWxldGUgdGhpcyBncm91
cC4KKworICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRoZSBvbGROZXdlc3RDYWNoZSwgaWYgdGhl
cmUgd2FzIG9uZS4KKyAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNoZSkgeworICAgICAgICAg
ICAgICAgIC8vIFRoaXMgd2lsbCBkaXNjYXJkIHRoZSBmYWlsZWQgbmV3IGNhY2hlLgorICAgICAg
ICAgICAgICAgIHNldE5ld2VzdENhY2hlKG9sZE5ld2VzdENhY2hlLnJlbGVhc2UoKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFJ1biB0aGUgImNhY2hlIGZhaWx1
cmUgc3RlcHMiCi0gICAgICAgICAgICAgICAgLy8gRmlyZSB0aGUgZXJyb3IgZXZlbnRzIHRvIGFs
bCBwZW5kaW5nIG1hc3RlciBlbnRyaWVzLCBhcyB3ZWxsIGFueSBvdGhlciBjYWNoZSBob3N0cwot
ICAgICAgICAgICAgICAgIC8vIGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggYSBjYWNoZSBpbiB0
aGlzIGdyb3VwLgotICAgICAgICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOwotICAg
ICAgICAgICAgICAgIC8vIERpc2Fzc29jaWF0ZSB0aGUgcGVuZGluZyBtYXN0ZXIgZW50cmllcyBm
cm9tIHRoZSBmYWlsZWQgbmV3IGNhY2hlLiBOb3RlIHRoYXQKLSAgICAgICAgICAgICAgICAvLyBh
bGwgb3RoZXIgbG9hZGVycyBpbiB0aGUgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzIGFyZSBz
dGlsbCBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAvLyBzb21lIG90aGVyIGNhY2hl
IGluIHRoaXMgZ3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZhaWxlZCBu
ZXcgY2FjaGUuCi0KLSAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNvcHkgbG9hZGVycywgYmVj
YXVzZSB0aGUgY2FjaGUgZ3JvdXAgbWF5IGJlIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIGl0ZXJh
dGlvbi4KLSAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBsb2FkZXJzOwot
ICAgICAgICAgICAgICAgIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRl
cnMsIGxvYWRlcnMpOwotICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IGxvYWRlcnMuc2l6
ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyArK2kp
Ci0gICAgICAgICAgICAgICAgICAgIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKGxvYWRlcnNb
aV0pOyAvLyBUaGlzIGNhbiBkZWxldGUgdGhpcyBncm91cC4KLQotICAgICAgICAgICAgICAgIC8v
IFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuCi0gICAgICAg
ICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCBkaXNjYXJkIHRoZSBmYWlsZWQgbmV3IGNhY2hlLgotICAgICAgICAgICAgICAgICAg
ICBzZXROZXdlc3RDYWNoZShvbGROZXdlc3RDYWNoZS5yZWxlYXNlKCkpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBiZWVuIGRl
bGV0ZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigpLgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIC8vIFdlIG11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBk
aXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigpLgorICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA3YTIyMGNm
Li40NWE0ODY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCkBAIC04NTgsNyArODU4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgQXBw
bGljYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmVOZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwKQorYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIGdyb3VwLCBBcHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgRmFpbHVyZVJlYXNvbiYg
ZmFpbHVyZVJlYXNvbikKIHsKICAgICBvcGVuRGF0YWJhc2UodHJ1ZSk7CiAKQEAgLTg3MiwxMSAr
ODcyLDIxIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlTmV3ZXN0Q2FjaGUo
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKICAgICAKICAgICBzdG9yZUNhY2hlVHJhbnNh
Y3Rpb24uYmVnaW4oKTsKIAorICAgIC8vIENoZWNrIGlmIHRoaXMgd291bGQgcmVhY2ggdGhlIHBl
ci1vcmlnaW4gcXVvdGEuCisgICAgaW50NjRfdCByZW1haW5pbmdTcGFjZUluT3JpZ2luOworICAg
IGlmIChyZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUoZ3JvdXAtPm9yaWdpbigp
LCBvbGRDYWNoZSwgcmVtYWluaW5nU3BhY2VJbk9yaWdpbikpIHsKKyAgICAgICAgaWYgKHJlbWFp
bmluZ1NwYWNlSW5PcmlnaW4gPCBncm91cC0+bmV3ZXN0Q2FjaGUoKS0+ZXN0aW1hdGVkU2l6ZUlu
U3RvcmFnZSgpKSB7CisgICAgICAgICAgICBmYWlsdXJlUmVhc29uID0gT3JpZ2luUXVvdGFSZWFj
aGVkOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAg
R3JvdXBTdG9yYWdlSURKb3VybmFsIGdyb3VwU3RvcmFnZUlESm91cm5hbDsKICAgICBpZiAoIWdy
b3VwLT5zdG9yYWdlSUQoKSkgewogICAgICAgICAvLyBTdG9yZSB0aGUgZ3JvdXAKICAgICAgICAg
aWYgKCFzdG9yZShncm91cCwgJmdyb3VwU3RvcmFnZUlESm91cm5hbCkpIHsKICAgICAgICAgICAg
IGNoZWNrRm9yTWF4U2l6ZVJlYWNoZWQoKTsKKyAgICAgICAgICAgIGZhaWx1cmVSZWFzb24gPSBp
c01heGltdW1TaXplUmVhY2hlZCgpID8gVG90YWxRdW90YVJlYWNoZWQgOiBEaXNrT3JPcGVyYXRp
b25GYWlsdXJlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpA
QCAtODkzLDIwICs5MDMsMjUgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVO
ZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwKQogICAgIC8vIFN0b3JlIHRo
ZSBuZXdlc3QgY2FjaGUKICAgICBpZiAoIXN0b3JlKGdyb3VwLT5uZXdlc3RDYWNoZSgpLCAmcmVz
b3VyY2VTdG9yYWdlSURKb3VybmFsKSkgewogICAgICAgICBjaGVja0Zvck1heFNpemVSZWFjaGVk
KCk7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBpc01heGltdW1TaXplUmVhY2hlZCgpID8gVG90
YWxRdW90YVJlYWNoZWQgOiBEaXNrT3JPcGVyYXRpb25GYWlsdXJlOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgbmV3ZXN0IGNhY2hlIGluIHRo
ZSBncm91cC4KICAgICAKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2Us
ICJVUERBVEUgQ2FjaGVHcm91cHMgU0VUIG5ld2VzdENhY2hlPT8gV0hFUkUgaWQ9PyIpOwotICAg
IGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQorICAgIGlmIChzdGF0ZW1l
bnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIGZhaWx1cmVSZWFzb24gPSBE
aXNrT3JPcGVyYXRpb25GYWlsdXJlOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IAogICAgIHN0YXRlbWVudC5iaW5kSW50NjQoMSwgZ3JvdXAtPm5ld2VzdENhY2hlKCktPnN0b3Jh
Z2VJRCgpKTsKICAgICBzdGF0ZW1lbnQuYmluZEludDY0KDIsIGdyb3VwLT5zdG9yYWdlSUQoKSk7
CiAgICAgCi0gICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkpCisgICAgaWYgKCFl
eGVjdXRlU3RhdGVtZW50KHN0YXRlbWVudCkpIHsKKyAgICAgICAgZmFpbHVyZVJlYXNvbiA9IERp
c2tPck9wZXJhdGlvbkZhaWx1cmU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
CiAgICAgZ3JvdXBTdG9yYWdlSURKb3VybmFsLmNvbW1pdCgpOwogICAgIHJlc291cmNlU3RvcmFn
ZUlESm91cm5hbC5jb21taXQoKTsKQEAgLTkxNCw2ICs5MjksMTMgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmVOZXdlc3RDYWNoZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdy
b3VwKQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZU5ld2VzdENhY2hlKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXApCit7CisgICAg
Ly8gSWdub3JlIHRoZSByZWFzb24gZm9yIGZhaWxpbmcsIGp1c3QgYXR0ZW1wdCB0aGUgc3RvcmUu
CisgICAgRmFpbHVyZVJlYXNvbiBpZ25vcmVkRmFpbHVyZVJlYXNvbjsKKyAgICByZXR1cm4gc3Rv
cmVOZXdlc3RDYWNoZShncm91cCwgMCwgaWdub3JlZEZhaWx1cmVSZWFzb24pOworfQorCiBzdGF0
aWMgaW5saW5lIHZvaWQgcGFyc2VIZWFkZXIoY29uc3QgVUNoYXIqIGhlYWRlciwgc2l6ZV90IGhl
YWRlckxlbmd0aCwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaW50IHBvcyA9
IGZpbmQoaGVhZGVyLCBoZWFkZXJMZW5ndGgsICc6Jyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCAxNDk0MWYwLi4xM2RmOGVi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgKQEAgLTQ3LDYgKzQ3LDEyIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Cisg
ICAgZW51bSBGYWlsdXJlUmVhc29uIHsKKyAgICAgICAgT3JpZ2luUXVvdGFSZWFjaGVkLAorICAg
ICAgICBUb3RhbFF1b3RhUmVhY2hlZCwKKyAgICAgICAgRGlza09yT3BlcmF0aW9uRmFpbHVyZQor
ICAgIH07CisKICAgICB2b2lkIHNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAg
IGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICAgICAKQEAgLTY4LDYgKzc0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqKTsKICAgICB2b2lkIGNhY2hlR3JvdXBNYWRlT2Jzb2xldGUoQXBwbGljYXRpb25D
YWNoZUdyb3VwKik7CiAgICAgICAgIAorICAgIGJvb2wgc3RvcmVOZXdlc3RDYWNoZShBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqLCBBcHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgRmFpbHVyZVJlYXNv
biYgZmFpbHVyZVJlYXNvbik7CiAgICAgYm9vbCBzdG9yZU5ld2VzdENhY2hlKEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCopOyAvLyBVcGRhdGVzIHRoZSBjYWNoZSBncm91cCwgYnV0IGRvZXNuJ3QgcmVt
b3ZlIG9sZCBjYWNoZS4KICAgICBib29sIHN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSos
IEFwcGxpY2F0aW9uQ2FjaGUqKTsKICAgICBib29sIHN0b3JlVXBkYXRlZFR5cGUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiwgQXBwbGljYXRpb25DYWNoZSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59800</attachid>
            <date>2010-06-25 14:53:27 -0700</date>
            <delta_ts>2010-07-30 20:43:32 -0700</delta_ts>
            <desc>[PATCH] Part 4 - Client Notification when the Quota is Reached (needs part 3)</desc>
            <filename>2-part-4.patch</filename>
            <type>text/plain</type>
            <size>78031</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDI5NTk1YS4uYTcyNjQ4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNi0yNSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDQgLSBDbGllbnQg
Tm90aWZpY2F0aW9uIHdoZW4gdGhlIFF1b3RhIGlzIFJlYWNoZWQKKworICAgICAgICBOb3RpZnkg
dGhlIFdlYktpdCBjbGllbnQgd2hlbiB0aGUgcGVyLW9yaWdpbiBxdW90YSBpcyByZWFjaGVkCisg
ICAgICAgIHZpYSBhIGRlbGVnYXRlIG1ldGhvZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhLgorCisgICAgICAgICAgQ2FsbCB0aGUgZGVsZWdhdGUgbWV0aG9kIHdoZW4gdGhlIHF1
b3RhIGlzIHJlYWNoZWQuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZFJlYWNoT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29t
cGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVs
ZVJlYWNoZWRPcmlnaW5RdW90YUNhbGxiYWNrKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmg6CisKKyAgICAgICAgICBTb21lIG1pbm9yIHJlZmFjdG9y
aW5nIHRvIGFjY2VzcyBtb3JlIHF1b3RhIGluZm9ybWF0aW9uCisgICAgICAgICAgd2l0aG91dCBy
ZXBlYXRpbmcgY29kZS4gU3VjaCBhcyBvcmlnaW4gdXNhZ2UsIGFuZCBjcmVhdGluZworICAgICAg
ICAgIGFuIG9yaWdpbiByZWNvcmQuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnVzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmVuc3VyZU9yaWdpblJlY29yZCk6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisKKyAgICAgICAgICBC
b2lsZXJwbGF0ZS4gRXhwb3J0cyBhbmQgZGVmaW5pdGlvbiBvZiB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogV2ViQ29yZS5PZmZsaW5lV2ViQXBwbGljYXRpb25zLmV4cDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9t
ZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICog
cGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxMC0wNi0yNCAgSm9zZXBoIFBlY29yYXJvICA8am9l
cGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwIGIv
V2ViQ29yZS9XZWJDb3JlLk9mZmxpbmVXZWJBcHBsaWNhdGlvbnMuZXhwCmluZGV4IGJmZWJjYTMu
LmY4NGI1MjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5PZmZsaW5lV2ViQXBwbGljYXRp
b25zLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuT2ZmbGluZVdlYkFwcGxpY2F0aW9ucy5leHAK
QEAgLTEsNiArMSwxMCBAQAorX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0
cXVvdGFGb3JPcmlnaW5FUEtOU18xNFNlY3VyaXR5T3JpZ2luRVJ4CiBfX1pON1dlYkNvcmUyM0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CitfX1pON1dlYkNvcmUyM0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTR1c2FnZUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmln
aW5FUngKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNnN0b3JlQ29weU9m
Q2FjaGVFUktOU182U3RyaW5nRVBOU18yMEFwcGxpY2F0aW9uQ2FjaGVIb3N0RQogX19aTjdXZWJD
b3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE3c2V0Q2FjaGVEaXJlY3RvcnlFUktOU182U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE4dmFjdXVtRGF0YWJh
c2VGaWxlRXYKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UyMXNldERlZmF1
bHRPcmlnaW5RdW90YUV4CitfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjZz
dG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FeAorX19aTjdX
ZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTM2cmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4
Y2x1ZGluZ0NhY2hlRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVQTlNfMTZBcHBsaWNhdGlvbkNhY2hl
RVJ4CiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlNWVtcHR5RXYKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKaW5kZXggZTQyZWUxZC4uYmEyNGY4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
QEAgLTI4LDggKzI4LDggQEAKICNkZWZpbmUgRW1wdHlDbGllbnRzX2gKIAogI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAi
Q29uc29sZS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRWRpdENv
bW1hbmQuaCIKQEAgLTEzNyw2ICsxMzcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVT
aXplKGludDY0X3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikgeyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKaW5kZXggNzNlNTdhNy4uMmU4MTE5NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MSw2ICs2MSw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29wCiAgICAgLCBtX2NhbGxlZFJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoZmFsc2UpCiAgICAgLCBtX2xvYWRlZFNpemUoMCkKICAgICAsIG1fYXZhaWxhYmxl
U3BhY2VJblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp1bmtub3duKQorICAgICwgbV9v
cmlnaW5RdW90YVJlYWNoZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTU1MCw3ICs1NTEsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlKQogICAgIC8vIGlkZWEgb2YgdGhlIGF2YWlsYWJsZSBxdW90YSBzcGFjZS4KICAgICBp
ZiAobV9hdmFpbGFibGVTcGFjZUluUXVvdGEgPCBtX2xvYWRlZFNpemUpIHsKICAgICAgICAgbV9j
dXJyZW50UmVzb3VyY2UgPSAwOwotICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOworICAgICAg
ICBjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzA5LDYgKzcxMCwxNCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkUmVhY2hNYXhBcHBDYWNoZVNpemUoKQogICAgIGNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpOwog
fQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShQYXNz
UmVmUHRyPEZyYW1lPiBmcmFtZSkKK3sKKyAgICAvLyBJbmZvcm0gdGhlIGNsaWVudCB0aGUgb3Jp
Z2luIHF1b3RhIGhhcyBiZWVuIHJlYWNoZWQsCisgICAgLy8gdGhleSBtYXkgZGVjaWRlIHRvIGlu
Y3JlYXNlIHRoZSBxdW90YS4KKyAgICBMT0dfRVJST1IoIkNhbGxpbmcgcmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSIpOworICAgIGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGll
bnQoKS0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShtX29yaWdpbi5nZXQoKSk7
Cit9CisKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUZhaWxlZCgpCiB7
CiAgICAgc3RvcExvYWRpbmcoKTsKQEAgLTcxOCw2ICs3MjcsMTYgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkKCkKICAgICBtX2NvbXBsZXRpb25UeXBlID0g
RmFpbHVyZTsKICAgICBkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKTsKIH0KKwordm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkRHVlVG9PcmlnaW5RdW90YSgp
Cit7CisgICAgaWYgKG1fb3JpZ2luUXVvdGFSZWFjaGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX29yaWdpblF1b3RhUmVhY2hlZCA9IHRydWU7CisgICAgc2NoZWR1bGVSZWFjaGVkT3JpZ2lu
UXVvdGFDYWxsYmFjaygpOworICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7Cit9CiAgICAgCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFuaWZlc3ROb3RGb3VuZCgpCiB7CkBAIC04MDYsMTIg
KzgyNSwxNCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKCkKICAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3ZXN0Q2Fj
aGUuZ2V0KCkpOwogICAgICAgICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudHMuCiAgICAg
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGlzVXBncmFkZUF0dGVtcHQgPyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6VVBEQVRFUkVBRFlfRVZFTlQgOiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0FDSEVE
X0VWRU5ULCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworICAgICAgICAgICAgLy8gSXQg
aXMgY2xlYXIgdGhhdCB0aGUgb3JpZ2luIHF1b3RhIHdhcyBub3QgcmVhY2hlZCwgc28gY2xlYXIg
dGhlIGZsYWcgaWYgaXQgd2FzIHNldC4KKyAgICAgICAgICAgIG1fb3JpZ2luUXVvdGFSZWFjaGVk
ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoZmFpbHVyZVJlYXNv
biA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6T3JpZ2luUXVvdGFSZWFjaGVkKSB7CiAgICAg
ICAgICAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBzcGFjZSBmb3IgdGhpcyBvcmlnaW4uIFJvbGwg
YmFjayB0byBwcmV2aW91cyBzdGF0ZS4KICAgICAgICAgICAgICAgICBpZiAob2xkTmV3ZXN0Q2Fj
aGUpCiAgICAgICAgICAgICAgICAgICAgIHNldE5ld2VzdENhY2hlKG9sZE5ld2VzdENhY2hlLnJl
bGVhc2UoKSk7Ci0gICAgICAgICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKKyAgICAgICAg
ICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTk3MCw2ICs5OTEsMjUgQEAgcHJpdmF0
ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIG1fY2FjaGVHcm91cDsKIH07CiAKK2NsYXNz
IE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNrVGltZXI6IHB1YmxpYyBUaW1lckJhc2UgeworcHVi
bGljOgorICAgIE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNrVGltZXIoQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBjYWNoZUdyb3VwLCBGcmFtZSogZnJhbWUpCisgICAgICAgIDogbV9jYWNoZUdyb3Vw
KGNhY2hlR3JvdXApCisgICAgICAgICwgbV9mcmFtZShmcmFtZSkKKyAgICB7CisgICAgfQorCitw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpCisgICAgeworICAgICAgICBtX2NhY2hl
R3JvdXAtPmRpZFJlYWNoT3JpZ2luUXVvdGEobV9mcmFtZS5yZWxlYXNlKCkpOworICAgICAgICBk
ZWxldGUgdGhpczsKKyAgICB9CisKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIG1fY2FjaGVH
cm91cDsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC05NzgsNiArMTAxOCwxNSBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJh
Y2soKQogICAgIC8vIFRoZSB0aW1lciB3aWxsIGRlbGV0ZSBpdHNlbGYgb25jZSBpdCBmaXJlcy4K
IH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE9yaWdpblF1
b3RhQ2FsbGJhY2soKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgUmVmUHRy
PEZyYW1lPiBmcmFtZVByb3RlY3RvciA9IG1fZnJhbWU7CisgICAgT3JpZ2luUXVvdGFSZWFjaGVk
Q2FsbGJhY2tUaW1lciogdGltZXIgPSBuZXcgT3JpZ2luUXVvdGFSZWFjaGVkQ2FsbGJhY2tUaW1l
cih0aGlzLCBmcmFtZVByb3RlY3Rvci5nZXQoKSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdCgw
KTsKKyAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCit9
CisKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVM
aXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDI4ZWQ2ZTYuLjkyZTgwMmMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5o
CkBAIC05Niw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVy
VGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVu
dExvYWRlcio+Jik7CiAgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHNjaGVkdWxl
UmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCk7CisgICAgdm9pZCBzY2hlZHVsZVJlYWNo
ZWRPcmlnaW5RdW90YUNhbGxiYWNrKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxl
PiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSk7CiAKQEAgLTExMiwxMSArMTEzLDEzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWFuaWZlc3REYXRhKGNvbnN0IGNoYXIqLCBpbnQpOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KCk7CiAgICAgdm9pZCBkaWRSZWFjaE1h
eEFwcENhY2hlU2l6ZSgpOworICAgIHZvaWQgZGlkUmVhY2hPcmlnaW5RdW90YShQYXNzUmVmUHRy
PEZyYW1lPiBmcmFtZSk7CiAgICAgCiAgICAgdm9pZCBzdGFydExvYWRpbmdFbnRyeSgpOwogICAg
IHZvaWQgZGVsaXZlckRlbGF5ZWRNYWluUmVzb3VyY2VzKCk7CiAgICAgdm9pZCBjaGVja0lmTG9h
ZElzQ29tcGxldGUoKTsKICAgICB2b2lkIGNhY2hlVXBkYXRlRmFpbGVkKCk7CisgICAgdm9pZCBj
YWNoZVVwZGF0ZUZhaWxlZER1ZVRvT3JpZ2luUXVvdGEoKTsKICAgICB2b2lkIG1hbmlmZXN0Tm90
Rm91bmQoKTsKICAgICAKICAgICB2b2lkIGFkZEVudHJ5KGNvbnN0IFN0cmluZyYsIHVuc2lnbmVk
IHR5cGUpOwpAQCAtMTg0LDggKzE4NywxMCBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBtX2xv
YWRlZFNpemU7CiAgICAgaW50NjRfdCBtX2F2YWlsYWJsZVNwYWNlSW5RdW90YTsKKyAgICBib29s
IG1fb3JpZ2luUXVvdGFSZWFjaGVkOwogCiAgICAgZnJpZW5kIGNsYXNzIENocm9tZUNsaWVudENh
bGxiYWNrVGltZXI7CisgICAgZnJpZW5kIGNsYXNzIE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNr
VGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDVhNDg2Ni4u
OGUxYjQyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnNldERlZmF1bHRPcmlnaW5RdW90YShpbnQ2NF90IHF1b3RhKQogCiBib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpxdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBpbnQ2NF90JiBxdW90YSkKIHsKLSAgICAvLyBJZiBhbiBPcmlnaW4gcmVjb3Jk
IGRvZXNuJ3QgZXhpc3QsIHRoZW4gdGhlIENPVU5UIHdpbGwgYmUgMCBhbmQgcXVvdGEgd2lsbCBi
ZSAwLgorICAgIC8vIElmIGFuIE9yaWdpbnMgcmVjb3JkIGRvZXNuJ3QgZXhpc3QsIHRoZW4gdGhl
IENPVU5UIHdpbGwgYmUgMCBhbmQgcXVvdGEgd2lsbCBiZSAwLgogICAgIC8vIFVzaW5nIHRoZSBj
b3VudCB0byBkZXRlcm1pbmUgaWYgYSByZWNvcmQgZXhpc3RlZCBvciBub3QgaXMgYSBzYWZlIHdh
eSB0byBkZXRlcm1pbmU9CiAgICAgLy8gaWYgYSBxdW90YSBvZiAwIGlzIHJlYWwsIGZyb20gdGhl
IHJlY29yZCwgb3IgZnJvbSBudWxsLgogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9k
YXRhYmFzZSwgIlNFTEVDVCBDT1VOVChxdW90YSksIHF1b3RhIEZST00gT3JpZ2lucyBXSEVSRSBv
cmlnaW49PyIpOwpAQCAtNDQzLDYgKzQ0MywzMCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpxdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBpbnQ2NAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dXNh
Z2VGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgaW50NjRfdCYgdXNhZ2Up
Cit7CisgICAgLy8gSWYgYW4gT3JpZ2lucyByZWNvcmQgZG9lc24ndCBleGlzdCwgdGhlbiB0aGUg
U1VNIHdpbGwgYmUgbnVsbCwKKyAgICAvLyB3aGljaCB3aWxsIGJlY29tZSAwLCBhcyBleHBlY3Rl
ZCwgd2hlbiBjb252ZXJ0aW5nIHRvIGEgbnVtYmVyLgorICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBTVU0oQ2FjaGVzLnNpemUpIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgRlJPTSBDYWNoZUdyb3VwcyIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgSU5ORVIgSk9JTiBPcmlnaW5z
IE9OIENhY2hlR3JvdXBzLm9yaWdpbiA9IE9yaWdpbnMub3JpZ2luIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBJTk5FUiBKT0lOIENhY2hlcyBPTiBDYWNoZUdy
b3Vwcy5pZCA9IENhY2hlcy5jYWNoZUdyb3VwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiBXSEVSRSBPcmlnaW5zLm9yaWdpbj0/Iik7CisgICAgaWYgKHN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsK
KyAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKKworICAgIGlmIChyZXN1bHQgPT0g
U1FMUmVzdWx0Um93KSB7CisgICAgICAgIHVzYWdlID0gc3RhdGVtZW50LmdldENvbHVtbkludDY0
KDApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBnZXQgdGhlIHF1b3RhIG9mIGFuIG9yaWdpbiwgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpyZW1haW5pbmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUoY29u
c3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgQXBwbGljYXRpb25DYWNoZSogY2FjaGUsIGludDY0
X3QmIHJlbWFpbmluZ1NpemUpCiB7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKQEAgLTQ5OCw2
ICs1MjIsOSBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZVVwZGF0ZWRRdW90
YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogbwogICAgIGlmICghbV9kYXRhYmFzZS5p
c09wZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFlbnN1cmVPcmlnaW5S
ZWNvcmQob3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgU1FMaXRlU3RhdGVt
ZW50IHVwZGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiVVBEQVRFIE9yaWdpbnMgU0VUIHF1b3Rh
PT8gV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAodXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI1LDI2ICs2NTIsMTUg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBncm91cCwgR3JvdXBTdG9yYWdlSUQKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxSZXN1bHRPaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIgPSBncm91cC0+b3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpOwotCiAg
ICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCB1cmxIb3N0SGFzaChncm91cC0+bWFuaWZlc3RVUkwo
KSkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBncm91cC0+bWFuaWZlc3RVUkwoKSk7Ci0g
ICAgc3RhdGVtZW50LmJpbmRUZXh0KDMsIG9yaWdpbklkZW50aWZpZXIpOworICAgIHN0YXRlbWVu
dC5iaW5kVGV4dCgzLCBncm91cC0+b3JpZ2luKCktPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAog
ICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAvLyBDcmVhdGUgT3JpZ2luIGlmIG5lZWRlZC4KLSAgICB7Ci0gICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBJ
TlRPIE9yaWdpbnMgKG9yaWdpbiwgcXVvdGEpIFZBTFVFUyAoPywgPykiKTsKLSAgICAgICAgaWYg
KGluc2VydE9yaWdpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaW5zZXJ0T3JpZ2luU3RhdGVtZW50LmJpbmRU
ZXh0KDEsIG9yaWdpbklkZW50aWZpZXIpOwotICAgICAgICBpbnNlcnRPcmlnaW5TdGF0ZW1lbnQu
YmluZEludDY0KDIsIG1fZGVmYXVsdE9yaWdpblF1b3RhKTsKLSAgICAgICAgaWYgKCFleGVjdXRl
U3RhdGVtZW50KGluc2VydE9yaWdpblN0YXRlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQorICAgIGlmICghZW5zdXJlT3JpZ2luUmVjb3JkKGdyb3VwLT5vcmlnaW4oKSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGdyb3VwLT5zZXRTdG9yYWdlSUQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YWJhc2UubGFzdEluc2VydFJvd0lEKCkpKTsKICAgICBqb3Vy
bmFsLT5hZGQoZ3JvdXAsIDApOwpAQCAtODU4LDYgKzg3NCwyMCBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCBB
cHBsaWNhdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjplbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3sK
KyAgICBTUUxpdGVTdGF0ZW1lbnQgaW5zZXJ0T3JpZ2luU3RhdGVtZW50KG1fZGF0YWJhc2UsICJJ
TlNFUlQgSU5UTyBPcmlnaW5zIChvcmlnaW4sIHF1b3RhKSBWQUxVRVMgKD8sID8pIik7CisgICAg
aWYgKGluc2VydE9yaWdpblN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBpbnNlcnRPcmlnaW5TdGF0ZW1l
bnQuYmluZEludDY0KDIsIG1fZGVmYXVsdE9yaWdpblF1b3RhKTsKKyAgICBpZiAoIWV4ZWN1dGVT
dGF0ZW1lbnQoaW5zZXJ0T3JpZ2luU3RhdGVtZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCwgQXBwbGljYXRpb25D
YWNoZSogb2xkQ2FjaGUsIEZhaWx1cmVSZWFzb24mIGZhaWx1cmVSZWFzb24pCiB7CiAgICAgb3Bl
bkRhdGFiYXNlKHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggMTNkZjhlYi4uYmE3YWI0MSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC02Myw2ICs2
Myw3IEBAIHB1YmxpYzoKIAogICAgIGludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0T3JpZ2luUXVvdGE7IH0KICAgICB2b2lkIHNldERlZmF1bHRPcmln
aW5RdW90YShpbnQ2NF90IHF1b3RhKTsKKyAgICBib29sIHVzYWdlRm9yT3JpZ2luKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjRfdCYgdXNhZ2UpOwogICAgIGJvb2wgcXVvdGFGb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90JiBxdW90YSk7CiAgICAgYm9vbCByZW1haW5p
bmdTaXplRm9yT3JpZ2luRXhjbHVkaW5nQ2FjaGUoY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBBcHBs
aWNhdGlvbkNhY2hlKiwgaW50NjRfdCYgcmVtYWluaW5nU2l6ZSk7CiAgICAgYm9vbCBzdG9yZVVw
ZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QgcXVvdGEp
OwpAQCAtMTA1LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdG9yZShBcHBsaWNhdGlv
bkNhY2hlKiwgUmVzb3VyY2VTdG9yYWdlSURKb3VybmFsKik7CiAgICAgYm9vbCBzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqLCB1bnNpZ25lZCBjYWNoZVN0b3JhZ2VJRCk7CiAKKyAgICBi
b29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiopOworCiAgICAgdm9p
ZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCiAgICAgdm9pZCB2ZXJpZnlTY2hlbWFW
ZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYzkzYjNjOS4uNjZlN2JkZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtNTIsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SW50UmVjdDsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2U7CisgICAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFdpZGdldDsKIApAQCAt
MTYxLDYgKzE2MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFRoZSBjaHJv
bWUgY2xpZW50IHdvdWxkIG5lZWQgdG8gdGFrZSBzb21lIGFjdGlvbiBzdWNoIGFzIGV2aWN0aW5n
IHNvbWUKICAgICAgICAgLy8gb2xkIGNhY2hlcy4KICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkgPSAwOworCisgICAgICAgIC8v
IENhbGxiYWNrIGludm9rZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gY2FjaGUgb3JpZ2luIHF1b3Rh
IGlzIHJlYWNoZWQuIFRoaXMKKyAgICAgICAgLy8gbWVhbnMgdGhhdCB0aGUgcmVzb3VyY2VzIGF0
dGVtcHRpbmcgdG8gYmUgY2FjaGVkIHZpYSB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgIC8vIG1v
cmUgdGhhbiBhbGxvd2VkIG9uIHRoaXMgb3JpZ2luLiBUaGlzIGNhbGxiYWNrIGFsbG93cyB0aGUg
Y2hyb21lIGNsaWVudAorICAgICAgICAvLyB0byB0YWtlIGFjdGlvbiwgc3VjaCBhcyBwcm9tcHRp
bmcgdGhlIHVzZXIgdG8gYXNrIHRvIGluY3JlYXNlIHRoZSBxdW90YQorICAgICAgICAvLyBmb3Ig
dGhpcyBvcmlnaW4uCisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pID0gMDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBi
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDkyZTk2Ni4uMmE5YTA1MyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTAtMDYtMjUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlv
bkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudEVmbDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAg
ICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA2LTE4
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMjk3MmEzZC4uNGFjMTViZSAxMDA2NDQKLS0tIGEvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODksOSArODksNiBAQAogCQk0NDE3OTNBNjBFMzRFRTE1MDA1NUUx
QUUgLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MTc5M0E1MEUzNEVFMTUwMDU1RTFBRSAvKiBX
ZWJIVE1MUmVwcmVzZW50YXRpb25JbnRlcm5hbC5oICovOyB9OwogCQk0QkY5OUY5MDBBRTA1MEJD
MDA4MTVDMkIgLyogV2ViRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0QkY5OUY4RTBBRTA1MEJDMDA4MTVDMkIgLyogV2ViRWRpdG9y
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJNEJGOTlG
OTEwQUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRjk5RjhGMEFFMDUwQkMwMDgxNUMyQiAv
KiBXZWJFZGl0b3JDbGllbnQubW0gKi87IH07Ci0JCTUxMDc5RDE3MENFRDExQjAwMDc3MjQ3RCAv
KiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDc5RDE0MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9yaWdp
bi5tbSAqLzsgfTsKLQkJNTEwNzlEMTgwQ0VEMTFCMDAwNzcyNDdEIC8qIFdlYlNlY3VyaXR5T3Jp
Z2luSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMDc5RDE1MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFs
LmggKi87IH07Ci0JCTUxMDc5RDE5MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9yaWdp
blByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDc5RDE2MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTFGM0ZE
NTBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1
IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAqLzsgfTsKIAkJNTExRjNGRDYwQ0VDQzg4RjAwODUy
NTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTExRjNGRDcwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dC5oICovOyB9OwpAQCAtMzEyLDYgKzMwOSwxMyBAQAogCQk5M0VCMTc4RDA5Rjg4RDQ2MDA5MUY4
RkYgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0VCMTc4QzA5Rjg4RDQ2MDA5MUY4RkYgLyogV2ViU3lzdGVtSW50
ZXJmYWNlLm0gKi87IH07CiAJCTkzRUIxNzhGMDlGODhENTEwMDkxRjhGRiAvKiBXZWJTeXN0ZW1J
bnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRUIxNzhFMDlGODhENTEwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgfTsK
IAkJOTNGREU5MzMwRDc5Q0FGMzAwNzRGMDI5IC8qIFdlYkhpc3RvcnlJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGREU5MzIwRDc5Q0FG
MzAwNzRGMDI5IC8qIFdlYkhpc3RvcnlJbnRlcm5hbC5oICovOyB9OworCQlBNURFRkMwQTExRDUz
MzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwNzExRDUzMzFDMDA4ODUyNzMgLyogV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CisJCUE1REVGQzBCMTFENTMzMUMwMDg4NTI3MyAvKiBX
ZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oICovOyB9OworCQlBNURFRkMwQzExRDUzMzFDMDA4ODUyNzMgLyogV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNURFRkMwOTExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmln
aW5Qcml2YXRlLmggKi87IH07CisJCUE1REVGQzBGMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRh
YmFzZVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNURFRkMwRDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VTZWN1cml0
eU9yaWdpbi5oICovOyB9OworCQlBNURFRkMxMDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJh
c2VTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1REVGQzBFMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVNlY3VyaXR5
T3JpZ2luLm1tICovOyB9OworCQlBNURFRkMxMzExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGlj
YXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMxMTExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRp
b25DYWNoZVNlY3VyaXR5T3JpZ2luLmggKi87IH07CisJCUE1REVGQzE0MTFENTM0NEIwMDg4NTI3
MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMg
LyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tICovOyB9OwogCQlBNzA5MzZB
RjBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOTM2QUQwQjU2MDhEQzAwQ0RCNDhFIC8qIFdl
YkRyYWdDbGllbnQuaCAqLzsgfTsKIAkJQTcwOTM2QjAwQjU2MDhEQzAwQ0RCNDhFIC8qIFdlYkRy
YWdDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNzA5MzZBRTBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5tbSAqLzsgfTsKIAkJ
QTdEM0M1QkMwQjU3NzNDNTAwMkNBNDUwIC8qIFdlYlBhc3RlYm9hcmRIZWxwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDNDNUJBMEI1NzczQzUw
MDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLmggKi87IH07CkBAIC00NjMsOSArNDY3LDYg
QEAKIAkJNDQ5MDk4QjkwRjhGODJERjAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkY5OUY4RTBBRTA1MEJDMDA4MTVDMkIg
LyogV2ViRWRpdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJFZGl0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJGOTlGOEYw
QUUwNTBCQzAwODE1QzJCIC8qIFdlYkVkaXRvckNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJFZGl0b3JDbGllbnQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxMDc5RDE0MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9y
aWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3Vy
aXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTA3OUQxNTBDRUQx
MUIwMDA3NzI0N0QgLyogV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMDc5RDE2MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1
cml0eU9yaWdpblByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MUYzRkQxMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZU1hbmFnZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYzRkQyMENFQ0M4OEYwMDg1MjU2NSAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTExRjNGRDMwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OCw2ICs1OTksMTMgQEAK
IAkJOUNBRTlEMDcwMjUyQTQxMzBFQ0ExNkVBIC8qIFdlYlByZWZlcmVuY2VzUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJOUNFMUY4QTMwMkE1QzZGMzBFQ0EyQUNEIC8qIFdlYkltYWdlUmVu
ZGVyZXJGYWN0b3J5Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBwYXRoID0gV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTlDRjBFMjQ5MDIxMzYxQjAw
RUNBMTZFQSAvKiBXZWJGcmFtZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGcmFtZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCUE1REVGQzA3MTFENTMz
MUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmln
aW5JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWN1cml0
eU9yaWdpbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1REVGQzA5
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJE
YXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTVERUZDMEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZVNl
Y3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMxMTEx
RDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0
eU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMxMjExRDUzNDRC
MDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNoZVNlY3Vy
aXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzA5MzZBRDBCNTYw
OERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRHJhZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzA5MzZBRTBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEcmFnQ2xpZW50Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0QzQzVCQTBCNTc3M0M1MDAyQ0E0NTAgLyogV2ViUGFzdGVi
b2FyZEhlbHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYXN0ZWJv
YXJkSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAwLDExICsxMDA4
LDEwIEBACiAJCQkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdl
ci5tbSAqLywKIAkJCQk1MUFFREVGMDBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5h
Z2VySW50ZXJuYWwuaCAqLywKIAkJCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oICovLAorCQkJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAv
KiBXZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggKi8sCisJCQkJQTVERUZDMEUxMUQ1MzQzRTAw
ODg1MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJCQkJNTExRjNGRDMw
Q0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAogCQkJCTUx
MUYzRkQ0MENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0gKi8s
Ci0JCQkJNTEwNzlEMTQwQ0VEMTFCMDAwNzcyNDdEIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tICov
LAotCQkJCTUxMDc5RDE1MENFRDExQjAwMDc3MjQ3RCAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVy
bmFsLmggKi8sCi0JCQkJNTEwNzlEMTYwQ0VEMTFCMDAwNzcyNDdEIC8qIFdlYlNlY3VyaXR5T3Jp
Z2luUHJpdmF0ZS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBTdG9yYWdlOwogCQkJcGF0aCA9IG1h
Yy9TdG9yYWdlOwpAQCAtMTIxNyw2ICsxMjI0LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUI2
ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggKi8sCiAJCQkJ
QjY4MDQ5NzIwRkZCQ0VDMTAwOUY3RjYyIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUubW0gKi8sCisJ
CQkJQTVERUZDMTExMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0
eU9yaWdpbi5oICovLAorCQkJCUE1REVGQzEyMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNh
dGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRC
RjUxIC8qIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi8sCiAJCQkJMTREODI1MkQwQUY5
NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNsaWVudC5oICovLAogCQkJCTE0RDgyNTJFMEFGOTU1
MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQubW0gKi8sCkBAIC0xMjQ0LDYgKzEyNTMsOSBA
QAogCQkJCUE3RDNDNUJCMEI1NzczQzUwMDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLm1t
ICovLAogCQkJCTBBMkQ4N0ZCMTA3QUY1MkIwMENEREVFMyAvKiBXZWJQbHVnaW5IYWx0ZXJDbGll
bnQuaCAqLywKIAkJCQkwQTJEODdGQzEwN0FGNTJCMDBDRERFRTMgLyogV2ViUGx1Z2luSGFsdGVy
Q2xpZW50Lm1tICovLAorCQkJCUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0
eU9yaWdpbi5tbSAqLywKKwkJCQlBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oICovLAorCQkJCUE1REVGQzA5MTFENTMzMUMwMDg4NTI3MyAvKiBX
ZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCAqLywKIAkJCQk5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4
RkYgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggKi8sCiAJCQkJOTNFQjE3OEMwOUY4OEQ0NjAwOTFG
OEZGIC8qIFdlYlN5c3RlbUludGVyZmFjZS5tICovLAogCQkJCUY1RjcxNzRDMDI4ODVDNUIwMTg2
MzVDQSAvKiBXZWJWaWV3RmFjdG9yeS5oICovLApAQCAtMTUxNyw4ICsxNTI5LDYgQEAKIAkJCQlD
MDE2N0JGODBEN0Y1REQwMDAyODY5NkUgLyogV2ViU2NyaXB0RGVidWdnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMwQjFGN0U4MTBBQzhFMzEwMEM5MjVEOSAvKiBXZWJTY3JpcHRXb3JsZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBCMUY3RUExMEFDOEUzMTAwQzkyNUQ5IC8qIFdlYlNjcmlwdFdv
cmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMDc5RDE4MENFRDExQjAwMDc3MjQ3
RCAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTA3
OUQxOTBDRUQxMUIwMDA3NzI0N0QgLyogV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzI2QzY5RTEwQjc0M0Y0MDBCNjg3RUQgLyogV2ViU2VyaWFsaXplZEpT
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDI3MDgyNEJGMDEwMDhERjAzOCAvKiBX
ZWJTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUIxNzhGMDlGODhENTEw
MDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTUzOSw2
ICsxNTQ5LDEwIEBACiAJCQkJMEZEM0IwRjgxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0Fu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDQ4NEYxMDMzOEU4QzAwMzBFNTVFIC8q
IFdlYldvcmtlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEM1QjNFRTExNzdBNEEw
MDAyQjBBRUYgLyogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNURFRkMwQjExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTVERUZDMEMxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3Vy
aXR5T3JpZ2luUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVERUZDMEYxMUQ1MzQzRTAw
ODg1MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE1REVGQzEzMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg3OSw3ICsxODkzLDYgQEAKIAkJCQk3RTZGRUYw
OTA4OTg1QTcyMDBDNDRDM0YgLyogV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMwMTY3QkY5MEQ3RjVERDAwMDI4Njk2RSAvKiBXZWJTY3JpcHREZWJ1Z2dlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUMwQjFGN0U5MTBBQzhFMzEwMEM5MjVEOSAvKiBXZWJTY3Jp
cHRXb3JsZC5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxMDc5RDE3MENFRDExQjAwMDc3MjQ3RCAv
KiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMjZDNkE1MTBCNzQ0
N0EwMEI2ODdFRCAvKiBXZWJTZXJpYWxpemVkSlNWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMENDMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJTdHJpbmdUcnVuY2F0b3IubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5M0VCMTc4RDA5Rjg4RDQ2MDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJm
YWNlLm0gaW4gU291cmNlcyAqLywKQEAgLTE4OTYsNiArMTkwOSw5IEBACiAJCQkJMEZEM0IwRjkx
MDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQzBDNUIzRUYxMTc3QTRBMDAwMkIwQUVGIC8qIFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1REVGQzBBMTFENTMzMUMwMDg4NTI3
MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1REVGQzEwMTFE
NTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTVERUZDMTQxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVT
ZWN1cml0eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjNlNTQ2NC4u
NDJiNWEwNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDYtMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFu
ZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgKiBzcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmg6CisKIDIwMTAtMDYtMTggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNTRjODFhYS4uY2EzMDJj
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC01Niw2ICs1
Niw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaWYgVVNFKFY4KQogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNlbmRpZgpAQCAtNTc4LDYg
KzU3OSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUo
aW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KKwor
dm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KICNlbmRp
ZgogCiB2b2lkIENocm9tZUNsaWVudEltcGw6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBh
c3NSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAppbmRleCA4NDM1NWMzLi4zYTE1ZWYxIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Nocm9tZUNsaWVudEltcGwuaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
V2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CiAj
aWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiopOwogI2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmlu
ZGV4IGJjNzVkZGIuLjg4N2IxNTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
QEAgLTM1Myw2ICszNTQsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRFZmw6OnJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKICAgICAvLyBGSVhNRTogRnJlZSBzb21lIHNw
YWNlLgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CisKK3ZvaWQgQ2hyb21lQ2xpZW50RWZsOjpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oIGIv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAppbmRleCBmY2NmNTRm
Li41OTcwMWM5IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZs
LmgKQEAgLTExMSw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJf
QVBQTElDQVRJT05TKQogICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGlu
dDY0X3Qgc3BhY2VOZWVkZWQpOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
dm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDJlMjM0NWQuLmRlY2MzNTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDYtMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFu
ZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorCiAyMDEwLTA2LTE1ICBEdW1pdHJ1IERhbmls
aXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRl
eCBmZTVkOWViLi43Y2IyODVjIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC0zMCwxMCArMzAsMTEgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJ3ZWJr
aXRnZW9sb2NhdGlvbnBvbGljeWRlY2lzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgogI2luY2x1ZGUgIndlYmtpdG5ldHdvcmtyZXF1ZXN0LmgiCkBAIC01MzMsNiArNTM0LDExIEBA
IHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VO
ZWVkZWQpCiAgICAgLy8gRklYTUU6IEZyZWUgc29tZSBzcGFjZS4KICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQorCit2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KICNl
bmRpZgogCiB2b2lkIENocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0
cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCA0NmQwMTVlLi45YTI2NjIyIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKICNlbmRpZgogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0
X3Qgc3BhY2VOZWVkZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBXZWJDb3JlOjpGaWxlQ2hv
b3NlciopOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlr
dS9DaGFuZ2VMb2cKaW5kZXggZDcxYzVlNC4uMTIxYWNmZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTAtMDYtMjUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBs
aWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3Rh
cykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50V3g6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1Lmg6CisK
IDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAppbmRleCAyY2Y1YzMxLi4xZTA2NzBj
IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFp
a3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlr
dS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAKICNpbmNsdWRlIDxBbGVydC5oPgogI2luY2x1ZGUgPFN0cmluZy5o
PgpAQCAtMzQ1LDYgKzM0NiwxMSBAQCB2b2lkIENocm9tZUNsaWVudFd4OjpyZWFjaGVkTWF4QXBw
Q2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KKwordm9pZCBDaHJvbWVDbGllbnRXeDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KICNlbmRp
ZgogCiB2b2lkIENocm9tZUNsaWVudEhhaWt1OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Rm9yRnJhbWUoRnJhbWUqLCBHZW9sb2NhdGlvbiopCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCmluZGV4IGQ1YTM3MmIuLjhjZjJlZDggMTAwNjQ0
Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCisr
KyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5oCkBAIC0x
MzAsNiArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNo
ZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKik7CiAjZW5kaWYKIAog
ICAgICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUgQ2hyb21lQ2xpZW50
IGNhbiBkaXNwbGF5IFVJIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1YmRl
YTQ1Li5mZGU1NDYzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTA2LTI1ICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVy
LU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBhcnQgNCAtIENsaWVu
dCBOb3RpZmljYXRpb24gd2hlbiB0aGUgUXVvdGEgaXMgUmVhY2hlZAorCisgICAgICAgIE5vdGlm
eSB0aGUgV2ViS2l0IGNsaWVudCB3aGVuIHRoZSBwZXItb3JpZ2luIHF1b3RhIGlzIHJlYWNoZWQK
KyAgICAgICAgdmlhIGEgZGVsZWdhdGUgbWV0aG9kIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEuCisKKyAgICAgICAgICBSZWZhY3RvciB0aGUgV2ViU2VjdXJpdHlPcmlnaW4gY2xh
c3MgdG8gYmUgZ2VuZXJpYyBlbm91Z2ggdG8KKyAgICAgICAgICBhbGxvdyBxdW90YSBtYW5hZ2Vt
ZW50IG9mIGJvdGggRGF0YWJhc2VzIG9yIEFwcGxpY2F0aW9uIENhY2hlcworICAgICAgICAgIHZp
YSBzdWJjbGFzc2VzLgorCisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3Jp
Z2luLmg6IEFkZGVkLgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdp
bi5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4gcXVvdGFd
KToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbiBzZXRRdW90YTpdKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4u
aDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVNl
Y3VyaXR5T3JpZ2luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViQXBwbGljYXRpb25DYWNoZVNl
Y3VyaXR5T3JpZ2luIHF1b3RhXSk6CisgICAgICAgICgtW1dlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1
cml0eU9yaWdpbiBzZXRRdW90YTpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYlNlY3VyaXR5T3Jp
Z2luLm1tOiBSZW1vdmVkLiAoTW92ZWQgdG8gV2ViQ29yZVN1cHBvcnQpCisgICAgICAgICogU3Rv
cmFnZS9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaDogUmVtb3ZlZC4gKE1vdmVkIHRvIFdlYkNv
cmVTdXBwb3J0KQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gdXNhZ2VdKTogdG8gYmUgaW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gcXVv
dGFdKTogdG8gYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAgKC1bV2ViU2Vj
dXJpdHlPcmlnaW4gc2V0UXVvdGE6XSk6IHRvIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMu
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oOiBS
ZW5hbWVkIGZyb20gV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaDog
QWRkZWQuCisKKyAgICAgICAgICBUdXJuIHRoZSBub3RpZmljYXRpb24gaW50byBhIFdlYlVJIERl
bGVnYXRlIHRvIGNhbGwuIEZvbGxvd2luZworICAgICAgICAgIHRoZSBleGFtcGxlIG9mIERhdGFi
YXNlcy4KKworICAgICAgICAqIERlZmF1bHREZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUu
bToKKyAgICAgICAgKC1bV2ViRGVmYXVsdFVJRGVsZWdhdGUgd2ViVmlldzpleGNlZWRlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOl0pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKTogdXNlIHRoZSBEYXRhYmFzZXMgU2VjdXJpdHkgT3JpZ2luIHN1YmNsYXNz
LgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKTogdXNlIHRoZSBBcHBsaWNhdGlvbiBDYWNoZSBTZWN1cml0eSBPcmlnaW4gc3ViY2xh
c3MuCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oOgorCiAyMDEwLTA2
LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0RlZmF1bHRE
ZWxlZ2F0ZXMvV2ViRGVmYXVsdFVJRGVsZWdhdGUubSBiL1dlYktpdC9tYWMvRGVmYXVsdERlbGVn
YXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5tCmluZGV4IDY4ZmEwNWUuLmQxYjBiMTQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5t
CisrKyBiL1dlYktpdC9tYWMvRGVmYXVsdERlbGVnYXRlcy9XZWJEZWZhdWx0VUlEZWxlZ2F0ZS5t
CkBAIC0zMiw2ICszMiw3IEBACiAKICNpbXBvcnQgPFdlYktpdC9XZWJEZWZhdWx0VUlEZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5oPgorI2lt
cG9ydCA8V2ViS2l0L1dlYlNlY3VyaXR5T3JpZ2luUXVvdGFQcm90b2NvbHMuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9ET00uaD4KQEAgLTIyNyw2ICsyMjgsMTAgQEAgLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkOihOU01lbnVJ
dGVtICopaXRlbSBmb3IKIHsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luPFdlYlNlY3VyaXR5T3JpZ2luUXVvdGFNYW5hZ2VtZW50PiAqKW9yaWdp
bgoreworfQorCiAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkUmVwbGFj
ZVVwbG9hZEZpbGU6KE5TU3RyaW5nICopcGF0aCB1c2luZ0dlbmVyYXRlZEZpbGVuYW1lOihOU1N0
cmluZyAqKilmaWxlbmFtZQogewogICAgIHJldHVybiBOTzsKZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggYi9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmEwNmNhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisKK0BpbnRlcmZhY2UgV2Vi
RGF0YWJhc2VTZWN1cml0eU9yaWdpbiA6IFdlYlNlY3VyaXR5T3JpZ2luCitAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSBiL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MWExODcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbQpAQCAtMCwwICsxLDYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdp
bi5oIgorCisjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGlt
cGxlbWVudGF0aW9uIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4KKworLSAobG9uZyBsb25nKXVz
YWdlCit7CisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2lu
Kj4oX3ByaXZhdGUpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworLSAobG9u
ZyBsb25nKXF1b3RhCit7CisjaWYgRU5BQkxFKERBVEFCQVNFKQorICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30K
KworLy8gSWYgdGhlIHF1b3RhIGlzIHNldCB0byBhIHZhbHVlIGxvd2VyIHRoYW4gdGhlIGN1cnJl
bnQgdXNhZ2UsIHRoYXQgcXVvdGEgd2lsbAorLy8gInN0aWNrIiBidXQgbm8gZGF0YSB3aWxsIGJl
IHB1cmdlZCB0byBtZWV0IHRoZSBuZXcgcXVvdGEuIFRoaXMgd2lsbCBzaW1wbHkKKy8vIHByZXZl
bnQgbmV3IGRhdGEgZnJvbSBiZWluZyBhZGRlZCB0byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4K
Ky0gKHZvaWQpc2V0UXVvdGE6KGxvbmcgbG9uZylxdW90YQoreworI2lmIEVOQUJMRShEQVRBQkFT
RSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShyZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90YSk7CisjZW5kaWYKK30KKworQGVu
ZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIv
V2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NmEyMWY1Li4wMDAwMDAwCi0tLSBhL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJTZWN1cml0eU9yaWdpbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCi0KLSNpbXBvcnQgPFdlYkNvcmUvRGF0
YWJhc2VUcmFja2VyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLUBpbXBs
ZW1lbnRhdGlvbiBXZWJTZWN1cml0eU9yaWdpbgotLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICop
dXJsCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoS1VSTChbdXJsIGFic29sdXRlVVJMXSkpOwotICAgIG9yaWdpbi0+
cmVmKCk7Ci0gICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZSo+KG9yaWdpbi5nZXQoKSk7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAoTlNT
dHJpbmcqKXByb3RvY29sCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlP
cmlnaW4qPihfcHJpdmF0ZSktPnByb3RvY29sKCk7Ci19Ci0KLS0gKE5TU3RyaW5nKilob3N0Ci17
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkt
Pmhvc3QoKTsKLX0KLQotLy8gRGVwcmVjYXRlZC4gVXNlIGhvc3QgaW5zdGVhZC4gVGhpcyBuZWVk
cyB0byBzdGF5IGhlcmUgdW50aWwgd2Ugc2hpcCBhIG5ldyBTYWZhcmkuCi0tIChOU1N0cmluZyop
ZG9tYWluCi17Ci0gICAgcmV0dXJuIFtzZWxmIGhvc3RdOwotfQotCi0tICh1bnNpZ25lZCBzaG9y
dClwb3J0Ci17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihf
cHJpdmF0ZSktPnBvcnQoKTsKLX0KLQotLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCi17Ci0j
aWYgRU5BQkxFKERBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS51c2FnZUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZh
dGUpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotLSAodW5zaWduZWQgbG9u
ZyBsb25nKXF1b3RhCi17Ci0jaWYgRU5BQkxFKERBVEFCQVNFKQotICAgIHJldHVybiBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0K
LQotLy8gU2V0cyB0aGUgc3RvcmFnZSBxdW90YSAoaW4gYnl0ZXMpCi0vLyBJZiB0aGUgcXVvdGEg
aXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1c2FnZSwgdGhhdCBxdW90
YSB3aWxsICJzdGljayIgYnV0IG5vIGRhdGEgd2lsbCBiZSBwdXJnZWQgdG8gbWVldCB0aGUgbmV3
IHF1b3RhLiAgCi0vLyBUaGlzIHdpbGwgc2ltcGx5IHByZXZlbnQgbmV3IGRhdGEgZnJvbSBiZWlu
ZyBhZGRlZCB0byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4KLS0gKHZvaWQpc2V0UXVvdGE6KHVu
c2lnbmVkIGxvbmcgbG9uZylxdW90YQotewotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShyZWludGVycHJldF9jYXN0PFNlY3VyaXR5
T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90YSk7Ci0jZW5kaWYKLX0KLQotLSAoQk9PTClpc0VxdWFs
OihpZClhbk9iamVjdAotewotICAgIGlmICghW2FuT2JqZWN0IGlzTWVtYmVyT2ZDbGFzczpbV2Vi
U2VjdXJpdHlPcmlnaW4gY2xhc3NdXSkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAg
IAotICAgIHJldHVybiBbc2VsZiBfY29yZV0tPmVxdWFsKFthbk9iamVjdCBfY29yZV0pOwotfQot
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBpZiAoX3ByaXZhdGUpCi0gICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRlcmVmKCk7Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9wcml2YXRlKQot
ICAgICAgICByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5kZXJl
ZigpOwotICAgIFtzdXBlciBmaW5hbGl6ZV07Ci19Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IFdlYlNlY3VyaXR5T3JpZ2luIChXZWJJbnRlcm5hbCkKLQotLSAoaWQpX2luaXRXaXRoV2ViQ29y
ZVNlY3VyaXR5T3JpZ2luOihTZWN1cml0eU9yaWdpbiopb3JpZ2luCi17Ci0gICAgQVNTRVJUKG9y
aWdpbik7Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBvcmlnaW4tPnJlZigpOwotICAgIF9wcml2YXRlID0gcmVpbnRl
cnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqPihvcmlnaW4pOwotCi0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKFNlY3VyaXR5T3JpZ2luICopX2NvcmUKLXsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKTsKLX0KLQotQGVuZApk
aWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCBiL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZDY4MTcuLjAwMDAwMDAKLS0tIGEvV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLX0KLQotdHlwZWRl
ZiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiBXZWJDb3JlU2VjdXJpdHlPcmlnaW47Ci0KLUBpbnRl
cmZhY2UgV2ViU2VjdXJpdHlPcmlnaW4gKFdlYkludGVybmFsKQotCi0tIChpZClfaW5pdFdpdGhX
ZWJDb3JlU2VjdXJpdHlPcmlnaW46KFdlYkNvcmVTZWN1cml0eU9yaWdpbiAqKW9yaWdpbjsKLS0g
KFdlYkNvcmVTZWN1cml0eU9yaWdpbiAqKV9jb3JlOwotCi1AZW5kCmRpZmYgLS1naXQgYS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggYi9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM3ODM2ZjguLjAwMDAwMDAKLS0tIGEvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlNlY3Vy
aXR5T3JpZ2luUHJpdmF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUBjbGFz
cyBXZWJTZWN1cml0eU9yaWdpblByaXZhdGU7Ci0KLUBpbnRlcmZhY2UgV2ViU2VjdXJpdHlPcmln
aW4gOiBOU09iamVjdCB7Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICpfcHJpdmF0ZTsK
LX0KLQotLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwotCi0tIChOU1N0cmluZyopcHJv
dG9jb2w7Ci0tIChOU1N0cmluZyopaG9zdDsKLQotLy8gUmV0dXJucyB6ZXJvIGlmIHRoZSBwb3J0
IGlzIHRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBwcm90b2NvbCwgbm9uLXplcm8gb3RoZXJ3aXNl
Ci0tICh1bnNpZ25lZCBzaG9ydClwb3J0OwotCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRvdGFs
IHVzYWdlIG9mIGFsbCBkYXRhYmFzZXMgaW4gdGhpcyBzZWN1cml0eSBvcmlnaW4gaW4gYnl0ZXMK
LS0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZTsKLQotLSAodW5zaWduZWQgbG9uZyBsb25nKXF1
b3RhOwotLy8gU2V0cyB0aGUgc3RvcmFnZSBxdW90YSAoaW4gYnl0ZXMpCi0vLyBJZiB0aGUgcXVv
dGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1c2FnZSwgdGhhdCBx
dW90YSB3aWxsICJzdGljayIgYnV0IG5vIGRhdGEgd2lsbCBiZSBwdXJnZWQgdG8gbWVldCB0aGUg
bmV3IHF1b3RhLiAgCi0vLyBUaGlzIHdpbGwgc2ltcGx5IHByZXZlbnQgbmV3IGRhdGEgZnJvbSBi
ZWluZyBhZGRlZCB0byBkYXRhYmFzZXMgaW4gdGhhdCBvcmlnaW4KLS0gKHZvaWQpc2V0UXVvdGE6
KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YTsKLQotCi1AZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIGIv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmln
aW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWMwNjEwCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hl
U2VjdXJpdHlPcmlnaW4uaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorCitAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9u
Q2FjaGVTZWN1cml0eU9yaWdpbiA6IFdlYlNlY3VyaXR5T3JpZ2luCitAZW5kCmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9y
aWdpbi5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVNl
Y3VyaXR5T3JpZ2luLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MmNk
Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmgiCisKKyNpbXBv
cnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlP
cmlnaW4KKworLSAobG9uZyBsb25nKXVzYWdlCit7CisjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykKKyAgICBsb25nIGxvbmcgdXNhZ2U7CisgICAgaWYgKGNhY2hlU3RvcmFnZSgp
LnVzYWdlRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSksIHVzYWdlKSkKKyAgICAgICAgcmV0dXJuIHVzYWdlOworICAgIHJldHVybiAwOworI2Vsc2UK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCistIChsb25nIGxvbmcpcXVvdGEKK3sKKyNpZiBF
TkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQorICAgIGxvbmcgbG9uZyBxdW90YTsKKyAg
ICBpZiAoY2FjaGVTdG9yYWdlKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1
cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpKQorICAgICAgICByZXR1cm4gcXVvdGE7Cisg
ICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKKy0gKHZvaWQp
c2V0UXVvdGE6KGxvbmcgbG9uZylxdW90YQoreworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMpCisgICAgY2FjaGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4o
cmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpOworI2Vu
ZGlmCit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IDdkZWVhNzkuLjE3YTYxNmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTE1LDYgKzExNSw3IEBAIHB1YmxpYzoKICNlbmRpZgog
I2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJl
YWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgdmlydHVhbCB2
b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4
IDBhNTJhOWYuLjIxYzk1YWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQu
aCIKIAogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJBcHBsaWNhdGlv
bkNhY2hlU2VjdXJpdHlPcmlnaW4uaCIKKyNpbXBvcnQgIldlYkRhdGFiYXNlU2VjdXJpdHlPcmln
aW4uaCIKICNpbXBvcnQgIldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgogI2ltcG9ydCAiV2ViRWxlbWVudERpY3Rpb25h
cnkuaCIKQEAgLTU0Miw3ICs1NDQsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQogewogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3
ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2Vj
dXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOworICAgIFdl
YkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViRGF0YWJhc2VTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd29y
a2Fyb3VuZCBvbmNlIHNoaXBwaW5nIFNhZmFyaSBoYXMgdGhlIG5lY2Vzc2FyeSBkZWxlZ2F0ZSBp
bXBsZW1lbnRlZC4KICAgICBpZiAoV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihAImNvbS5hcHBs
ZS5TYWZhcmkiLCAtMSwgMy4xKSkgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcg
ZGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAvLyA1IG1lZ2FieXRlcyBzaG91bGQgaG9w
ZWZ1bGx5IGJlIGVub3VnaCB0byB0ZXN0IHN0b3JhZ2Ugc3VwcG9ydC4KQEAgLTU2MCw2ICs1NjIs
MTcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRf
dCBzcGFjZU5lZWRlZCkKIHsKICAgICAvLyBGSVhNRTogRnJlZSBzb21lIHNwYWNlLgogfQorCit2
b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0g
W1tXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNv
cmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dOworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywg
QHNlbGVjdG9yKHdlYlZpZXc6ZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JT
ZWN1cml0eU9yaWdpbjopLCB3ZWJPcmlnaW4pOworICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CisK
KyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQogI2VuZGlmCiAgICAgCiB2b2lkIFdl
YkNocm9tZUNsaWVudDo6cG9wdWxhdGVWaXNpdGVkTGlua3MoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGZiZWZmZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9L
VVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJpdHlPcmlnaW4KKy0gKGlk
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoW3VybCBhYnNvbHV0
ZVVSTF0pKTsKKyAgICBvcmlnaW4tPnJlZigpOworICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRf
Y2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUqPihvcmlnaW4uZ2V0KCkpOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKE5TU3RyaW5nKilwcm90b2NvbAoreworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wcm90b2NvbCgpOworfQor
CistIChOU1N0cmluZyopaG9zdAoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3Vy
aXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5ob3N0KCk7Cit9CisKKy8vIERlcHJlY2F0ZWQuIFVzZSBo
b3N0IGluc3RlYWQuIFRoaXMgbmVlZHMgdG8gc3RheSBoZXJlIHVudGlsIHdlIHNoaXAgYSBuZXcg
U2FmYXJpLgorLSAoTlNTdHJpbmcqKWRvbWFpbgoreworICAgIHJldHVybiBbc2VsZiBob3N0XTsK
K30KKworLSAodW5zaWduZWQgc2hvcnQpcG9ydAoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCk7Cit9CisKKy8vIE1lYW50IHRv
IGJlIGltcGxlbWVudGVkIGluIGEgc3ViY2xhc3MuCistIChsb25nIGxvbmcpdXNhZ2UKK3sKKyAg
ICByZXR1cm4gMDsKK30KKworLy8gTWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gYSBzdWJjbGFz
cy4KKy0gKGxvbmcgbG9uZylxdW90YQoreworICAgIHJldHVybiAwOworfQorCisvLyBNZWFudCB0
byBiZSBpbXBsZW1lbnRlZCBpbiBhIHN1YmNsYXNzLgorLSAodm9pZClzZXRRdW90YToobG9uZyBs
b25nKXF1b3RhCit7Cit9CisKKy0gKEJPT0wpaXNFcXVhbDooaWQpYW5PYmplY3QKK3sKKyAgICBp
ZiAoIVthbk9iamVjdCBpc01lbWJlck9mQ2xhc3M6W1dlYlNlY3VyaXR5T3JpZ2luIGNsYXNzXV0p
IHsKKyAgICAgICAgcmV0dXJuIE5POworICAgIH0KKyAgICAKKyAgICByZXR1cm4gW3NlbGYgX2Nv
cmVdLT5lcXVhbChbYW5PYmplY3QgX2NvcmVdKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7Cisg
ICAgaWYgKF9wcml2YXRlKQorICAgICAgICByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2lu
Kj4oX3ByaXZhdGUpLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9p
ZClmaW5hbGl6ZQoreworICAgIGlmIChfcHJpdmF0ZSkKKyAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmluYWxp
emVdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTZWN1cml0eU9yaWdpbiAoV2Vi
SW50ZXJuYWwpCisKKy0gKGlkKV9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjooU2VjdXJp
dHlPcmlnaW4qKW9yaWdpbgoreworICAgIEFTU0VSVChvcmlnaW4pOworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgb3Jp
Z2luLT5yZWYoKTsKKyAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlKj4ob3JpZ2luKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChTZWN1
cml0eU9yaWdpbiAqKV9jb3JlCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJp
dHlPcmlnaW4qPihfcHJpdmF0ZSk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIGIvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkNjgxNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK30KKwordHlwZWRlZiBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiBXZWJDb3JlU2VjdXJpdHlPcmlnaW47CisKK0BpbnRlcmZhY2Ug
V2ViU2VjdXJpdHlPcmlnaW4gKFdlYkludGVybmFsKQorCistIChpZClfaW5pdFdpdGhXZWJDb3Jl
U2VjdXJpdHlPcmlnaW46KFdlYkNvcmVTZWN1cml0eU9yaWdpbiAqKW9yaWdpbjsKKy0gKFdlYkNv
cmVTZWN1cml0eU9yaWdpbiAqKV9jb3JlOworCitAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jYjA1M2VmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaApAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZTsKKworQGludGVyZmFjZSBXZWJT
ZWN1cml0eU9yaWdpbiA6IE5TT2JqZWN0IHsKKyAgICBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUg
Kl9wcml2YXRlOworfQorCistIChpZClpbml0V2l0aFVSTDooTlNVUkwgKil1cmw7CisKKy0gKE5T
U3RyaW5nKilwcm90b2NvbDsKKy0gKE5TU3RyaW5nKilob3N0OworCisvLyBSZXR1cm5zIHplcm8g
aWYgdGhlIHBvcnQgaXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIHByb3RvY29sLCBub24temVy
byBvdGhlcndpc2UKKy0gKHVuc2lnbmVkIHNob3J0KXBvcnQ7CisKKy8vIE1lYW50IHRvIGJlIGlt
cGxlbWVudGVkIGluIGEgc3ViY2xhc3MuCisvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRvdGFsIHVz
YWdlIG9mIGFsbCByZWxldmFudCBpdGVtcyBpbiB0aGlzIHNlY3VyaXR5IG9yaWdpbiBpbiBieXRl
cy4KKy0gKGxvbmcgbG9uZyl1c2FnZTsKKworLy8gTWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgaW4g
YSBzdWJjbGFzcy4KKy8vIFJldHVybnMgdGhlIHF1b3RhIG9mIHRoaXMgc2VjdXJpdHkgb3JpZ2lu
IGluIGJ5dGVzLgorLSAobG9uZyBsb25nKXF1b3RhOworCisvLyBNZWFudCB0byBiZSBpbXBsZW1l
bnRlZCBpbiBhIHN1YmNsYXNzLgorLy8gU2V0cyB0aGUgc3RvcmFnZSBxdW90YSBpbiBieXRlcy4K
Ky0gKHZvaWQpc2V0UXVvdGE6KGxvbmcgbG9uZylxdW90YTsKKworQGVuZAorCmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDMyN2E3NDUuLjZiM2QzNWMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBi
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OSw2ICs4OSw4IEBAIGVudW0gewog
fTsKIAogQGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworQHByb3RvY29sIFdlYlNlY3VyaXR5T3Jp
Z2luUXVvdGFNYW5hZ2VtZW50OworQHByb3RvY29sIFdlYlNlY3VyaXR5T3JpZ2luUXVvdGFNYW5h
Z2VtZW50VW5zaWduZWQ7CiAKIEBwcm90b2NvbCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
IDxOU09iamVjdD4KIC0gKHZvaWQpYWxsb3c7CkBAIC0xMjIsNyArMTI0LDE3IEBAIGVudW0gewog
ICAgIEBwYXJhbSBvcmlnaW4gVGhlIHNlY3VyaXR5IG9yaWdpbiB0aGF0IG5lZWRzIGEgbGFyZ2Vy
IHF1b3RhLgogICAgIEBwYXJhbSBkYXRhYmFzZUlkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgb2Yg
dGhlIGRhdGFiYXNlIGludm9sdmVkLgogKi8KLS0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNl
bmRlciBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1
cml0eU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0YWJhc2U6KE5TU3RyaW5n
ICopZGF0YWJhc2VJZGVudGlmaWVyOworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbjxXZWJTZWN1cml0eU9yaWdpblF1b3RhTWFuYWdlbWVu
dD4gKilvcmlnaW4gZGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyOworCisv
KiEKKyAgICBAbWV0aG9kIHdlYlZpZXc6ZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGFGb3JTZWN1cml0eU9yaWdpbjoKKyAgICBAcGFyYW0gc2VuZGVyIFRoZSBXZWJWaWV3IHNlbmRp
bmcgdGhlIGRlbGVnYXRlIG1ldGhvZC4KKyAgICBAcGFyYW0gb3JpZ2luIFRoZSBzZWN1cml0eSBv
cmlnaW4gdGhhdCBuZWVkcyBhIGxhcmdlciBxdW90YQorICAgIEBkaXNjdXNzaW9uIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCB3aGVuIGEgcGFnZSBhdHRlbXB0cyB0byBzdG9yZSBtb3JlIGluIHRoZSBB
cHBsaWNhdGlvbiBDYWNoZQorICAgIGZvciBhbiBvcmlnaW4gdGhhbiB3YXMgYWxsb3dlZCBieSB0
aGUgcXVvdGEgKG9yIGRlZmF1bHQpIHNldCBmb3IgdGhlIG9yaWdpbi4gVGhpcyBhbGxvd3MgdGhl
CisgICAgcXVvdGEgdG8gYmUgaW5jcmVhc2VkIGZvciB0aGUgc2VjdXJpdHkgb3JpZ2luLgorKi8K
Ky0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbjxXZWJTZWN1
cml0eU9yaWdpblF1b3RhTWFuYWdlbWVudD4gKilvcmlnaW47CiAKIC0gKFdlYlZpZXcgKil3ZWJW
aWV3OihXZWJWaWV3ICopc2VuZGVyIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCB3aW5kb3dGZWF0dXJlczooTlNEaWN0aW9uYXJ5ICopZmVhdHVyZXM7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IDk1Zjk3NzYuLjNlZWQ4MjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTI1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBh
bmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKIDIwMTAtMDYtMTggIEFsZXhpcyBNZW5h
cmQgIDxhbGV4aXMubWVuYXJkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3Bw
CmluZGV4IDc4ZjVlNzkuLjA1NDZlODggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcApAQCAtNDgzLDYgKzQ4MywxMSBAQCB2b2lkIENocm9tZUNsaWVudFF0
OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3QpCiAgICAgLy8gRklYTUU6IEZyZWUgc29t
ZSBzcGFjZS4KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQorCit2b2lkIENocm9tZUNsaWVudFF0
OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5kZXggNGI1
NWViMi4uYzliM2FkYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICNpZiBF
TkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4q
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDFmYzQ2MzQuLmEz
ZDA1MWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDYtMjUgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2lu
IFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaDoKKwogMjAxMC0wNi0xNSAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNTg3NjM3Zi4uYzExNWU3
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIApAQCAtNTkwLDYg
KzU5MSwxMSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZShp
bnQ2NF90IHNwYWNlTmVlZGVkKQogICAgIC8vIEZJWE1FOiBGcmVlIHNvbWUgc3BhY2UuCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KKwordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnBvcHVsYXRlVmlz
aXRlZExpbmtzKCkKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CmluZGV4IDY5NTRmZGUuLmYxNjE0ZjggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhB
cHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKTsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA3
Y2IzZWRhLi5kODQ0NTRkIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0yNSAgSm9zZXBoIFBl
Y29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBl
ci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFd4Ojpy
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDYtMTUgIER1bWl0cnUgRGFuaWxpdWMgIDxk
dW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwIGIvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCmluZGV4IGExOTY0NGQuLjgz
NDIxMjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC00MjksNiArNDMwLDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQorCit2b2lkIENocm9tZUNsaWVudFd4OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQogI2VuZGlm
CiAKIHZvaWQgQ2hyb21lQ2xpZW50V3g6OnNjcm9sbChjb25zdCBJbnRTaXplJiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3QmKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvQ2hyb21lQ2xpZW50V3guaCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVu
dFd4LmgKaW5kZXggYjkwMGYzZS4uOWRjYjFiMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9D
aHJvbWVDbGllbnRXeC5oCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFw
cENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hv
b3Nlcj4pOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA5YTI1OWIwLi44ZjJiOGIyIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTI1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBh
bmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisK
IDIwMTAtMDYtMTcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlNDQzNTMwLi4wYjU3
ZTRhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZUNob29zZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTMzOSw2ICszNDAsMTEgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IGZlNWYxNGEuLmUwOWRmMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICB2aXJ0dWFsIHZv
aWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63091</attachid>
            <date>2010-07-30 12:10:55 -0700</date>
            <delta_ts>2010-07-30 16:39:12 -0700</delta_ts>
            <desc>[PATCH] Updated Part 1 - Checking Compilation on Other Platforms</desc>
            <filename>part-1-again.patch</filename>
            <type>text/plain</type>
            <size>17223</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTk0ZTA5MS4uNWJjNTgzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wNy0zMCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtp
bHplci4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3Jp
Z2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAgUGFydCAxIC0gQWRkIFRvdGFs
IGFuZCBQZXItT3JpZ2luIFF1b3RhIFByZWZlcmVuY2VzLgorCisgICAgICAgIEFsbG93IHRoZSBh
cHBsaWNhdGlvbiBjYWNoZSB0b3RhbCBzaXplIHRvIGJlIGEgcHJlZmVyZW5jZSwgYW5kCisgICAg
ICAgIGFkZCBhIG5ldyBwcmVmZXJlbmNlIGZvciB0aGUgZGVmYXVsdCBwZXItb3JpZ2luIHF1b3Rh
LgorCisgICAgICAgICAgSGFuZGxlIHRoZSBwZXItb3JpZ2luIHF1b3RhIGluIHRoZSBnbG9iYWwg
Y2FjaGVTdG9yYWdlKCkgb2JqZWN0LgorICAgICAgICAgIFRoZSBwZXItb3JpZ2luIHF1b3RhIHdp
bGwgYmUgdXNlZCBpbiBhIGxhdGVyIHBhcnQsIHRoaXMganVzdAorICAgICAgICAgIGhhbmRsZXMg
aW50ZXJhY3Rpb24gd2l0aCBpdCBmcm9tIGEgY2xpZW50LgorCisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzZXREZWZhdWx0T3JpZ2luUXVvdGEpOiBzZXR0ZXIKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSk6IGRlZmF1bHQgdG8gIm5vUXVvdGEiIG9uIGNvbnN0cnVjdGlvbgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOiAKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKTogY29uc3RhbnQgdG8gbWVh
biB1bmxpbWl0ZWQgc3RvcmFnZQorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmRlZmF1bHRPcmlnaW5RdW90YSk6IGFjY2Vzc29yCisKKyAgICAgICAgICBNb3ZlIGFy
b3VuZCBzb21lIGV4cG9ydHMgYXJvdW5kIGZvciBPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbnMuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
IGV4cG9ydHMuCisKIDIwMTAtMDctMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NDMxOC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDBjMTM3YzkuLmM4NjJmZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDU4LDExICs0NTgsNiBAQCBfX1pON1dl
YkNvcmUyMmNvbnRleHRNZW51SXRlbVRhZ0JvbGRFdgogX19aTjdXZWJDb3JlMjJjb3VudGVyVmFs
dWVGb3JFbGVtZW50RVBOU183RWxlbWVudEUKIF9fWk43V2ViQ29yZTIyY3JlYXRlRnJhZ21lbnRG
cm9tVGV4dEVQTlNfNVJhbmdlRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKLV9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKLV9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UxNnN0b3JlQ29weU9mQ2FjaGVFUktOU182U3RyaW5nRVBOU18yMEFwcGxpY2F0aW9u
Q2FjaGVIb3N0RQotX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE3c2V0Q2Fj
aGVEaXJlY3RvcnlFUktOU182U3RyaW5nRQotX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTE4dmFjdXVtRGF0YWJhc2VGaWxlRXYKLV9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U1ZW1wdHlFdgogX19aTjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZEMxRVBOU184RG9jdW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdtZW50
RUVFYmJiYmJOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJv
bU5vZGVzRVBOU184RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19a
TjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYK
QEAgLTE0NjUsMyArMTQ2MCwxMyBAQCBfX1pON1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQxOXNl
dE1lZGlhUGxheWVyUHJveHlFUDE5V2ViTWVkaWFQbGF5ZXJQcm94eQogX19aTjdXZWJDb3JlOUhU
TUxOYW1lczhhdWRpb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4dmlkZW9UYWdFCiAjZW5k
aWYKKworI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCitfX1pON1dlYkNvcmUy
M0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRzZXRNYXhpbXVtU2l6ZUV4CitfX1pON1dlYkNvcmUy
M0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTZzdG9yZUNvcHlPZkNhY2hlRVJLTlNfNlN0cmluZ0VQ
TlNfMjBBcHBsaWNhdGlvbkNhY2hlSG9zdEUKK19fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UxN3NldENhY2hlRGlyZWN0b3J5RVJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTIz
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxOHZhY3V1bURhdGFiYXNlRmlsZUV2CitfX1pON1dlYkNv
cmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMjFzZXREZWZhdWx0T3JpZ2luUXVvdGFFeAorX19a
TjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbXB0eUV2CitfX1pOSzdXZWJDb3Jl
MjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTExbWF4aW11bVNpemVFdgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhZjYzODcuLjZkMzhiODYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTkzMCw2
ICsxOTkzMCw3IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24g
PSAiWGNvZGUgMi40IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1Nj
YW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKaW5kZXggOWExMTMwNy4uNTU1N2Q0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDE0LDYgKzQxNCwxMSBA
QCBpbnQ2NF90IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzcGFjZU5lZWRlZChpbnQ2NF90IGNh
Y2hlVG9TYXZlKQogICAgIHJldHVybiBzcGFjZU5lZWRlZDsKIH0KIAordm9pZCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c2V0RGVmYXVsdE9yaWdpblF1b3RhKGludDY0X3QgcXVvdGEpCit7Cisg
ICAgbV9kZWZhdWx0T3JpZ2luUXVvdGEgPSBxdW90YTsKK30KKwogYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZXhlY3V0ZVNRTENvbW1hbmQoY29uc3QgU3RyaW5nJiBzcWwpCiB7CiAgICAg
QVNTRVJUKG1fZGF0YWJhc2UuaXNPcGVuKCkpOwpAQCAtMTEyMCw4ICsxMTI1LDkgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2hlY2tGb3JNYXhTaXplUmVhY2hlZCgpCiB9CiAKIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpIAotICAgIDog
bV9tYXhpbXVtU2l6ZShJTlRfTUFYKQorICAgIDogbV9tYXhpbXVtU2l6ZShBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bm9RdW90YSgpKQogICAgICwgbV9pc01heGltdW1TaXplUmVhY2hlZChmYWxz
ZSkKKyAgICAsIG1fZGVmYXVsdE9yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpu
b1F1b3RhKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IGFhYTVjOWMuLjM0MmY2YTkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtNTQsNiAr
NTQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01heGltdW1TaXplUmVhY2hlZCgpIGNvbnN0Owog
ICAgIGludDY0X3Qgc3BhY2VOZWVkZWQoaW50NjRfdCBjYWNoZVRvU2F2ZSk7CiAKKyAgICBpbnQ2
NF90IGRlZmF1bHRPcmlnaW5RdW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdE9yaWdpblF1
b3RhOyB9CisgICAgdm9pZCBzZXREZWZhdWx0T3JpZ2luUXVvdGEoaW50NjRfdCBxdW90YSk7CisK
ICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYp
OyAvLyBDYWNoZSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgogICAgIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2Fj
aGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9t
IGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgogCkBAIC03Niw2ICs3OSw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGNhY2hlR3JvdXBTaXplKGNvbnN0IFN0cmluZyYgbWFuaWZlc3RVUkwsIGludDY0X3Qq
IHNpemUpOwogICAgIGJvb2wgZGVsZXRlQ2FjaGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0
VVJMKTsKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmlsZSgpOworCisgICAgc3RhdGljIGludDY0
X3Qgbm9RdW90YSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgp
OyB9CiBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgUGFzc1Jl
ZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKQEAg
LTEwNSw2ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIGludDY0X3QgbV9tYXhpbXVtU2l6ZTsKICAg
ICBib29sIG1faXNNYXhpbXVtU2l6ZVJlYWNoZWQ7CiAKKyAgICBpbnQ2NF90IG1fZGVmYXVsdE9y
aWdpblF1b3RhOworCiAgICAgU1FMaXRlRGF0YWJhc2UgbV9kYXRhYmFzZTsKIAogICAgIC8vIElu
IG9yZGVyIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gcmVzb3VyY2UgZXhpc3RzIGlu
IGFuIGFwcGxpY2F0aW9uIGNhY2hlLApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwMTM3ODBkLi42NDdmNjYzIDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQwIEBACisyMDEwLTA3LTMwICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgorCisgICAgICAgIExpbWl0
IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAo
UXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDA2MjcKKworICAgICAgICBQYXJ0IDEgLSBBZGQgVG90YWwgYW5kIFBlci1PcmlnaW4gUXVvdGEg
UHJlZmVyZW5jZXMuCisKKyAgICAgICAgQWxsb3cgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIHRvdGFs
IHNpemUgdG8gYmUgYSBwcmVmZXJlbmNlLCBhbmQKKyAgICAgICAgYWRkIGEgbmV3IHByZWZlcmVu
Y2UgZm9yIHRoZSBkZWZhdWx0IHBlci1vcmlnaW4gcXVvdGEuCisKKyAgICAgICAgICBTdG9yYWdl
IHF1b3RhcyB3ZXJlIGludDY0X3QgKGxvbmcgbG9uZykuIEJvaWxlcnBsYXRlIGZvcgorICAgICAg
ICAgIHRoZXNlIHR5cGVzIGFkZGVkIGZvciBjb25zaXN0ZW5jeS4KKworICAgICAgICAqIE1pc2Mv
V2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmg6CisgICAgICAgICogTWlzYy9XZWJOU0RpY3Rpb25hcnlF
eHRyYXMubToKKyAgICAgICAgKC1bTlNNdXRhYmxlRGljdGlvbmFyeSBfd2Via2l0X3NldExvbmdM
b25nOmZvcktleTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmg6IHNldHRlcnMgYW5kIGFjY2Vzc29ycyBmb3IgV2ViQ29yZSdzIGNhY2hlU3RvcmFnZS4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tOgorICAgICAg
ICAoK1tXZWJBcHBsaWNhdGlvbkNhY2hlIG1heGltdW1TaXplOl0pOgorICAgICAgICAoK1tXZWJB
cHBsaWNhdGlvbkNhY2hlIHNldE1heGltdW1TaXplOl0pOgorICAgICAgICAoK1tXZWJBcHBsaWNh
dGlvbkNhY2hlIGRlZmF1bHRPcmlnaW5RdW90YV0pOgorICAgICAgICAoK1tXZWJBcHBsaWNhdGlv
bkNhY2hlIHNldERlZmF1bHRPcmlnaW5RdW90YTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKTogZGVmYXVsdHMgdG8g
bm9RdW90YSBmb3IgYm90aCBwcmVmZXJlbmNlcy4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X2xvbmdMb25nVmFsdWVGb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRM
b25nTG9uZ1ZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYXBwbGlj
YXRpb25DYWNoZVRvdGFsUXVvdGFdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0QXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGE6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGFw
cGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGFdKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgc2V0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0
aW9uOl0pOiByZXNwZWN0IHVwZGF0ZXMgdG8gdGhlIHByZWZlcmVuY2VzLgorCiAyMDEwLTA3LTI2
ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0
aW9uYXJ5RXh0cmFzLmggYi9XZWJLaXQvbWFjL01pc2MvV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgK
aW5kZXggOTU0NDVmOC4uMGJiYzVkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYk5T
RGljdGlvbmFyeUV4dHJhcy5oCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlF
eHRyYXMuaApAQCAtNDMsNSArNDMsNiBAQAogLSAodm9pZClfd2Via2l0X3NldEludDooaW50KXZh
bHVlIGZvcktleTooaWQpa2V5OwogLSAodm9pZClfd2Via2l0X3NldEZsb2F0OihmbG9hdCl2YWx1
ZSBmb3JLZXk6KGlkKWtleTsKIC0gKHZvaWQpX3dlYmtpdF9zZXRCb29sOihCT09MKXZhbHVlIGZv
cktleTooaWQpa2V5OworLSAodm9pZClfd2Via2l0X3NldExvbmdMb25nOihsb25nIGxvbmcpdmFs
dWUgZm9yS2V5OihpZClrZXk7CiAtICh2b2lkKV93ZWJraXRfc2V0VW5zaWduZWRMb25nTG9uZzoo
dW5zaWduZWQgbG9uZyBsb25nKXZhbHVlIGZvcktleTooaWQpa2V5OwogQGVuZApkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9NaXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tIGIvV2ViS2l0L21hYy9N
aXNjL1dlYk5TRGljdGlvbmFyeUV4dHJhcy5tCmluZGV4IGE0N2ZkMGIuLjM2NmYzNjEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJOU0RpY3Rpb25hcnlFeHRyYXMubQorKysgYi9XZWJL
aXQvbWFjL01pc2MvV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLm0KQEAgLTEwOCw2ICsxMDgsMTMgQEAg
LSh2b2lkKV93ZWJraXRfc2V0Qm9vbDooQk9PTCl2YWx1ZSBmb3JLZXk6KGlkKWtleQogICAgIFtv
YmplY3QgcmVsZWFzZV07CiB9CiAKKy0gKHZvaWQpX3dlYmtpdF9zZXRMb25nTG9uZzoobG9uZyBs
b25nKXZhbHVlIGZvcktleTooaWQpa2V5Cit7CisgICAgTlNOdW1iZXIgKm9iamVjdCA9IFtbTlNO
dW1iZXIgYWxsb2NdIGluaXRXaXRoTG9uZ0xvbmc6dmFsdWVdOworICAgIFtzZWxmIHNldE9iamVj
dDpvYmplY3QgZm9yS2V5OmtleV07CisgICAgW29iamVjdCByZWxlYXNlXTsKK30KKwogLSAodm9p
ZClfd2Via2l0X3NldFVuc2lnbmVkTG9uZ0xvbmc6KHVuc2lnbmVkIGxvbmcgbG9uZyl2YWx1ZSBm
b3JLZXk6KGlkKWtleQogewogICAgIE5TTnVtYmVyICpvYmplY3QgPSBbW05TTnVtYmVyIGFsbG9j
XSBpbml0V2l0aFVuc2lnbmVkTG9uZ0xvbmc6dmFsdWVdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLmggYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCAyODIxNTdmLi5lMGZiNTIzIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUu
aAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaApA
QCAtMjgsNSArMjgsMTAgQEAKIEBpbnRlcmZhY2UgV2ViQXBwbGljYXRpb25DYWNoZTogTlNPYmpl
Y3QgewogfQogCi0rICh2b2lkKXNldE1heGltdW1TaXplOih1bnNpZ25lZCBsb25nIGxvbmcpc2l6
ZTsKKysgKGxvbmcgbG9uZyltYXhpbXVtU2l6ZTsKKysgKHZvaWQpc2V0TWF4aW11bVNpemU6KGxv
bmcgbG9uZylzaXplOworCisrIChsb25nIGxvbmcpZGVmYXVsdE9yaWdpblF1b3RhOworKyAodm9p
ZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcgbG9uZylzaXplOworCiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0gYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KaW5kZXggNGNh
NzQ5Yy4uNWMyYTIwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJB
cHBsaWNhdGlvbkNhY2hlLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBw
bGljYXRpb25DYWNoZS5tbQpAQCAtMzIsMTMgKzMyLDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBAaW1wbGVtZW50YXRpb24gV2ViQXBwbGljYXRpb25DYWNoZQogCi0rICh2b2lkKXNl
dE1heGltdW1TaXplOih1bnNpZ25lZCBsb25nIGxvbmcpc2l6ZQorKyAobG9uZyBsb25nKW1heGlt
dW1TaXplCit7CisgICAgcmV0dXJuIGNhY2hlU3RvcmFnZSgpLm1heGltdW1TaXplKCk7Cit9CisK
KysgKHZvaWQpc2V0TWF4aW11bVNpemU6KGxvbmcgbG9uZylzaXplCiB7CiAgICAgY2FjaGVTdG9y
YWdlKCkuZW1wdHkoKTsKICAgICBjYWNoZVN0b3JhZ2UoKS52YWN1dW1EYXRhYmFzZUZpbGUoKTsK
ICAgICBjYWNoZVN0b3JhZ2UoKS5zZXRNYXhpbXVtU2l6ZShzaXplKTsKIH0KIAorKyAobG9uZyBs
b25nKWRlZmF1bHRPcmlnaW5RdW90YQoreworICAgIHJldHVybiBjYWNoZVN0b3JhZ2UoKS5kZWZh
dWx0T3JpZ2luUXVvdGEoKTsKK30KKworKyAodm9pZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxv
bmcgbG9uZylzaXplCit7CisgICAgY2FjaGVTdG9yYWdlKCkuc2V0RGVmYXVsdE9yaWdpblF1b3Rh
KHNpemUpOworfQorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IDQxNzVhNWQuLmE4ZWJkY2EgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTgzLDYgKzgzLDgg
QEAKICNkZWZpbmUgV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSBA
IldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdl
YktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5jZUtleSBAIldlYktpdEVuYWJs
ZUZ1bGxEb2N1bWVudFRlYXJkb3duIgogI2RlZmluZSBXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkIgorI2RlZmluZSBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YSBA
IldlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhIgorI2RlZmluZSBXZWJLaXRBcHBsaWNh
dGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhIEAiV2ViS2l0QXBwbGljYXRpb25DYWNoZURlZmF1
bHRPcmlnaW5RdW90YSIKICNkZWZpbmUgV2ViS2l0Wm9vbXNUZXh0T25seVByZWZlcmVuY2VLZXkg
QCJXZWJLaXRab29tc1RleHRPbmx5IgogI2RlZmluZSBXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkUHJlZmVyZW5jZUtleSBAIldlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQiCiAjZGVmaW5lIFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktp
dFhTU0F1ZGl0b3JFbmFibGVkIgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4
IDYzOTE1ZGMuLjdlYzI0MzkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAg
LTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9y
dCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCiAKKyNpbXBvcnQgIldlYkFwcGxpY2F0aW9u
Q2FjaGUuaCIKICNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKICNpbXBvcnQgIldlYktpdE5TU3Ry
aW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1CaXRzLmgiCkBAIC0zNyw2ICszOCw3
IEBACiAjaW1wb3J0ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJOU0RpY3Rp
b25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJD
b3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAKIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNl
c0NoYW5nZWROb3RpZmljYXRpb24gPSBAIldlYlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlv
biI7CiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uID0gQCJXZWJQ
cmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24iOwpAQCAtMTcwLDYgKzE3Miw4IEBAIHN0YXRp
YyBXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWxGb3JNYWluQnVuZGxlKHZvaWQpCiAtICh2b2lkKV9z
ZXRJbnRlZ2VyVmFsdWU6KGludCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwogLSAoZmxv
YXQpX2Zsb2F0VmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwogLSAodm9pZClfc2V0RmxvYXRW
YWx1ZTooZmxvYXQpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldExv
bmdMb25nVmFsdWU6KGxvbmcgbG9uZyl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAo
bG9uZyBsb25nKV9sb25nTG9uZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKIC0gKHZvaWQp
X3NldFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZToodW5zaWduZWQgbG9uZyBsb25nKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXk7CiAtICh1bnNpZ25lZCBsb25nIGxvbmcpX3Vuc2lnbmVkTG9uZ0xv
bmdWYWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CiBAZW5kCkBAIC0zNjQsNiArMzY4LDggQEAg
c3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9pZCkKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRIVE1MNVRyZWVCdWlsZGVy
RW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCAgV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRNZW1vcnlJbmZvRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6V2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9u
Q2FjaGVUb3RhbFF1b3RhLAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOldl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNh
dGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhLAogICAgICAgICBuaWxdOwogCiAgICAgLy8gVGhp
cyB2YWx1ZSBzaG91bGRuJ3QgZXZlciBjaGFuZ2UsIHdoaWNoIGlzIGFzc3VtZWQgaW4gdGhlIGlu
aXRpYWxpemF0aW9uIG9mIFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSBhYm92ZQpA
QCAtNDYxLDYgKzQ2NywyMyBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFp
bkJ1bmRsZSh2b2lkKQogICAgIFtzZWxmIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0
aW9uXTsKIH0KIAorLSAobG9uZyBsb25nKV9sb25nTG9uZ1ZhbHVlRm9yS2V5OihOU1N0cmluZyAq
KWtleQoreworICAgIGlkIG8gPSBbc2VsZiBfdmFsdWVGb3JLZXk6a2V5XTsKKyAgICByZXR1cm4g
W28gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihsb25nTG9uZ1ZhbHVlKV0gPyBbbyBsb25n
TG9uZ1ZhbHVlXSA6IDA7Cit9CisKKy0gKHZvaWQpX3NldExvbmdMb25nVmFsdWU6KGxvbmcgbG9u
Zyl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgaWYgKFtzZWxmIF9sb25nTG9u
Z1ZhbHVlRm9yS2V5OmtleV0gPT0gdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICBOU1N0cmlu
ZyAqX2tleSA9IEtFWShrZXkpOworICAgIFtfcHJpdmF0ZS0+dmFsdWVzIF93ZWJraXRfc2V0TG9u
Z0xvbmc6dmFsdWUgZm9yS2V5Ol9rZXldOworICAgIGlmIChfcHJpdmF0ZS0+YXV0b3NhdmVzKQor
ICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRPYmplY3Q6
W05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzp2YWx1ZV0gZm9yS2V5Ol9rZXldOworICAgIFtz
ZWxmIF9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VzTm90aWZpY2F0aW9uXTsKK30KKwogLSAodW5zaWdu
ZWQgbG9uZyBsb25nKV91bnNpZ25lZExvbmdMb25nVmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5
CiB7CiAgICAgaWQgbyA9IFtzZWxmIF92YWx1ZUZvcktleTprZXldOwpAQCAtOTczLDYgKzk5Niwz
MSBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQog
ICAgIFtzZWxmIF9zZXRGbG9hdFZhbHVlOmZhY3RvciBmb3JLZXk6V2ViS2l0UERGU2NhbGVGYWN0
b3JQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoaW50NjRfdClhcHBsaWNhdGlvbkNhY2hlVG90YWxR
dW90YQoreworICAgIEFTU0VSVChbc2VsZiBfbG9uZ0xvbmdWYWx1ZUZvcktleTpXZWJLaXRBcHBs
aWNhdGlvbkNhY2hlVG90YWxRdW90YV0gPT0gW1dlYkFwcGxpY2F0aW9uQ2FjaGUgbWF4aW11bVNp
emVdKTsKKyAgICByZXR1cm4gW3NlbGYgX2xvbmdMb25nVmFsdWVGb3JLZXk6V2ViS2l0QXBwbGlj
YXRpb25DYWNoZVRvdGFsUXVvdGFdOworfQorCistICh2b2lkKXNldEFwcGxpY2F0aW9uQ2FjaGVU
b3RhbFF1b3RhOihpbnQ2NF90KXF1b3RhCit7CisgICAgW3NlbGYgX3NldExvbmdMb25nVmFsdWU6
cXVvdGEgZm9yS2V5OldlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhXTsKKworICAgIC8v
IEFwcGxpY2F0aW9uIENhY2hlIFByZWZlcmVuY2VzIGFyZSBzdG9yZWQgb24gdGhlIGdsb2JhbCBj
YWNoZSBzdG9yYWdlIG1hbmFnZXIsIG5vdCBpbiBTZXR0aW5ncy4KKyAgICBbV2ViQXBwbGljYXRp
b25DYWNoZSBzZXRNYXhpbXVtU2l6ZTpxdW90YV07Cit9CisKKy0gKGludDY0X3QpYXBwbGljYXRp
b25DYWNoZURlZmF1bHRPcmlnaW5RdW90YQoreworICAgIEFTU0VSVChbc2VsZiBfbG9uZ0xvbmdW
YWx1ZUZvcktleTpXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhXSA9PSBb
V2ViQXBwbGljYXRpb25DYWNoZSBkZWZhdWx0T3JpZ2luUXVvdGFdKTsKKyAgICByZXR1cm4gW3Nl
bGYgX2xvbmdMb25nVmFsdWVGb3JLZXk6V2ViS2l0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmln
aW5RdW90YV07Cit9CisKKy0gKHZvaWQpc2V0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5R
dW90YTooaW50NjRfdClxdW90YQoreworICAgIFtzZWxmIF9zZXRMb25nTG9uZ1ZhbHVlOnF1b3Rh
IGZvcktleTpXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhXTsKK30KKwog
LSAoUERGRGlzcGxheU1vZGUpUERGRGlzcGxheU1vZGUKIHsKICAgICBQREZEaXNwbGF5TW9kZSB2
YWx1ZSA9IFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0UERGRGlzcGxheU1vZGVQcmVm
ZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApp
bmRleCAwNzNiMzY0Li4wMWYyYWE4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCkBAIC0xMzQsNiArMTM0LDEyIEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJl
ZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uOwogLSAoZmxvYXQpUERGU2NhbGVGYWN0b3I7CiAt
ICh2b2lkKXNldFBERlNjYWxlRmFjdG9yOihmbG9hdClzY2FsZTsKIAorLSAoaW50NjRfdClhcHBs
aWNhdGlvbkNhY2hlVG90YWxRdW90YTsKKy0gKHZvaWQpc2V0QXBwbGljYXRpb25DYWNoZVRvdGFs
UXVvdGE6KGludDY0X3QpcXVvdGE7CisKKy0gKGludDY0X3QpYXBwbGljYXRpb25DYWNoZURlZmF1
bHRPcmlnaW5RdW90YTsKKy0gKHZvaWQpc2V0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5R
dW90YTooaW50NjRfdClxdW90YTsKKwogLSAoV2ViS2l0RWRpdGFibGVMaW5rQmVoYXZpb3IpZWRp
dGFibGVMaW5rQmVoYXZpb3I7CiAtICh2b2lkKXNldEVkaXRhYmxlTGlua0JlaGF2aW9yOihXZWJL
aXRFZGl0YWJsZUxpbmtCZWhhdmlvciliZWhhdmlvcjsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCAzZDg3OGJjLi5hZWZkNTZiIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzQsNiArMzQsNyBA
QAogI2ltcG9ydCAiRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IldlYkFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJX
ZWJDYWNoZS5oIgpAQCAtMTQ0MCw2ICsxNDQxLDkgQEAgc3RhdGljIGJvb2wgZmFzdERvY3VtZW50
VGVhcmRvd25FbmFibGVkKCkKICAgICBzZXR0aW5ncy0+c2V0SFRNTDVUcmVlQnVpbGRlckVuYWJs
ZWRfRE9fTk9UX1VTRShbcHJlZmVyZW5jZXMgaHRtbDVUcmVlQnVpbGRlckVuYWJsZWRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKFtwcmVmZXJlbmNlcyBw
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0TWVtb3J5SW5m
b0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1lbW9yeUluZm9FbmFibGVkXSk7CisKKyAgICAvLyBBcHBs
aWNhdGlvbiBDYWNoZSBQcmVmZXJlbmNlcyBhcmUgc3RvcmVkIG9uIHRoZSBnbG9iYWwgY2FjaGUg
c3RvcmFnZSBtYW5hZ2VyLCBub3QgaW4gU2V0dGluZ3MuCisgICAgW1dlYkFwcGxpY2F0aW9uQ2Fj
aGUgc2V0RGVmYXVsdE9yaWdpblF1b3RhOltwcmVmZXJlbmNlcyBhcHBsaWNhdGlvbkNhY2hlRGVm
YXVsdE9yaWdpblF1b3RhXV07CiB9CiAKIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBv
LCBTRUwgcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63254</attachid>
            <date>2010-08-02 13:44:08 -0700</date>
            <delta_ts>2010-08-02 19:33:31 -0700</delta_ts>
            <desc>[PATCH] Part 5 - Refactor Per Origin Quota Management</desc>
            <filename>quota-management.patch</filename>
            <type>text/plain</type>
            <size>30292</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc1
MTgxZTYuLjY5OGY4ZjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA4LTAyICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdp
biBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBhcnQgNSAtIFJlZmFjdG9yIFF1
b3RhIE1hbmFnZW1lbnQgaW4gV2ViU2VjdXJpdHlPcmlnaW4gaW50byBNYW5hZ2VycworCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUXVvdGEgTWFu
YWdlcnMsIHJlbW92ZSBvbGQgU2VjdXJpdHlPcmlnaW4gc3ViY2xhc3Nlcy4KKwogMjAxMC0wNy0z
MSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzQzMzA3PiBNYWtlIHN1cmUgYWxsIHByaXZhdGUgaGVhZGVycyBhcmUgY29w
aWVkIHRvIFByaXZhdGVIZWFkZXJzIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU0NDdiN2YuLjUyZDViNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMywxMyArMzEzLDE0IEBACiAJCTkzRUIxNzhEMDlG
ODhENDYwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0VCMTc4QzA5Rjg4RDQ2MDA5MUY4RkYgLyog
V2ViU3lzdGVtSW50ZXJmYWNlLm1tICovOyB9OwogCQk5M0VCMTc4RjA5Rjg4RDUxMDA5MUY4RkYg
LyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJm
YWNlLmggKi87IH07CiAJCTkzRkRFOTMzMEQ3OUNBRjMwMDc0RjAyOSAvKiBXZWJIaXN0b3J5SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RkRFOTMyMEQ3OUNBRjMwMDc0RjAyOSAvKiBXZWJIaXN0b3J5SW50ZXJuYWwuaCAqLzsgfTsKKwkJ
QTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RTJGMjIxMjA3NDlFNjAwMDQ4
REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1REVGQzBBMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0
eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsK
IAkJQTVERUZDMEIxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA4
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi87IH07CiAJ
CUE1REVGQzBDMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA5MTFE
NTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNURFRkMwRjExRDUzNDNFMDA4
ODUyNzMgLyogV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdl
YkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaCAqLzsgfTsKLQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1
MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMgLyogV2Vi
RGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsKLQkJQTVERUZDMTMxMUQ1MzQ0QjAwODg1
MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMTExMUQ1MzQ0QjAwODg1Mjcz
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oICovOyB9OwotCQlBNURFRkMx
NDExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMTIx
MUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbSAq
LzsgfTsKKwkJQTVERUZDMEYxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURF
RkMwRDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNURFRkMxMDExRDUz
NDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMg
LyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi87IH07CisJCUE1REVGQzEzMTFENTM0NEIw
MDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMxMTExRDUzNDRCMDA4ODUy
NzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oICovOyB9OworCQlBNURFRkMx
NDExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzEyMTFE
NTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tICovOyB9
OwogCQlBNzA5MzZBRjBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOTM2QUQwQjU2MDhEQzAw
Q0RCNDhFIC8qIFdlYkRyYWdDbGllbnQuaCAqLzsgfTsKIAkJQTcwOTM2QjAwQjU2MDhEQzAwQ0RC
NDhFIC8qIFdlYkRyYWdDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzA5MzZBRTBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5t
bSAqLzsgfTsKIAkJQTdEM0M1QkMwQjU3NzNDNTAwMkNBNDUwIC8qIFdlYlBhc3RlYm9hcmRIZWxw
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDND
NUJBMEI1NzczQzUwMDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLmggKi87IH07CkBAIC02
MDgsMTMgKzYwOSwxNCBAQAogCQk5Q0FFOUQwNzAyNTJBNDEzMEVDQTE2RUEgLyogV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5Q0UxRjhBMzAyQTVDNkYzMEVDQTJB
Q0QgLyogV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
OUNGMEUyNDkwMjEzNjFCMDBFQ0ExNkVBIC8qIFdlYkZyYW1lUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
KwkJQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJRdW90YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5
T3JpZ2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2Vj
dXJpdHlPcmlnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1REVGQzA4MTFE
NTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUZDMDkxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdp
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNURFRkMwRTExRDUzNDNFMDA4ODUy
NzMgLyogV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1REVGQzEyMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlv
bkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFz
ZVF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRh
YmFzZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMw
RTExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVERUZDMTExMUQ1MzQ0QjAwODg1Mjcz
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBw
bGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFEMEI1NjA4REMwMENEQjQ4RSAvKiBXZWJEcmFn
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEcmFnQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFFMEI1NjA4REMwMENEQjQ4
RSAvKiBXZWJEcmFnQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkRyYWdDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
RDNDNUJBMEI1NzczQzUwMDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhc3RlYm9hcmRIZWxwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2OSw2ICs5NzEsNyBAQAogCQkJCUY1MDg5NDZBMDJCNzFE
NTkwMThBOUNENCAvKiBXZWJOU1ZpZXdFeHRyYXMubSAqLywKIAkJCQk5MzQ1RERBRTAzNjVGQjI3
MDA4NjM1Q0UgLyogV2ViTlNXaW5kb3dFeHRyYXMuaCAqLywKIAkJCQk5MzQ1RERBRjAzNjVGQjI3
MDA4NjM1Q0UgLyogV2ViTlNXaW5kb3dFeHRyYXMubSAqLywKKwkJCQlBNTdFMkYyMjEyMDc0OUU2
MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJRjU5NjY4QzgwMkFEMjkyMzAx
ODYzNUNBIC8qIFdlYlN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCUY1OTY2OEM5MDJBRDI5MjMw
MTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IubW0gKi8sCiAJCQkJREQ3Q0RFRTYwQTIzQkE5
RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLywKQEAgLTEwMjAsOCArMTAyMyw4IEBA
CiAJCQkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAq
LywKIAkJCQk1MUFFREVGMDBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50
ZXJuYWwuaCAqLywKIAkJCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJpdmF0ZS5oICovLAotCQkJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJE
YXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggKi8sCi0JCQkJQTVERUZDMEUxMUQ1MzQzRTAwODg1Mjcz
IC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0gKi8sCisJCQkJQTVERUZDMEQxMUQ1MzQz
RTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggKi8sCisJCQkJQTVERUZDMEUx
MUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAogCQkJCTUx
MUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywK
IAkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lm1tICovLAogCQkJKTsKQEAgLTEyMzgsOCArMTI0MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovLAog
CQkJCUI2ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tICov
LAotCQkJCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlU2Vj
dXJpdHlPcmlnaW4uaCAqLywKLQkJCQlBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBw
bGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tICovLAorCQkJCUE1REVGQzExMTFENTM0NEIw
MDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggKi8sCisJCQkJQTVE
RUZDMTIxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIu
bW0gKi8sCiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRCRjUxIC8qIFdlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCiAJCQkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9t
ZUNsaWVudC5oICovLAogCQkJCTE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVD
bGllbnQubW0gKi8sCkBAIC0xNTY5LDggKzE1NzIsOSBAQAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMw
MDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZD
MEIxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1REVGQzBDMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdp
blByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1REVGQzBGMTFENTM0M0UwMDg4NTI3MyAv
KiBXZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNURFRkMx
MzExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNURFRkMwRjExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1REVGQzEzMTFENTM0NEIwMDg4
NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTE5MzAsOCArMTkzNCw4IEBACiAJCQkJMEZEM0IwRjkxMDc2QzNGNzAwMDM5
Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAx
MDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTVERUZDMEExMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlU2Vj
dXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNURFRkMxNDExRDUzNDRCMDA4ODUy
NzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVERUZDMTQxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFw
cGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGE4ZWI3
Yi4uOGYzZmMxOCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMC0wOC0wMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDUgLSBSZWZhY3Rv
ciBRdW90YSBNYW5hZ2VtZW50IGluIFdlYlNlY3VyaXR5T3JpZ2luIGludG8gTWFuYWdlcnMKKwor
ICAgICAgICBQZXItT3JpZ2luIHF1b3RhcyBleGlzdCBmb3IgRGF0YWJhc2VzIGFuZCBBcHBsaWNh
dGlvbiBDYWNoZXMuIENsaWVudHMKKyAgICAgICAgZ2l2ZW4gYSBXZWJTZWN1cml0eU9yaWdpbiBo
YXZlIHRoZSBhYmlsaXR5IHRvIHNldCB0aGUgcXVvdGEgZm9yIGFueQorICAgICAgICBwZXItb3Jp
Z2luIHF1b3RhIHR5cGUuIFRoaXMgcHV0cyBxdW90YSBtYW5hZ2VtZW50IGludG8gYW4gaW50ZXJm
YWNlCisgICAgICAgIGFuZCBXZWJTZWN1cml0eU9yaWdpbiBhbGxvd3MgYWNjZXNzIHRvIHF1b3Rh
IG1hbmFnZXJzIGZvciB0aGUKKyAgICAgICAgZGlmZmVyZW50IHR5cGVzIG9mIHF1b3Rhcy4KKwor
ICAgICAgICAgIFRoZSBXZWJRdW90YU1hbmFnZXIgaW50ZXJmYWNlIGFsbG93cyBxdWVyeWluZyBh
bmQgbW9kaWZ5aW5nIGEKKyAgICAgICAgICBwZXItb3JpZ2luIHF1b3RhLiBUaGlzIGlzIGltcGxl
bWVudGVkIGZvciBib3RoIERhdGFiYXNlcyBhbmQKKyAgICAgICAgICBBcHBsaWNhdGlvbiBDYWNo
ZXMuCisKKyAgICAgICAgKiBNaXNjL1dlYlF1b3RhTWFuYWdlci5oOiBBZGRlZC4gSW50ZXJmYWNl
IGZvciBxdW90YSBtYW5hZ2VtZW50ICh1c2FnZSwgcXVvdGEsIHNldFF1b3RhKS4KKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFN0
b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJE
YXRhYmFzZVF1b3RhTWFuYWdlciBvcmlnaW5dKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90
YU1hbmFnZXIgdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgcXVv
dGFdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XSk6Cisg
ICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmg6IFJlbW92ZWQuCisg
ICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhTWFuYWdlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90
YU1hbmFnZXIgb3JpZ2luXSk6CisgICAgICAgICgtW1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1h
bmFnZXIgdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdl
ciBxdW90YV0pOgorICAgICAgICAoLVtXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyIHNl
dFF1b3RhOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZS5oOiBBZGRlZCBhIGNhdGVnb3J5IHRvIGFjY2VzcyBtYW5hZ2Vycy4KKworICAgICAgICAg
IFJlbW92ZSB0aGUgV2ViU2VjdXJpdHlPcmlnaW4gc3ViLWNsYXNzZXMuIE1hbmFnZXJzIGFyZSBi
ZXR0ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2Vj
dXJpdHlPcmlnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW06IFJlbW92ZWQuCisKKyAgICAgICAgICBDaGFu
Z2Ugb2xkIHN0eWxlIGNhbGxzIHRvIG1ha2UgdXNlIG9mIHRoZSBtYW5hZ2Vycy4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9t
ZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVu
dDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3Jp
Z2luIGFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXJdKToKKyAgICAgICAgKC1bV2ViU2VjdXJp
dHlPcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdKToKKwogMjAxMC0wOC0wMiAgSmVyZW15IE9y
bG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGVjdWxhdGl2ZSByZXZlcnQg
b2YgNjQ0MjUgZHVlIHRvIENocm9taXVtIGluc3RhYmlsaXR5CmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL01pc2MvV2ViUXVvdGFNYW5hZ2VyLmggYi9XZWJLaXQvbWFjL01pc2MvV2ViUXVvdGFNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJlZDNhMgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJRdW90YU1hbmFnZXIuaApAQCAtMCwwICsx
LDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNs
YXNzIFdlYlNlY3VyaXR5T3JpZ2luOworCisvKiEKKyAgICBAcHJvdG9jb2wgV2ViUXVvdGFNYW5h
Z2VyCisgICAgQGRpc2N1c3Npb24gVGhpcyBwcm90b2NvbCBpcyB1c2VkIHRvIHZpZXcgYW5kIG1h
bmlwdWxhdGUgYSBwZXItb3JpZ2luCisgICAgc3RvcmFnZSBxdW90YS4KKyovCitAcHJvdG9jb2wg
V2ViUXVvdGFNYW5hZ2VyCisKKy8qIQorICAgIEBtZXRob2QgaW5pdFdpdGhPcmlnaW46CisgICAg
QHBhcmFtIFRoZSBzZWN1cml0eSBvcmlnaW4gdGhpcyB3aWxsIG1hbmFnZS4KKyAgICBAcmVzdWx0
IEEgbmV3IFdlYlF1b3RhTWFuYWdlciBvYmplY3QuCisqLworLSAoaWQpaW5pdFdpdGhPcmlnaW46
KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworCisvKiEKKyAgICBAbWV0aG9kIG9yaWdpbgor
ICAgIEByZXN1bHQgVGhlIHNlY3VyaXR5IG9yaWdpbiB0aGlzIG1hbmFnZXIgaXMgbWFuYWdpbmcu
CisqLworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CisKKy8qIQorICAgIEBtZXRob2Qg
dXNhZ2UKKyAgICBAcmVzdWx0IFRoZSBjdXJyZW50IHRvdGFsIHVzYWdlIG9mIGFsbCByZWxldmFu
dCBpdGVtcyBpbiB0aGlzIHNlY3VyaXR5IG9yaWdpbiBpbiBieXRlcy4KKyovCistICh1bnNpZ25l
ZCBsb25nIGxvbmcpdXNhZ2U7CisKKy8vIFJldHVybnMgdGhlIHF1b3RhIG9mIHRoaXMgc2VjdXJp
dHkgb3JpZ2luIGluIGJ5dGVzLgorCisvKiEKKyAgICBAbWV0aG9kIHF1b3RhCisgICAgQHJlc3Vs
dCBUaGUgY3VycmVudCBxdW90YSBvZiBzZWN1cml0eSBvcmlnaW4gaW4gYnl0ZXMuCisqLworLSAo
dW5zaWduZWQgbG9uZyBsb25nKXF1b3RhOworCisvKiEKKyAgICBAbWV0aG9kIHNldFF1b3RhOgor
ICAgIEBwYXJhbSBTZXRzIGEgbmV3IHF1b3RhLCBpbiBieXRlcywgb24gdGhpcyBzZWN1cml0eSBv
cmlnaW4uCisqLworLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhOwor
CitAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIGIvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
UXVvdGFNYW5hZ2VyLmgKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4uaApyZW5h
bWUgdG8gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgKaW5kZXgg
MDljMDYxMC4uODIxOWRhNCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4uaAorKysgYi9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaApAQCAtMjMsNyArMjMsMTAgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJXZWJTZWN1cml0eU9y
aWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJRdW90YU1hbmFnZXIuaCIKKworQGludGVyZmFj
ZSBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlciA6IE5TT2JqZWN0IDxXZWJRdW90YU1hbmFnZXI+IHsK
KyAgICBXZWJTZWN1cml0eU9yaWdpbiAqX29yaWdpbjsKK30KIAotQGludGVyZmFjZSBXZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4gOiBXZWJTZWN1cml0eU9yaWdpbgogQGVuZApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0g
Yi9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0Kc2ltaWxhcml0
eSBpbmRleCA1NyUKcmVuYW1lIGZyb20gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlU2Vj
dXJpdHlPcmlnaW4ubW0KcmVuYW1lIHRvIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1
b3RhTWFuYWdlci5tbQppbmRleCBhMGMzNTI5Li5lMjZhZTMzIDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbQorKysgYi9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0KQEAgLTIzLDE1ICsyMyw1NiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldlYkRh
dGFiYXNlU2VjdXJpdHlPcmlnaW4uaCIKLSNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KKyNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCisKKyNpbXBvcnQgIldlYlNl
Y3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2Vy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW1wbGVtZW50YXRpb24gV2ViRGF0
YWJhc2VTZWN1cml0eU9yaWdpbgorQGltcGxlbWVudGF0aW9uIFdlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyCisKKy0gKGlkKWluaXRXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX29yaWdpbiA9IG9yaWdpbjsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICByZXR1cm4gX29yaWdpbjsKK30K
KworLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCit7CisjaWYgRU5BQkxFKERBVEFCQVNFKQor
ICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS51c2FnZUZvck9yaWdpbihbX29y
aWdpbiBfY29yZV0pOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCistICh1bnNp
Z25lZCBsb25nIGxvbmcpcXVvdGEKK3sKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgcmV0dXJu
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3Jl
XSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CiAKLS8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKLS8vIFByb3BlciBzdGVwcyBz
aG91bGQgYmUgdGFrZW4gdG8gaGF2ZSBzdWJjbGFzcyBpbXBsZW1lbnRhdGlvbnMgb2YgU2VjdXJp
dHlPcmlnaW4ncwotLy8gb3JpZ2luLCBxdW90YSwgYW5kIHNldFF1b3RhIG1ldGhvZHMuCisvLyBJ
ZiB0aGUgcXVvdGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3VycmVudCB1c2Fn
ZSwgdGhhdCBxdW90YSB3aWxsCisvLyAic3RpY2siIGJ1dCBubyBkYXRhIHdpbGwgYmUgcHVyZ2Vk
IHRvIG1lZXQgdGhlIG5ldyBxdW90YS4gVGhpcyB3aWxsIHNpbXBseQorLy8gcHJldmVudCBuZXcg
ZGF0YSBmcm9tIGJlaW5nIGFkZGVkIHRvIGRhdGFiYXNlcyBpbiB0aGF0IG9yaWdpbi4KKy0gKHZv
aWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQoreworI2lmIEVOQUJMRShEQVRB
QkFTRSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShbX29yaWdpbiBf
Y29yZV0sIHF1b3RhKTsKKyNlbmRpZgorfQogCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oIGIvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmgKc2ltaWxhcml0eSBpbmRl
eCA5MCUKcmVuYW1lIGZyb20gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlU2VjdXJpdHlP
cmlnaW4uaApyZW5hbWUgdG8gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlv
bkNhY2hlUXVvdGFNYW5hZ2VyLmgKaW5kZXggYTA2Y2EzZC4uNmQzMDE0OCAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaAorKysgYi9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaApA
QCAtMjMsNyArMjMsMTAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJR
dW90YU1hbmFnZXIuaCIKKworQGludGVyZmFjZSBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5h
Z2VyIDogTlNPYmplY3QgPFdlYlF1b3RhTWFuYWdlcj4geworICAgIFdlYlNlY3VyaXR5T3JpZ2lu
ICpfb3JpZ2luOworfQogCi1AaW50ZXJmYWNlIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4gOiBX
ZWJTZWN1cml0eU9yaWdpbgogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0gYi9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0Kc2ltaWxhcml0
eSBpbmRleCA3NyUKcmVuYW1lIGZyb20gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0KcmVuYW1lIHRvIFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbQppbmRleCBkYWM0MWFl
Li41NjJiYjI5IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxp
Y2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0KQEAgLTIzLDE5ICsyMywzNSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldl
YkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIgorI2ltcG9ydCAiV2ViQXBwbGljYXRp
b25DYWNoZVF1b3RhTWFuYWdlci5oIgogCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVy
bmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW1wbGVtZW50YXRpb24gV2ViQXBwbGljYXRpb25D
YWNoZVNlY3VyaXR5T3JpZ2luCitAaW1wbGVtZW50YXRpb24gV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhTWFuYWdlcgorCistIChpZClpbml0V2l0aE9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilv
cmlnaW4KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9vcmlnaW4gPSBvcmlnaW47CisgICAgcmV0dXJuIHNlbGY7
Cit9CisKKy0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7CisgICAgcmV0dXJuIF9vcmln
aW47Cit9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogewogI2lmIEVOQUJMRShPRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgbG9uZyBsb25nIHVzYWdlOwotICAgIGlmIChjYWNo
ZVN0b3JhZ2UoKS51c2FnZUZvck9yaWdpbihyZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2lu
Kj4oX3ByaXZhdGUpLCB1c2FnZSkpCisgICAgaWYgKGNhY2hlU3RvcmFnZSgpLnVzYWdlRm9yT3Jp
Z2luKFtfb3JpZ2luIF9jb3JlXSwgdXNhZ2UpKQogICAgICAgICByZXR1cm4gdXNhZ2U7CiAgICAg
cmV0dXJuIDA7CiAjZWxzZQpAQCAtNDcsNyArNjMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGxvbmcgbG9u
ZyBxdW90YTsKLSAgICBpZiAoY2FjaGVTdG9yYWdlKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnBy
ZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpKQorICAgIGlmIChjYWNo
ZVN0b3JhZ2UoKS5xdW90YUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0sIHF1b3RhKSkKICAgICAg
ICAgcmV0dXJuIHF1b3RhOwogICAgIHJldHVybiAwOwogI2Vsc2UKQEAgLTU4LDcgKzc0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25n
IGxvbmcpcXVvdGEKIHsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQotICAg
IGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKKyAgICBjYWNoZVN0b3JhZ2Uo
KS5zdG9yZVVwZGF0ZWRRdW90YUZvck9yaWdpbihbX29yaWdpbiBfY29yZV0sIHF1b3RhKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1t
CmluZGV4IGFjMzRiYzAuLjg2Zjc5NWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0zMCw4ICszMCw2IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVD
bGllbnQuaCIKIAogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4uaCIKLSNpbXBvcnQgIldlYkRhdGFiYXNlU2VjdXJp
dHlPcmlnaW4uaCIKICNpbXBvcnQgIldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJX
ZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgogI2ltcG9ydCAiV2ViRWxlbWVudERp
Y3Rpb25hcnkuaCIKQEAgLTQzLDYgKzQxLDcgQEAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVy
ZmFjZS5oIgogI2ltcG9ydCAiV2ViTlNVUkxSZXF1ZXN0RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJQ
bHVnaW4uaCIKKyNpbXBvcnQgIldlYlF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNp
bXBvcnQgIldlYlZpZXcuaCIKQEAgLTU1NSwxMSArNTU0LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgV2ViRGF0
YWJhc2VTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJEYXRhYmFzZVNlY3VyaXR5T3Jp
Z2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCldOworICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4g
PSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmln
aW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwogICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2Ugc2hpcHBpbmcgU2FmYXJpIGhhcyB0aGUgbmVjZXNz
YXJ5IGRlbGVnYXRlIGltcGxlbWVudGVkLgogICAgIGlmIChXS0FwcFZlcnNpb25DaGVja0xlc3NU
aGFuKEAiY29tLmFwcGxlLlNhZmFyaSIsIC0xLCAzLjEpKSB7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7IC8vIDUgbWVnYWJ5
dGVzIHNob3VsZCBob3BlZnVsbHkgYmUgZW5vdWdoIHRvIHRlc3Qgc3RvcmFnZSBzdXBwb3J0Lgot
ICAgICAgICBbd2ViT3JpZ2luIHNldFF1b3RhOmRlZmF1bHRRdW90YV07CisgICAgICAgIFtbd2Vi
T3JpZ2luIGRhdGFiYXNlUXVvdGFNYW5hZ2VyXSBzZXRRdW90YTpkZWZhdWx0UXVvdGFdOwogICAg
IH0gZWxzZQogICAgICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmZyYW1lOmV4Y2VlZGVkRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5T3JpZ2luOmRhdGFiYXNl
OiksIGtpdChmcmFtZSksIHdlYk9yaWdpbiwgKE5TU3RyaW5nICopZGF0YWJhc2VOYW1lKTsKICAg
ICBbd2ViT3JpZ2luIHJlbGVhc2VdOwpAQCAtNTc4LDcgKzU3Nyw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgV2Vi
QXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3Jp
Z2luOm9yaWdpbl07CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5d
OwogICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZXhjZWVk
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdpbjopLCB3ZWJPcmln
aW4pOwogICAgIFt3ZWJPcmlnaW4gcmVsZWFzZV07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDBkNDk0NDUuLjlkNjRmMDUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysr
IGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMjgs
OSArMjgsMTEgQEAKIAogI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogCisj
aW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmgiCisjaW1wb3J0ICJXZWJE
YXRhYmFzZVF1b3RhTWFuYWdlci5oIgorI2ltcG9ydCAiV2ViUXVvdGFNYW5hZ2VyLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0tVUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
LSNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC02OSwzOCArNzEsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9y
dCgpOwogfQogCi0vLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwNjI3Ci0vLyBQcm9wZXIgc3RlcHMgc2hvdWxkIGJlIHRha2VuIHRvIGhhdmUgc3ViY2xh
c3MgaW1wbGVtZW50YXRpb25zIG9mIFNlY3VyaXR5T3JpZ2luJ3MKLS8vIG9yaWdpbiwgcXVvdGEs
IGFuZCBzZXRRdW90YSBtZXRob2RzLgotCi0tICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKLXsK
LSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLnVzYWdlRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJp
dmF0ZSkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi0tICh1bnNpZ25lZCBs
b25nIGxvbmcpcXVvdGEKLXsKLSNpZiBFTkFCTEUoREFUQUJBU0UpCi0gICAgcmV0dXJuIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2Vj
dXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgot
fQotCi0vLyBJZiB0aGUgcXVvdGEgaXMgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiB0aGUgY3Vy
cmVudCB1c2FnZSwgdGhhdCBxdW90YSB3aWxsCi0vLyAic3RpY2siIGJ1dCBubyBkYXRhIHdpbGwg
YmUgcHVyZ2VkIHRvIG1lZXQgdGhlIG5ldyBxdW90YS4gVGhpcyB3aWxsIHNpbXBseQotLy8gcHJl
dmVudCBuZXcgZGF0YSBmcm9tIGJlaW5nIGFkZGVkIHRvIGRhdGFiYXNlcyBpbiB0aGF0IG9yaWdp
bgotLSAodm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCi17Ci0jaWYgRU5B
QkxFKERBVEFCQVNFKQotICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKHJl
aW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSksIHF1b3RhKTsKLSNlbmRp
ZgotfQotCiAtIChCT09MKWlzRXF1YWw6KGlkKWFuT2JqZWN0CiB7CiAgICAgaWYgKCFbYW5PYmpl
Y3QgaXNNZW1iZXJPZkNsYXNzOltXZWJTZWN1cml0eU9yaWdpbiBjbGFzc11dKSB7CkBAIC0xNDcs
MyArMTE3LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogfQogCiBAZW5kCisKKworI3By
YWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJRdW90YU1hbmFnZXJzCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJTZWN1cml0eU9yaWdpbiAoV2ViUXVvdGFNYW5hZ2VycykKKworLSAoaWQ8V2ViUXVv
dGFNYW5hZ2VyPilhcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyCit7CisgICAgaWYgKCFfYXBw
bGljYXRpb25DYWNoZVF1b3RhTWFuYWdlcikKKyAgICAgICAgX2FwcGxpY2F0aW9uQ2FjaGVRdW90
YU1hbmFnZXIgPSBbW1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIgYWxsb2NdIGluaXRX
aXRoT3JpZ2luOnNlbGZdOworICAgIHJldHVybiBfYXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdl
cjsKK30KKworLSAoaWQ8V2ViUXVvdGFNYW5hZ2VyPilkYXRhYmFzZVF1b3RhTWFuYWdlcgorewor
ICAgIGlmICghX2RhdGFiYXNlUXVvdGFNYW5hZ2VyKQorICAgICAgICBfZGF0YWJhc2VRdW90YU1h
bmFnZXIgPSBbW1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyIGFsbG9jXSBpbml0V2l0aE9yaWdpbjpz
ZWxmXTsKKyAgICByZXR1cm4gX2RhdGFiYXNlUXVvdGFNYW5hZ2VyOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0
ZS5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUu
aAppbmRleCA2NTE4YTE2Li4zYTNkMDMxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsOSArMjcsMTIgQEAKICAq
LwogCiBAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlOworQHByb3RvY29sIFdlYlF1b3Rh
TWFuYWdlcjsKIAogQGludGVyZmFjZSBXZWJTZWN1cml0eU9yaWdpbiA6IE5TT2JqZWN0IHsKICAg
ICBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUgKl9wcml2YXRlOworICAgIGlkPFdlYlF1b3RhTWFu
YWdlcj4gX2FwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXI7CisgICAgaWQ8V2ViUXVvdGFNYW5h
Z2VyPiBfZGF0YWJhc2VRdW90YU1hbmFnZXI7CiB9CiAKIC0gKGlkKWluaXRXaXRoVVJMOihOU1VS
TCAqKXVybDsKQEAgLTQwLDE2ICs0Myw5IEBACiAvLyBSZXR1cm5zIHplcm8gaWYgdGhlIHBvcnQg
aXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIHByb3RvY29sLCBub24temVybyBvdGhlcndpc2Uu
CiAtICh1bnNpZ25lZCBzaG9ydClwb3J0OwogCi0vLyBNZWFudCB0byBiZSBpbXBsZW1lbnRlZCBp
biBhIHN1YmNsYXNzLgotLy8gUmV0dXJucyB0aGUgY3VycmVudCB0b3RhbCB1c2FnZSBvZiBhbGwg
cmVsZXZhbnQgaXRlbXMgaW4gdGhpcyBzZWN1cml0eSBvcmlnaW4gaW4gYnl0ZXMuCi0tICh1bnNp
Z25lZCBsb25nIGxvbmcpdXNhZ2U7Ci0KLS8vIE1lYW50IHRvIGJlIGltcGxlbWVudGVkIGluIGEg
c3ViY2xhc3MuCi0vLyBSZXR1cm5zIHRoZSBxdW90YSBvZiB0aGlzIHNlY3VyaXR5IG9yaWdpbiBp
biBieXRlcy4KLS0gKHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YTsKLQotLy8gTWVhbnQgdG8gYmUg
aW1wbGVtZW50ZWQgaW4gYSBzdWJjbGFzcy4KLS8vIFNldHMgdGhlIHN0b3JhZ2UgcXVvdGEgaW4g
Ynl0ZXMuCi0tICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGE7CitAZW5k
CiAKK0BpbnRlcmZhY2UgV2ViU2VjdXJpdHlPcmlnaW4gKFdlYlF1b3RhTWFuYWdlcnMpCistIChp
ZDxXZWJRdW90YU1hbmFnZXI+KWFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXI7CistIChpZDxX
ZWJRdW90YU1hbmFnZXI+KWRhdGFiYXNlUXVvdGFNYW5hZ2VyOwogQGVuZApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiYmY5
ZTMuLjFjMDgyNDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wOC0wMiAgSm9zZXBoIFBl
Y29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBl
ci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDUgLSBSZWZh
Y3RvciBRdW90YSBNYW5hZ2VtZW50IGluIFdlYlNlY3VyaXR5T3JpZ2luIGludG8gTWFuYWdlcnMK
KworICAgICAgICAgIENoYW5nZSBvbGQgc3R5bGUgY2FsbHMgdG8gbWFrZSB1c2Ugb2YgdGhlIG1h
bmFnZXJzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERhdGFiYXNlUXVv
dGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2Vj
dXJpdHlPcmlnaW46ZGF0YWJhc2U6XSk6CisKIDIwMTAtMDgtMDIgIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQppbmRleCA3ZGI3ZmZmLi43ZTgxMmEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBA
IC02MCw2ICs2MCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJRdW90YU1hbmFnZXIuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJTY3JpcHRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNlY3VyaXR5T3Jp
Z2luUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlR5cGVzSW50ZXJuYWwuaD4KQEAgLTMx
MCw3ICszMTEsNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xpY3lE
ZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29sIHBlcm1pcwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB7ICAg
IAogICAgIFdlYlNlY3VyaXR5T3JpZ2luICpvcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZpbGU6Ly8vIl1dOwotICAg
IFtvcmlnaW4gc2V0UXVvdGE6cXVvdGFdOworICAgIFtbb3JpZ2luIGRhdGFiYXNlUXVvdGFNYW5h
Z2VyXSBzZXRRdW90YTpxdW90YV07CiAgICAgW29yaWdpbiByZWxlYXNlXTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQppbmRleCAzZGMzNzhhLi5j
YzlhNWQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKICNp
bXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIVE1M
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJRdW90YU1hbmFnZXIuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXcuaD4KQEAgLTE2
MCw3ICsxNjEsNyBAQCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvID0g
bmlsOwogICAgICAgICAgICAgW29yaWdpbiBwb3J0XSwgW2RhdGFiYXNlSWRlbnRpZmllciBVVEY4
U3RyaW5nXSk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRR
dW90YSA9IDUgKiAxMDI0ICogMTAyNDsgICAgCi0gICAgW29yaWdpbiBzZXRRdW90YTpkZWZhdWx0
UXVvdGFdOworICAgIFtbb3JpZ2luIGRhdGFiYXNlUXVvdGFNYW5hZ2VyXSBzZXRRdW90YTpkZWZh
dWx0UXVvdGFdOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2V0U3Rh
dHVzVGV4dDooTlNTdHJpbmcgKil0ZXh0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63290</attachid>
            <date>2010-08-02 19:33:31 -0700</date>
            <delta_ts>2010-08-03 13:11:53 -0700</delta_ts>
            <desc>[PATCH] Part 5 - Refactor Per Origin Quota Management</desc>
            <filename>part5.patch</filename>
            <type>text/plain</type>
            <size>30690</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc1
MTgxZTYuLjY5OGY4ZjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA4LTAyICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdp
biBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBhcnQgNSAtIFJlZmFjdG9yIFF1
b3RhIE1hbmFnZW1lbnQgaW4gV2ViU2VjdXJpdHlPcmlnaW4gaW50byBNYW5hZ2VycworCisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUXVvdGEgTWFu
YWdlcnMsIHJlbW92ZSBvbGQgU2VjdXJpdHlPcmlnaW4gc3ViY2xhc3Nlcy4KKwogMjAxMC0wNy0z
MSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8v
d2Via2l0Lm9yZy9iLzQzMzA3PiBNYWtlIHN1cmUgYWxsIHByaXZhdGUgaGVhZGVycyBhcmUgY29w
aWVkIHRvIFByaXZhdGVIZWFkZXJzIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU0NDdiN2YuLjUyZDViNmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxMywxMyArMzEzLDE0IEBACiAJCTkzRUIxNzhEMDlG
ODhENDYwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0VCMTc4QzA5Rjg4RDQ2MDA5MUY4RkYgLyog
V2ViU3lzdGVtSW50ZXJmYWNlLm1tICovOyB9OwogCQk5M0VCMTc4RjA5Rjg4RDUxMDA5MUY4RkYg
LyogV2ViU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4RkYgLyogV2ViU3lzdGVtSW50ZXJm
YWNlLmggKi87IH07CiAJCTkzRkRFOTMzMEQ3OUNBRjMwMDc0RjAyOSAvKiBXZWJIaXN0b3J5SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RkRFOTMyMEQ3OUNBRjMwMDc0RjAyOSAvKiBXZWJIaXN0b3J5SW50ZXJuYWwuaCAqLzsgfTsKKwkJ
QTU3RTJGMjQxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RTJGMjIxMjA3NDlFNjAwMDQ4
REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1REVGQzBBMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0
eU9yaWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsK
IAkJQTVERUZDMEIxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA4
MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi87IH07CiAJ
CUE1REVGQzBDMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzA5MTFE
NTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNURFRkMwRjExRDUzNDNFMDA4
ODUyNzMgLyogV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdl
YkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaCAqLzsgfTsKLQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1
MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMgLyogV2Vi
RGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsKLQkJQTVERUZDMTMxMUQ1MzQ0QjAwODg1
MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMTExMUQ1MzQ0QjAwODg1Mjcz
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oICovOyB9OwotCQlBNURFRkMx
NDExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVERUZDMTIx
MUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbSAq
LzsgfTsKKwkJQTVERUZDMEYxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURF
RkMwRDExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNURFRkMxMDExRDUz
NDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMg
LyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi87IH07CisJCUE1REVGQzEzMTFENTM0NEIw
MDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFRkMxMTExRDUzNDRCMDA4ODUy
NzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oICovOyB9OworCQlBNURFRkMx
NDExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVGQzEyMTFE
NTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tICovOyB9
OwogCQlBNzA5MzZBRjBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwOTM2QUQwQjU2MDhEQzAw
Q0RCNDhFIC8qIFdlYkRyYWdDbGllbnQuaCAqLzsgfTsKIAkJQTcwOTM2QjAwQjU2MDhEQzAwQ0RC
NDhFIC8qIFdlYkRyYWdDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzA5MzZBRTBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5t
bSAqLzsgfTsKIAkJQTdEM0M1QkMwQjU3NzNDNTAwMkNBNDUwIC8qIFdlYlBhc3RlYm9hcmRIZWxw
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDND
NUJBMEI1NzczQzUwMDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLmggKi87IH07CkBAIC02
MDgsMTMgKzYwOSwxNCBAQAogCQk5Q0FFOUQwNzAyNTJBNDEzMEVDQTE2RUEgLyogV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5Q0UxRjhBMzAyQTVDNkYzMEVDQTJB
Q0QgLyogV2ViSW1hZ2VSZW5kZXJlckZhY3RvcnkubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJJbWFnZVJlbmRlcmVyRmFjdG9yeS5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
OUNGMEUyNDkwMjEzNjFCMDBFQ0ExNkVBIC8qIFdlYkZyYW1lUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
KwkJQTU3RTJGMjIxMjA3NDlFNjAwMDQ4REYzIC8qIFdlYlF1b3RhTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJRdW90YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUZDMDcxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5
T3JpZ2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2Vj
dXJpdHlPcmlnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1REVGQzA4MTFE
NTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUZDMDkxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTVERUZDMEQxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdp
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNURFRkMwRTExRDUzNDNFMDA4ODUy
NzMgLyogV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1REVGQzEyMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlv
bkNhY2hlU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJEYXRhYmFz
ZVF1b3RhTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRh
YmFzZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMw
RTExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVERUZDMTExMUQ1MzQ0QjAwODg1Mjcz
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBw
bGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFEMEI1NjA4REMwMENEQjQ4RSAvKiBXZWJEcmFn
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEcmFnQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFFMEI1NjA4REMwMENEQjQ4
RSAvKiBXZWJEcmFnQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkRyYWdDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
RDNDNUJBMEI1NzczQzUwMDJDQTQ1MCAvKiBXZWJQYXN0ZWJvYXJkSGVscGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhc3RlYm9hcmRIZWxwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2OSw2ICs5NzEsNyBAQAogCQkJCUY1MDg5NDZBMDJCNzFE
NTkwMThBOUNENCAvKiBXZWJOU1ZpZXdFeHRyYXMubSAqLywKIAkJCQk5MzQ1RERBRTAzNjVGQjI3
MDA4NjM1Q0UgLyogV2ViTlNXaW5kb3dFeHRyYXMuaCAqLywKIAkJCQk5MzQ1RERBRjAzNjVGQjI3
MDA4NjM1Q0UgLyogV2ViTlNXaW5kb3dFeHRyYXMubSAqLywKKwkJCQlBNTdFMkYyMjEyMDc0OUU2
MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi8sCiAJCQkJRjU5NjY4QzgwMkFEMjkyMzAx
ODYzNUNBIC8qIFdlYlN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCUY1OTY2OEM5MDJBRDI5MjMw
MTg2MzVDQSAvKiBXZWJTdHJpbmdUcnVuY2F0b3IubW0gKi8sCiAJCQkJREQ3Q0RFRTYwQTIzQkE5
RTAwMDY5OTI4IC8qIFdlYlR5cGVzSW50ZXJuYWwuaCAqLywKQEAgLTEwMjAsOCArMTAyMyw4IEBA
CiAJCQkJNTExRjNGRDEwQ0VDQzg4RjAwODUyNTY1IC8qIFdlYkRhdGFiYXNlTWFuYWdlci5tbSAq
LywKIAkJCQk1MUFFREVGMDBDRUNGNDU3MDA4NTQzMjggLyogV2ViRGF0YWJhc2VNYW5hZ2VySW50
ZXJuYWwuaCAqLywKIAkJCQk1MTFGM0ZEMjBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyUHJpdmF0ZS5oICovLAotCQkJCUE1REVGQzBEMTFENTM0M0UwMDg4NTI3MyAvKiBXZWJE
YXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggKi8sCi0JCQkJQTVERUZDMEUxMUQ1MzQzRTAwODg1Mjcz
IC8qIFdlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4ubW0gKi8sCisJCQkJQTVERUZDMEQxMUQ1MzQz
RTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmggKi8sCisJCQkJQTVERUZDMEUx
MUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICovLAogCQkJCTUx
MUYzRkQzMENFQ0M4OEYwMDg1MjU2NSAvKiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywK
IAkJCQk1MTFGM0ZENDBDRUNDODhGMDA4NTI1NjUgLyogV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
Lm1tICovLAogCQkJKTsKQEAgLTEyMzgsOCArMTI0MSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlCNjgwNDk3MTBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovLAog
CQkJCUI2ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLm1tICov
LAotCQkJCUE1REVGQzExMTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlU2Vj
dXJpdHlPcmlnaW4uaCAqLywKLQkJCQlBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBw
bGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tICovLAorCQkJCUE1REVGQzExMTFENTM0NEIw
MDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggKi8sCisJCQkJQTVE
RUZDMTIxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIu
bW0gKi8sCiAJCQkJNTFDQkZDQUMwRDEwRTZDNTAwMkRCRjUxIC8qIFdlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCiAJCQkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9t
ZUNsaWVudC5oICovLAogCQkJCTE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1NyAvKiBXZWJDaHJvbWVD
bGllbnQubW0gKi8sCkBAIC0xNTY5LDggKzE1NzIsOSBAQAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMw
MDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZD
MEIxMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1REVGQzBDMTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdp
blByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1REVGQzBGMTFENTM0M0UwMDg4NTI3MyAv
KiBXZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNURFRkMx
MzExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNURFRkMwRjExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJh
c2VRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1REVGQzEzMTFENTM0NEIwMDg4
NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTE5MzAsOCArMTkzNCw4IEBACiAJCQkJMEZEM0IwRjkxMDc2QzNGNzAwMDM5
Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAx
MDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTVERUZDMEExMUQ1MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tIGluIFNv
dXJjZXMgKi8sCi0JCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlU2Vj
dXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNURFRkMxNDExRDUzNDRCMDA4ODUy
NzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2Vy
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTVERUZDMTQxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFw
cGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNGE4ZWI3
Yi4uODM4MjEzMyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0wOC0wMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1P
cmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKworICAgICAgICBQYXJ0IDUgLSBSZWZhY3Rv
ciBRdW90YSBNYW5hZ2VtZW50IGluIFdlYlNlY3VyaXR5T3JpZ2luIGludG8gTWFuYWdlcnMKKwor
ICAgICAgICBQZXItT3JpZ2luIHF1b3RhcyBleGlzdCBmb3IgRGF0YWJhc2VzIGFuZCBBcHBsaWNh
dGlvbiBDYWNoZXMuIENsaWVudHMKKyAgICAgICAgZ2l2ZW4gYSBXZWJTZWN1cml0eU9yaWdpbiBo
YXZlIHRoZSBhYmlsaXR5IHRvIHNldCB0aGUgcXVvdGEgZm9yIGFueQorICAgICAgICBwZXItb3Jp
Z2luIHF1b3RhIHR5cGUuIFRoaXMgcHV0cyBxdW90YSBtYW5hZ2VtZW50IGludG8gYW4gaW50ZXJm
YWNlCisgICAgICAgIGFuZCBXZWJTZWN1cml0eU9yaWdpbiBhbGxvd3MgYWNjZXNzIHRvIHF1b3Rh
IG1hbmFnZXJzIGZvciB0aGUKKyAgICAgICAgZGlmZmVyZW50IHR5cGVzIG9mIHF1b3Rhcy4KKwor
ICAgICAgICAgIFRoZSBXZWJRdW90YU1hbmFnZXIgaW50ZXJmYWNlIGFsbG93cyBxdWVyeWluZyBh
bmQgbW9kaWZ5aW5nIGEKKyAgICAgICAgICBwZXItb3JpZ2luIHF1b3RhLiBUaGlzIGlzIGltcGxl
bWVudGVkIGZvciBib3RoIERhdGFiYXNlcyBhbmQKKyAgICAgICAgICBBcHBsaWNhdGlvbiBDYWNo
ZXMuCisKKyAgICAgICAgKiBNaXNjL1dlYlF1b3RhTWFuYWdlci5oOiBBZGRlZC4gSW50ZXJmYWNl
IGZvciBxdW90YSBtYW5hZ2VtZW50ICh1c2FnZSwgcXVvdGEsIHNldFF1b3RhKS4KKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFN0
b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJE
YXRhYmFzZVF1b3RhTWFuYWdlciBvcmlnaW5dKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90
YU1hbmFnZXIgdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgcXVv
dGFdKToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgc2V0UXVvdGE6XSk6Cisg
ICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmg6IFJlbW92ZWQuCisg
ICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhTWFuYWdlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90
YU1hbmFnZXIgb3JpZ2luXSk6CisgICAgICAgICgtW1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1h
bmFnZXIgdXNhZ2VdKToKKyAgICAgICAgKC1bV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdl
ciBxdW90YV0pOgorICAgICAgICAoLVtXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyIHNl
dFF1b3RhOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZS5oOiBBZGRlZCBhIGNhdGVnb3J5IHRvIGFjY2VzcyBtYW5hZ2Vycy4KKworICAgICAgICAg
IFJlbW92ZSB0aGUgV2ViU2VjdXJpdHlPcmlnaW4gc3ViLWNsYXNzZXMuIE1hbmFnZXJzIGFyZSBi
ZXR0ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlU2Vj
dXJpdHlPcmlnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4ubW06IFJlbW92ZWQuCisKKyAgICAgICAgICBDcmVh
dGUgdGhlIG1hbmFnZXJzIGxhemlseS4gQ2hhbmdlIG9sZCBzdHlsZSBjYWxscyB0byBtYWtlIHVz
ZQorICAgICAgICAgIG9mIHRoZSBtYW5hZ2Vycy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJp
dHlPcmlnaW4ubW06CisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2luIGFwcGxpY2F0aW9uQ2Fj
aGVRdW90YU1hbmFnZXJdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gZGF0YWJhc2VR
dW90YU1hbmFnZXJdKToKKyAgICAgICAgKC1bV2ViU2VjdXJpdHlPcmlnaW4gZGVhbGxvY10pOiBy
ZWxlYXNlIHRoZSBtYW5hZ2VycyBpZiB0aGV5IGV4aXN0LgorCiAyMDEwLTA4LTAyICBKZXJlbXkg
T3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIHJldmVy
dCBvZiA2NDQyNSBkdWUgdG8gQ2hyb21pdW0gaW5zdGFiaWxpdHkKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvTWlzYy9XZWJRdW90YU1hbmFnZXIuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJRdW90YU1h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTA3NGU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYlF1b3RhTWFuYWdlci5oCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitA
Y2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisKKy8qIQorICAgIEBwcm90b2NvbCBXZWJRdW90YU1h
bmFnZXIKKyAgICBAZGlzY3Vzc2lvbiBUaGlzIHByb3RvY29sIGlzIHVzZWQgdG8gdmlldyBhbmQg
bWFuaXB1bGF0ZSBhIHBlci1vcmlnaW4gc3RvcmFnZSBxdW90YS4KKyovCitAcHJvdG9jb2wgV2Vi
UXVvdGFNYW5hZ2VyCisKKy8qIQorICAgIEBtZXRob2QgaW5pdFdpdGhPcmlnaW46CisgICAgQHBh
cmFtIFRoZSBzZWN1cml0eSBvcmlnaW4gdGhpcyB3aWxsIG1hbmFnZS4KKyAgICBAcmVzdWx0IEEg
bmV3IFdlYlF1b3RhTWFuYWdlciBvYmplY3QuCisqLworLSAoaWQpaW5pdFdpdGhPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworCisvKiEKKyAgICBAbWV0aG9kIG9yaWdpbgorICAg
IEByZXN1bHQgVGhlIHNlY3VyaXR5IG9yaWdpbiB0aGlzIG1hbmFnZXIgaXMgbWFuYWdpbmcuCisq
LworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CisKKy8qIQorICAgIEBtZXRob2QgdXNh
Z2UKKyAgICBAcmVzdWx0IFRoZSBjdXJyZW50IHRvdGFsIHVzYWdlIG9mIGFsbCByZWxldmFudCBp
dGVtcyBpbiB0aGlzIHNlY3VyaXR5IG9yaWdpbiBpbiBieXRlcy4KKyovCistICh1bnNpZ25lZCBs
b25nIGxvbmcpdXNhZ2U7CisKKy8qIQorICAgIEBtZXRob2QgcXVvdGEKKyAgICBAcmVzdWx0IFRo
ZSBjdXJyZW50IHF1b3RhIG9mIHNlY3VyaXR5IG9yaWdpbiBpbiBieXRlcy4KKyovCistICh1bnNp
Z25lZCBsb25nIGxvbmcpcXVvdGE7CisKKy8qIQorICAgIEBtZXRob2Qgc2V0UXVvdGE6CisgICAg
QHBhcmFtIFNldHMgYSBuZXcgcXVvdGEsIGluIGJ5dGVzLCBvbiB0aGlzIHNlY3VyaXR5IG9yaWdp
bi4KKyovCistICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGE7CisKK0Bl
bmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25D
YWNoZVNlY3VyaXR5T3JpZ2luLmggYi9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90
YU1hbmFnZXIuaApzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oCnJlbmFtZSB0
byBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaAppbmRleCAwOWMw
NjEwLi44MjE5ZGE0IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFw
cGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oCisrKyBiL1dlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oCkBAIC0yMyw3ICsyMywxMCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2lu
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlF1b3RhTWFuYWdlci5oIgorCitAaW50ZXJmYWNlIFdl
YkRhdGFiYXNlUXVvdGFNYW5hZ2VyIDogTlNPYmplY3QgPFdlYlF1b3RhTWFuYWdlcj4geworICAg
IFdlYlNlY3VyaXR5T3JpZ2luICpfb3JpZ2luOworfQogCi1AaW50ZXJmYWNlIFdlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbiA6IFdlYlNlY3VyaXR5T3JpZ2luCiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5tbSBiL1dl
YktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDU3JQpyZW5hbWUgZnJvbSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0
eU9yaWdpbi5tbQpyZW5hbWUgdG8gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyLm1tCmluZGV4IGEwYzM1MjkuLmUyNmFlMzMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQpAQCAtMjMsMTUgKzIzLDU2IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV2ViRGF0YWJh
c2VTZWN1cml0eU9yaWdpbi5oIgotI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgor
I2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKKworI2ltcG9ydCAiV2ViU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJEYXRhYmFz
ZVNlY3VyaXR5T3JpZ2luCitAaW1wbGVtZW50YXRpb24gV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIK
KworLSAoaWQpaW5pdFdpdGhPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7Cisg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBfb3JpZ2luID0gb3JpZ2luOworICAgIHJldHVybiBzZWxmOworfQorCistIChX
ZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIHJldHVybiBfb3JpZ2luOworfQorCist
ICh1bnNpZ25lZCBsb25nIGxvbmcpdXNhZ2UKK3sKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAg
cmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnVzYWdlRm9yT3JpZ2luKFtfb3JpZ2lu
IF9jb3JlXSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKKy0gKHVuc2lnbmVk
IGxvbmcgbG9uZylxdW90YQoreworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICByZXR1cm4gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4oW19vcmlnaW4gX2NvcmVdKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KIAotLy8gRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNwotLy8gUHJvcGVyIHN0ZXBzIHNob3Vs
ZCBiZSB0YWtlbiB0byBoYXZlIHN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyBvZiBTZWN1cml0eU9y
aWdpbidzCi0vLyBvcmlnaW4sIHF1b3RhLCBhbmQgc2V0UXVvdGEgbWV0aG9kcy4KKy8vIElmIHRo
ZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0
aGF0IHF1b3RhIHdpbGwKKy8vICJzdGljayIgYnV0IG5vIGRhdGEgd2lsbCBiZSBwdXJnZWQgdG8g
bWVldCB0aGUgbmV3IHF1b3RhLiBUaGlzIHdpbGwgc2ltcGx5CisvLyBwcmV2ZW50IG5ldyBkYXRh
IGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luLgorLSAodm9pZClz
ZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCit7CisjaWYgRU5BQkxFKERBVEFCQVNF
KQorICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldFF1b3RhKFtfb3JpZ2luIF9jb3Jl
XSwgcXVvdGEpOworI2VuZGlmCit9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZVNlY3VyaXR5T3JpZ2luLmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaApzaW1pbGFyaXR5IGluZGV4IDkw
JQpyZW5hbWUgZnJvbSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdp
bi5oCnJlbmFtZSB0byBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGVRdW90YU1hbmFnZXIuaAppbmRleCBhMDZjYTNkLi42ZDMwMTQ4IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbi5oCisrKyBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oCkBAIC0y
Myw3ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlF1b3Rh
TWFuYWdlci5oIgorCitAaW50ZXJmYWNlIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIg
OiBOU09iamVjdCA8V2ViUXVvdGFNYW5hZ2VyPiB7CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKl9v
cmlnaW47Cit9CiAKLUBpbnRlcmZhY2UgV2ViRGF0YWJhc2VTZWN1cml0eU9yaWdpbiA6IFdlYlNl
Y3VyaXR5T3JpZ2luCiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFwcGxpY2F0aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbSBiL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbQpzaW1pbGFyaXR5IGlu
ZGV4IDc3JQpyZW5hbWUgZnJvbSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5tbQpyZW5hbWUgdG8gV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tCmluZGV4IGRhYzQxYWUuLjU2
MmJiMjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRp
b25DYWNoZVNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbQpAQCAtMjMsMTkgKzIzLDM1IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCAiV2ViQXBw
bGljYXRpb25DYWNoZVNlY3VyaXR5T3JpZ2luLmgiCisjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNh
Y2hlUXVvdGFNYW5hZ2VyLmgiCiAKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBcHBsaWNhdGlvbkNhY2hl
U2VjdXJpdHlPcmlnaW4KK0BpbXBsZW1lbnRhdGlvbiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFN
YW5hZ2VyCisKKy0gKGlkKWluaXRXaXRoT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdp
bgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgX29yaWdpbiA9IG9yaWdpbjsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICByZXR1cm4gX29yaWdpbjsK
K30KIAogLSAodW5zaWduZWQgbG9uZyBsb25nKXVzYWdlCiB7CiAjaWYgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKICAgICBsb25nIGxvbmcgdXNhZ2U7Ci0gICAgaWYgKGNhY2hlU3Rv
cmFnZSgpLnVzYWdlRm9yT3JpZ2luKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihf
cHJpdmF0ZSksIHVzYWdlKSkKKyAgICBpZiAoY2FjaGVTdG9yYWdlKCkudXNhZ2VGb3JPcmlnaW4o
W19vcmlnaW4gX2NvcmVdLCB1c2FnZSkpCiAgICAgICAgIHJldHVybiB1c2FnZTsKICAgICByZXR1
cm4gMDsKICNlbHNlCkBAIC00Nyw3ICs2Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
ewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgbG9uZyBsb25nIHF1
b3RhOwotICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5xdW90YUZvck9yaWdpbihyZWludGVycHJldF9j
YXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90YSkpCisgICAgaWYgKGNhY2hlU3Rv
cmFnZSgpLnF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSwgcXVvdGEpKQogICAgICAgICBy
ZXR1cm4gcXVvdGE7CiAgICAgcmV0dXJuIDA7CiAjZWxzZQpAQCAtNTgsNyArNzQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0gICAgY2Fj
aGVTdG9yYWdlKCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpOworICAgIGNhY2hlU3RvcmFnZSgpLnN0
b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKFtfb3JpZ2luIF9jb3JlXSwgcXVvdGEpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KaW5k
ZXggYWMzNGJjMC4uODZmNzk1YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0KQEAgLTMwLDggKzMwLDYgQEAKICNpbXBvcnQgIldlYkNocm9tZUNsaWVu
dC5oIgogCiAjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldlYkFwcGxpY2F0
aW9uQ2FjaGVTZWN1cml0eU9yaWdpbi5oIgotI2ltcG9ydCAiV2ViRGF0YWJhc2VTZWN1cml0eU9y
aWdpbi5oIgogI2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkRl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCiAjaW1wb3J0ICJXZWJFbGVtZW50RGljdGlv
bmFyeS5oIgpAQCAtNDMsNiArNDEsNyBAQAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgiCiAjaW1wb3J0ICJXZWJOU1VSTFJlcXVlc3RFeHRyYXMuaCIKICNpbXBvcnQgIldlYlBsdWdp
bi5oIgorI2ltcG9ydCAiV2ViUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9y
aWdpbkludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9y
dCAiV2ViVmlldy5oIgpAQCAtNTU1LDExICs1NTQsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2UKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBXZWJEYXRhYmFz
ZVNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYkRhdGFiYXNlU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07CiAgICAgLy8gRklYTUU6IHJlbW92
ZSB0aGlzIHdvcmthcm91bmQgb25jZSBzaGlwcGluZyBTYWZhcmkgaGFzIHRoZSBuZWNlc3Nhcnkg
ZGVsZWdhdGUgaW1wbGVtZW50ZWQuCiAgICAgaWYgKFdLQXBwVmVyc2lvbkNoZWNrTGVzc1RoYW4o
QCJjb20uYXBwbGUuU2FmYXJpIiwgLTEsIDMuMSkpIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQg
bG9uZyBsb25nIGRlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsgLy8gNSBtZWdhYnl0ZXMg
c2hvdWxkIGhvcGVmdWxseSBiZSBlbm91Z2ggdG8gdGVzdCBzdG9yYWdlIHN1cHBvcnQuCi0gICAg
ICAgIFt3ZWJPcmlnaW4gc2V0UXVvdGE6ZGVmYXVsdFF1b3RhXTsKKyAgICAgICAgW1t3ZWJPcmln
aW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRRdW90YV07CiAgICAgfSBl
bHNlCiAgICAgICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6
ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46ZGF0YWJhc2U6KSwg
a2l0KGZyYW1lKSwgd2ViT3JpZ2luLCAoTlNTdHJpbmcgKilkYXRhYmFzZU5hbWUpOwogICAgIFt3
ZWJPcmlnaW4gcmVsZWFzZV07CkBAIC01NzgsNyArNTc3LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBXZWJBcHBs
aWNhdGlvbkNhY2hlU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViQXBwbGljYXRpb25D
YWNoZVNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46
b3JpZ2luXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl07CiAg
ICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpleGNlZWRlZEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOiksIHdlYk9yaWdpbik7
CiAgICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggMGQ0OTQ0NS4uOWU3NDZmNyAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC0yOCw5ICsy
OCwxMSBAQAogCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAKKyNpbXBv
cnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaCIKKyNpbXBvcnQgIldlYkRhdGFi
YXNlUXVvdGFNYW5hZ2VyLmgiCisjaW1wb3J0ICJXZWJRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQg
PFdlYkNvcmUvS1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2lt
cG9ydCA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTY5LDM4ICs3MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5wb3J0KCk7
CiB9CiAKLS8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDA2MjcKLS8vIFByb3BlciBzdGVwcyBzaG91bGQgYmUgdGFrZW4gdG8gaGF2ZSBzdWJjbGFzcyBp
bXBsZW1lbnRhdGlvbnMgb2YgU2VjdXJpdHlPcmlnaW4ncwotLy8gb3JpZ2luLCBxdW90YSwgYW5k
IHNldFF1b3RhIG1ldGhvZHMuCi0KLS0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQotewotI2lm
IEVOQUJMRShEQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCku
dXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRl
KSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLS0gKHVuc2lnbmVkIGxvbmcg
bG9uZylxdW90YQotewotI2lmIEVOQUJMRShEQVRBQkFTRSkKLSAgICByZXR1cm4gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0
eU9yaWdpbio+KF9wcml2YXRlKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0K
LS8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50
IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKLS8vICJzdGljayIgYnV0IG5vIGRhdGEgd2lsbCBiZSBw
dXJnZWQgdG8gbWVldCB0aGUgbmV3IHF1b3RhLiBUaGlzIHdpbGwgc2ltcGx5Ci0vLyBwcmV2ZW50
IG5ldyBkYXRhIGZyb20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luCi0t
ICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpcXVvdGEKLXsKLSNpZiBFTkFCTEUo
REFUQUJBU0UpCi0gICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0UXVvdGEocmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKSwgcXVvdGEpOwotI2VuZGlmCi19
Ci0KIC0gKEJPT0wpaXNFcXVhbDooaWQpYW5PYmplY3QKIHsKICAgICBpZiAoIVthbk9iamVjdCBp
c01lbWJlck9mQ2xhc3M6W1dlYlNlY3VyaXR5T3JpZ2luIGNsYXNzXV0pIHsKQEAgLTExNCw2ICs4
NCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHsKICAgICBpZiAoX3ByaXZhdGUpCiAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRlcmVm
KCk7CisgICAgaWYgKF9hcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyKQorICAgICAgICBbKE5T
T2JqZWN0ICopX2FwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIgcmVsZWFzZV07CisgICAgaWYg
KF9kYXRhYmFzZVF1b3RhTWFuYWdlcikKKyAgICAgICAgWyhOU09iamVjdCAqKV9kYXRhYmFzZVF1
b3RhTWFuYWdlciByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE0Nywz
ICsxMjEsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB9CiAKIEBlbmQKKworCisjcHJh
Z21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFdlYlF1b3RhTWFuYWdlcnMKKworQGltcGxlbWVudGF0
aW9uIFdlYlNlY3VyaXR5T3JpZ2luIChXZWJRdW90YU1hbmFnZXJzKQorCistIChpZDxXZWJRdW90
YU1hbmFnZXI+KWFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIKK3sKKyAgICBpZiAoIV9hcHBs
aWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyKQorICAgICAgICBfYXBwbGljYXRpb25DYWNoZVF1b3Rh
TWFuYWdlciA9IFtbV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlciBhbGxvY10gaW5pdFdp
dGhPcmlnaW46c2VsZl07CisgICAgcmV0dXJuIF9hcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2Vy
OworfQorCistIChpZDxXZWJRdW90YU1hbmFnZXI+KWRhdGFiYXNlUXVvdGFNYW5hZ2VyCit7Cisg
ICAgaWYgKCFfZGF0YWJhc2VRdW90YU1hbmFnZXIpCisgICAgICAgIF9kYXRhYmFzZVF1b3RhTWFu
YWdlciA9IFtbV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIgYWxsb2NdIGluaXRXaXRoT3JpZ2luOnNl
bGZdOworICAgIHJldHVybiBfZGF0YWJhc2VRdW90YU1hbmFnZXI7Cit9CisKK0BlbmQKZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRl
LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5o
CmluZGV4IDY1MThhMTYuLjNhM2QwMzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKKysrIGIvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw5ICsyNywxMiBAQAogICov
CiAKIEBjbGFzcyBXZWJTZWN1cml0eU9yaWdpblByaXZhdGU7CitAcHJvdG9jb2wgV2ViUXVvdGFN
YW5hZ2VyOwogCiBAaW50ZXJmYWNlIFdlYlNlY3VyaXR5T3JpZ2luIDogTlNPYmplY3QgewogICAg
IFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqX3ByaXZhdGU7CisgICAgaWQ8V2ViUXVvdGFNYW5h
Z2VyPiBfYXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlcjsKKyAgICBpZDxXZWJRdW90YU1hbmFn
ZXI+IF9kYXRhYmFzZVF1b3RhTWFuYWdlcjsKIH0KIAogLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJM
ICopdXJsOwpAQCAtNDAsMTYgKzQzLDkgQEAKIC8vIFJldHVybnMgemVybyBpZiB0aGUgcG9ydCBp
cyB0aGUgZGVmYXVsdCBwb3J0IGZvciB0aGUgcHJvdG9jb2wsIG5vbi16ZXJvIG90aGVyd2lzZS4K
IC0gKHVuc2lnbmVkIHNob3J0KXBvcnQ7CiAKLS8vIE1lYW50IHRvIGJlIGltcGxlbWVudGVkIGlu
IGEgc3ViY2xhc3MuCi0vLyBSZXR1cm5zIHRoZSBjdXJyZW50IHRvdGFsIHVzYWdlIG9mIGFsbCBy
ZWxldmFudCBpdGVtcyBpbiB0aGlzIHNlY3VyaXR5IG9yaWdpbiBpbiBieXRlcy4KLS0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZTsKLQotLy8gTWVhbnQgdG8gYmUgaW1wbGVtZW50ZWQgaW4gYSBz
dWJjbGFzcy4KLS8vIFJldHVybnMgdGhlIHF1b3RhIG9mIHRoaXMgc2VjdXJpdHkgb3JpZ2luIGlu
IGJ5dGVzLgotLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhOwotCi0vLyBNZWFudCB0byBiZSBp
bXBsZW1lbnRlZCBpbiBhIHN1YmNsYXNzLgotLy8gU2V0cyB0aGUgc3RvcmFnZSBxdW90YSBpbiBi
eXRlcy4KLS0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YTsKK0BlbmQK
IAorQGludGVyZmFjZSBXZWJTZWN1cml0eU9yaWdpbiAoV2ViUXVvdGFNYW5hZ2VycykKKy0gKGlk
PFdlYlF1b3RhTWFuYWdlcj4pYXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlcjsKKy0gKGlkPFdl
YlF1b3RhTWFuYWdlcj4pZGF0YWJhc2VRdW90YU1hbmFnZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggZGJiZjll
My4uMWMwODI0OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA4LTAyICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVy
LU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBhcnQgNSAtIFJlZmFj
dG9yIFF1b3RhIE1hbmFnZW1lbnQgaW4gV2ViU2VjdXJpdHlPcmlnaW4gaW50byBNYW5hZ2Vycwor
CisgICAgICAgICAgQ2hhbmdlIG9sZCBzdHlsZSBjYWxscyB0byBtYWtlIHVzZSBvZiB0aGUgbWFu
YWdlcnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RGF0YWJhc2VRdW90
YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAg
ICgtW1VJRGVsZWdhdGUgd2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1
cml0eU9yaWdpbjpkYXRhYmFzZTpdKToKKwogMjAxMC0wOC0wMiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCmluZGV4IDdkYjdmZmYuLjdlODEyYTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAg
LTYwLDYgKzYwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnMuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlF1b3RhTWFuYWdlci5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYlNjcmlwdFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VjdXJpdHlPcmln
aW5Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgpAQCAtMzEw
LDcgKzMxMSw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGljeURl
bGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKIHsgICAg
CiAgICAgV2ViU2VjdXJpdHlPcmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxs
b2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZmlsZTovLy8iXV07Ci0gICAg
W29yaWdpbiBzZXRRdW90YTpxdW90YV07CisgICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFn
ZXJdIHNldFF1b3RhOnF1b3RhXTsKICAgICBbb3JpZ2luIHJlbGVhc2VdOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbSBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDNkYzM3OGEuLmNj
OWE1ZDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1t
CkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogI2lt
cG9ydCA8V2ViS2l0L1dlYkZyYW1lUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxW
aWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYlF1b3RhTWFuYWdlci5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YlVJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgpAQCAtMTYw
LDcgKzE2MSw3IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0luZm8gPSBu
aWw7CiAgICAgICAgICAgICBbb3JpZ2luIHBvcnRdLCBbZGF0YWJhc2VJZGVudGlmaWVyIFVURjhT
dHJpbmddKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1
b3RhID0gNSAqIDEwMjQgKiAxMDI0OyAgICAKLSAgICBbb3JpZ2luIHNldFF1b3RhOmRlZmF1bHRR
dW90YV07CisgICAgW1tvcmlnaW4gZGF0YWJhc2VRdW90YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1
bHRRdW90YV07CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzZXRTdGF0
dXNUZXh0OihOU1N0cmluZyAqKXRleHQK
</data>
<flag name="review"
          id="51612"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="51712"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63291</attachid>
            <date>2010-08-02 19:35:49 -0700</date>
            <delta_ts>2010-08-03 13:15:19 -0700</delta_ts>
            <desc>[PATCH] Part 6 - LayoutTest and Cleanup</desc>
            <filename>part6.patch</filename>
            <type>text/plain</type>
            <size>35385</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzZDc1NzJkLi44ZjQzOGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDgt
MDIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hl
IFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKKyAgICAgICAg
UGFydCA2IC0gTGF5b3V0VGVzdCBhbmQgQ2xlYW51cAorCisgICAgICAgICogaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2lu
LWlmcmFtZS0xLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0yLm1hbmlm
ZXN0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90
YS1vcmlnaW4taWZyYW1lLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBj
YWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLm1hbmlmZXN0OiBBZGRlZC4KKwog
MjAxMC0wOC0wMiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTm90IHJldmlld2VkLiBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL29yaWdpbi1xdW90YS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1MzBiYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDkgQEAKK1VJIERFTEVHQVRFIEFQUExJQ0FUSU9OIENBQ0hFIENBTExCQUNLOiBl
eGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOntodHRw
LCAxMjcuMC4wLjEsIDgwMDB9CitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGVyLW9yaWdpbiBhcHBs
aWNhdGlvbiBjYWNoZSBxdW90YXMgYXJlIGVuZm9yY2VkLgorCitUaGlzIHRlc3Qgc2V0cyB0aGUg
cXVvdGEgZm9yIHRoZSBvcmlnaW4gdG8gMjBrYiwgYW5kIGF0dGVtcHRzIHRvIGZpbGwgaXQgdXAg
d2l0aCAyIGlmcmFtZXMgdGhhdCBhcmUgMTNrYiBlYWNoLiBUaGUgYXBwbGljYXRpb24gY2FjaGUg
ZG93bmxvYWQgcHJvY2VzcyBzaG91bGQgZmFpbCBvbiB0aGUgMm5kIGlmcmFtZSBhbmQgdGhlIFVJ
IERlbGVnYXRlIHNob3VsZCBiZSBpbmZvcm1lZCBvZiB0aGUgZXhjZWVkZWQgcXVvdGEuIEluY3Jl
YXNpbmcgdGhlIHNpemUgdG8gNDBrYi4gQSAzcmQgaWZyYW1lIGlzIGFkZGVkLCB3aGljaCBzaG91
bGQgc3VjY2VlZC4KKworUEFTUyAtIGNhY2hlZCBpZnJhbWUtMQorUEFTUyAtIGVycm9yIGNhY2hp
bmcgaWZyYW1lLTIgYXMgZXhwZWN0ZWQKK1BBU1MgLSBjYWNoZWQgaWZyYW1lLTMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTczMjJmZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvb3JpZ2luLXF1b3RhLmh0bWwKQEAgLTAs
MCArMSw3NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKKy8vIEhlbHBlcnMuCisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworLy8gU3RhcnQgYW5kIGVu
ZC4KKworZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJBbGxBcHBsaWNh
dGlvbkNhY2hlcygpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXBwbGljYXRp
b25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSgyMCoxMDI0KTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgYWRkRmlyc3RJRnJhbWUoKTsKK30KKwor
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKy8v
IFN0YWdlcy4KKworZnVuY3Rpb24gYWRkSUZyYW1lV2l0aENvbnRpbnVhdGlvbihzcmMsIGNvbnRp
bnVhdGlvbikgeworICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSBjb250aW51YXRpb247CisgICAgdmFy
IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5z
cmMgPSBzcmM7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworfQorCitm
dW5jdGlvbiBhZGRGaXJzdElGcmFtZSgpIHsKKyAgICAvLyBFeHBlY3RlZCB0byBzdWNjZWVkLgor
ICAgIGFkZElGcmFtZVdpdGhDb250aW51YXRpb24oInJlc291cmNlcy9xdW90YS1vcmlnaW4taWZy
YW1lLTEuaHRtbCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZyhldmVudC5kYXRhKTsK
KyAgICAgICAgYWRkU2Vjb25kSUZyYW1lKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGFkZFNl
Y29uZElGcmFtZSgpIHsKKyAgICAvLyBFeHBlY3RlZCB0byBmYWlsLCB0aGVuIGluY3JlYXNlIHRo
ZSBxdW90YS4KKyAgICAvLyBOT1RFOiBXaGVuIHRoaXMgZmFpbHMsIHRoZSBleGNlZWQgY2FsbGJh
Y2sgd2lsbCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlIGl0IGJhY2sgdG8gdGhlIGRlZmF1bHQgcXVv
dGEgc2l6ZS4KKyAgICBhZGRJRnJhbWVXaXRoQ29udGludWF0aW9uKCJyZXNvdXJjZXMvcXVvdGEt
b3JpZ2luLWlmcmFtZS0yLmh0bWwiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coZXZl
bnQuZGF0YSk7CisgICAgICAgIGFkZFRoaXJkSUZyYW1lKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIGFkZFRoaXJkSUZyYW1lKCkgeworICAgIC8vIEV4cGVjdGVkIHRvIHN1Y2NlZWQuCisgICAg
YWRkSUZyYW1lV2l0aENvbnRpbnVhdGlvbigicmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUt
My5odG1sIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKGV2ZW50LmRhdGEpOworICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgfSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGVyLW9y
aWdpbiBhcHBsaWNhdGlvbiBjYWNoZSBxdW90YXMgYXJlIGVuZm9yY2VkLjwvcD4KKzxwPgorICAg
IFRoaXMgdGVzdCBzZXRzIHRoZSBxdW90YSBmb3IgdGhlIG9yaWdpbiB0byAyMGtiLCBhbmQgYXR0
ZW1wdHMgdG8gZmlsbAorICAgIGl0IHVwIHdpdGggMiBpZnJhbWVzIHRoYXQgYXJlIDEza2IgZWFj
aC4gVGhlIGFwcGxpY2F0aW9uIGNhY2hlIGRvd25sb2FkCisgICAgcHJvY2VzcyBzaG91bGQgZmFp
bCBvbiB0aGUgMm5kIGlmcmFtZSBhbmQgdGhlIFVJIERlbGVnYXRlIHNob3VsZCBiZQorICAgIGlu
Zm9ybWVkIG9mIHRoZSBleGNlZWRlZCBxdW90YS4gSW5jcmVhc2luZyB0aGUgc2l6ZSB0byA0MGti
LiBBIDNyZAorICAgIGlmcmFtZSBpcyBhZGRlZCwgd2hpY2ggc2hvdWxkIHN1Y2NlZWQuCis8L3A+
Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1p
ZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMv
cXVvdGEtb3JpZ2luLWlmcmFtZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYzUwOTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMS5odG1sCkBAIC0wLDAgKzEs
OCBAQAorPGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9yaWdpbi1pZnJhbWUtMS5tYW5pZmVzdCI+Cis8
c2NyaXB0PgorLy8gaWZyYW1lLTEgaXMgZXhwZWN0ZWQgdG8gc3VjY2VlZC4KK2FwcGxpY2F0aW9u
Q2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJQQVNTIC0g
Y2FjaGVkIGlmcmFtZS0xIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1
bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBlcnJvciBjYWNoaW5nIGlmcmFt
ZS0xLCBleHBlY3RlZCB0aGlzIHRvIHN1Y2NlZWQgYW5kIGZpdCBpbiB0aGUgcXVvdGEiLCAiKiIp
OyB9OworYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rpb24oKSB7IHBhcmVudC5w
b3N0TWVzc2FnZSgiRkFJTCAtIG5vIHVwZGF0ZSBpZnJhbWUtMSwgYWxsIGNhY2hlcyBzaG91bGQg
aGF2ZSBiZWVuIGRlbGV0ZWQgYmVmb3JlIHRoaXMgdGVzdCIsICIqIik7IH07Cis8L3NjcmlwdD4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMS5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMS5tYW5pZmVzdApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2QzNzg0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3Jp
Z2luLWlmcmFtZS0xLm1hbmlmZXN0CkBAIC0wLDAgKzEsNyBAQAorQ0FDSEUgTUFOSUZFU1QKKwor
IyBpZnJhbWUtMSBzaG91bGQgc3VjY2VlZC4gVGhlIG9yaWdpbiBxdW90YSBoYXMgYmVlbiBzZXQg
dG8KKyMgMjBrYi4gQ2FjaGluZyBhYmUucG5nIGFuZCB0aGlzIG1hbmlmZXN0IHdpbGwgYmUgfjEz
a2IuCisKK0NBQ0hFOgorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjFjMTFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVv
dGEtb3JpZ2luLWlmcmFtZS0yLmh0bWwKQEAgLTAsMCArMSw4IEBACis8aHRtbCBtYW5pZmVzdD0i
cXVvdGEtb3JpZ2luLWlmcmFtZS0yLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CisvLyBpZnJhbWUtMiBp
cyBleHBlY3RlZCB0byBmYWlsIGR1ZSB0byBleGNlZWRpbmcgdGhlIG9yaWdpbiBxdW90YS4KK2Fw
cGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdl
KCJGQUlMIC0gY2FjaGVkIGlmcmFtZS0yLCBleHBlY3RlZCB0aGlzIHRoaXMgZmFpbCBiZWNhdXNl
IGl0IHJlYWNoZWQgdGhlIHF1b3RhIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25lcnJv
ciA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIlBBU1MgLSBlcnJvciBjYWNoaW5n
IGlmcmFtZS0yIGFzIGV4cGVjdGVkIiwgIioiKTsgfTsKK2FwcGxpY2F0aW9uQ2FjaGUub25ub3Vw
ZGF0ZSA9IGZ1bmN0aW9uKCkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoIkZBSUwgLSBubyB1cGRhdGUg
aWZyYW1lLTIsIGFsbCBjYWNoZXMgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJlZm9yZSB0aGlz
IHRlc3QiLCAiKiIpOyB9OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTIu
bWFuaWZlc3QgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90
YS1vcmlnaW4taWZyYW1lLTIubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjQyOTJiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMi5tYW5pZmVzdApAQCAtMCww
ICsxLDggQEAKK0NBQ0hFIE1BTklGRVNUCisKKyMgaWZyYW1lLTIgc2hvdWxkIGZhaWwuIFRoZSBv
cmlnaW4gcXVvdGEgaGFzIGJlZW4gc2V0IHRvCisjIDIwa2IsIHdpdGggfjEza2IgYWxyZWFkeSBj
YWNoZWQuIENhY2hpbmcgYWJlLnBuZyBhbmQgdGhpcworIyBtYW5pZmVzdCAofjEza2IpIHNob3Vs
ZCBleGNlZWQgdGhlIHF1b3RhIGFuZCBmYWlsLgorCitDQUNIRToKK2FiZS5wbmcKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdp
bi1pZnJhbWUtMy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTE4NWU1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL3F1b3RhLW9yaWdpbi1pZnJhbWUtMy5odG1sCkBAIC0wLDAg
KzEsOCBAQAorPGh0bWwgbWFuaWZlc3Q9InF1b3RhLW9yaWdpbi1pZnJhbWUtMy5tYW5pZmVzdCI+
Cis8c2NyaXB0PgorLy8gaWZyYW1lLTMgaXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCBvbmNlIHRoZSBx
dW90YSBoYXMgYmVlbiBpbmNyZWFzZWQuCithcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVu
Y3Rpb24oKSB7IHBhcmVudC5wb3N0TWVzc2FnZSgiUEFTUyAtIGNhY2hlZCBpZnJhbWUtMyIsICIq
Iik7IH07CithcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBv
c3RNZXNzYWdlKCJGQUlMIC0gZXJyb3IgY2FjaGluZyBpZnJhbWUtMywgZXhwZWN0ZWQgdGhpcyB0
byBzdWNjZWVkIHdpdGggdGhlIHF1b3RhIGluY3JlYXNlZCIsICIqIik7IH07CithcHBsaWNhdGlv
bkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgcGFyZW50LnBvc3RNZXNzYWdlKCJGQUlM
IC0gbm8gdXBkYXRlIGlmcmFtZS0zLCBhbGwgY2FjaGVzIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRl
ZCBiZWZvcmUgdGhpcyB0ZXN0IiwgIioiKTsgfTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcXVvdGEtb3Jp
Z2luLWlmcmFtZS0zLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvcXVvdGEtb3JpZ2luLWlmcmFtZS0zLm1hbmlmZXN0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmJjMjk4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9xdW90YS1vcmlnaW4taWZyYW1lLTMubWFu
aWZlc3QKQEAgLTAsMCArMSw4IEBACitDQUNIRSBNQU5JRkVTVAorCisjIGlmcmFtZS0zIHNob3Vs
ZCBzdWNjZWVkLiBUaGUgb3JpZ2luIHF1b3RhIHNodWxkIGhhdmUgYmVlbgorIyByYWlzZWQgdG8g
NDBrYiwgd2l0aCB+MTNrYiBhbHJlYWR5IGNhY2hlZC4gQ2FjaGluZyBhYmUucG5nCisjIGFuZCB0
aGlzIG1hbmlmZXN0IHdpbGwgYmUgfjEza2IsIGJyaW5naW5nIHVzIHVwIHRvIDI2a2IuCisKK0NB
Q0hFOgorYWJlLnBuZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZmZGUzLi5iMDcxYTE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA4LTAy
ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBU
b3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENhcGFjaXR5IChRdW90YXMpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDYyNworCisgICAgICAgIFBh
cnQgNiAtIExheW91dFRlc3QgYW5kIENsZWFudXAKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL29yaWdpbi1xdW90YS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjaGVkT3JpZ2luUXVvdGFDYWxsYmFjayk6IG1hZGUgc3lu
Y2hyb25vdXMsIGFzIGFzeW5jaHJvbm91c2x5IHRoZSBjYWNoZSBncm91cCB3YXMgZGVsZXRlZCB0
b28gc29vbi4KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
VXBkYXRlZFF1b3RhRm9yT3JpZ2luKTogYWxsIHN0b3Jpbmcgb3BlcmF0aW9ucyBzaG91bGQgZm9y
Y2UgdGhlIGRhdGFiYXNlIHRvIGJlIGNyZWF0ZWQgaWYgbmVlZGVkLgorCiAyMDEwLTA4LTAyICBL
cmlzdGlhbiBNb25zZW4gIDxrcmlzdGlhbm1AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDM5NWQ5YWQuLjNhZThkOWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTA3OSwy
NSArMTA3OSw2IEBAIHByaXZhdGU6CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBtX2NhY2hl
R3JvdXA7CiB9OwogCi1jbGFzcyBPcmlnaW5RdW90YVJlYWNoZWRDYWxsYmFja1RpbWVyOiBwdWJs
aWMgVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBPcmlnaW5RdW90YVJlYWNoZWRDYWxsYmFja1Rp
bWVyKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogY2FjaGVHcm91cCwgRnJhbWUqIGZyYW1lKQotICAg
ICAgICA6IG1fY2FjaGVHcm91cChjYWNoZUdyb3VwKQotICAgICAgICAsIG1fZnJhbWUoZnJhbWUp
Ci0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQotICAg
IHsKLSAgICAgICAgbV9jYWNoZUdyb3VwLT5kaWRSZWFjaE9yaWdpblF1b3RhKG1fZnJhbWUucmVs
ZWFzZSgpKTsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBtX2NhY2hlR3JvdXA7Ci0gICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwotfTsK
LQogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hl
U2l6ZUNhbGxiYWNrKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMTEwOCwx
MSArMTA4OSw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRN
YXhBcHBDYWNoZVNpemVDYWxsYmFjaygpCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpz
Y2hlZHVsZVJlYWNoZWRPcmlnaW5RdW90YUNhbGxiYWNrKCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIFJlZlB0cjxGcmFtZT4gZnJhbWVQcm90ZWN0b3IgPSBtX2ZyYW1lOwot
ICAgIE9yaWdpblF1b3RhUmVhY2hlZENhbGxiYWNrVGltZXIqIHRpbWVyID0gbmV3IE9yaWdpblF1
b3RhUmVhY2hlZENhbGxiYWNrVGltZXIodGhpcywgZnJhbWVQcm90ZWN0b3IuZ2V0KCkpOwotICAg
IHRpbWVyLT5zdGFydE9uZVNob3QoMCk7Ci0gICAgLy8gVGhlIHRpbWVyIHdpbGwgZGVsZXRlIGl0
c2VsZiBvbmNlIGl0IGZpcmVzLgorICAgIC8vIEZJWE1FOiBpdCBtaWdodCBiZSBuaWNlIHRvIHJ1
biB0aGlzIGFzeW5jaHJvbm91c2x5LCBiZWNhdXNlIHRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZSB0
byB3YWl0IGZvci4KKyAgICBkaWRSZWFjaE9yaWdpblF1b3RhKG1fZnJhbWUpOwogfQogCiBjbGFz
cyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggZWM4MzkxMS4uNTYyNDgwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNTE4LDcgKzUx
OCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnJlbWFpbmluZ1NpemVGb3JPcmln
aW5FeGNsdWRpbmdDYWNoZShjb25zdCBTZWN1cml0CiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIGludDY0X3QgcXVvdGEpCiB7Ci0gICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKKyAgICBv
cGVuRGF0YWJhc2UodHJ1ZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODM4MjEzMy4uYjI0NmU1ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwy
MCBAQAogICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2lu
IFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CiAKKyAgICAgICAgUGFydCA2IC0gTGF5b3V0VGVzdCBh
bmQgQ2xlYW51cAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNo
ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW06Cisg
ICAgICAgICgrW1dlYkFwcGxpY2F0aW9uQ2FjaGUgc2V0TWF4aW11bVNpemU6XSk6IHJlZmFjdG9y
IG91dCBkZWxldGluZyB0aGUgYXBwbGljYXRpb24gY2FjaGVzLgorICAgICAgICAoK1tXZWJBcHBs
aWNhdGlvbkNhY2hlIGRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzXSk6IGRlbGV0ZSBhcHBsaWNh
dGlvbiBjYWNoZXMuCisKKzIwMTAtMDgtMDIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2luIFN0b3JhZ2UgQ2Fw
YWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjI3CisKICAgICAgICAgUGFydCA1IC0gUmVmYWN0b3IgUXVvdGEgTWFuYWdlbWVu
dCBpbiBXZWJTZWN1cml0eU9yaWdpbiBpbnRvIE1hbmFnZXJzCiAKICAgICAgICAgUGVyLU9yaWdp
biBxdW90YXMgZXhpc3QgZm9yIERhdGFiYXNlcyBhbmQgQXBwbGljYXRpb24gQ2FjaGVzLiBDbGll
bnRzCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9u
Q2FjaGUuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5o
CmluZGV4IDc4YjA2YjcuLjk3NmNlMTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQXBwbGljYXRpb25DYWNoZS5oCkBAIC0zMyw0ICszMyw2IEBACiArIChsb25nIGxvbmcp
ZGVmYXVsdE9yaWdpblF1b3RhOwogKyAodm9pZClzZXREZWZhdWx0T3JpZ2luUXVvdGE6KGxvbmcg
bG9uZylzaXplOwogCisrICh2b2lkKWRlbGV0ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzOworCiBAZW5k
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0K
aW5kZXggNWMyYTIwOC4uNDVmMDcwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBcHBsaWNhdGlvbkNhY2hlLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQpAQCAtMzksOCArMzksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogKyAodm9pZClzZXRNYXhpbXVtU2l6ZToobG9uZyBsb25nKXNpemUKIHsK
LSAgICBjYWNoZVN0b3JhZ2UoKS5lbXB0eSgpOwotICAgIGNhY2hlU3RvcmFnZSgpLnZhY3V1bURh
dGFiYXNlRmlsZSgpOworICAgIFtXZWJBcHBsaWNhdGlvbkNhY2hlIGRlbGV0ZUFsbEFwcGxpY2F0
aW9uQ2FjaGVzXTsKICAgICBjYWNoZVN0b3JhZ2UoKS5zZXRNYXhpbXVtU2l6ZShzaXplKTsKIH0K
IApAQCAtNTQsNiArNTMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgY2FjaGVT
dG9yYWdlKCkuc2V0RGVmYXVsdE9yaWdpblF1b3RhKHNpemUpOwogfQogCisrICh2b2lkKWRlbGV0
ZUFsbEFwcGxpY2F0aW9uQ2FjaGVzCit7CisgICAgY2FjaGVTdG9yYWdlKCkuZW1wdHkoKTsKKyAg
ICBjYWNoZVN0b3JhZ2UoKS52YWN1dW1EYXRhYmFzZUZpbGUoKTsKK30KKwogQGVuZAogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwppbmRleCAxYzA4MjQ5Li41NzY2YzFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsNTggQEAKICAgICAg
ICAgTGltaXQgQXBwbGljYXRpb25DYWNoZSBUb3RhbCBhbmQgUGVyLU9yaWdpbiBTdG9yYWdlIENh
cGFjaXR5IChRdW90YXMpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDYyNwogCisgICAgICAgIFBhcnQgNiAtIExheW91dFRlc3QgYW5kIENsZWFudXAK
KworICAgICAgICAgIEFsbG93IHRlc3RzIHRvIGRlbGV0ZSBhcHBsaWNhdGlvbiBjYWNoZXMgYW5k
IHNldCBhcHBsaWNhdGlvbiBjYWNoZQorICAgICAgICAgIG9yaWdpbiBxdW90YXMsIHNvIHRoZXkg
Y2FuIGJlIHRlc3RlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6CisgICAgICAgIChkdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tz
Q2FsbGJhY2spOiBKYXZhU2NyaXB0IGNhbGxiYWNrLCBkZWxlZ2F0ZXMgdG8gdGhlIGNvbnRyb2xs
ZXIuCisgICAgICAgIChjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzQ2FsbGJhY2spOiBzaG91bGQg
ZGVsZXRlIGFsbCBhcHBsaWNhdGlvbiBjYWNoZXMuCisgICAgICAgIChzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGFDYWxsYmFjayk6IHNob3VsZCBzZXQgdGhlIG9yaWdpbiBxdW90YSBmb3Ig
dGhlIGxvY2FsaG9zdCB0ZXN0cy4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcEFwcGxpY2F0aW9uQ2Fj
aGVEZWxlZ2F0ZUNhbGxiYWNrcyk6IGFjY2Vzc29yIHRvIHNlZSBpZiBhcHBsaWNhdGlvbiBjYWNo
ZSBjYWxsYmFja3Mgc2hvdWxkIGJlIG91dHB1dC4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKTogZW5hYmxlIG9y
IGRpc2FibGUgZGVidWcgb3V0cHV0IHdoZW4gdGhlIGFwcGxpY2F0aW9uIGNhY2hlIHF1b3RhIGlz
IHJlYWNoZWQuCisKKyAgICAgICAgICBNYWMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk6IGRlbGV0ZSBh
cHBsaWNhdGlvbiBjYWNoZXMuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKTogc2V0IHRoZSBxdW90YSBmb3IgbG9jYWxob3N0Lgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtV
SURlbGVnYXRlIHdlYlZpZXc6ZnJhbWU6ZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlP
cmlnaW46ZGF0YWJhc2U6XSk6IHN0eWxlIGZpeC4KKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJW
aWV3OmV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46
XSk6IHJlc2V0IHRoZSBxdW90YS4KKworICAgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb25zIGZv
ciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNs
ZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aGVzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBw
bGljYXRpb25DYWNoZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6CisKKzIwMTAtMDgtMDIgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMaW1pdCBBcHBsaWNhdGlvbkNhY2hlIFRvdGFsIGFuZCBQZXItT3JpZ2lu
IFN0b3JhZ2UgQ2FwYWNpdHkgKFF1b3RhcykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNjI3CisKICAgICAgICAgUGFydCA1IC0gUmVmYWN0b3IgUXVv
dGEgTWFuYWdlbWVudCBpbiBXZWJTZWN1cml0eU9yaWdpbiBpbnRvIE1hbmFnZXJzCiAKICAgICAg
ICAgICBDaGFuZ2Ugb2xkIHN0eWxlIGNhbGxzIHRvIG1ha2UgdXNlIG9mIHRoZSBtYW5hZ2Vycy4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAppbmRleCBkOTgxNjRiLi4zZDkxZTBjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MSw3ICs0MSw4IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCkKLSAgICA6IG1fZHVtcEFzUERGKGZhbHNlKQorICAg
IDogbV9kdW1wQXBwbGljYXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKGZhbHNlKQorICAgICwg
bV9kdW1wQXNQREYoZmFsc2UpCiAgICAgLCBtX2R1bXBBc1RleHQoZmFsc2UpCiAgICAgLCBtX2R1
bXBCYWNrRm9yd2FyZExpc3QoZmFsc2UpCiAgICAgLCBtX2R1bXBDaGlsZEZyYW1lU2Nyb2xsUG9z
aXRpb25zKGZhbHNlKQpAQCAtOTIsNiArOTMsMTMgQEAgUGFzc1JlZlB0cjxMYXlvdXRUZXN0Q29u
dHJvbGxlcj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNyZWF0ZShjb25zdCBzdGQ6OnN0cmluZyYK
IAogLy8gU3RhdGljIEZ1bmN0aW9ucwogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wQXBwbGljYXRp
b25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OworICAgIGNvbnRyb2xsZXItPnNldER1bXBBcHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFj
a3ModHJ1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CiBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wQXNQREZDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CkBAIC0zMTAsNiArMzE4LDE1IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNhbGxTaG91bGRD
bG9zZU9uV2ViVmlld0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjCiAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5jYWxsU2hvdWxk
Q2xvc2VPbldlYlZpZXcoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGNsZWFyQWxsQXBwbGlj
YXRpb25DYWNoZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
Ly8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgorICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPmNsZWFyQWxsQXBwbGljYXRpb25D
YWNoZXMoKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgY2xlYXJBbGxEYXRhYmFzZXNDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50
YXRpb24KQEAgLTg0Miw3ICs4NTksMjEgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFIKICAgICAg
ICAgY29udHJvbGxlci0+c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KHNpemUpKTsKICAgICAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGFDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCisgICAgTGF5
b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29u
dHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisKKyAgICBkb3VibGUg
c2l6ZSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIE5VTEwpOworICAg
IGlmICghaXNuYW4oc2l6ZSkpCisgICAgICAgIGNvbnRyb2xsZXItPnNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAogc3RhdGljIEpT
VmFsdWVSZWYgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKQEAgLTE3NjMsNiArMTc5NCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJhcGlUZXN0
TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMIiwgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVS
TENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3
YXJkSXRlbSIsIGFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyIsIGNhbGxTaG91bGRDbG9z
ZU9uV2ViVmlld0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImNsZWFyQWxsQXBwbGljYXRp
b25DYWNoZXMiLCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiY2xlYXJBbGxEYXRhYmFzZXMiLCBjbGVhckFsbERhdGFiYXNlc0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImNsZWFyQmFja0ZvcndhcmRMaXN0IiwgY2xlYXJCYWNrRm9yd2Fy
ZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbGVhclBlcnNpc3RlbnRVc2VyU3R5
bGVTaGVldCIsIGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
QEAgLTE3NzIsNiArMTgwNCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJkaXNhYmxlSW1hZ2VMb2FkaW5nIiwg
ZGlzYWJsZUltYWdlTG9hZGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BhdGNo
UGVuZGluZ0xvYWRSZXF1ZXN0cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BsYXkiLCBkaXNwbGF5Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcyIsIGR1bXBB
cHBsaWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJkdW1wQXNUZXh0IiwgZHVtcEFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImR1bXBCYWNrRm9yd2FyZExpc3QiLCBkdW1wQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMiLCBkdW1wQ2hpbGRG
cmFtZVNjcm9sbFBvc2l0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC0xODI2LDcgKzE4NTksOCBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2VwdENv
b2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAg
eyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LCAKKyAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENh
Y2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkIiwgc2V0QXV0
aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEF1dGhl
bnRpY2F0aW9uVXNlcm5hbWUiLCBzZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQiLCBzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAzOWNjM2ZiLi45
ZDE1ZjRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZVdpbmRv
d09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCiAgICAgdm9pZCBhZGREaXNhbGxvd2VkVVJMKEpTU3Ry
aW5nUmVmIHVybCk7CisgICAgdm9pZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CiAgICAg
dm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKICAgICB2b2lkIGNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCk7CkBAIC03OSw2ICs4
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKGJvb2wpOwogICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wp
OwogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVv
dGEpOworICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChi
b29sKTsKICAgICB2b2lkIHNldENhY2hlTW9kZWwoaW50KTsKICAgICB2b2lkIHNldEN1c3RvbVBv
bGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSk7CkBAIC0xMjYs
NiArMTI4LDkgQEAgcHVibGljOgogICAgIGJvb2wgZ2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRlUGl4ZWxSZXN1bHRzOyB9CiAgICAgdm9pZCBzZXRHZW5lcmF0
ZVBpeGVsUmVzdWx0cyhib29sIGdlbmVyYXRlUGl4ZWxSZXN1bHRzKSB7IG1fZ2VuZXJhdGVQaXhl
bFJlc3VsdHMgPSBnZW5lcmF0ZVBpeGVsUmVzdWx0czsgfQogCisgICAgYm9vbCBkdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wQXBwbGlj
YXRpb25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzOyB9CisgICAgdm9pZCBzZXREdW1wQXBwbGljYXRp
b25DYWNoZURlbGVnYXRlQ2FsbGJhY2tzKGJvb2wgZHVtcENhbGxiYWNrcykgeyBtX2R1bXBBcHBs
aWNhdGlvbkNhY2hlRGVsZWdhdGVDYWxsYmFja3MgPSBkdW1wQ2FsbGJhY2tzOyB9CisKICAgICBi
b29sIGR1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2R1bXBCYWNrRm9yd2Fy
ZExpc3Q7IH0KICAgICB2b2lkIHNldER1bXBCYWNrRm9yd2FyZExpc3QoYm9vbCBkdW1wQmFja0Zv
cndhcmRMaXN0KSB7IG1fZHVtcEJhY2tGb3J3YXJkTGlzdCA9IGR1bXBCYWNrRm9yd2FyZExpc3Q7
IH0KIApAQCAtMjg3LDYgKzI5Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6
c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKKyAgICBib29sIG1fZHVtcEFwcGxpY2F0aW9u
Q2FjaGVEZWxlZ2F0ZUNhbGxiYWNrczsKICAgICBib29sIG1fZHVtcEFzUERGOwogICAgIGJvb2wg
bV9kdW1wQXNUZXh0OwogICAgIGJvb2wgbV9kdW1wQmFja0ZvcndhcmRMaXN0OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IGNkMjdjMTguLmRkMDc2YWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTE1NCw2ICsxNTQsOCBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRDYWxsQ2xv
c2VPbldlYlZpZXdzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRDYWxsQ2xvc2VPbldlYlZp
ZXdzKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOworICAgIGJpbmRNZXRob2Qo
ImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFy
QWxsQXBwbGljYXRpb25DYWNoZXMpOworICAgIGJpbmRNZXRob2QoInNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKTsKIAogICAgIGJpbmRNZXRob2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQpOwogICAgIGJpbmRNZXRob2QoInNldFhTU0F1ZGl0b3JFbmFibGVkIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk7CkBAIC02NDgsNiArNjUwLDE4
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZURhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKGNvbnN0IENwcEFyZ3VtZW50TGlzCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBRdW90YXMuCisgICAgcmVz
dWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxpY2F0
aW9uIENhY2hlIFF1b3Rhcy4KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0U2Nyb2xsYmFyUG9saWN5KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmgKaW5kZXggNjc0ODM1Mi4uMDk2ZDFkZiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC0yNTAsNiArMjUwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKIAorICAgIC8vIENsZWFycyBhbGwgQXBwbGljYXRpb24gQ2Fj
aGVzLgorICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcyhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgLy8gU2V0cyB0aGUgQXBwbGljYXRpb24gUXVvdGEg
Zm9yIHRoZSBsb2NhbGhvc3Qgb3JpZ2luLgorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogICAgIC8v
IENsZWFycyBhbGwgZGF0YWJhc2VzLgogICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNldHMgdGhlIGRlZmF1bHQg
cXVvdGEgZm9yIGFsbCBvcmlnaW5zCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCAyYWVjZTEwLi42
NTIzODhjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTUyOCw2ICs1MjgsMTYgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXQoKQogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBz
dXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KK30KKwordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBxdW90YSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQgQXBwbGljYXRp
b24gQ2FjaGUgcXVvdGFzLgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFs
bERhdGFiYXNlcygpCiB7CiAgICAgd2Via2l0X3JlbW92ZV9hbGxfd2ViX2RhdGFiYXNlcygpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCmluZGV4IDdlODEyYTAuLjVlZGY4MTEgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTEyNCw2ICsxMjQsMTEgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2FsbFNo
b3VsZENsb3NlT25XZWJWaWV3KCkKICAgICByZXR1cm4gW1ttYWluRnJhbWUgd2ViVmlld10gc2hv
dWxkQ2xvc2VdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjaGVzKCkKK3sKKyAgICBbV2ViQXBwbGljYXRpb25DYWNoZSBkZWxldGVBbGxBcHBs
aWNhdGlvbkNhY2hlc107Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxs
RGF0YWJhc2VzKCkKIHsKICAgICBbW1dlYkRhdGFiYXNlTWFuYWdlciBzaGFyZWRXZWJEYXRhYmFz
ZU1hbmFnZXJdIGRlbGV0ZUFsbERhdGFiYXNlc107CkBAIC0yOTQsNiArMjk5LDEzIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9u
ZyBsb25nIHNpemUpCiAgICAgW1dlYkFwcGxpY2F0aW9uQ2FjaGUgc2V0TWF4aW11bVNpemU6c2l6
ZV07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCit7CisgICAgV2ViU2VjdXJpdHlP
cmlnaW4gKm9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIGluaXRXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIl1dOworICAgIFtbb3Jp
Z2luIGFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXJdIHNldFF1b3RhOnF1b3RhXTsKKyAgICBb
b3JpZ2luIHJlbGVhc2VdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHByZWZlcmVuY2VzXSBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDpmbGFnXTsK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1t
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggY2M5
YTVkNC4uNWRiYTcyMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVs
ZWdhdGUubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkR1bXBSZW5kZXJUcmVlRHJhZ2dp
bmdJbmZvLmgiCiAjaW1wb3J0ICJFdmVudFNlbmRpbmdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJM
YXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJIVE1MVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJRdW90YU1hbmFnZXIu
aD4KQEAgLTE1NiwxNCArMTU3LDI2IEBAIER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvICpkcmFn
Z2luZ0luZm8gPSBuaWw7CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBmcmFt
ZTooV2ViRnJhbWUgKilmcmFtZSBleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdp
bjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZGF0YWJhc2U6KE5TU3RyaW5nICopZGF0YWJh
c2VJZGVudGlmaWVyCiB7Ci0gICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+
ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcERhdGFiYXNlQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgcHJpbnRmKCJVSSBE
RUxFR0FURSBEQVRBQkFTRSBDQUxMQkFDSzogZXhjZWVkZWREYXRhYmFzZVF1b3RhRm9yU2VjdXJp
dHlPcmlnaW46eyVzLCAlcywgJWl9IGRhdGFiYXNlOiVzXG4iLCBbW29yaWdpbiBwcm90b2NvbF0g
VVRGOFN0cmluZ10sIFtbb3JpZ2luIGhvc3RdIFVURjhTdHJpbmddLCAKICAgICAgICAgICAgIFtv
cmlnaW4gcG9ydF0sIFtkYXRhYmFzZUlkZW50aWZpZXIgVVRGOFN0cmluZ10pOworICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdFF1b3RhID0gNSAqIDEw
MjQgKiAxMDI0OyAgICAKICAgICBbW29yaWdpbiBkYXRhYmFzZVF1b3RhTWFuYWdlcl0gc2V0UXVv
dGE6ZGVmYXVsdFF1b3RhXTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IGV4Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46KFdl
YlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxiYWNrcygpKSB7Cisg
ICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgQVBQTElDQVRJT04gQ0FDSEUgQ0FMTEJBQ0s6IGV4
Y2VlZGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHlPcmlnaW46eyVzLCAl
cywgJWl9XG4iLAorICAgICAgICAgICAgW1tvcmlnaW4gcHJvdG9jb2xdIFVURjhTdHJpbmddLCBb
W29yaWdpbiBob3N0XSBVVEY4U3RyaW5nXSwgW29yaWdpbiBwb3J0XSk7CisgICAgfQorCisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBkZWZhdWx0T3JpZ2luUXVvdGEgPSBbV2Vi
QXBwbGljYXRpb25DYWNoZSBkZWZhdWx0T3JpZ2luUXVvdGFdOworICAgIFtbb3JpZ2luIGFwcGxp
Y2F0aW9uQ2FjaGVRdW90YU1hbmFnZXJdIHNldFF1b3RhOmRlZmF1bHRPcmlnaW5RdW90YV07Cit9
CisKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0
cmluZyAqKXRleHQKIHsKICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wU3RhdHVz
Q2FsbGJhY2tzKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGNhNTFmMWIuLjE5YzQxNDIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCkBAIC00OTQsNiArNDk0LDE2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3IgdGVzdGluZyBmaXggZm9yIDY3Mjc0OTUKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KK30KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVk
IGxvbmcgbG9uZyBxdW90YSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRvIHN1cHBvcnQg
QXBwbGljYXRpb24gQ2FjaGUgcXVvdGFzLgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXREYXRhYmFzZVF1b3RhKGludCBzaXplKQogewogICAgIGlmICghbV90b3BMb2FkaW5nRnJh
bWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmgKaW5kZXggMWRlZTZjZS4uMjRjMGQ0YiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAt
MTc0LDYgKzE3NCw5IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0xv
YWRSZXF1ZXN0cygpOwogICAgIHZvaWQgZGlzYWJsZUltYWdlTG9hZGluZygpOwogCisgICAgdm9p
ZCBjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKKwogICAgIHZvaWQgc2V0
RGF0YWJhc2VRdW90YShpbnQgc2l6ZSk7CiAgICAgdm9pZCBjbGVhckFsbERhdGFiYXNlcygpOwog
ICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGVuYWJsZSk7CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAppbmRleCA2NTE5YTk3Li4xNzU1ZGRmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAg
LTg4OCw2ICs4ODgsMTYgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNDb21tYW5kRW5h
YmxlZChKU1N0cmluZ1JlZiAvKm5hbWUqLykKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMu
Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudCB0byBzdXBwb3J0IEFwcGxpY2F0aW9uIENhY2hlIHF1b3Rhcy4KK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJBbGxEYXRhYmFzZXMoKQogewogICAgIENPTVB0cjxJV2Vi
RGF0YWJhc2VNYW5hZ2VyPiBkYXRhYmFzZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGZk
NmIyZDIuLmM4NDQ5NDIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC0yMjgsNiArMjI4LDE2IEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCkK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gc3VwcG9ydCBBcHBsaWNhdGlvbiBDYWNoZSBxdW90YXMuCit9CisKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25n
IGxvbmcgcXVvdGEpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBzdXBwb3J0IEFwcGxp
Y2F0aW9uIENhY2hlIHF1b3Rhcy4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xl
YXJBbGxEYXRhYmFzZXMoKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>
<flag name="review"
          id="51613"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="51713"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63391</attachid>
            <date>2010-08-03 16:58:24 -0700</date>
            <delta_ts>2010-08-03 16:58:24 -0700</delta_ts>
            <desc>[DIFF] These are the changes I added to make to leave the old interface intact.</desc>
            <filename>diff-code-added-back.patch</filename>
            <type>text/plain</type>
            <size>3182</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggYTkxMjg3ZC4uMDUxYTBiOCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEzLDYgKzEzLDkgQEAKICAgICAgICAgYW5k
IFdlYlNlY3VyaXR5T3JpZ2luIGFsbG93cyBhY2Nlc3MgdG8gcXVvdGEgbWFuYWdlcnMgZm9yIHRo
ZQogICAgICAgICBkaWZmZXJlbnQgdHlwZXMgb2YgcXVvdGFzLgogCisgICAgICAgIFRoaXMgYWxz
byBkZXByZWNhdGVzIHRoZSBvbGQgbWV0aG9kcyBvbiBXZWJTZWN1cml0eU9yaWdpbi4gVGhleSBh
cmUKKyAgICAgICAgbGVmdCBpbiBmb3Igbm93IHRvIHByZXZlbnQgYnJlYWtpbmcgb2xkZXIgY2xp
ZW50cy4KKwogICAgICAgICAgIFRoZSBXZWJRdW90YU1hbmFnZXIgaW50ZXJmYWNlIGFsbG93cyBx
dWVyeWluZyBhbmQgbW9kaWZ5aW5nIGEKICAgICAgICAgICBwZXItb3JpZ2luIHF1b3RhLiBUaGlz
IGlzIGltcGxlbWVudGVkIGZvciBib3RoIERhdGFiYXNlcyBhbmQKICAgICAgICAgICBBcHBsaWNh
dGlvbiBDYWNoZXMuCkBAIC0zMiw3ICszNSw3IEBACiAgICAgICAgICgtW1dlYkFwcGxpY2F0aW9u
Q2FjaGVRdW90YU1hbmFnZXIgdXNhZ2VdKToKICAgICAgICAgKC1bV2ViQXBwbGljYXRpb25DYWNo
ZVF1b3RhTWFuYWdlciBxdW90YV0pOgogICAgICAgICAoLVtXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGFNYW5hZ2VyIHNldFF1b3RhOl0pOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3Vy
aXR5T3JpZ2luUHJpdmF0ZS5oOiBBZGRlZCBhIGNhdGVnb3J5IHRvIGFjY2VzcyBtYW5hZ2Vycy4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaDogQWRk
ZWQgYSBjYXRlZ29yeSB0byBhY2Nlc3MgbWFuYWdlcnMuIERlcHJlY2F0ZWQgb2xkIG1ldGhvZHMu
CiAKICAgICAgICAgICBSZW1vdmUgdGhlIFdlYlNlY3VyaXR5T3JpZ2luIHN1Yi1jbGFzc2VzLiBN
YW5hZ2VycyBhcmUgYmV0dGVyLgogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpbi5tbQppbmRleCA5ZTc0NmY3Li5mMTlkY2I1IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJRdW90YU1h
bmFnZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRh
YmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNDMsMyArMTQ0LDQwIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogfQogCiBAZW5kCisKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBE
ZXByZWNhdGVkCisKKy8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGRlcHJlY2F0
ZWQgYW5kIHNob3VsZCByZW1vdmVkIGxhdGVyLgorLy8gQ2xpZW50cyBzaG91bGQgaW5zdGVhZCBn
ZXQgYSBXZWJRdW90YU1hbmFnZXIsIGFuZCBxdWVyeSAvIHNldCB0aGUgcXVvdGEgdmlhIHRoZSBN
YW5hZ2VyLgorLy8gTk9URTogdGhlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPiAjaW5jbHVk
ZSBzaG91bGQgYmUgcmVtb3ZlZCBhcyB3ZWxsLgorCitAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJp
dHlPcmlnaW4gKERlcHJlY2F0ZWQpCisKKy0gKHVuc2lnbmVkIGxvbmcgbG9uZyl1c2FnZQorewor
I2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkudXNhZ2VGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2
YXRlKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKKy0gKHVuc2lnbmVkIGxv
bmcgbG9uZylxdW90YQoreworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ocmVpbnRlcnByZXRfY2FzdDxTZWN1
cml0eU9yaWdpbio+KF9wcml2YXRlKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9
CisKKy0gKHZvaWQpc2V0UXVvdGE6KHVuc2lnbmVkIGxvbmcgbG9uZylxdW90YQoreworI2lmIEVO
QUJMRShEQVRBQkFTRSkKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zZXRRdW90YShy
ZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLCBxdW90YSk7CisjZW5k
aWYKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpblByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2Vj
dXJpdHlPcmlnaW5Qcml2YXRlLmgKaW5kZXggM2EzZDAzMS4uMjk3M2Q5MiAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAorKysg
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCkBA
IC00OSwzICs0OSwxMSBAQAogLSAoaWQ8V2ViUXVvdGFNYW5hZ2VyPilhcHBsaWNhdGlvbkNhY2hl
UXVvdGFNYW5hZ2VyOwogLSAoaWQ8V2ViUXVvdGFNYW5hZ2VyPilkYXRhYmFzZVF1b3RhTWFuYWdl
cjsKIEBlbmQKKworLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgZGVwcmVjYXRl
ZCBhbmQgc2hvdWxkIHJlbW92ZWQgbGF0ZXIuCisvLyBDbGllbnRzIHNob3VsZCBpbnN0ZWFkIGdl
dCBhIFdlYlF1b3RhTWFuYWdlciwgYW5kIHF1ZXJ5IC8gc2V0IHRoZSBxdW90YSB2aWEgdGhlIE1h
bmFnZXIuCitAaW50ZXJmYWNlIFdlYlNlY3VyaXR5T3JpZ2luIChEZXByZWNhdGVkKQorLSAodW5z
aWduZWQgbG9uZyBsb25nKXVzYWdlOworLSAodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhOworLSAo
dm9pZClzZXRRdW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhOworQGVuZAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>