<?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>28185</bug_id>
          
          <creation_ts>2009-08-11 14:10:51 -0700</creation_ts>
          <short_desc>Inspector: Show Hidden Cookie Data</short_desc>
          <delta_ts>2009-08-13 09:51:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>kmccullough</cc>
    
    <cc>simon.maxime</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>139089</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-11 14:10:51 -0700</bug_when>
    <thetext>Inspecting cookie data currently uses &quot;document.cookie&quot; in the inspected window and thus only has access to the names and values of cookies.  However, there is far more information, namely path, expires, domain, httpOnly, sessionOnly, and secure.  This information should be made available to the Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139096</commentid>
    <comment_count>1</comment_count>
      <attachid>34592</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-11 14:20:43 -0700</bug_when>
    <thetext>Created attachment 34592
Working on OS X Leopard

This is pretty much my first experience with C++, so I&apos;d appreciate it if you be explicit about any of the C++ mistakes I made, or build fixes that will be needed for other platforms.  I changed the CookieJar.h header so I expect that I will need to fix a number of other files.  Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139098</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-11 14:25:08 -0700</bug_when>
    <thetext>Patch looks pretty good. I think rawCookies will be better named as cookies. And rename the existing cookies to cokkiesString or somthing more specific.

I&apos;ll review more later and provide guidance o nwhat files to edit for other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139184</commentid>
    <comment_count>3</comment_count>
      <attachid>34592</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-11 17:54:43 -0700</bug_when>
    <thetext>Comment on attachment 34592
Working on OS X Leopard

&gt; +    Vector&lt;Cookie&gt; cookies;
&gt; +    Document* document = ic-&gt;inspectedPage()-&gt;mainFrame()-&gt;domWindow()-&gt;document();
&gt; +    cookies = rawCookies(document, document-&gt;cookieURL());

You should declare the cookies vector on the same line where you initialize it. But, you should not use Vector for a return value; copying it to return it is very inefficient. Instead you should name this function getRawCookies and use a Vector&lt;Cookie&gt;&amp; as an out parameter.

&gt; +        Cookie cookie = cookies[i];

To avoid making an extra copy of each cookie in the vector this can be a &quot;const Cookie&amp;&quot; instead of Cookie.

&gt; +        JSObject* cookieObj = constructEmptyObject(exec);

We prefer not to abbreviate, so please say cookieObject.

&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;name&quot;), jsString(exec, cookie.name()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;value&quot;), jsString(exec, cookie.value()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;domain&quot;), jsString(exec, cookie.domain()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;path&quot;), jsString(exec, cookie.path()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;expires&quot;), jsString(exec, cookie.expires()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;httpOnly&quot;), jsBoolean(cookie.isHttpOnly()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;secure&quot;), jsBoolean(cookie.isSecure()));
&gt; +        cookieObj-&gt;putDirect(Identifier(exec, &quot;session&quot;), jsBoolean(cookie.isSession()));

This will be relatively slow since it&apos;s going to create each of these identifiers from the constant string each time through the loop, which is a hash table lookup every time. It might be good to instead create local variables for each identifier so each will be created exactly once. On the other hand, the jsString operations are relatively costly too, so it&apos;s probably not all that important to optimize.

&gt; +        result.append( cookieObj );

The spaces around the argument are not the correct style.

&gt; +    // return jsNumber(exec, cookies.size());

Oops, left in this commented code!

&gt; +    class Cookie {
&gt; +    public:
&gt; +        Cookie(const String&amp; name, const String&amp; value, const String&amp; domain,
&gt; +            const String&amp; path, const String&amp; expires, const bool httpOnly,
&gt; +            const bool secure, const bool session)

No need for the &quot;const&quot; in &quot;const bool&quot;. Would be nice to indent this so the lines don&apos;t exactly line up with the &quot;:&quot;. I often use indent by an extra tab stop.

For a pure data holder like this, you might want to consider just using a struct instead of a class with getter functions.

&gt;      class KURL;
&gt;      class String;
&gt;      class Document;
&gt; +    class Cookie;

These should be sorted alphabetically. Not sure why Document wasn&apos;t already.

&gt;  #import &quot;config.h&quot;
&gt; +#import &quot;Cookie.h&quot;
&gt;  #import &quot;CookieJar.h&quot;

The new include should be added to the paragraph below, not put above the file&apos;s own header. The file&apos;s own header always comes first.

&gt; +        NSString* name = [cookie name];
&gt; +        NSString* value = [cookie value];
&gt; +        NSString* domain = [cookie domain];
&gt; +        NSString* path = [cookie path];
&gt; +        NSString* expires = [[cookie expiresDate] description];

It&apos;s a bit strange to put this date into this string form, but I don&apos;t have a better suggestion at the moment.

Our coding style is to put the * next to the variable name for Objective-C types like this one.

&gt; +        bool httpOnly = [cookie isHTTPOnly];
&gt; +        bool secure = [cookie isSecure];
&gt; +        bool session = [cookie isSessionOnly];
&gt; +        Cookie cookieData = Cookie(name, value, domain, path, expires, httpOnly, secure, session);
&gt; +        rawCookies.append(cookieData);
&gt; +    }
&gt; +
&gt; +    return rawCookies;

You shouldn&apos;t need this return statement here. It&apos;s OK to fall through to the return outside the block exceptions macro.

This patch will break all platforms other than Mac OS X. You can&apos;t land it like that, so you&apos;ll need to figure out what to do for those other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139215</commentid>
    <comment_count>4</comment_count>
      <attachid>34634</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-11 20:32:33 -0700</bug_when>
    <thetext>Created attachment 34634
Fixed Based on Review

This is an attempt at a real workable version that hopefully won&apos;t break the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139217</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-11 20:40:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You should declare the cookies vector on the same line where you initialize it.
&gt; But, you should not use Vector for a return value; copying it to return it is
&gt; very inefficient. Instead you should name this function getRawCookies and use a
&gt; Vector&lt;Cookie&gt;&amp; as an out parameter.

Done. Made the Vector an out parameter, but that requires the declaration to again be on another line.

&gt; To avoid making an extra copy of each cookie in the vector this can be a &quot;const
&gt; Cookie&amp;&quot; instead of Cookie.

Done.

&gt; We prefer not to abbreviate, so please say cookieObject.

Done. Noted.

&gt; This will be relatively slow since it&apos;s going to create each of these
&gt; identifiers from the constant string each time through the loop, which is a
&gt; hash table lookup every time. It might be good to instead create local
&gt; variables for each identifier so each will be created exactly once. On the
&gt; other hand, the jsString operations are relatively costly too, so it&apos;s probably
&gt; not all that important to optimize.

Done. I moved Initializers out and made them const.

&gt; The spaces around the argument are not the correct style.

Done. Including all other style fixes.

&gt; No need for the &quot;const&quot; in &quot;const bool&quot;. Would be nice to indent this so the
&gt; lines don&apos;t exactly line up with the &quot;:&quot;. I often use indent by an extra tab
&gt; stop.

Done.

&gt; For a pure data holder like this, you might want to consider just using a
&gt; struct instead of a class with getter functions.

Done. Made a struct.  Including a new field &quot;size&quot; (see below).

&gt; The new include should be added to the paragraph below, not put above the
&gt; file&apos;s own header. The file&apos;s own header always comes first.

Done. Noted.

&gt; It&apos;s a bit strange to put this date into this string form, but I don&apos;t have a
&gt; better suggestion at the moment.

Done. Noted.

&gt; Our coding style is to put the * next to the variable name for Objective-C
&gt; types like this one.

Done. Noted.

&gt; This patch will break all platforms other than Mac OS X. You can&apos;t land it like
&gt; that, so you&apos;ll need to figure out what to do for those other platforms.

Attempted.  I searched and identified, hopefully all, other platforms.  Most don&apos;t really make support for this easy, and I have no way of testing on them at all.  What is the best course of action for something like this?

------------

I added another field to the Cookie struct, &quot;size&quot;.  Firebug&apos;s &quot;size&quot; parameter seems to be the (size of the name + size of the value).  I decided to put this into the struct, and then make it available in the constructed jsObjects for the inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139219</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-11 20:46:23 -0700</bug_when>
    <thetext>Oh, one final question.  Inside CookieJar.h I include &lt;wtf/Vector.h&gt;.  This seems to make it unnecessary to include again in each of the platform specific implementations... but I included them anyways.  I could probably do the same for Cookie.h  What is the proper way to go about this?

  - Include in just the header
  - Include in both the header and the implementation

Seeing as it compiled for me without declaring in both places I&apos;m guessing this is a style issue, and I&apos;m guessing certain editors might work better with the declaration in both files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139255</commentid>
    <comment_count>7</comment_count>
      <attachid>34634</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-11 22:52:03 -0700</bug_when>
    <thetext>Comment on attachment 34634
Fixed Based on Review

&gt; +    Document* document = ic-&gt;inspectedPage()-&gt;mainFrame()-&gt;domWindow()-&gt;document();

From mainFrame() you can get to the document directly. No need to go through domWindow().

&gt; +    const Identifier nameIdentifier = Identifier(exec, &quot;name&quot;);
&gt; +    const Identifier valueIdentifier = Identifier(exec, &quot;value&quot;);
&gt; +    const Identifier domainIdentifier = Identifier(exec, &quot;domain&quot;);
&gt; +    const Identifier pathIdentifier = Identifier(exec, &quot;path&quot;);
&gt; +    const Identifier expiresIdentifier = Identifier(exec, &quot;expires&quot;);
&gt; +    const Identifier sizeIdentifier = Identifier(exec, &quot;size&quot;);
&gt; +    const Identifier httpOnlyIdentifier = Identifier(exec, &quot;httpOnly&quot;);
&gt; +    const Identifier secureIdentifier = Identifier(exec, &quot;secure&quot;);
&gt; +    const Identifier sessionIdentifier = Identifier(exec, &quot;session&quot;);

You can use construction syntax instead of assignment for these. Also, no real reason to make them const. After all, almost any local variable in most programs could be marked const, and for brevity we normally don&apos;t do it unless there&apos;s a special reason to.

    Identifier nameIdentifier(exec, &quot;name&quot;);

and so on.

&gt; +        const String name;
&gt; +        const String value;
&gt; +        const String domain;
&gt; +        const String path;
&gt; +        const String expires;
&gt; +        const bool httpOnly;
&gt; +        const bool secure;
&gt; +        const bool session;
&gt; +        const unsigned size;

Making all these data members const isn&apos;t really all that good an idea. If someone wants to use a Cookie in some non-const way, perhaps modifying one of these, then declaring it this way would get in the way, for no good reason. On the other hand, clients who don&apos;t want to modify a Cookie object get the same effect you got here by just saying &quot;const Cookie&quot;. I&apos;d leave off all the const on the individual members.

&gt; +void getRawCookies(const Document*, const KURL&amp; url, Vector&lt;Cookie&gt;&amp; rawCookies)
&gt; +{
&gt; +    rawCookies.clear();
&gt; +    BEGIN_BLOCK_OBJC_EXCEPTIONS;
&gt; +
&gt; +    NSURL *cookieURL = url;
&gt; +    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:cookieURL];
&gt; +
&gt; +    NSUInteger count = [cookies count];

For best memory use and performance, you will want to do this here:

    rawCookies.reserveCapacity(count);

This allocates the memory for the vector rather than sizing it up each time you hit the limit while appending. It&apos;s faster and saves a bit on extra storage. Once you&apos;ve done that change, it is then safe to use the slightly faster uncheckedAppend function below inside the loop instead of append. But even if you chose not to do uncheckedAppend, reserveCapacity is a good idea.

&gt; +    for (NSUInteger i = 0; i &lt; count; ++i) {
&gt; +        NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
&gt; +        NSString *name = [cookie name];
&gt; +        NSString *value = [cookie value];
&gt; +        NSString *domain = [cookie domain];
&gt; +        NSString *path = [cookie path];
&gt; +        NSString *expires = [[cookie expiresDate] description];
&gt; +        bool httpOnly = [cookie isHTTPOnly];
&gt; +        bool secure = [cookie isSecure];
&gt; +        bool session = [cookie isSessionOnly];
&gt; +        Cookie cookieData = Cookie(name, value, domain, path, expires, httpOnly, secure, session);

Again could use construction syntax here:

    Cookie cookieData(name, value, domain, path, expires, httpOnly, secure, session);

&gt; +        rawCookies.append(cookieData);

Or you could construct right in the append function call:

    rawCookies.uncheckedAppend(Cookie(name, value, domain, path, expires, httpOnly, secure, session));

Otherwise this looks really great.

None of my comments are critical, so I&apos;ll say r=me on this version, but feel free to do a revised version if you like some of the things I propose above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139311</commentid>
    <comment_count>8</comment_count>
      <attachid>34660</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 06:47:13 -0700</bug_when>
    <thetext>Created attachment 34660
Improved Based on Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139313</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 06:51:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; From mainFrame() you can get to the document directly. No need to go through
&gt; domWindow().

Done. Noted.
 
&gt; You can use construction syntax instead of assignment for these. Also, no real
&gt; reason to make them const. After all, almost any local variable in most
&gt; programs could be marked const, and for brevity we normally don&apos;t do it unless
&gt; there&apos;s a special reason to.

Done. This is the first time I&apos;ve heard of construction syntax. Interesting!

&gt; Making all these data members const isn&apos;t really all that good an idea.

Done.

&gt; For best memory use and performance, you will want to do this here:
&gt;     rawCookies.reserveCapacity(count);
&gt; Once you&apos;ve done that change, it is then safe to use the slightly faster
&gt; uncheckedAppend function below inside the loop instead of append. 

Done. I had thought of this instead of the clear(), but I realize now that doing both still makes sense.

&gt; Or you could construct right in the append function call:

Done.

&gt; None of my comments are critical, so I&apos;ll say r=me on this version, but feel
&gt; free to do a revised version if you like some of the things I propose above.

I don&apos;t have commit access so it would be helpful to use the commit-queue.  Thanks!

----

Any comments on my header include question from comment #6?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139347</commentid>
    <comment_count>10</comment_count>
      <attachid>34660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-12 09:17:34 -0700</bug_when>
    <thetext>Comment on attachment 34660
Improved Based on Review

&gt; +        cookieObject-&gt;putDirect(sizeIdentifier, jsNumber(exec, cookie.size));

I&apos;m so sorry I didn&apos;t mention this earlier. It seems clear to me that if &quot;size&quot; is just name.length() + value.length() then it should not be stored in a Cookie struct. Instead it should be computed, perhaps in JavaScript code, or perhaps in this function, or perhaps in a function member of the Cookie struct.

Another possibility is that this &quot;name.length() + value.length()&quot; computation is just an estimate that&apos;s being used because the cookie API on Mac OS X does not supply the length. In that case, the logic to compute this size estimate should be in the getRawCookies function in CookieJarMac.mm, not in the cross-platform code, and the size should be a constructor argument.

Everything else is perfect, and this is a minor issue.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139349</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-12 09:19:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Oh, one final question.  Inside CookieJar.h I include &lt;wtf/Vector.h&gt;.  This
&gt; seems to make it unnecessary to include again in each of the platform specific
&gt; implementations... but I included them anyways.  I could probably do the same
&gt; for Cookie.h  What is the proper way to go about this?
&gt; 
&gt;   - Include in just the header
&gt;   - Include in both the header and the implementation

It should be included in just the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139457</commentid>
    <comment_count>12</comment_count>
      <attachid>34679</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 11:51:49 -0700</bug_when>
    <thetext>Created attachment 34679
Improved Based on Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139460</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 11:56:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;m so sorry I didn&apos;t mention this earlier. It seems clear to me that if &quot;size&quot;
&gt; is just name.length() + value.length() then it should not be stored in a Cookie
&gt; struct. Instead it should be computed, perhaps in JavaScript code, or perhaps
&gt; in this function, or perhaps in a function member of the Cookie struct.

Done. I moved this to the final point in the chain, inside JSInspectorBackendCustom.cpp. I put it here rather then performing it in the JavaScript so it will hopefully be faster in the C++.  It might be useful to throw some ASSERTS() that the name and value are not null, but I&apos;m not entirely clear on WebKit asserts yet.  I actually build the Release versions anyways.


(In reply to comment #11)
&gt; It should be included in just the header.

Sounds good. In the latest patch I removed the duplicate includes from all of the implementation files I edited.

----

Thanks for the reviews and help Darin. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139531</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 14:04:05 -0700</bug_when>
    <thetext>It probably makes more sense to store the expires as milliseconds since the epoch?  Hopefully there is a standard way to calculate this for all platforms and JavaScript can use Date.parse() to convert it into a Date Object.  Or, if there is a way to do this in the C++ like jsNumber, jsBoolean etc that would be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139555</commentid>
    <comment_count>15</comment_count>
      <attachid>34692</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 14:36:56 -0700</bug_when>
    <thetext>Created attachment 34692
Improved Based on Review - expires as epoch double</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139557</commentid>
    <comment_count>16</comment_count>
      <attachid>34692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-12 14:38:53 -0700</bug_when>
    <thetext>Comment on attachment 34692
Improved Based on Review - expires as epoch double

&gt; +        NSTimeInterval expires = [[cookie expiresDate] timeIntervalSince1970] * 1000;

I&apos;d say double here since this isn&apos;t really an NSTimeInterval since it&apos;s not in the standard units for NSTimeInterval.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139562</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 14:43:29 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 34692 [details])
&gt; &gt; +        NSTimeInterval expires = [[cookie expiresDate] timeIntervalSince1970] * 1000;
&gt; 
&gt; I&apos;d say double here since this isn&apos;t really an NSTimeInterval since it&apos;s not in
&gt; the standard units for NSTimeInterval.

I&apos;m not familiar with Obj-C, however the documentation I looked at said that NSTimeInterval was a typedef of a &quot;double&quot;.  Are you saying because I multiple by 1000 I should change the type to indicate its not really a Time Interval anymore, but should be treated as just a double?


(In reply to comment #14)
&gt; Hopefully there is a standard way to calculate this for all platforms
&gt; and JavaScript can use Date.parse() to convert it into a Date Object.  Or, if
&gt; there is a way to do this in the C++ like jsNumber, jsBoolean etc that would be
&gt; useful.

I used jsNumber, although I guess the alternative could have been constructDate
after including &lt;runtime/DateConstructor.h&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139570</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-12 14:58:23 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Are you saying because I multiply
&gt; by 1000 I should change the type to indicate its not really a Time Interval
&gt; anymore, but should be treated as just a double?

Yes.

&gt; I used jsNumber, although I guess the alternative could have been constructDate
&gt; after including &lt;runtime/DateConstructor.h&gt;?

That&apos;s right. I think Date would be pretty neat for this. But at this point we&apos;re in the &quot;tweak forever&quot; mode, so we should get this landed soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139578</commentid>
    <comment_count>19</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 15:08:24 -0700</bug_when>
    <thetext>Okay!  If its good to land please flip the commit-queue bit.  Or, if you&apos;d rather have me do those last few tweaks let me know.

As a heads up here is what it looks like in the Web Inspector, its what I&apos;ve been playing with today:
http://bogojoker.com/pub/inspector/cookies.png

This needs a couple of r+ patches to land, including this patch and bug 27202.  When all is well I&apos;ll start advancing this new stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139599</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 15:28:52 -0700</bug_when>
    <thetext>Joe you can set cq=? if you like.  I can&apos;t tell from the comments if this is ready for landing or not.  committers can set cq+ and the script will auto-land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139690</commentid>
    <comment_count>21</comment_count>
      <attachid>34692</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 18:01:02 -0700</bug_when>
    <thetext>Comment on attachment 34692
Improved Based on Review - expires as epoch double

Rejecting patch 34692 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=34692 from bug 28185 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139692</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 18:06:13 -0700</bug_when>
    <thetext>Applying 34692 from bug 28185.
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #1 succeeded at 4399 (offset 15 lines).
Hunk #2 succeeded at 9331 (offset 33 lines).
Hunk #3 succeeded at 14134 (offset 67 lines).
Hunk #4 FAILED at 17255.
1 out of 4 hunks FAILED -- saving rejects to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patch -p0 &quot;WebCore/WebCore.xcodeproj/project.pbxproj&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139713</commentid>
    <comment_count>23</comment_count>
      <attachid>34713</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-12 20:55:10 -0700</bug_when>
    <thetext>Created attachment 34713
Merged with ToT

Merged with ToT. There was a merge in the xcodeproj file. Odd, because I only added this to XCode to help others, I don&apos;t actually use XCode myself =P.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139733</commentid>
    <comment_count>24</comment_count>
      <attachid>34713</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 22:58:36 -0700</bug_when>
    <thetext>Comment on attachment 34713
Merged with ToT

Clearing flags on attachment: 34713

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/platform/haiku/CookieJarHaiku.cpp =&gt; WebCore/platform/Cookie.h
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/platform/CookieJar.h
	M	WebCore/platform/haiku/CookieJarHaiku.cpp
	M	WebCore/platform/mac/CookieJar.mm
	M	WebCore/platform/network/chromium/CookieJarChromium.cpp
	M	WebCore/platform/network/curl/CookieJarCurl.cpp
	M	WebCore/platform/network/soup/CookieJarSoup.cpp
	M	WebCore/platform/network/win/CookieJarCFNetWin.cpp
	M	WebCore/platform/network/win/CookieJarWin.cpp
	M	WebCore/platform/qt/CookieJarQt.cpp
Committed r47185
	M	WebCore/ChangeLog
	M	WebCore/platform/qt/CookieJarQt.cpp
	A	WebCore/platform/Cookie.h
	M	WebCore/platform/mac/CookieJar.mm
	M	WebCore/platform/haiku/CookieJarHaiku.cpp
	M	WebCore/platform/network/chromium/CookieJarChromium.cpp
	M	WebCore/platform/network/soup/CookieJarSoup.cpp
	M	WebCore/platform/network/curl/CookieJarCurl.cpp
	M	WebCore/platform/network/win/CookieJarCFNetWin.cpp
	M	WebCore/platform/network/win/CookieJarWin.cpp
	M	WebCore/platform/CookieJar.h
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r47185 = c2e6ddc0489c8b1b557dce21d734c8613f4eee30 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/47185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139734</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 22:58:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139817</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-13 05:50:00 -0700</bug_when>
    <thetext>This broke the Windows build (&lt;http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/3854/steps/compile-webkit/logs/stdio&gt;).  I can&apos;t immediately see what is wrong so I&apos;ll look at rolling it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139819</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-13 05:54:11 -0700</bug_when>
    <thetext>Rolled out in r47195.

Hopefully you can find someone familiar with Windows to help determine what is going on and this can be re-landed again soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139833</commentid>
    <comment_count>28</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 07:21:04 -0700</bug_when>
    <thetext>Did I fail to add the header file to any particular build files?

I took a look at another changeset (http://trac.webkit.org/changeset/47170) where files were added and he specifically added the new files to a couple build files:

  - trunk/WebCore/GNUmakefile.am 
  - trunk/WebCore/WebCore.gypi 

Do you think this would solve my problem.  Is there a list of build files that I should update whenever I add a new file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139840</commentid>
    <comment_count>29</comment_count>
      <attachid>34742</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 08:11:00 -0700</bug_when>
    <thetext>Created attachment 34742
Attempted Build Fix for Windows

aroben made an excellent point in IRC. Even though I change Cookie to a struct, I didn&apos;t change the short declaration &quot;class Cookie&quot; to &quot;struct Cookie&quot; inside CookieJar.h.  Hopefully this will fix the Windows Build (I noticed someone fixed Chromium shortly after this initially landed).

Let me know about the build files that I should update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139846</commentid>
    <comment_count>30</comment_count>
      <attachid>34744</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 08:24:18 -0700</bug_when>
    <thetext>Created attachment 34744
Attempted Build Fix for Windows

Whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139849</commentid>
    <comment_count>31</comment_count>
      <attachid>34746</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 08:33:37 -0700</bug_when>
    <thetext>Created attachment 34746
Fix Extra Semicolons in Haiku

Sorry for the spam =(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139851</commentid>
    <comment_count>32</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 08:43:30 -0700</bug_when>
    <thetext>It looks like someone else just included a Haiku build fix for the Haiku port for  their CookiesJar implementation, and its better then mine:
https://bugs.webkit.org/show_bug.cgi?id=28253

Hopefully there won&apos;t be any conflicts, seeing as his does the same fixes as mine and more.  However, his is being applied from a rolled out patch.  I think maybe we should cancel his and I&apos;ll update mine to include his changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139854</commentid>
    <comment_count>33</comment_count>
      <attachid>34749</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-08-13 08:46:58 -0700</bug_when>
    <thetext>Created attachment 34749
Improved Haiku [final I swear]

Sorry yet again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139857</commentid>
    <comment_count>34</comment_count>
    <who name="Maxime Simon">simon.maxime</who>
    <bug_when>2009-08-13 08:53:15 -0700</bug_when>
    <thetext>*** Bug 28253 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139883</commentid>
    <comment_count>35</comment_count>
      <attachid>34749</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 09:51:29 -0700</bug_when>
    <thetext>Comment on attachment 34749
Improved Haiku [final I swear]

Clearing flags on attachment: 34749

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	C	WebCore/platform/haiku/CookieJarHaiku.cpp =&gt; WebCore/platform/Cookie.h
	M	WebCore/ChangeLog
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/platform/CookieJar.h
	M	WebCore/platform/haiku/CookieJarHaiku.cpp
	M	WebCore/platform/mac/CookieJar.mm
	M	WebCore/platform/network/chromium/CookieJarChromium.cpp
	M	WebCore/platform/network/curl/CookieJarCurl.cpp
	M	WebCore/platform/network/soup/CookieJarSoup.cpp
	M	WebCore/platform/network/win/CookieJarCFNetWin.cpp
	M	WebCore/platform/network/win/CookieJarWin.cpp
	M	WebCore/platform/qt/CookieJarQt.cpp
Committed r47205
	M	WebCore/ChangeLog
	M	WebCore/platform/qt/CookieJarQt.cpp
	A	WebCore/platform/Cookie.h
	M	WebCore/platform/mac/CookieJar.mm
	M	WebCore/platform/haiku/CookieJarHaiku.cpp
	M	WebCore/platform/network/chromium/CookieJarChromium.cpp
	M	WebCore/platform/network/soup/CookieJarSoup.cpp
	M	WebCore/platform/network/curl/CookieJarCurl.cpp
	M	WebCore/platform/network/win/CookieJarCFNetWin.cpp
	M	WebCore/platform/network/win/CookieJarWin.cpp
	M	WebCore/platform/CookieJar.h
	M	WebCore/bindings/js/JSInspectorBackendCustom.cpp
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/WebCore.xcodeproj/project.pbxproj
r47205 = ce6d838c267e15719f6ce0180a65d8d395df2d2b (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/47205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139884</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 09:51:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34592</attachid>
            <date>2009-08-11 14:20:43 -0700</date>
            <delta_ts>2009-08-11 20:32:33 -0700</delta_ts>
            <desc>Working on OS X Leopard</desc>
            <filename>full_cookie_access.patch</filename>
            <type>text/plain</type>
            <size>7594</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcApp
bmRleCBiMmViMmQxLi5kZTcyNDhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
c3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNJ
bnNwZWN0b3JCYWNrZW5kLmgiCiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29v
a2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgpAQCAtMTU4LDYgKzE2
MCwzNiBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6aW5zcGVjdGVkV2luZG93KEV4ZWNT
dGF0ZSosIGNvbnN0IEFyZ0xpc3QmKQogICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXI6OndyYXAoaW5zcGVjdGVkV2luZG93LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdyk7
CiB9CiAKK0pTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjpjb29raWVzKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYpCit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBs
KCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoIWljKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLT5kb21X
aW5kb3coKS0+ZG9jdW1lbnQoKTsKKyAgICBjb29raWVzID0gcmF3Q29va2llcyhkb2N1bWVudCwg
ZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsKKyAgICAKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBy
ZXN1bHQ7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29va2llcy5zaXplKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIENvb2tpZSBjb29raWUg
PSBjb29raWVzW2ldOworICAgICAgICBKU09iamVjdCogY29va2llT2JqID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisgICAgICAgIGNvb2tpZU9iai0+cHV0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgY29va2llLm5hbWUoKSkpOworICAgICAgICBj
b29raWVPYmotPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJ2YWx1ZSIpLCBqc1N0cmluZyhl
eGVjLCBjb29raWUudmFsdWUoKSkpOworICAgICAgICBjb29raWVPYmotPnB1dERpcmVjdChJZGVu
dGlmaWVyKGV4ZWMsICJkb21haW4iKSwganNTdHJpbmcoZXhlYywgY29va2llLmRvbWFpbigpKSk7
CisgICAgICAgIGNvb2tpZU9iai0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgInBhdGgiKSwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgoKSkpOworICAgICAgICBjb29raWVPYmotPnB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIiksIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5l
eHBpcmVzKCkpKTsKKyAgICAgICAgY29va2llT2JqLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVj
LCAiaHR0cE9ubHkiKSwganNCb29sZWFuKGNvb2tpZS5pc0h0dHBPbmx5KCkpKTsKKyAgICAgICAg
Y29va2llT2JqLT5wdXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAic2VjdXJlIiksIGpzQm9vbGVh
bihjb29raWUuaXNTZWN1cmUoKSkpOworICAgICAgICBjb29raWVPYmotPnB1dERpcmVjdChJZGVu
dGlmaWVyKGV4ZWMsICJzZXNzaW9uIiksIGpzQm9vbGVhbihjb29raWUuaXNTZXNzaW9uKCkpKTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCggY29va2llT2JqICk7CisgICAgfQorCisgICAgLy8gcmV0
dXJuIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0
QXJyYXkoZXhlYywgcmVzdWx0KTsKK30KKwogSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnNl
dHRpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIGlmIChh
cmdzLnNpemUoKSA8IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4
IGJhZTFmMjYuLjM4NjNjMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRs
CkBAIC02OCw2ICs2OCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBkaXNhYmxlUmVz
b3VyY2VUcmFja2luZyhpbiBib29sZWFuIGFsd2F5cyk7CiAgICAgICAgIHZvaWQgc3RvcmVMYXN0
QWN0aXZlUGFuZWwoaW4gRE9NU3RyaW5nIHBhbmVsTmFtZSk7CiAKKyAgICAgICAgW0N1c3RvbV0g
RE9NT2JqZWN0IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAgICAgICAgIGJvb2xlYW4gZGVi
dWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBh
bHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgw
YTUxYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29va2llX2gKKyNkZWZpbmUgQ29v
a2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIENvb2tpZSB7CisgICAgcHVibGljOgorICAgICAgICBDb29raWUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRvbWFp
biwKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBleHBpcmVz
LCBjb25zdCBib29sIGh0dHBPbmx5LAorICAgICAgICAgICAgY29uc3QgYm9vbCBzZWN1cmUsIGNv
bnN0IGJvb2wgc2Vzc2lvbikKKyAgICAgICAgICAgIDogbV9uYW1lKG5hbWUpCisgICAgICAgICAg
ICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICAgICAsIG1fZG9tYWluKGRvbWFpbikKKyAgICAg
ICAgICAgICwgbV9wYXRoKHBhdGgpCisgICAgICAgICAgICAsIG1fZXhwaXJlcyhleHBpcmVzKQor
ICAgICAgICAgICAgLCBtX2h0dHBPbmx5KGh0dHBPbmx5KQorICAgICAgICAgICAgLCBtX3NlY3Vy
ZShzZWN1cmUpCisgICAgICAgICAgICAsIG1fc2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQorICAgICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
ICAgIFN0cmluZyBkb21haW4oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbjsgfQorICAgICAgICBT
dHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgICAgICBTdHJpbmcgZXhw
aXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwaXJlczsgfQorICAgICAgICBib29sIGlzSHR0cE9u
bHkoKSBjb25zdCB7IHJldHVybiBtX2h0dHBPbmx5OyB9CisgICAgICAgIGJvb2wgaXNTZWN1cmUo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyZTsgfQorICAgICAgICBib29sIGlzU2Vzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5n
IG1fbmFtZTsKKyAgICAgICAgU3RyaW5nIG1fdmFsdWU7CisgICAgICAgIFN0cmluZyBtX2RvbWFp
bjsKKyAgICAgICAgU3RyaW5nIG1fcGF0aDsKKyAgICAgICAgU3RyaW5nIG1fZXhwaXJlczsKKyAg
ICAgICAgYm9vbCBtX2h0dHBPbmx5OworICAgICAgICBib29sIG1fc2VjdXJlOworICAgICAgICBi
b29sIG1fc2Vzc2lvbjsKKyAgICB9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKaW5k
ZXggNjE1OTM4Ni4uNWZjZmQxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVK
YXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCkBAIC0yNiwxNSArMjYsMTkg
QEAKICNpZm5kZWYgQ29va2llSmFyX2gKICNkZWZpbmUgQ29va2llSmFyX2gKIAorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgS1VSTDsK
ICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgY2xhc3MgQ29va2ll
OwogCiAgICAgU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7CiAg
ICAgdm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKTsKKyAgICBjb25zdCBW
ZWN0b3I8Q29va2llPiByYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwog
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbSBiL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQppbmRleCBkOGRmNjAxLi45Y2NkMjhiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0KKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNvb2tpZUphci5o
IgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKQEAgLTExNiw0ICsxMTcsMzMgQEAgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citjb25zdCBWZWN0b3I8Q29va2llPiByYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIFZlY3RvcjxDb29raWU+IHJhd0Nvb2tpZXM7CisgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgTlNVUkwgKmNvb2tpZVVSTCA9IHVybDsKKyAg
ICBOU0FycmF5ICpjb29raWVzID0gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlXSBjb29raWVzRm9yVVJMOmNvb2tpZVVSTF07CisKKyAgICBOU1VJbnRlZ2VyIGNv
dW50ID0gW2Nvb2tpZXMgY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQQ29va2ll
ICopW2Nvb2tpZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgTlNTdHJpbmcqIG5hbWUgPSBb
Y29va2llIG5hbWVdOworICAgICAgICBOU1N0cmluZyogdmFsdWUgPSBbY29va2llIHZhbHVlXTsK
KyAgICAgICAgTlNTdHJpbmcqIGRvbWFpbiA9IFtjb29raWUgZG9tYWluXTsKKyAgICAgICAgTlNT
dHJpbmcqIHBhdGggPSBbY29va2llIHBhdGhdOworICAgICAgICBOU1N0cmluZyogZXhwaXJlcyA9
IFtbY29va2llIGV4cGlyZXNEYXRlXSBkZXNjcmlwdGlvbl07CisgICAgICAgIGJvb2wgaHR0cE9u
bHkgPSBbY29va2llIGlzSFRUUE9ubHldOworICAgICAgICBib29sIHNlY3VyZSA9IFtjb29raWUg
aXNTZWN1cmVdOworICAgICAgICBib29sIHNlc3Npb24gPSBbY29va2llIGlzU2Vzc2lvbk9ubHld
OworICAgICAgICBDb29raWUgY29va2llRGF0YSA9IENvb2tpZShuYW1lLCB2YWx1ZSwgZG9tYWlu
LCBwYXRoLCBleHBpcmVzLCBodHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKTsKKyAgICAgICAgcmF3
Q29va2llcy5hcHBlbmQoY29va2llRGF0YSk7CisgICAgfQorCisgICAgcmV0dXJuIHJhd0Nvb2tp
ZXM7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIHJldHVybiByYXdDb29r
aWVzOworfQorCiB9Cg==
</data>
<flag name="review"
          id="18746"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34634</attachid>
            <date>2009-08-11 20:32:33 -0700</date>
            <delta_ts>2009-08-13 08:54:19 -0700</delta_ts>
            <desc>Fixed Based on Review</desc>
            <filename>cookie_2.patch</filename>
            <type>text/plain</type>
            <size>19184</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjIyMDgxOS4uOTViY2M0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBz
aXplLCBodHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29v
a2llLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAg
ICAKKyAgICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAg
ICAgICBnZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlv
biBvZiBnZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMp
OgorCisgICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNh
dGlzZnkgdGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUph
ckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0Nvb2tpZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAy
MDA5LTA4LTA4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA3NTNkYzcuLmExMTI3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzg0LDYgKzQzODQsNyBAQAogCQlEMjNDQTU1RDBBQjBF
QUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwICov
OyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTZCMEFCMEVC
OEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUyRjEwMzI0OTUx
MDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi87IH07CiAJ
CURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIzQzJDOTBBNTA4
RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9OwogCQlEQjIzQzJD
QzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhEMjkwMDI0ODlF
QiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBCOEJBM0M2MDA5
QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2Jq
Q0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05Mjk3LDYgKzkyOTgsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4QTUgLyogSlNS
YW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSYW5n
ZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjNDQTU1RTBBQjBF
QUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENv
b2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVu
dE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdl
YkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNjUsNiAr
MTQwNjcsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5j
cHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8s
CiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbS5oICovLAor
CQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJCQk5MzUyMDg4
MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2NTYwRjU0NkE5
OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQzNDY1NzBGNTQ2
QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MTg1LDYgKzE3MTg4
LDcgQEAKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEOEI2MTUyRjEwMzI0
OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAppbmRleCBiMmViMmQxLi43YTMx
YzRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JCYWNrZW5kLmgi
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgpAQCAtMTU4LDYgKzE2MCw0NiBAQCBKU1ZhbHVlIEpT
SW5zcGVjdG9yQmFja2VuZDo6aW5zcGVjdGVkV2luZG93KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xp
c3QmKQogICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoaW5zcGVjdGVk
V2luZG93LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdyk7CiB9CiAKK0pTVmFsdWUgSlNJ
bnNwZWN0b3JCYWNrZW5kOjpjb29raWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYp
Cit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKKyAgICBpZiAoIWljKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgp
LT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKTsKKyAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwor
ICAgIGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LT5jb29raWVVUkwoKSwgY29va2ll
cyk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciByZXN1bHQ7CisgICAgY29uc3QgSWRlbnRp
ZmllciBuYW1lSWRlbnRpZmllciA9IElkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyIHZhbHVlSWRlbnRpZmllciA9IElkZW50aWZpZXIoZXhlYywgInZhbHVlIik7
CisgICAgY29uc3QgSWRlbnRpZmllciBkb21haW5JZGVudGlmaWVyID0gSWRlbnRpZmllcihleGVj
LCAiZG9tYWluIik7CisgICAgY29uc3QgSWRlbnRpZmllciBwYXRoSWRlbnRpZmllciA9IElkZW50
aWZpZXIoZXhlYywgInBhdGgiKTsKKyAgICBjb25zdCBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlm
aWVyID0gSWRlbnRpZmllcihleGVjLCAiZXhwaXJlcyIpOworICAgIGNvbnN0IElkZW50aWZpZXIg
c2l6ZUlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsICJzaXplIik7CisgICAgY29uc3QgSWRl
bnRpZmllciBodHRwT25seUlkZW50aWZpZXIgPSBJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIp
OworICAgIGNvbnN0IElkZW50aWZpZXIgc2VjdXJlSWRlbnRpZmllciA9IElkZW50aWZpZXIoZXhl
YywgInNlY3VyZSIpOworICAgIGNvbnN0IElkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyKGV4ZWMsICJzZXNzaW9uIik7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBjb29r
aWVzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgY29uc3QgQ29va2llJiBjb29raWUgPSBjb29raWVzW2ldOworICAgICAgICBKU09i
amVjdCogY29va2llT2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAg
IGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KG5hbWVJZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCBj
b29raWUubmFtZSkpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdCh2YWx1ZUlkZW50
aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS52YWx1ZSkpOworICAgICAgICBjb29raWVPYmpl
Y3QtPnB1dERpcmVjdChkb21haW5JZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUuZG9t
YWluKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHBhdGhJZGVudGlmaWVyLCBq
c1N0cmluZyhleGVjLCBjb29raWUucGF0aCkpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERp
cmVjdChleHBpcmVzSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmV4cGlyZXMpKTsK
KyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qoc2l6ZUlkZW50aWZpZXIsIGpzTnVtYmVy
KGV4ZWMsIGNvb2tpZS5zaXplKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KGh0
dHBPbmx5SWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5odHRwT25seSkpOworICAgICAgICBj
b29raWVPYmplY3QtPnB1dERpcmVjdChzZWN1cmVJZGVudGlmaWVyLCBqc0Jvb2xlYW4oY29va2ll
LnNlY3VyZSkpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChzZXNzaW9uSWRlbnRp
ZmllciwganNCb29sZWFuKGNvb2tpZS5zZXNzaW9uKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y29va2llT2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywg
cmVzdWx0KTsKK30KKwogSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OnNldHRpbmcoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIGlmIChhcmdzLnNpemUoKSA8
IDEpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IGJhZTFmMjYuLjc2
OWEyMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRs
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBAIC02OCw2ICs2
OCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBkaXNhYmxlUmVzb3VyY2VUcmFja2lu
ZyhpbiBib29sZWFuIGFsd2F5cyk7CiAgICAgICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwo
aW4gRE9NU3RyaW5nIHBhbmVsTmFtZSk7CiAKKyAgICAgICAgW0N1c3RvbV0gQXJyYXkgY29va2ll
cygpOworCiAjaWYgZGVmaW5lZChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVIKICAgICAgICAgYm9vbGVhbiBkZWJ1Z2dlckVuYWJsZWQoKTsK
ICAgICAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcihpbiBib29sZWFuIGFsd2F5cyk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWY3NTUwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFyby4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBDb29raWVfaAorI2RlZmluZSBDb29raWVfaAorCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3RydWN0
IENvb2tpZSB7CisgICAgICAgIENvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLAorICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBleHBpcmVzLCBib29sIGh0dHBPbmx5LAorICAgICAg
ICAgICAgICAgIGJvb2wgc2VjdXJlLCBib29sIHNlc3Npb24pCisgICAgICAgICAgICA6IG5hbWUo
bmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFsdWUpCisgICAgICAgICAgICAsIGRvbWFpbihk
b21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhl
eHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25seShodHRwT25seSkKKyAgICAgICAgICAgICwg
c2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwgc2Vzc2lvbihzZXNzaW9uKQorICAgICAgICAg
ICAgLCBzaXplKG5hbWUubGVuZ3RoKCkgKyB2YWx1ZS5sZW5ndGgoKSkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3QgU3RyaW5nIG5hbWU7CisgICAgICAgIGNvbnN0IFN0cmlu
ZyB2YWx1ZTsKKyAgICAgICAgY29uc3QgU3RyaW5nIGRvbWFpbjsKKyAgICAgICAgY29uc3QgU3Ry
aW5nIHBhdGg7CisgICAgICAgIGNvbnN0IFN0cmluZyBleHBpcmVzOworICAgICAgICBjb25zdCBi
b29sIGh0dHBPbmx5OworICAgICAgICBjb25zdCBib29sIHNlY3VyZTsKKyAgICAgICAgY29uc3Qg
Ym9vbCBzZXNzaW9uOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaXplOworICAgIH07CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWVKYXIuaAppbmRleCA2MTU5Mzg2Li4yYzY0Y2RlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llSmFyLmgKQEAgLTI2LDE1ICsyNiwxOSBAQAogI2lmbmRlZiBDb29raWVKYXJfaAogI2Rl
ZmluZSBDb29raWVKYXJfaAogCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKyAgICBjbGFzcyBDb29raWU7CisgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAg
Y2xhc3MgS1VSTDsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7CiAKICAg
ICBTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmKTsKICAgICB2b2lk
IHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopOworICAgIHZvaWQgZ2V0UmF3Q29v
a2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogCiB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3UuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAKaW5kZXggNzM1MTlk
Ny4uY2M1ZGE5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJI
YWlrdS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAK
QEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tp
ZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDEsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJ
WE1FOiBTaG91bGRuJ3QgdGhpcyBiZSBzYXZlZCB0byBhbmQgcmVzdG9yZWQgZnJvbSBkaXNrIHRv
bz8KIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0
Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIC8qcG9saWN5VVJMKi8sIGNvbnN0
IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogewogICAgIGNvb2tpZUphci5zZXQodXJsLnN0cmlu
ZygpLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzKGNvbnN0IEtVUkwmIHVybCkKK1N0cmlu
ZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsKTsKIHsKICAgICByZXR1
cm4gY29va2llSmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQpAQCAtNTcsNSArNTksMTEgQEAgYm9v
bCBjb29raWVzRW5hYmxlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29v
a2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9D
b29raWVKYXIubW0KaW5kZXggZDhkZjYwMS4uYjllNTM2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tp
ZUphci5tbQpAQCAtMjcsOSArMjcsMTEgQEAKICNpbXBvcnQgIkNvb2tpZUphci5oIgogCiAjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRG9j
dW1lbnQuaCIKICNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCiB0eXBlZGVm
IHVuc2lnbmVkIE5TVUludGVnZXI7CkBAIC0xMTYsNCArMTE4LDMwIEBAIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgRG9jdW1lbnQqKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBnZXRS
YXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK3sKKyAgICByYXdDb29raWVzLmNsZWFyKCk7CisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgTlNVUkwgKmNvb2tpZVVSTCA9IHVybDsKKyAgICBO
U0FycmF5ICpjb29raWVzID0gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVT
dG9yYWdlXSBjb29raWVzRm9yVVJMOmNvb2tpZVVSTF07CisKKyAgICBOU1VJbnRlZ2VyIGNvdW50
ID0gW2Nvb2tpZXMgY291bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQQ29va2llICop
W2Nvb2tpZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbY29v
a2llIG5hbWVdOworICAgICAgICBOU1N0cmluZyAqdmFsdWUgPSBbY29va2llIHZhbHVlXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmRvbWFpbiA9IFtjb29raWUgZG9tYWluXTsKKyAgICAgICAgTlNTdHJp
bmcgKnBhdGggPSBbY29va2llIHBhdGhdOworICAgICAgICBOU1N0cmluZyAqZXhwaXJlcyA9IFtb
Y29va2llIGV4cGlyZXNEYXRlXSBkZXNjcmlwdGlvbl07CisgICAgICAgIGJvb2wgaHR0cE9ubHkg
PSBbY29va2llIGlzSFRUUE9ubHldOworICAgICAgICBib29sIHNlY3VyZSA9IFtjb29raWUgaXNT
ZWN1cmVdOworICAgICAgICBib29sIHNlc3Npb24gPSBbY29va2llIGlzU2Vzc2lvbk9ubHldOwor
ICAgICAgICBDb29raWUgY29va2llRGF0YSA9IENvb2tpZShuYW1lLCB2YWx1ZSwgZG9tYWluLCBw
YXRoLCBleHBpcmVzLCBodHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKTsKKyAgICAgICAgcmF3Q29v
a2llcy5hcHBlbmQoY29va2llRGF0YSk7CisgICAgfQorCisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
aHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAKaW5kZXggNjViZTQ1MS4uODU3YTIzYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9t
aXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFy
Q2hyb21pdW0uY3BwCkBAIC0zMSw4ICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ2hy
b21pdW1CcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw0ICs1NCwxMCBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisg
ICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDVh
YzBmOWMuLmJmMDgzMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwCkBAIC0xNywxMiArMTcsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMs
NCArNDUsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogLypkb2N1bWVu
dCovKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9j
dW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAg
Ly8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUph
clNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAKaW5kZXggNzA1ZmRmMi4uZDQxMDQ4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKQEAgLTIxLDkgKzIxLDExIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgogCisjaW5jbHVkZSAiQ29va2ll
LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC04Niw0ICs4OCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIGRlZmF1bHRDb29raWVKYXIoKTsKIH0KIAordm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisg
ICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCmluZGV4IGFmOWUzZjMuLjMyMDU2OWMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRX
aW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRX
aW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVTdG9y
YWdlV2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0z
NSw2ICszNiw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xMTMsNCArMTE1LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBw
b2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAordm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisg
ICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggNDFkMTJkOS4uNjQ5NGNhMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcApAQCAtMjYsMTYgKzI2
LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNp
bmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmluZXQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCiB2b2lkIHNldENvb2tp
ZXMoRG9jdW1lbnQqIC8qZG9jdW1lbnQqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCkuCkBAIC02NCw0ICs2NSwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9Db29raWVKYXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcApp
bmRleCA0MGQ5MzA5Li5mNTdmYjhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nv
b2tpZUphclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcApA
QCAtMjgsOSArMjgsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVK
YXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiAjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDQwMAogI2luY2x1ZGUgInF3ZWJw
YWdlLmgiCkBAIC0xMjgsNiArMTMwLDEyIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQogI2VuZGlmCiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBE
b2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsK
K30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34660</attachid>
            <date>2009-08-12 06:47:13 -0700</date>
            <delta_ts>2009-08-13 08:54:08 -0700</delta_ts>
            <desc>Improved Based on Review</desc>
            <filename>cookies_3.patch</filename>
            <type>text/plain</type>
            <size>18954</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjIyMDgxOS4uOTViY2M0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBz
aXplLCBodHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29v
a2llLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAg
ICAKKyAgICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAg
ICAgICBnZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlv
biBvZiBnZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMp
OgorCisgICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNh
dGlzZnkgdGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUph
ckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0Nvb2tpZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAy
MDA5LTA4LTA4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA3NTNkYzcuLmExMTI3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzg0LDYgKzQzODQsNyBAQAogCQlEMjNDQTU1RDBBQjBF
QUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwICov
OyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTZCMEFCMEVC
OEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUyRjEwMzI0OTUx
MDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi87IH07CiAJ
CURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIzQzJDOTBBNTA4
RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9OwogCQlEQjIzQzJD
QzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhEMjkwMDI0ODlF
QiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBCOEJBM0M2MDA5
QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2Jq
Q0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05Mjk3LDYgKzkyOTgsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4QTUgLyogSlNS
YW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSYW5n
ZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjNDQTU1RTBBQjBF
QUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENv
b2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVu
dE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdl
YkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNjUsNiAr
MTQwNjcsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5j
cHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8s
CiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbS5oICovLAor
CQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJCQk5MzUyMDg4
MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2NTYwRjU0NkE5
OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQzNDY1NzBGNTQ2
QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MTg1LDYgKzE3MTg4
LDcgQEAKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEOEI2MTUyRjEwMzI0
OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAppbmRleCBiMmViMmQxLi4zMzA3
ZTllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JCYWNrZW5kLmgi
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgpAQCAtMTU4LDYgKzE2MCw0NiBAQCBKU1ZhbHVlIEpT
SW5zcGVjdG9yQmFja2VuZDo6aW5zcGVjdGVkV2luZG93KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xp
c3QmKQogICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoaW5zcGVjdGVk
V2luZG93LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdyk7CiB9CiAKK0pTVmFsdWUgSlNJ
bnNwZWN0b3JCYWNrZW5kOjpjb29raWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYp
Cit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKKyAgICBpZiAoIWljKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgZ2V0UmF3Q29v
a2llcyhkb2N1bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBjb29raWVzKTsKKworICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIHJlc3VsdDsKKyAgICBJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVy
KGV4ZWMsICJuYW1lIik7CisgICAgSWRlbnRpZmllciB2YWx1ZUlkZW50aWZpZXIoZXhlYywgInZh
bHVlIik7CisgICAgSWRlbnRpZmllciBkb21haW5JZGVudGlmaWVyKGV4ZWMsICJkb21haW4iKTsK
KyAgICBJZGVudGlmaWVyIHBhdGhJZGVudGlmaWVyKGV4ZWMsICJwYXRoIik7CisgICAgSWRlbnRp
ZmllciBleHBpcmVzSWRlbnRpZmllcihleGVjLCAiZXhwaXJlcyIpOworICAgIElkZW50aWZpZXIg
c2l6ZUlkZW50aWZpZXIoZXhlYywgInNpemUiKTsKKyAgICBJZGVudGlmaWVyIGh0dHBPbmx5SWRl
bnRpZmllcihleGVjLCAiaHR0cE9ubHkiKTsKKyAgICBJZGVudGlmaWVyIHNlY3VyZUlkZW50aWZp
ZXIoZXhlYywgInNlY3VyZSIpOworICAgIElkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIoZXhl
YywgInNlc3Npb24iKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvb2tpZXMuc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBjb25z
dCBDb29raWUmIGNvb2tpZSA9IGNvb2tpZXNbaV07CisgICAgICAgIEpTT2JqZWN0KiBjb29raWVP
YmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgY29va2llT2JqZWN0
LT5wdXREaXJlY3QobmFtZUlkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5uYW1lKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHZhbHVlSWRlbnRpZmllciwganNTdHJp
bmcoZXhlYywgY29va2llLnZhbHVlKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0
KGRvbWFpbklkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5kb21haW4pKTsKKyAgICAg
ICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QocGF0aElkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMs
IGNvb2tpZS5wYXRoKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KGV4cGlyZXNJ
ZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUuZXhwaXJlcykpOworICAgICAgICBjb29r
aWVPYmplY3QtPnB1dERpcmVjdChzaXplSWRlbnRpZmllciwganNOdW1iZXIoZXhlYywgY29va2ll
LnNpemUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QoaHR0cE9ubHlJZGVudGlm
aWVyLCBqc0Jvb2xlYW4oY29va2llLmh0dHBPbmx5KSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+
cHV0RGlyZWN0KHNlY3VyZUlkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUuc2VjdXJlKSk7Cisg
ICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNlc3Npb25JZGVudGlmaWVyLCBqc0Jvb2xl
YW4oY29va2llLnNlc3Npb24pKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjb29raWVPYmplY3Qp
OworICAgIH0KKworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCByZXN1bHQpOworfQor
CiBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6c2V0dGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggYmFlMWYyNi4uNzY5YTIwOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTY4LDYgKzY4LDggQEAgbW9kdWxl
IGNvcmUgewogICAgICAgICB2b2lkIGRpc2FibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4g
YWx3YXlzKTsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcg
cGFuZWxOYW1lKTsKIAorICAgICAgICBbQ3VzdG9tXSBBcnJheSBjb29raWVzKCk7CisKICNpZiBk
ZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUgogICAgICAgICBib29sZWFuIGRlYnVnZ2VyRW5hYmxlZCgpOwogICAgICAgICB2b2lk
IGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vQ29va2llLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MGJiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIENvb2tpZV9oCisjZGVmaW5lIENvb2tpZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgQ29va2llIHsKKyAg
ICAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBkb21haW4sCisgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGV4cGlyZXMsIGJvb2wgaHR0cE9ubHksCisgICAgICAgICAgICAgICAgYm9v
bCBzZWN1cmUsIGJvb2wgc2Vzc2lvbikKKyAgICAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAg
ICAgICAgLCB2YWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgICwgZG9tYWluKGRvbWFpbikKKyAgICAg
ICAgICAgICwgcGF0aChwYXRoKQorICAgICAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCisgICAg
ICAgICAgICAsIGh0dHBPbmx5KGh0dHBPbmx5KQorICAgICAgICAgICAgLCBzZWN1cmUoc2VjdXJl
KQorICAgICAgICAgICAgLCBzZXNzaW9uKHNlc3Npb24pCisgICAgICAgICAgICAsIHNpemUobmFt
ZS5sZW5ndGgoKSArIHZhbHVlLmxlbmd0aCgpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcg
ZG9tYWluOworICAgICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgU3RyaW5nIGV4cGlyZXM7Cisg
ICAgICAgIGJvb2wgaHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29s
IHNlc3Npb247CisgICAgICAgIHVuc2lnbmVkIHNpemU7CisgICAgfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmggYi9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLjJjNjRjZGUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVKYXIu
aApAQCAtMjYsMTUgKzI2LDE5IEBACiAjaWZuZGVmIENvb2tpZUphcl9oCiAjZGVmaW5lIENvb2tp
ZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorICAgIGNsYXNzIENvb2tpZTsKKyAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBLVVJM
OwogICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBEb2N1bWVudDsKIAogICAgIFN0cmluZyBj
b29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgc2V0Q29va2ll
cyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0
IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcAppbmRleCA3MzUxOWQ3Li5jYzVkYTk0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcApAQCAtMjksMTEg
KzI5LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAK
KyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MSwxMiArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFNob3Vs
ZG4ndCB0aGlzIGJlIHNhdmVkIHRvIGFuZCByZXN0b3JlZCBmcm9tIGRpc2sgdG9vPwogc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNvb2tpZUphcjsKIAotdm9pZCBzZXRDb29raWVzKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgLypwb2xpY3lVUkwqLywgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiB7CiAgICAgY29va2llSmFyLnNldCh1cmwuc3RyaW5nKCksIHZhbHVl
KTsKIH0KIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwpOwogewogICAgIHJldHVybiBjb29raWVK
YXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CkBAIC01Nyw1ICs1OSwxMSBAQCBib29sIGNvb2tpZXNF
bmFibGVkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0
IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorewor
ICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0Nvb2tpZUphci5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5t
bQppbmRleCBkOGRmNjAxLi5hNzI1OTcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Db29raWVKYXIubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCkBA
IC0yNyw5ICsyNywxMSBAQAogI2ltcG9ydCAiQ29va2llSmFyLmgiCiAKICNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgorI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgog
I2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogCiAjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKIHR5cGVkZWYgdW5zaWduZWQg
TlNVSW50ZWdlcjsKQEAgLTExNiw0ICsxMTgsMzAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBEb2N1bWVudCopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQoreworICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisKKyAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOworICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNv
b2tpZXNGb3JVUkw6Y29va2llVVJMXTsKKworICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2ll
cyBjb3VudF07CisgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIGZv
ciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgTlNIVFRQQ29v
a2llICpjb29raWUgPSAoTlNIVFRQQ29va2llICopW2Nvb2tpZXMgb2JqZWN0QXRJbmRleDppXTsK
KyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbY29va2llIG5hbWVdOworICAgICAgICBOU1N0cmlu
ZyAqdmFsdWUgPSBbY29va2llIHZhbHVlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRvbWFpbiA9IFtj
b29raWUgZG9tYWluXTsKKyAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBbY29va2llIHBhdGhdOwor
ICAgICAgICBOU1N0cmluZyAqZXhwaXJlcyA9IFtbY29va2llIGV4cGlyZXNEYXRlXSBkZXNjcmlw
dGlvbl07CisgICAgICAgIGJvb2wgaHR0cE9ubHkgPSBbY29va2llIGlzSFRUUE9ubHldOworICAg
ICAgICBib29sIHNlY3VyZSA9IFtjb29raWUgaXNTZWN1cmVdOworICAgICAgICBib29sIHNlc3Np
b24gPSBbY29va2llIGlzU2Vzc2lvbk9ubHldOworICAgICAgICByYXdDb29raWVzLnVuY2hlY2tl
ZEFwcGVuZChDb29raWUobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0aCwgZXhwaXJlcywgaHR0cE9u
bHksIHNlY3VyZSwgc2Vzc2lvbikpOworICAgIH0KKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJv
bWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCmluZGV4IDY1YmU0NTEuLjg1N2EyM2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1
bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNo
cm9taXVtLmNwcApAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNocm9t
aXVtQnJpZGdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNCArNTQsMTAgQEAgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAg
IHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAppbmRleCA1YWMw
ZjljLi5iZjA4MzEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJDdXJsLmNwcApAQCAtMTcsMTIgKzE3LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDQg
KzQ1LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQq
LykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8v
IEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQor
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJT
b3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3Bw
CmluZGV4IDcwNWZkZjIuLmQ0MTA0ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCkBAIC0yMSw5ICsyMSwxMSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5o
IgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtODYsNCArODgsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCog
Lypkb2N1bWVudCovKQogICAgIHJldHVybiBkZWZhdWx0Q29va2llSmFyKCk7CiB9CiAKK3ZvaWQg
Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAg
IHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Db29raWVKYXJDRk5ldFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcAppbmRleCBhZjllM2YzLi4zMjA1NjljIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2lu
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNv
b2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFn
ZVdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMzUs
NiArMzYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgog
I2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTEzLDQgKzExNSwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBD
b29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9s
aWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAKK3ZvaWQg
Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAg
IHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9Db29raWVKYXJXaW4uY3BwCmluZGV4IDQxZDEyZDkuLjY0OTRjYTIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKQEAgLTI2LDE2ICsyNiwx
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5j
bHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxXaW5pbmV0Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQogdm9pZCBzZXRDb29raWVz
KERvY3VtZW50KiAvKmRvY3VtZW50Ki8sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9y
Q29va2llcygpLgpAQCAtNjQsNCArNjUsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBE
b2N1bWVudCogLypkb2N1bWVudCovKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdD
b29raWVzLmNsZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQv
Q29va2llSmFyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKaW5k
ZXggNDBkOTMwOS4uZjU3ZmI4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29r
aWVKYXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKQEAg
LTI4LDkgKzI4LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFy
LmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogI2lmIFFUX1ZFUlNJT04gPj0gMHgwNDA0MDAKICNpbmNsdWRlICJxd2VicGFn
ZS5oIgpAQCAtMTI4LDYgKzEzMCwxMiBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3Vt
ZW50KiBkb2N1bWVudCkKICNlbmRpZgogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9j
dW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAg
Ly8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9
CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34679</attachid>
            <date>2009-08-12 11:51:49 -0700</date>
            <delta_ts>2009-08-12 14:36:56 -0700</delta_ts>
            <desc>Improved Based on Review</desc>
            <filename>cookies_4.patch</filename>
            <type>text/plain</type>
            <size>18190</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjIyMDgxOS4uOTViY2M0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBz
aXplLCBodHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29v
a2llLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAg
ICAKKyAgICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAg
ICAgICBnZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlv
biBvZiBnZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMp
OgorCisgICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNh
dGlzZnkgdGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUph
ckhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L0Nvb2tpZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAy
MDA5LTA4LTA4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA3NTNkYzcuLmExMTI3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzg0LDYgKzQzODQsNyBAQAogCQlEMjNDQTU1RDBBQjBF
QUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFu
Z2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwICov
OyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTZCMEFCMEVC
OEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUyRjEwMzI0OTUx
MDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi87IH07CiAJ
CURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIzQzJDOTBBNTA4
RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9OwogCQlEQjIzQzJD
QzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhEMjkwMDI0ODlF
QiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBCOEJBM0M2MDA5
QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2Jq
Q0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC05Mjk3LDYgKzkyOTgsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4QTUgLyogSlNS
YW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSYW5n
ZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjNDQTU1RTBBQjBF
QUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENv
b2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVu
dE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdl
YkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNjUsNiAr
MTQwNjcsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5j
cHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8s
CiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbS5oICovLAor
CQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJCQk5MzUyMDg4
MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2NTYwRjU0NkE5
OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQzNDY1NzBGNTQ2
QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MTg1LDYgKzE3MTg4
LDcgQEAKIAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEOEI2MTUyRjEwMzI0
OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAppbmRleCBiMmViMmQxLi4wMGI1
ZWQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0
b20uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JCYWNrZW5kLmgi
CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5oIgpAQCAtMTU4LDYgKzE2MCw0NiBAQCBKU1ZhbHVlIEpT
SW5zcGVjdG9yQmFja2VuZDo6aW5zcGVjdGVkV2luZG93KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xp
c3QmKQogICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoaW5zcGVjdGVk
V2luZG93LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdyk7CiB9CiAKK0pTVmFsdWUgSlNJ
bnNwZWN0b3JCYWNrZW5kOjpjb29raWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYp
Cit7CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKTsKKyAgICBpZiAoIWljKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgZ2V0UmF3Q29v
a2llcyhkb2N1bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBjb29raWVzKTsKKworICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIHJlc3VsdDsKKyAgICBJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVy
KGV4ZWMsICJuYW1lIik7CisgICAgSWRlbnRpZmllciB2YWx1ZUlkZW50aWZpZXIoZXhlYywgInZh
bHVlIik7CisgICAgSWRlbnRpZmllciBkb21haW5JZGVudGlmaWVyKGV4ZWMsICJkb21haW4iKTsK
KyAgICBJZGVudGlmaWVyIHBhdGhJZGVudGlmaWVyKGV4ZWMsICJwYXRoIik7CisgICAgSWRlbnRp
ZmllciBleHBpcmVzSWRlbnRpZmllcihleGVjLCAiZXhwaXJlcyIpOworICAgIElkZW50aWZpZXIg
c2l6ZUlkZW50aWZpZXIoZXhlYywgInNpemUiKTsKKyAgICBJZGVudGlmaWVyIGh0dHBPbmx5SWRl
bnRpZmllcihleGVjLCAiaHR0cE9ubHkiKTsKKyAgICBJZGVudGlmaWVyIHNlY3VyZUlkZW50aWZp
ZXIoZXhlYywgInNlY3VyZSIpOworICAgIElkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIoZXhl
YywgInNlc3Npb24iKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvb2tpZXMuc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBjb25z
dCBDb29raWUmIGNvb2tpZSA9IGNvb2tpZXNbaV07CisgICAgICAgIEpTT2JqZWN0KiBjb29raWVP
YmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgY29va2llT2JqZWN0
LT5wdXREaXJlY3QobmFtZUlkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5uYW1lKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHZhbHVlSWRlbnRpZmllciwganNTdHJp
bmcoZXhlYywgY29va2llLnZhbHVlKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0
KGRvbWFpbklkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5kb21haW4pKTsKKyAgICAg
ICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QocGF0aElkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMs
IGNvb2tpZS5wYXRoKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KGV4cGlyZXNJ
ZGVudGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUuZXhwaXJlcykpOworICAgICAgICBjb29r
aWVPYmplY3QtPnB1dERpcmVjdChzaXplSWRlbnRpZmllciwganNOdW1iZXIoZXhlYywgY29va2ll
Lm5hbWUubGVuZ3RoKCkgKyBjb29raWUudmFsdWUubGVuZ3RoKCkpKTsKKyAgICAgICAgY29va2ll
T2JqZWN0LT5wdXREaXJlY3QoaHR0cE9ubHlJZGVudGlmaWVyLCBqc0Jvb2xlYW4oY29va2llLmh0
dHBPbmx5KSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNlY3VyZUlkZW50aWZp
ZXIsIGpzQm9vbGVhbihjb29raWUuc2VjdXJlKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0
RGlyZWN0KHNlc3Npb25JZGVudGlmaWVyLCBqc0Jvb2xlYW4oY29va2llLnNlc3Npb24pKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChjb29raWVPYmplY3QpOworICAgIH0KKworICAgIHJldHVybiBj
b25zdHJ1Y3RBcnJheShleGVjLCByZXN1bHQpOworfQorCiBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFj
a2VuZDo6c2V0dGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAg
ICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwKaW5kZXggYmFlMWYyNi4uNzY5YTIwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5pZGwKQEAgLTY4LDYgKzY4LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGRp
c2FibGVSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4gYWx3YXlzKTsKICAgICAgICAgdm9pZCBz
dG9yZUxhc3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAorICAgICAgICBb
Q3VzdG9tXSBBcnJheSBjb29raWVzKCk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgogICAgICAgICBib29sZWFu
IGRlYnVnZ2VyRW5hYmxlZCgpOwogICAgICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xl
YW4gYWx3YXlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQwNjljYjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJv
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvb2tpZV9oCisjZGVmaW5l
IENvb2tpZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICBzdHJ1Y3QgQ29va2llIHsKKyAgICAgICAgQ29va2llKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sCisgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGV4cGlyZXMsIGJv
b2wgaHR0cE9ubHksCisgICAgICAgICAgICAgICAgYm9vbCBzZWN1cmUsIGJvb2wgc2Vzc2lvbikK
KyAgICAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKKyAg
ICAgICAgICAgICwgZG9tYWluKGRvbWFpbikKKyAgICAgICAgICAgICwgcGF0aChwYXRoKQorICAg
ICAgICAgICAgLCBleHBpcmVzKGV4cGlyZXMpCisgICAgICAgICAgICAsIGh0dHBPbmx5KGh0dHBP
bmx5KQorICAgICAgICAgICAgLCBzZWN1cmUoc2VjdXJlKQorICAgICAgICAgICAgLCBzZXNzaW9u
KHNlc3Npb24pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBuYW1lOwor
ICAgICAgICBTdHJpbmcgdmFsdWU7CisgICAgICAgIFN0cmluZyBkb21haW47CisgICAgICAgIFN0
cmluZyBwYXRoOworICAgICAgICBTdHJpbmcgZXhwaXJlczsKKyAgICAgICAgYm9vbCBodHRwT25s
eTsKKyAgICAgICAgYm9vbCBzZWN1cmU7CisgICAgICAgIGJvb2wgc2Vzc2lvbjsKKyAgICB9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVKYXIuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKaW5kZXggNjE1OTM4Ni4uMmM2NGNkZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVKYXIuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZUphci5oCkBAIC0yNiwxNSArMjYsMTkgQEAKICNpZm5kZWYgQ29va2llSmFyX2gK
ICNkZWZpbmUgQ29va2llSmFyX2gKIAorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgQ29va2llOworICAgIGNsYXNzIERvY3VtZW50Owog
ICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIERvY3VtZW50Owog
CiAgICAgU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7CiAgICAg
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKTsKKyAgICB2b2lkIGdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsK
IAogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3UuY3BwCmluZGV4IDcz
NTE5ZDcuLmY5OWUyZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2ll
SmFySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3Uu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29v
a2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCkBAIC00MSwx
MiArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IGJlIHNhdmVkIHRvIGFuZCByZXN0b3JlZCBmcm9tIGRpc2sgdG9vPwogc3RhdGljIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IGNvb2tpZUphcjsKIAotdm9pZCBzZXRDb29raWVzKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgS1VSTCYgLypwb2xpY3lVUkwqLywgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiB7CiAgICAgY29va2llSmFyLnNldCh1cmwuc3RyaW5nKCksIHZhbHVlKTsKIH0KIAot
U3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9j
dW1lbnQqLCBjb25zdCBLVVJMJiB1cmwpOwogewogICAgIHJldHVybiBjb29raWVKYXIuZ2V0KHVy
bC5zdHJpbmcoKSk7CiB9CkBAIC01Nyw1ICs1OCwxMSBAQCBib29sIGNvb2tpZXNFbmFibGVkKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50
KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Nvb2tpZUphci5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQppbmRleCBk
OGRmNjAxLi4yYzgxMWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVK
YXIubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW1wb3J0ICJDb29raWVKYXIuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25z
LmgiCisjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJL
VVJMLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMTYsNCArMTE3LDMwIEBAIGJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cisg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgTlNVUkwgKmNvb2tpZVVSTCA9
IHVybDsKKyAgICBOU0FycmF5ICpjb29raWVzID0gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlXSBjb29raWVzRm9yVVJMOmNvb2tpZVVSTF07CisKKyAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOworICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNh
cGFjaXR5KGNvdW50KTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CisgICAgICAgIE5TSFRUUENvb2tpZSAqY29va2llID0gKE5TSFRUUENvb2tpZSAqKVtjb29r
aWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIE5TU3RyaW5nICpuYW1lID0gW2Nvb2tpZSBu
YW1lXTsKKyAgICAgICAgTlNTdHJpbmcgKnZhbHVlID0gW2Nvb2tpZSB2YWx1ZV07CisgICAgICAg
IE5TU3RyaW5nICpkb21haW4gPSBbY29va2llIGRvbWFpbl07CisgICAgICAgIE5TU3RyaW5nICpw
YXRoID0gW2Nvb2tpZSBwYXRoXTsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGlyZXMgPSBbW2Nvb2tp
ZSBleHBpcmVzRGF0ZV0gZGVzY3JpcHRpb25dOworICAgICAgICBib29sIGh0dHBPbmx5ID0gW2Nv
b2tpZSBpc0hUVFBPbmx5XTsKKyAgICAgICAgYm9vbCBzZWN1cmUgPSBbY29va2llIGlzU2VjdXJl
XTsKKyAgICAgICAgYm9vbCBzZXNzaW9uID0gW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XTsKKyAgICAg
ICAgcmF3Q29va2llcy51bmNoZWNrZWRBcHBlbmQoQ29va2llKG5hbWUsIHZhbHVlLCBkb21haW4s
IHBhdGgsIGV4cGlyZXMsIGh0dHBPbmx5LCBzZWN1cmUsIHNlc3Npb24pKTsKKyAgICB9CisKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAppbmRleCA2
NWJlNDUxLi41ZjM2YTc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tp
ZS5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
IApAQCAtNTIsNCArNTMsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCop
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVu
dCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJDdXJsLmNwcAppbmRleCA1YWMwZjljLi4zOGFlZDZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtMTcsNiArMTcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5j
bHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTQzLDQgKzQ0LDEwIEBAIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYs
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IDcwNWZkZjIuLjNj
N2ExMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUph
clNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29va2llSmFyU291cC5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtODYsNCAr
ODcsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogLypkb2N1bWVudCov
KQogICAgIHJldHVybiBkZWZhdWx0Q29va2llSmFyKCk7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2ll
cyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMu
Y2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Db29raWVKYXJDRk5ldFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nv
b2tpZUphckNGTmV0V2luLmNwcAppbmRleCBhZjllM2YzLi4zYTFmNTdhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcApAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgog
CisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVdpbi5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMTEzLDQgKzExNCwxMCBA
QCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAg
cmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21N
YWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3lBbHdheXM7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNv
bnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCmluZGV4IDQxZDEy
ZDkuLmViNzBlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29v
a2llSmFyV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUph
cldpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0z
NSw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCiB2b2lkIHNldENvb2tpZXMo
RG9jdW1lbnQqIC8qZG9jdW1lbnQqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JD
b29raWVzKCkuCkBAIC02NCw0ICs2NCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERv
Y3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3
Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nv
b2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
b29raWVKYXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAppbmRl
eCA0MGQ5MzA5Li42OWY2NWUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTEyOCw2ICsxMjksMTIg
QEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiAjZW5kaWYK
IH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBz
dz00IGV0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34692</attachid>
            <date>2009-08-12 14:36:56 -0700</date>
            <delta_ts>2009-08-13 08:53:57 -0700</delta_ts>
            <desc>Improved Based on Review - expires as epoch double</desc>
            <filename>cookies_5.patch</filename>
            <type>text/plain</type>
            <size>18199</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjIyMDgxOS4uZTNhYzI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMSAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTA4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDA3NTNkYzcuLmExMTI3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00Mzg0LDYgKzQzODQsNyBAQAogCQlEMjNDQTU1RDBBQjBFQUFFMDA1
MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNl
cHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwICovOyB9Owog
CQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NBNTZCMEFCMEVCOEQwMDUx
MDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUyRjEwMzI0OTUxMDBDODU1
NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi87IH07CiAJCURCMjND
MkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIzQzJDOTBBNTA4RDI5MDAy
NDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9OwogCQlEQjIzQzJDQzBBNTA4
RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJ
bmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBCOEJBM0M2MDA5QUNERkUg
LyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJh
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
Mjk3LDYgKzkyOTgsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSYW5nZUV4Y2Vw
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjNDQTU1RTBBQjBFQUI2MDA1
MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRl
bnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmRl
bnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURCMjND
MkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1hbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFDREZFIC8qIFdlYkNvcmVP
YmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlT2Jq
Q0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwNjUsNiArMTQwNjcs
NyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5jcHAgKi8s
CiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8sCiAJCQkJ
MDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbS5oICovLAorCQkJCUQ4
QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJCQk5MzUyMDg4MTA5QkQ0
NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2NTYwRjU0NkE5OTAwQjBG
MUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQzNDY1NzBGNTQ2QTk5MDBC
MEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MTg1LDYgKzE3MTg4LDcgQEAK
IAkJCQk0OTQ4NEZDODEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0IxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQ0UxMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlEOEI2MTUyRjEwMzI0OTUxMDBD
ODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnNwZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAppbmRleCBiMmViMmQxLi5iMDc4MDE2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
CkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JCYWNrZW5kLmgiCiAKICNp
bmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAiQ29va2ll
SmFyLmgiCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiSlNEYXRhYmFzZS5oIgpAQCAtMTU4LDYgKzE2MCw0NiBAQCBKU1ZhbHVlIEpTSW5zcGVj
dG9yQmFja2VuZDo6aW5zcGVjdGVkV2luZG93KEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKQog
ICAgIHJldHVybiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXI6OndyYXAoaW5zcGVjdGVkV2luZG93
LT5nbG9iYWxFeGVjKCksIGluc3BlY3RlZFdpbmRvdyk7CiB9CiAKK0pTVmFsdWUgSlNJbnNwZWN0
b3JCYWNrZW5kOjpjb29raWVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCit7Cisg
ICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbXBsKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KTsKKyAgICBpZiAoIWljKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGljLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpOworICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgZ2V0UmF3Q29va2llcyhk
b2N1bWVudCwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpLCBjb29raWVzKTsKKworICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIHJlc3VsdDsKKyAgICBJZGVudGlmaWVyIG5hbWVJZGVudGlmaWVyKGV4ZWMs
ICJuYW1lIik7CisgICAgSWRlbnRpZmllciB2YWx1ZUlkZW50aWZpZXIoZXhlYywgInZhbHVlIik7
CisgICAgSWRlbnRpZmllciBkb21haW5JZGVudGlmaWVyKGV4ZWMsICJkb21haW4iKTsKKyAgICBJ
ZGVudGlmaWVyIHBhdGhJZGVudGlmaWVyKGV4ZWMsICJwYXRoIik7CisgICAgSWRlbnRpZmllciBl
eHBpcmVzSWRlbnRpZmllcihleGVjLCAiZXhwaXJlcyIpOworICAgIElkZW50aWZpZXIgc2l6ZUlk
ZW50aWZpZXIoZXhlYywgInNpemUiKTsKKyAgICBJZGVudGlmaWVyIGh0dHBPbmx5SWRlbnRpZmll
cihleGVjLCAiaHR0cE9ubHkiKTsKKyAgICBJZGVudGlmaWVyIHNlY3VyZUlkZW50aWZpZXIoZXhl
YywgInNlY3VyZSIpOworICAgIElkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIoZXhlYywgInNl
c3Npb24iKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvb2tpZXMuc2l6ZSgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBjb25zdCBDb29r
aWUmIGNvb2tpZSA9IGNvb2tpZXNbaV07CisgICAgICAgIEpTT2JqZWN0KiBjb29raWVPYmplY3Qg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QobmFtZUlkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5uYW1lKSk7CisgICAg
ICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHZhbHVlSWRlbnRpZmllciwganNTdHJpbmcoZXhl
YywgY29va2llLnZhbHVlKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KGRvbWFp
bklkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tpZS5kb21haW4pKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3QocGF0aElkZW50aWZpZXIsIGpzU3RyaW5nKGV4ZWMsIGNvb2tp
ZS5wYXRoKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KGV4cGlyZXNJZGVudGlm
aWVyLCBqc051bWJlcihleGVjLCBjb29raWUuZXhwaXJlcykpOworICAgICAgICBjb29raWVPYmpl
Y3QtPnB1dERpcmVjdChzaXplSWRlbnRpZmllciwganNOdW1iZXIoZXhlYywgY29va2llLm5hbWUu
bGVuZ3RoKCkgKyBjb29raWUudmFsdWUubGVuZ3RoKCkpKTsKKyAgICAgICAgY29va2llT2JqZWN0
LT5wdXREaXJlY3QoaHR0cE9ubHlJZGVudGlmaWVyLCBqc0Jvb2xlYW4oY29va2llLmh0dHBPbmx5
KSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNlY3VyZUlkZW50aWZpZXIsIGpz
Qm9vbGVhbihjb29raWUuc2VjdXJlKSk7CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0
KHNlc3Npb25JZGVudGlmaWVyLCBqc0Jvb2xlYW4oY29va2llLnNlc3Npb24pKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChjb29raWVPYmplY3QpOworICAgIH0KKworICAgIHJldHVybiBjb25zdHJ1
Y3RBcnJheShleGVjLCByZXN1bHQpOworfQorCiBKU1ZhbHVlIEpTSW5zcGVjdG9yQmFja2VuZDo6
c2V0dGluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYg
KGFyZ3Muc2l6ZSgpIDwgMSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5k
ZXggYmFlMWYyNi4uNzY5YTIwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwKQEAgLTY4LDYgKzY4LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGRpc2FibGVS
ZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4gYWx3YXlzKTsKICAgICAgICAgdm9pZCBzdG9yZUxh
c3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAorICAgICAgICBbQ3VzdG9t
XSBBcnJheSBjb29raWVzKCk7CisKICNpZiBkZWZpbmVkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKSAmJiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUgogICAgICAgICBib29sZWFuIGRlYnVn
Z2VyRW5hYmxlZCgpOwogICAgICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3
YXlzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL0Nvb2tpZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDZk
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvb2tpZV9oCisjZGVmaW5lIENvb2tp
ZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyAgICBzdHJ1Y3QgQ29va2llIHsKKyAgICAgICAgQ29va2llKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sCisgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwaXJlcywgYm9vbCBodHRwT25seSwg
Ym9vbCBzZWN1cmUsCisgICAgICAgICAgICAgICAgYm9vbCBzZXNzaW9uKQorICAgICAgICAgICAg
OiBuYW1lKG5hbWUpCisgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQorICAgICAgICAgICAgLCBk
b21haW4oZG9tYWluKQorICAgICAgICAgICAgLCBwYXRoKHBhdGgpCisgICAgICAgICAgICAsIGV4
cGlyZXMoZXhwaXJlcykKKyAgICAgICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCisgICAgICAg
ICAgICAsIHNlY3VyZShzZWN1cmUpCisgICAgICAgICAgICAsIHNlc3Npb24oc2Vzc2lvbikKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIFN0cmlu
ZyB2YWx1ZTsKKyAgICAgICAgU3RyaW5nIGRvbWFpbjsKKyAgICAgICAgU3RyaW5nIHBhdGg7Cisg
ICAgICAgIGRvdWJsZSBleHBpcmVzOworICAgICAgICBib29sIGh0dHBPbmx5OworICAgICAgICBi
b29sIHNlY3VyZTsKKyAgICAgICAgYm9vbCBzZXNzaW9uOworICAgIH07CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9Db29raWVKYXIuaAppbmRleCA2MTU5Mzg2Li4yYzY0Y2RlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFy
LmgKQEAgLTI2LDE1ICsyNiwxOSBAQAogI2lmbmRlZiBDb29raWVKYXJfaAogI2RlZmluZSBDb29r
aWVKYXJfaAogCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyAgICBjbGFzcyBDb29raWU7CisgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgS1VS
TDsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7CiAKICAgICBTdHJpbmcg
Y29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmKTsKICAgICB2b2lkIHNldENvb2tp
ZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25z
dCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3UuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAKaW5kZXggNzM1MTlkNy4uZjk5ZTJm
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVKYXJIYWlrdS5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAor
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKQEAgLTQxLDEyICs0MiwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgc2F2ZWQgdG8g
YW5kIHJlc3RvcmVkIGZyb20gZGlzayB0b28/CiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gY29va2llSmFyOwogCi12b2lkIHNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBL
VVJMJiAvKnBvbGljeVVSTCovLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVz
KERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIHsKICAg
ICBjb29raWVKYXIuc2V0KHVybC5zdHJpbmcoKSwgdmFsdWUpOwogfQogCi1TdHJpbmcgY29va2ll
cyhjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0
IEtVUkwmIHVybCk7CiB7CiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsK
IH0KQEAgLTU3LDUgKzU4LDExIEBAIGJvb2wgY29va2llc0VuYWJsZWQoKQogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJM
JiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1t
IGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCmluZGV4IGQ4ZGY2MDEuLjA2Mzkx
ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBv
cnQgIkNvb2tpZUphci5oIgogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQg
IkNvb2tpZS5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIktVUkwuaCIKICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNiw0ICsxMTcsMzAgQEAgYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBEb2N1bWVudCopCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIGdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQoreworICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOworICAgIE5T
QXJyYXkgKmNvb2tpZXMgPSBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0
b3JhZ2VdIGNvb2tpZXNGb3JVUkw6Y29va2llVVJMXTsKKworICAgIE5TVUludGVnZXIgY291bnQg
PSBbY29va2llcyBjb3VudF07CisgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQp
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAg
TlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQQ29va2llICopW2Nvb2tpZXMgb2JqZWN0QXRJ
bmRleDppXTsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbY29va2llIG5hbWVdOworICAgICAg
ICBOU1N0cmluZyAqdmFsdWUgPSBbY29va2llIHZhbHVlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRv
bWFpbiA9IFtjb29raWUgZG9tYWluXTsKKyAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBbY29va2ll
IHBhdGhdOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBleHBpcmVzID0gW1tjb29raWUgZXhwaXJl
c0RhdGVdIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKiAxMDAwOworICAgICAgICBib29sIGh0dHBP
bmx5ID0gW2Nvb2tpZSBpc0hUVFBPbmx5XTsKKyAgICAgICAgYm9vbCBzZWN1cmUgPSBbY29va2ll
IGlzU2VjdXJlXTsKKyAgICAgICAgYm9vbCBzZXNzaW9uID0gW2Nvb2tpZSBpc1Nlc3Npb25Pbmx5
XTsKKyAgICAgICAgcmF3Q29va2llcy51bmNoZWNrZWRBcHBlbmQoQ29va2llKG5hbWUsIHZhbHVl
LCBkb21haW4sIHBhdGgsIGV4cGlyZXMsIGh0dHBPbmx5LCBzZWN1cmUsIHNlc3Npb24pKTsKKyAg
ICB9CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNw
cAppbmRleCA2NWJlNDUxLi41ZjM2YTc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKIApAQCAtNTIsNCArNTMsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBE
b2N1bWVudCopCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25z
dCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sK
KyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAppbmRleCA1YWMwZjljLi4zOGFlZDZlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAt
MTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5o
IgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTQzLDQgKzQ0LDEwIEBA
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29u
c3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBO
b3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IDcw
NWZkZjIuLjNjN2ExMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZUphclNvdXAuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29va2llSmFyU291cC5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVk
ZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpA
QCAtODYsNCArODcsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogLypk
b2N1bWVudCovKQogICAgIHJldHVybiBkZWZhdWx0Q29va2llSmFyKCk7CiB9CiAKK3ZvaWQgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9Db29raWVKYXJDRk5ldFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcAppbmRleCBhZjllM2YzLi4zYTFmNTdhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tp
ZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVdp
bi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMTEzLDQg
KzExNCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50
Ki8pCiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3Jh
Z2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1
bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJX
aW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCmlu
ZGV4IDQxZDEyZDkuLmViNzBlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay93aW4vQ29va2llSmFyV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L0Nvb2tpZUphcldpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCkBAIC0zNSw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCiB2b2lkIHNl
dENvb2tpZXMoRG9jdW1lbnQqIC8qZG9jdW1lbnQqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZG9jdW1lbnQtPmZpcnN0
UGFydHlGb3JDb29raWVzKCkuCkBAIC02NCw0ICs2NCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAor
ICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0
LmNwcAppbmRleCA0MGQ5MzA5Li42OWY2NWUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0Nvb2tpZUphclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNv
b2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKQEAgLTEyOCw2
ICsxMjksMTIgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQp
CiAjZW5kaWYKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3Qg
S1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CiAKIC8vIHZp
bTogdHM9NCBzdz00IGV0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34713</attachid>
            <date>2009-08-12 20:55:10 -0700</date>
            <delta_ts>2009-08-13 08:11:00 -0700</delta_ts>
            <desc>Merged with ToT</desc>
            <filename>cookies_6.patch</filename>
            <type>text/plain</type>
            <size>18219</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTVmMjdhMy4uYTM2YmMwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTEyICBHZW9yZ2UgV3JpZ2h0ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMwM2EyYmMuLjM2OTg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQlEMjND
QTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRp
b24uY3BwICovOyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NB
NTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUy
RjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmgg
Ki87IH07CiAJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIz
QzJDOTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9Owog
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhE
MjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBC
OEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MzMwLDYgKzkzMzEsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4
QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjND
QTU1RTBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1
NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVC
IC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFD
REZFIC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMzIsNiArMTQxMzQsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5jcHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8sCiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAorCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2
NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQz
NDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MjU5
LDYgKzE3MjYyLDcgQEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAw
MDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IGIyZWIyZDEuLmIwNzgwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCkBAIC0xNTgsNiArMTYwLDQ2
IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6
d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5zcGVjdGVkV2luZG93KTsKIH0K
IAorSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaWMtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGNvb2tp
ZXMpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIElkZW50aWZpZXIg
bmFtZUlkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKTsKKyAgICBJZGVudGlmaWVyIGRvbWFpbklkZW50aWZpZXIoZXhl
YywgImRvbWFpbiIpOworICAgIElkZW50aWZpZXIgcGF0aElkZW50aWZpZXIoZXhlYywgInBhdGgi
KTsKKyAgICBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIik7Cisg
ICAgSWRlbnRpZmllciBzaXplSWRlbnRpZmllcihleGVjLCAic2l6ZSIpOworICAgIElkZW50aWZp
ZXIgaHR0cE9ubHlJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIpOworICAgIElkZW50aWZpZXIg
c2VjdXJlSWRlbnRpZmllcihleGVjLCAic2VjdXJlIik7CisgICAgSWRlbnRpZmllciBzZXNzaW9u
SWRlbnRpZmllcihleGVjLCAic2Vzc2lvbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29v
a2llcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNvbnN0IENvb2tpZSYgY29va2llID0gY29va2llc1tpXTsKKyAgICAgICAgSlNP
YmplY3QqIGNvb2tpZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICBjb29raWVPYmplY3QtPnB1dERpcmVjdChuYW1lSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywg
Y29va2llLm5hbWUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QodmFsdWVJZGVu
dGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUudmFsdWUpKTsKKyAgICAgICAgY29va2llT2Jq
ZWN0LT5wdXREaXJlY3QoZG9tYWluSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmRv
bWFpbikpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChwYXRoSWRlbnRpZmllciwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QoZXhwaXJlc0lkZW50aWZpZXIsIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZS5leHBpcmVzKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNpemVJZGVudGlmaWVyLCBqc051bWJl
cihleGVjLCBjb29raWUubmFtZS5sZW5ndGgoKSArIGNvb2tpZS52YWx1ZS5sZW5ndGgoKSkpOwor
ICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChodHRwT25seUlkZW50aWZpZXIsIGpzQm9v
bGVhbihjb29raWUuaHR0cE9ubHkpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qo
c2VjdXJlSWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5zZWN1cmUpKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3Qoc2Vzc2lvbklkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUu
c2Vzc2lvbikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKIEpTVmFsdWUg
SlNJbnNwZWN0b3JCYWNrZW5kOjpzZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBiYWUxZjI2Li43NjlhMjA4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjgsNiArNjgsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwog
ICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUp
OwogCisgICAgICAgIFtDdXN0b21dIEFycmF5IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIGJvb2xlYW4gZGVidWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjY0NmQzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29v
a2llX2gKKyNkZWZpbmUgQ29va2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDb29raWUgeworICAgICAgICBDb29r
aWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBp
cmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKKyAgICAgICAgICAgICAgICBib29sIHNl
c3Npb24pCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0
aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25s
eShodHRwT25seSkKKyAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwg
c2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcgZG9tYWluOworICAg
ICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgZG91YmxlIGV4cGlyZXM7CisgICAgICAgIGJvb2wg
aHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29sIHNlc3Npb247Cisg
ICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
SmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLjJjNjRj
ZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaApAQCAtMjYsMTUgKzI2LDE5IEBACiAjaWZuZGVmIENvb2tp
ZUphcl9oCiAjZGVmaW5lIENvb2tpZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIENvb2tpZTsKKyAgICBjbGFzcyBEb2N1
bWVudDsKICAgICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBEb2N1
bWVudDsKIAogICAgIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYp
OwogICAgIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAgdm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29r
aWU+Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29raWVK
YXJIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNwcApp
bmRleCA3MzUxOWQ3Li5mOTllMmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1
L0Nvb2tpZUphckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUph
ckhhaWt1LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgpA
QCAtNDEsMTIgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBTaG91bGRu
J3QgdGhpcyBiZSBzYXZlZCB0byBhbmQgcmVzdG9yZWQgZnJvbSBkaXNrIHRvbz8KIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llcyhjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIC8qcG9saWN5VVJMKi8sIGNvbnN0IFN0cmluZyYgdmFs
dWUpCit2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogewogICAgIGNvb2tpZUphci5zZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7
CiB9CiAKLVN0cmluZyBjb29raWVzKGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzKGNv
bnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsKTsKIHsKICAgICByZXR1cm4gY29va2llSmFy
LmdldCh1cmwuc3RyaW5nKCkpOwogfQpAQCAtNTcsNSArNTgsMTEgQEAgYm9vbCBjb29raWVzRW5h
YmxlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBE
b2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Db29raWVKYXIubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0K
aW5kZXggZDhkZjYwMS4uMDYzOTFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q29va2llSmFyLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQpAQCAt
MjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ29va2llSmFyLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgorI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2lt
cG9ydCAiS1VSTC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTE2LDQgKzExNywz
MCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgcmF3Q29va2llcy5jbGVh
cigpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIE5TVVJMICpjb29r
aWVVUkwgPSB1cmw7CisgICAgTlNBcnJheSAqY29va2llcyA9IFtbTlNIVFRQQ29va2llU3RvcmFn
ZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gY29va2llc0ZvclVSTDpjb29raWVVUkxdOworCisg
ICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKKyAgICByYXdDb29raWVzLnJl
c2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgeworICAgICAgICBOU0hUVFBDb29raWUgKmNvb2tpZSA9IChOU0hUVFBDb29raWUg
KilbY29va2llcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBOU1N0cmluZyAqbmFtZSA9IFtj
b29raWUgbmFtZV07CisgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtjb29raWUgdmFsdWVdOwor
ICAgICAgICBOU1N0cmluZyAqZG9tYWluID0gW2Nvb2tpZSBkb21haW5dOworICAgICAgICBOU1N0
cmluZyAqcGF0aCA9IFtjb29raWUgcGF0aF07CisgICAgICAgIE5TVGltZUludGVydmFsIGV4cGly
ZXMgPSBbW2Nvb2tpZSBleHBpcmVzRGF0ZV0gdGltZUludGVydmFsU2luY2UxOTcwXSAqIDEwMDA7
CisgICAgICAgIGJvb2wgaHR0cE9ubHkgPSBbY29va2llIGlzSFRUUE9ubHldOworICAgICAgICBi
b29sIHNlY3VyZSA9IFtjb29raWUgaXNTZWN1cmVdOworICAgICAgICBib29sIHNlc3Npb24gPSBb
Y29va2llIGlzU2Vzc2lvbk9ubHldOworICAgICAgICByYXdDb29raWVzLnVuY2hlY2tlZEFwcGVu
ZChDb29raWUobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0aCwgZXhwaXJlcywgaHR0cE9ubHksIHNl
Y3VyZSwgc2Vzc2lvbikpOworICAgIH0KKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9D
b29raWVKYXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCmluZGV4IDY1YmU0NTEuLjVmMzZhNzcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVt
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNv
b2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ2hyb21pdW1Ccmlk
Z2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogCkBAIC01Miw0ICs1MywxMCBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9p
ZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisg
ICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDVh
YzBmOWMuLjM4YWVkNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgpAQCAtNDMsNCArNDQsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCog
Lypkb2N1bWVudCovKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Cit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNs
ZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZUphclNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAKaW5kZXggNzA1ZmRmMi4uM2M3YTExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAKKyNpbmNsdWRl
ICJDb29raWUuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCkBAIC04Niw0ICs4NywxMCBAQCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIGRlZmF1bHRDb29raWVK
YXIoKTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCmluZGV4IGFm
OWUzZjMuLjNhMWY1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNs
dWRlICJDb29raWVTdG9yYWdlV2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCkBAIC0xMTMsNCArMTE0LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
RG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kg
PT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAordm9pZCBnZXRS
YXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3
Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L0Nvb2tpZUphcldpbi5jcHAKaW5kZXggNDFkMTJkOS4uZWI3MGU3YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAi
Q29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM1LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0KIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCogLypkb2N1bWVudCovLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IERlYWwg
d2l0aCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS4KQEAgLTY0LDQgKzY0LDEwIEBA
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29u
c3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBO
b3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDQwZDkzMDkuLjY5ZjY1ZTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgpAQCAtMTI4LDYgKzEyOSwxMiBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCkKICNlbmRpZgogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7
CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFy
KCk7Cit9CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34742</attachid>
            <date>2009-08-13 08:11:00 -0700</date>
            <delta_ts>2009-08-13 08:24:18 -0700</delta_ts>
            <desc>Attempted Build Fix for Windows</desc>
            <filename>cookie_7.patch</filename>
            <type>text/plain</type>
            <size>18221</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTVmMjdhMy4uYTM2YmMwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTEyICBHZW9yZ2UgV3JpZ2h0ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMwM2EyYmMuLjM2OTg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQlEMjND
QTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRp
b24uY3BwICovOyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NB
NTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUy
RjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmgg
Ki87IH07CiAJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIz
QzJDOTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9Owog
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhE
MjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBC
OEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MzMwLDYgKzkzMzEsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4
QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjND
QTU1RTBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1
NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVC
IC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFD
REZFIC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMzIsNiArMTQxMzQsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5jcHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8sCiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAorCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2
NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQz
NDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MjU5
LDYgKzE3MjYyLDcgQEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAw
MDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IGIyZWIyZDEuLmIwNzgwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCkBAIC0xNTgsNiArMTYwLDQ2
IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6
d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5zcGVjdGVkV2luZG93KTsKIH0K
IAorSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaWMtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGNvb2tp
ZXMpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIElkZW50aWZpZXIg
bmFtZUlkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKTsKKyAgICBJZGVudGlmaWVyIGRvbWFpbklkZW50aWZpZXIoZXhl
YywgImRvbWFpbiIpOworICAgIElkZW50aWZpZXIgcGF0aElkZW50aWZpZXIoZXhlYywgInBhdGgi
KTsKKyAgICBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIik7Cisg
ICAgSWRlbnRpZmllciBzaXplSWRlbnRpZmllcihleGVjLCAic2l6ZSIpOworICAgIElkZW50aWZp
ZXIgaHR0cE9ubHlJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIpOworICAgIElkZW50aWZpZXIg
c2VjdXJlSWRlbnRpZmllcihleGVjLCAic2VjdXJlIik7CisgICAgSWRlbnRpZmllciBzZXNzaW9u
SWRlbnRpZmllcihleGVjLCAic2Vzc2lvbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29v
a2llcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNvbnN0IENvb2tpZSYgY29va2llID0gY29va2llc1tpXTsKKyAgICAgICAgSlNP
YmplY3QqIGNvb2tpZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICBjb29raWVPYmplY3QtPnB1dERpcmVjdChuYW1lSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywg
Y29va2llLm5hbWUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QodmFsdWVJZGVu
dGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUudmFsdWUpKTsKKyAgICAgICAgY29va2llT2Jq
ZWN0LT5wdXREaXJlY3QoZG9tYWluSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmRv
bWFpbikpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChwYXRoSWRlbnRpZmllciwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QoZXhwaXJlc0lkZW50aWZpZXIsIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZS5leHBpcmVzKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNpemVJZGVudGlmaWVyLCBqc051bWJl
cihleGVjLCBjb29raWUubmFtZS5sZW5ndGgoKSArIGNvb2tpZS52YWx1ZS5sZW5ndGgoKSkpOwor
ICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChodHRwT25seUlkZW50aWZpZXIsIGpzQm9v
bGVhbihjb29raWUuaHR0cE9ubHkpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qo
c2VjdXJlSWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5zZWN1cmUpKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3Qoc2Vzc2lvbklkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUu
c2Vzc2lvbikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKIEpTVmFsdWUg
SlNJbnNwZWN0b3JCYWNrZW5kOjpzZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBiYWUxZjI2Li43NjlhMjA4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjgsNiArNjgsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwog
ICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUp
OwogCisgICAgICAgIFtDdXN0b21dIEFycmF5IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIGJvb2xlYW4gZGVidWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjY0NmQzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29v
a2llX2gKKyNkZWZpbmUgQ29va2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDb29raWUgeworICAgICAgICBDb29r
aWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBp
cmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKKyAgICAgICAgICAgICAgICBib29sIHNl
c3Npb24pCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0
aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25s
eShodHRwT25seSkKKyAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwg
c2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcgZG9tYWluOworICAg
ICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgZG91YmxlIGV4cGlyZXM7CisgICAgICAgIGJvb2wg
aHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29sIHNlc3Npb247Cisg
ICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
SmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLmJjZTY0
MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaApAQCAtMjYsMTUgKzI2LDIwIEBACiAjaWZuZGVmIENvb2tp
ZUphcl9oCiAjZGVmaW5lIENvb2tpZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEtV
Ukw7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIERvY3VtZW50OworCisgICAgc3RydWN0
IENvb2tpZTsKIAogICAgIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAg
dm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7CiAKIH0KCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tp
ZUphckhhaWt1LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2llSmFySGFpa3UuY3Bw
CmluZGV4IDczNTE5ZDcuLmY5OWUyZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vaGFp
a3UvQ29va2llSmFySGFpa3UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvQ29va2ll
SmFySGFpa3UuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
CkBAIC00MSwxMiArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IFNob3Vs
ZG4ndCB0aGlzIGJlIHNhdmVkIHRvIGFuZCByZXN0b3JlZCBmcm9tIGRpc2sgdG9vPwogc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNvb2tpZUphcjsKIAotdm9pZCBzZXRDb29raWVzKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgLypwb2xpY3lVUkwqLywgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiB7CiAgICAgY29va2llSmFyLnNldCh1cmwuc3RyaW5nKCksIHZhbHVl
KTsKIH0KIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwpOwogewogICAgIHJldHVybiBjb29raWVK
YXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CkBAIC01Nyw1ICs1OCwxMSBAQCBib29sIGNvb2tpZXNF
bmFibGVkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0
IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorewor
ICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0Nvb2tpZUphci5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5t
bQppbmRleCBkOGRmNjAxLi4wNjM5MWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Db29raWVKYXIubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJDb29raWVKYXIuaCIKIAogI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCisjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAj
aW1wb3J0ICJLVVJMLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMTYsNCArMTE3
LDMwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICByYXdDb29raWVzLmNs
ZWFyKCk7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgTlNVUkwgKmNv
b2tpZVVSTCA9IHVybDsKKyAgICBOU0FycmF5ICpjb29raWVzID0gW1tOU0hUVFBDb29raWVTdG9y
YWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBjb29raWVzRm9yVVJMOmNvb2tpZVVSTF07CisK
KyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOworICAgIHJhd0Nvb2tpZXMu
cmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIE5TSFRUUENvb2tpZSAqY29va2llID0gKE5TSFRUUENvb2tp
ZSAqKVtjb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIE5TU3RyaW5nICpuYW1lID0g
W2Nvb2tpZSBuYW1lXTsKKyAgICAgICAgTlNTdHJpbmcgKnZhbHVlID0gW2Nvb2tpZSB2YWx1ZV07
CisgICAgICAgIE5TU3RyaW5nICpkb21haW4gPSBbY29va2llIGRvbWFpbl07CisgICAgICAgIE5T
U3RyaW5nICpwYXRoID0gW2Nvb2tpZSBwYXRoXTsKKyAgICAgICAgTlNUaW1lSW50ZXJ2YWwgZXhw
aXJlcyA9IFtbY29va2llIGV4cGlyZXNEYXRlXSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAw
MDsKKyAgICAgICAgYm9vbCBodHRwT25seSA9IFtjb29raWUgaXNIVFRQT25seV07CisgICAgICAg
IGJvb2wgc2VjdXJlID0gW2Nvb2tpZSBpc1NlY3VyZV07CisgICAgICAgIGJvb2wgc2Vzc2lvbiA9
IFtjb29raWUgaXNTZXNzaW9uT25seV07CisgICAgICAgIHJhd0Nvb2tpZXMudW5jaGVja2VkQXBw
ZW5kKENvb2tpZShuYW1lLCB2YWx1ZSwgZG9tYWluLCBwYXRoLCBleHBpcmVzLCBodHRwT25seSwg
c2VjdXJlLCBzZXNzaW9uKSk7CisgICAgfQorCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L0Nvb2tpZUphckNocm9taXVtLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1
bS9Db29raWVKYXJDaHJvbWl1bS5jcHAKaW5kZXggNjViZTQ1MS4uNWYzNmE3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21p
dW0uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDaHJvbWl1bUJy
aWRnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAKQEAgLTUyLDQgKzUzLDEwIEBAIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
KyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKaW5kZXgg
NWFjMGY5Yy4uMzhhZWQ2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyQ3VybC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyQ3VybC5jcHAKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCkBAIC00Myw0ICs0NCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2ll
cyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMu
Y2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvQ29va2llSmFyU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVKYXJTb3VwLmNwcAppbmRleCA3MDVmZGYyLi4zYzdhMTEzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMjEsNiArMjEsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKIAorI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTg2LDQgKzg3LDEwIEBAIGJvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gZGVmYXVsdENvb2tp
ZUphcigpOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBL
VVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJDRk5ldFdpbi5jcHAKaW5kZXgg
YWY5ZTNmMy4uM2ExZjU3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Db29raWVKYXJDRk5ldFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Db29raWVKYXJDRk5ldFdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZVN0b3JhZ2VXaW4uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIktVUkwuaCIKQEAgLTExMyw0ICsxMTQsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBEb2N1bWVudCogLypkb2N1bWVudCovKQogICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29v
a2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IHBvbGlj
eSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCit2b2lkIGdl
dFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICBy
YXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vQ29va2llSmFyV2luLmNwcAppbmRleCA0MWQxMmQ5Li5lYjcwZTdhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRl
ICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzUsNyArMzYsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLQogdm9pZCBzZXRDb29raWVzKERvY3VtZW50KiAvKmRvY3VtZW50Ki8sIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVh
bCB3aXRoIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLgpAQCAtNjQsNCArNjQsMTAg
QEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogLypkb2N1bWVudCovKQogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBj
b25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKaW5kZXggNDBkOTMwOS4uNjlmNjVlMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCkBAIC0xMjgsNiArMTI5LDEyIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQqIGRvY3VtZW50KQogI2VuZGlmCiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhj
b25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xl
YXIoKTsKK30KKwogfQogCiAvLyB2aW06IHRzPTQgc3c9NCBldAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34744</attachid>
            <date>2009-08-13 08:24:18 -0700</date>
            <delta_ts>2009-08-13 08:33:37 -0700</delta_ts>
            <desc>Attempted Build Fix for Windows</desc>
            <filename>cookies_blah.patch</filename>
            <type>text/plain</type>
            <size>18222</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTVmMjdhMy4uYTM2YmMwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTEyICBHZW9yZ2UgV3JpZ2h0ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMwM2EyYmMuLjM2OTg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQlEMjND
QTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRp
b24uY3BwICovOyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NB
NTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUy
RjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmgg
Ki87IH07CiAJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIz
QzJDOTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9Owog
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhE
MjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBC
OEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MzMwLDYgKzkzMzEsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4
QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjND
QTU1RTBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1
NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVC
IC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFD
REZFIC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMzIsNiArMTQxMzQsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5jcHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8sCiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAorCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2
NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQz
NDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MjU5
LDYgKzE3MjYyLDcgQEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAw
MDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IGIyZWIyZDEuLmIwNzgwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCkBAIC0xNTgsNiArMTYwLDQ2
IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6
d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5zcGVjdGVkV2luZG93KTsKIH0K
IAorSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaWMtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGNvb2tp
ZXMpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIElkZW50aWZpZXIg
bmFtZUlkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKTsKKyAgICBJZGVudGlmaWVyIGRvbWFpbklkZW50aWZpZXIoZXhl
YywgImRvbWFpbiIpOworICAgIElkZW50aWZpZXIgcGF0aElkZW50aWZpZXIoZXhlYywgInBhdGgi
KTsKKyAgICBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIik7Cisg
ICAgSWRlbnRpZmllciBzaXplSWRlbnRpZmllcihleGVjLCAic2l6ZSIpOworICAgIElkZW50aWZp
ZXIgaHR0cE9ubHlJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIpOworICAgIElkZW50aWZpZXIg
c2VjdXJlSWRlbnRpZmllcihleGVjLCAic2VjdXJlIik7CisgICAgSWRlbnRpZmllciBzZXNzaW9u
SWRlbnRpZmllcihleGVjLCAic2Vzc2lvbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29v
a2llcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNvbnN0IENvb2tpZSYgY29va2llID0gY29va2llc1tpXTsKKyAgICAgICAgSlNP
YmplY3QqIGNvb2tpZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICBjb29raWVPYmplY3QtPnB1dERpcmVjdChuYW1lSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywg
Y29va2llLm5hbWUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QodmFsdWVJZGVu
dGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUudmFsdWUpKTsKKyAgICAgICAgY29va2llT2Jq
ZWN0LT5wdXREaXJlY3QoZG9tYWluSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmRv
bWFpbikpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChwYXRoSWRlbnRpZmllciwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QoZXhwaXJlc0lkZW50aWZpZXIsIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZS5leHBpcmVzKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNpemVJZGVudGlmaWVyLCBqc051bWJl
cihleGVjLCBjb29raWUubmFtZS5sZW5ndGgoKSArIGNvb2tpZS52YWx1ZS5sZW5ndGgoKSkpOwor
ICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChodHRwT25seUlkZW50aWZpZXIsIGpzQm9v
bGVhbihjb29raWUuaHR0cE9ubHkpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qo
c2VjdXJlSWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5zZWN1cmUpKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3Qoc2Vzc2lvbklkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUu
c2Vzc2lvbikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKIEpTVmFsdWUg
SlNJbnNwZWN0b3JCYWNrZW5kOjpzZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBiYWUxZjI2Li43NjlhMjA4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjgsNiArNjgsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwog
ICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUp
OwogCisgICAgICAgIFtDdXN0b21dIEFycmF5IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIGJvb2xlYW4gZGVidWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjY0NmQzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29v
a2llX2gKKyNkZWZpbmUgQ29va2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDb29raWUgeworICAgICAgICBDb29r
aWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBp
cmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKKyAgICAgICAgICAgICAgICBib29sIHNl
c3Npb24pCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0
aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25s
eShodHRwT25seSkKKyAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwg
c2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcgZG9tYWluOworICAg
ICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgZG91YmxlIGV4cGlyZXM7CisgICAgICAgIGJvb2wg
aHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29sIHNlc3Npb247Cisg
ICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
SmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLmJjZTY0
MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaApAQCAtMjYsMTUgKzI2LDIwIEBACiAjaWZuZGVmIENvb2tp
ZUphcl9oCiAjZGVmaW5lIENvb2tpZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEtV
Ukw7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIERvY3VtZW50OworCisgICAgc3RydWN0
IENvb2tpZTsKIAogICAgIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAg
dm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29r
aWVKYXJIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNw
cAppbmRleCA3MzUxOWQ3Li5mOTllMmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hh
aWt1L0Nvb2tpZUphckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tp
ZUphckhhaWt1LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgpAQCAtNDEsMTIgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBTaG91
bGRuJ3QgdGhpcyBiZSBzYXZlZCB0byBhbmQgcmVzdG9yZWQgZnJvbSBkaXNrIHRvbz8KIHN0YXRp
YyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llcyhj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIC8qcG9saWN5VVJMKi8sIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogewogICAgIGNvb2tpZUphci5zZXQodXJsLnN0cmluZygpLCB2YWx1
ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzKGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVz
KGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYgdXJsKTsKIHsKICAgICByZXR1cm4gY29va2ll
SmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQpAQCAtNTcsNSArNTgsMTEgQEAgYm9vbCBjb29raWVz
RW5hYmxlZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25z
dCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sK
KyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db29raWVKYXIubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIu
bW0KaW5kZXggZDhkZjYwMS4uMDYzOTFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ29va2llSmFyLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQpA
QCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ29va2llSmFyLmgiCiAKICNpbXBvcnQgIkJsb2Nr
RXhjZXB0aW9ucy5oIgorI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgog
I2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTE2LDQgKzEx
NywzMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgcmF3Q29va2llcy5j
bGVhcigpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIE5TVVJMICpj
b29raWVVUkwgPSB1cmw7CisgICAgTlNBcnJheSAqY29va2llcyA9IFtbTlNIVFRQQ29va2llU3Rv
cmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gY29va2llc0ZvclVSTDpjb29raWVVUkxdOwor
CisgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKKyAgICByYXdDb29raWVz
LnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICBOU0hUVFBDb29raWUgKmNvb2tpZSA9IChOU0hUVFBDb29r
aWUgKilbY29va2llcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBOU1N0cmluZyAqbmFtZSA9
IFtjb29raWUgbmFtZV07CisgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IFtjb29raWUgdmFsdWVd
OworICAgICAgICBOU1N0cmluZyAqZG9tYWluID0gW2Nvb2tpZSBkb21haW5dOworICAgICAgICBO
U1N0cmluZyAqcGF0aCA9IFtjb29raWUgcGF0aF07CisgICAgICAgIE5TVGltZUludGVydmFsIGV4
cGlyZXMgPSBbW2Nvb2tpZSBleHBpcmVzRGF0ZV0gdGltZUludGVydmFsU2luY2UxOTcwXSAqIDEw
MDA7CisgICAgICAgIGJvb2wgaHR0cE9ubHkgPSBbY29va2llIGlzSFRUUE9ubHldOworICAgICAg
ICBib29sIHNlY3VyZSA9IFtjb29raWUgaXNTZWN1cmVdOworICAgICAgICBib29sIHNlc3Npb24g
PSBbY29va2llIGlzU2Vzc2lvbk9ubHldOworICAgICAgICByYXdDb29raWVzLnVuY2hlY2tlZEFw
cGVuZChDb29raWUobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0aCwgZXhwaXJlcywgaHR0cE9ubHks
IHNlY3VyZSwgc2Vzc2lvbikpOworICAgIH0KKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1
bS9Db29raWVKYXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21p
dW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCmluZGV4IDY1YmU0NTEuLjVmMzZhNzcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9t
aXVtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ2hyb21pdW1C
cmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogCkBAIC01Miw0ICs1MywxMCBAQCBib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVk
CisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4
IDVhYzBmOWMuLjM4YWVkNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgpAQCAtNDMsNCArNDQsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCogLypkb2N1bWVudCovKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVz
LmNsZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llSmFyU291cC5jcHAKaW5kZXggNzA1ZmRmMi4uM2M3YTExMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAKKyNpbmNs
dWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC04Niw0ICs4NywxMCBAQCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIGRlZmF1bHRDb29r
aWVKYXIoKTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3Qg
S1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCmluZGV4
IGFmOWUzZjMuLjNhMWY1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNp
bmNsdWRlICJDb29raWVTdG9yYWdlV2luLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJLVVJMLmgiCkBAIC0xMTMsNCArMTE0LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xp
Y3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAordm9pZCBn
ZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAg
cmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggNDFkMTJkOS4uZWI3MGU3YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVk
ZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM1LDcgKzM2LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0KIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCogLypkb2N1bWVudCovLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IERl
YWwgd2l0aCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS4KQEAgLTY0LDQgKzY0LDEw
IEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50Kiwg
Y29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1F
OiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDQwZDkzMDkuLjY5ZjY1ZTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgpAQCAtMTI4LDYgKzEyOSwxMiBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCkKICNlbmRpZgogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Cit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNs
ZWFyKCk7Cit9CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34746</attachid>
            <date>2009-08-13 08:33:37 -0700</date>
            <delta_ts>2009-08-13 08:53:44 -0700</delta_ts>
            <desc>Fix Extra Semicolons in Haiku</desc>
            <filename>cookie_8.patch</filename>
            <type>text/plain</type>
            <size>18220</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTVmMjdhMy4uYTM2YmMwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTEyICBHZW9yZ2UgV3JpZ2h0ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMwM2EyYmMuLjM2OTg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQlEMjND
QTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRp
b24uY3BwICovOyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NB
NTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUy
RjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmgg
Ki87IH07CiAJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIz
QzJDOTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9Owog
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhE
MjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBC
OEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MzMwLDYgKzkzMzEsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4
QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjND
QTU1RTBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1
NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVC
IC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFD
REZFIC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMzIsNiArMTQxMzQsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5jcHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8sCiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAorCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2
NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQz
NDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MjU5
LDYgKzE3MjYyLDcgQEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAw
MDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IGIyZWIyZDEuLmIwNzgwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCkBAIC0xNTgsNiArMTYwLDQ2
IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6
d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5zcGVjdGVkV2luZG93KTsKIH0K
IAorSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaWMtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGNvb2tp
ZXMpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIElkZW50aWZpZXIg
bmFtZUlkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKTsKKyAgICBJZGVudGlmaWVyIGRvbWFpbklkZW50aWZpZXIoZXhl
YywgImRvbWFpbiIpOworICAgIElkZW50aWZpZXIgcGF0aElkZW50aWZpZXIoZXhlYywgInBhdGgi
KTsKKyAgICBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIik7Cisg
ICAgSWRlbnRpZmllciBzaXplSWRlbnRpZmllcihleGVjLCAic2l6ZSIpOworICAgIElkZW50aWZp
ZXIgaHR0cE9ubHlJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIpOworICAgIElkZW50aWZpZXIg
c2VjdXJlSWRlbnRpZmllcihleGVjLCAic2VjdXJlIik7CisgICAgSWRlbnRpZmllciBzZXNzaW9u
SWRlbnRpZmllcihleGVjLCAic2Vzc2lvbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29v
a2llcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNvbnN0IENvb2tpZSYgY29va2llID0gY29va2llc1tpXTsKKyAgICAgICAgSlNP
YmplY3QqIGNvb2tpZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICBjb29raWVPYmplY3QtPnB1dERpcmVjdChuYW1lSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywg
Y29va2llLm5hbWUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QodmFsdWVJZGVu
dGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUudmFsdWUpKTsKKyAgICAgICAgY29va2llT2Jq
ZWN0LT5wdXREaXJlY3QoZG9tYWluSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmRv
bWFpbikpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChwYXRoSWRlbnRpZmllciwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QoZXhwaXJlc0lkZW50aWZpZXIsIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZS5leHBpcmVzKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNpemVJZGVudGlmaWVyLCBqc051bWJl
cihleGVjLCBjb29raWUubmFtZS5sZW5ndGgoKSArIGNvb2tpZS52YWx1ZS5sZW5ndGgoKSkpOwor
ICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChodHRwT25seUlkZW50aWZpZXIsIGpzQm9v
bGVhbihjb29raWUuaHR0cE9ubHkpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qo
c2VjdXJlSWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5zZWN1cmUpKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3Qoc2Vzc2lvbklkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUu
c2Vzc2lvbikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKIEpTVmFsdWUg
SlNJbnNwZWN0b3JCYWNrZW5kOjpzZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBiYWUxZjI2Li43NjlhMjA4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjgsNiArNjgsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwog
ICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUp
OwogCisgICAgICAgIFtDdXN0b21dIEFycmF5IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIGJvb2xlYW4gZGVidWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjY0NmQzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29v
a2llX2gKKyNkZWZpbmUgQ29va2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDb29raWUgeworICAgICAgICBDb29r
aWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBp
cmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKKyAgICAgICAgICAgICAgICBib29sIHNl
c3Npb24pCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0
aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25s
eShodHRwT25seSkKKyAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwg
c2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcgZG9tYWluOworICAg
ICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgZG91YmxlIGV4cGlyZXM7CisgICAgICAgIGJvb2wg
aHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29sIHNlc3Npb247Cisg
ICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
SmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLmJjZTY0
MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaApAQCAtMjYsMTUgKzI2LDIwIEBACiAjaWZuZGVmIENvb2tp
ZUphcl9oCiAjZGVmaW5lIENvb2tpZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEtV
Ukw7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIERvY3VtZW50OworCisgICAgc3RydWN0
IENvb2tpZTsKIAogICAgIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAg
dm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29r
aWVKYXJIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNw
cAppbmRleCA3MzUxOWQ3Li5mYzU2MzliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hh
aWt1L0Nvb2tpZUphckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tp
ZUphckhhaWt1LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgpAQCAtNDEsMTIgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBTaG91
bGRuJ3QgdGhpcyBiZSBzYXZlZCB0byBhbmQgcmVzdG9yZWQgZnJvbSBkaXNrIHRvbz8KIHN0YXRp
YyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llcyhj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIC8qcG9saWN5VVJMKi8sIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29va2llSmFyLnNldCh1cmwuc3RyaW5nKCksIHZhbHVl
KTsKIH0KIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUph
ci5nZXQodXJsLnN0cmluZygpKTsKIH0KQEAgLTU3LDUgKzU4LDExIEBAIGJvb2wgY29va2llc0Vu
YWJsZWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3Qg
RG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7Cisg
ICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICByYXdDb29raWVzLmNsZWFyKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ29va2llSmFyLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1t
CmluZGV4IGQ4ZGY2MDEuLjA2MzkxZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Nvb2tpZUphci5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0KQEAg
LTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkNvb2tpZUphci5oIgogCiAjaW1wb3J0ICJCbG9ja0V4
Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNp
bXBvcnQgIktVUkwuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNiw0ICsxMTcs
MzAgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCit2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJM
JiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIHJhd0Nvb2tpZXMuY2xl
YXIoKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBOU1VSTCAqY29v
a2llVVJMID0gdXJsOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBbW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNGb3JVUkw6Y29va2llVVJMXTsKKwor
ICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CisgICAgcmF3Q29va2llcy5y
ZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKKyAgICAgICAgTlNIVFRQQ29va2llICpjb29raWUgPSAoTlNIVFRQQ29va2ll
ICopW2Nvb2tpZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBb
Y29va2llIG5hbWVdOworICAgICAgICBOU1N0cmluZyAqdmFsdWUgPSBbY29va2llIHZhbHVlXTsK
KyAgICAgICAgTlNTdHJpbmcgKmRvbWFpbiA9IFtjb29raWUgZG9tYWluXTsKKyAgICAgICAgTlNT
dHJpbmcgKnBhdGggPSBbY29va2llIHBhdGhdOworICAgICAgICBOU1RpbWVJbnRlcnZhbCBleHBp
cmVzID0gW1tjb29raWUgZXhwaXJlc0RhdGVdIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKiAxMDAw
OworICAgICAgICBib29sIGh0dHBPbmx5ID0gW2Nvb2tpZSBpc0hUVFBPbmx5XTsKKyAgICAgICAg
Ym9vbCBzZWN1cmUgPSBbY29va2llIGlzU2VjdXJlXTsKKyAgICAgICAgYm9vbCBzZXNzaW9uID0g
W2Nvb2tpZSBpc1Nlc3Npb25Pbmx5XTsKKyAgICAgICAgcmF3Q29va2llcy51bmNoZWNrZWRBcHBl
bmQoQ29va2llKG5hbWUsIHZhbHVlLCBkb21haW4sIHBhdGgsIGV4cGlyZXMsIGh0dHBPbmx5LCBz
ZWN1cmUsIHNlc3Npb24pKTsKKyAgICB9CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L0Nvb2tpZUphckNocm9taXVtLmNwcAppbmRleCA2NWJlNDUxLi41ZjM2YTc3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1
bS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
b29raWVKYXIuaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNocm9taXVtQnJp
ZGdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKIApAQCAtNTIsNCArNTMsMTAgQEAgYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAor
ICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAppbmRleCA1
YWMwZjljLi4zOGFlZDZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKQEAgLTQzLDQgKzQ0LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQq
IC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVz
KGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5j
bGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZUphclNvdXAuY3BwCmluZGV4IDcwNWZkZjIuLjNjN2ExMTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgogCisjaW5jbHVk
ZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtODYsNCArODcsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBEb2N1bWVudCogLypkb2N1bWVudCovKQogICAgIHJldHVybiBkZWZhdWx0Q29va2ll
SmFyKCk7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtV
UkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJDRk5ldFdpbi5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphckNGTmV0V2luLmNwcAppbmRleCBh
ZjllM2YzLi4zYTFmNTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L0Nvb2tpZUphckNGTmV0V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L0Nvb2tpZUphckNGTmV0V2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5j
bHVkZSAiQ29va2llU3RvcmFnZVdpbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiS1VSTC5oIgpAQCAtMTEzLDQgKzExNCwxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5
ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAKK3ZvaWQgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Db29raWVKYXJXaW4uY3BwCmluZGV4IDQxZDEyZDkuLmViNzBlN2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKIAorI2luY2x1ZGUg
IkNvb2tpZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0zNSw3ICszNiw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotCiB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqIC8qZG9jdW1lbnQqLywgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFs
IHdpdGggZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCkuCkBAIC02NCw0ICs2NCwxMCBA
QCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNv
bnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAppbmRleCA0MGQ5MzA5Li42OWY2NWUyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKQEAgLTEyOCw2ICsxMjksMTIgQEAgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiAjZW5kaWYKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
eworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVh
cigpOworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBzdz00IGV0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34749</attachid>
            <date>2009-08-13 08:46:58 -0700</date>
            <delta_ts>2009-08-13 09:51:28 -0700</delta_ts>
            <desc>Improved Haiku [final I swear]</desc>
            <filename>haiku_better.patch</filename>
            <type>text/plain</type>
            <size>18294</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTVmMjdhMy4uYTM2YmMwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0wOC0xMiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IFNob3cgSGlkZGVuIENvb2tpZSBEYXRhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODE4NQorCisg
ICAgICAgICAgQWRkZWQgbmV3IGZpbGUgQ29va2llLmggdG8gdGhlIFdlYkNvcmUgWENvZGUKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAg
IEluc3BlY3RvckNvbnRyb2xsZXIuY29va2llcygpIGJpbmRpbmcKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yQmFja2VuZEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKworICAgICAgICAgIFN0cnVjdCBmb3Igc3RhdGljIENvb2tpZSBpbmZv
cm1hdGlvbgorICAgICAgICAgIChuYW1lLCB2YWx1ZSwgcGF0aCwgZG9tYWluLCBleHBpcmVzLCBo
dHRwT25seSwgc2VjdXJlLCBzZXNzaW9uKQorCisgICAgICAgICogcGxhdGZvcm0vQ29va2llLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAKKyAg
ICAgICAgICBHZXR0ZXIgZm9yIHRoZSBhIGxpc3Qgb2YgcmF3IENvb2tpZXMKKyAgICAgICAgICBn
ZXRSYXdDb29raWVzKC4sIC4sIG91dCBWZWN0b3I8Q29va2llPikKKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vQ29va2llSmFyLmg6CisKKyAgICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBn
ZXRSYXdDb29raWVzIGZvciB0aGUgbWFjIHBsYXRmb3JtLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCisg
ICAgICAgICAgU3R1YiBvdGhlciBDb29raWVKYXIgaW1wbGVtZW50YXRpb25zIHRvIHNhdGlzZnkg
dGhlIGludGVyZmFjZS4KKworICAgICAgICAqIHBsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4v
Q29va2llSmFyQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorCiAyMDA5LTA4
LTEyICBHZW9yZ2UgV3JpZ2h0ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDMwM2EyYmMuLjM2OTg2YzQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Mzk5LDYgKzQzOTksNyBAQAogCQlEMjND
QTU1RDBBQjBFQUFFMDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIzQ0E1NUMwQUIwRUFBRTAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uaCAqLzsgfTsKIAkJRDIzQ0E1NUYwQUIwRUFCNjAwNTEwOEE1
IC8qIEpTUmFuZ2VFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDIzQ0E1NUUwQUIwRUFCNjAwNTEwOEE1IC8qIEpTUmFuZ2VFeGNlcHRp
b24uY3BwICovOyB9OwogCQlEMjNDQTU2QzBBQjBFQjhEMDA1MTA4QTUgLyogUmFuZ2VFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyM0NB
NTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4Y2VwdGlvbi5oICovOyB9OworCQlEOEI2MTUy
RjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmgg
Ki87IH07CiAJCURCMjNDMkNCMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQjIz
QzJDOTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwICovOyB9Owog
CQlEQjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERCMjNDMkNBMEE1MDhE
MjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5oICovOyB9OwogCQlERDA1RkUwRDBC
OEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEREMDVGRTBCMEI4QkEzQzYwMDlBQ0RGRSAvKiBX
ZWJDb3JlT2JqQ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05MzMwLDYgKzkzMzEsNyBAQAogCQlEMjNDQTU1QzBBQjBFQUFFMDA1MTA4
QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSYW5nZUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjND
QTU1RTBBQjBFQUI2MDA1MTA4QTUgLyogSlNSYW5nZUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSYW5nZUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyM0NBNTZCMEFCMEVCOEQwMDUxMDhBNSAvKiBSYW5nZUV4
Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VFeGNlcHRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDhCNjE1MkUxMDMyNDk1MTAwQzg1
NTRBIC8qIENvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVC
IC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURCMjNDMkNBMEE1MDhEMjkwMDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50T3V0ZGVudENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREQwNUZFMEIwQjhCQTNDNjAwOUFD
REZFIC8qIFdlYkNvcmVPYmpDRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQxMzIsNiArMTQxMzQsNyBAQAogCQkJCTkzQjZBMEU3MEIwQkNBNjcwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5jcHAgKi8sCiAJCQkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRN
ZW51LmggKi8sCiAJCQkJMDYwMjdDQUMwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRl
bS5oICovLAorCQkJCUQ4QjYxNTJFMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCAqLywKIAkJ
CQk5MzUyMDg4MTA5QkQ0NUU5MDBGMjAzOEQgLyogQ29va2llSmFyLmggKi8sCiAJCQkJMkU0MzQ2
NTYwRjU0NkE5OTAwQjBGMUJBIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAqLywKIAkJCQkyRTQz
NDY1NzBGNTQ2QTk5MDBCMEYxQkEgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuaCAqLywKQEAgLTE3MjU5
LDYgKzE3MjYyLDcgQEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkUyOUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3Jr
ZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAw
MDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBDb29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwCmluZGV4
IGIyZWIyZDEuLmIwNzgwMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JCYWNrZW5kQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yQmFja2VuZEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJKU0luc3Bl
Y3RvckJhY2tlbmQuaCIKIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDb29raWUu
aCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVk
ZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJKU0RhdGFiYXNlLmgiCkBAIC0xNTgsNiArMTYwLDQ2
IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0ZWRXaW5kb3coRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpCiAgICAgcmV0dXJuIEpTSW5zcGVjdGVkT2JqZWN0V3JhcHBlcjo6
d3JhcChpbnNwZWN0ZWRXaW5kb3ctPmdsb2JhbEV4ZWMoKSwgaW5zcGVjdGVkV2luZG93KTsKIH0K
IAorSlNWYWx1ZSBKU0luc3BlY3RvckJhY2tlbmQ6OmNvb2tpZXMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JikKK3sKKyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGltcGwoKS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmICghaWMpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaWMtPmluc3BlY3RlZFBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBkb2N1bWVudC0+Y29va2llVVJMKCksIGNvb2tp
ZXMpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgcmVzdWx0OworICAgIElkZW50aWZpZXIg
bmFtZUlkZW50aWZpZXIoZXhlYywgIm5hbWUiKTsKKyAgICBJZGVudGlmaWVyIHZhbHVlSWRlbnRp
ZmllcihleGVjLCAidmFsdWUiKTsKKyAgICBJZGVudGlmaWVyIGRvbWFpbklkZW50aWZpZXIoZXhl
YywgImRvbWFpbiIpOworICAgIElkZW50aWZpZXIgcGF0aElkZW50aWZpZXIoZXhlYywgInBhdGgi
KTsKKyAgICBJZGVudGlmaWVyIGV4cGlyZXNJZGVudGlmaWVyKGV4ZWMsICJleHBpcmVzIik7Cisg
ICAgSWRlbnRpZmllciBzaXplSWRlbnRpZmllcihleGVjLCAic2l6ZSIpOworICAgIElkZW50aWZp
ZXIgaHR0cE9ubHlJZGVudGlmaWVyKGV4ZWMsICJodHRwT25seSIpOworICAgIElkZW50aWZpZXIg
c2VjdXJlSWRlbnRpZmllcihleGVjLCAic2VjdXJlIik7CisgICAgSWRlbnRpZmllciBzZXNzaW9u
SWRlbnRpZmllcihleGVjLCAic2Vzc2lvbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gY29v
a2llcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNvbnN0IENvb2tpZSYgY29va2llID0gY29va2llc1tpXTsKKyAgICAgICAgSlNP
YmplY3QqIGNvb2tpZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICBjb29raWVPYmplY3QtPnB1dERpcmVjdChuYW1lSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywg
Y29va2llLm5hbWUpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3QodmFsdWVJZGVu
dGlmaWVyLCBqc1N0cmluZyhleGVjLCBjb29raWUudmFsdWUpKTsKKyAgICAgICAgY29va2llT2Jq
ZWN0LT5wdXREaXJlY3QoZG9tYWluSWRlbnRpZmllciwganNTdHJpbmcoZXhlYywgY29va2llLmRv
bWFpbikpOworICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChwYXRoSWRlbnRpZmllciwg
anNTdHJpbmcoZXhlYywgY29va2llLnBhdGgpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXRE
aXJlY3QoZXhwaXJlc0lkZW50aWZpZXIsIGpzTnVtYmVyKGV4ZWMsIGNvb2tpZS5leHBpcmVzKSk7
CisgICAgICAgIGNvb2tpZU9iamVjdC0+cHV0RGlyZWN0KHNpemVJZGVudGlmaWVyLCBqc051bWJl
cihleGVjLCBjb29raWUubmFtZS5sZW5ndGgoKSArIGNvb2tpZS52YWx1ZS5sZW5ndGgoKSkpOwor
ICAgICAgICBjb29raWVPYmplY3QtPnB1dERpcmVjdChodHRwT25seUlkZW50aWZpZXIsIGpzQm9v
bGVhbihjb29raWUuaHR0cE9ubHkpKTsKKyAgICAgICAgY29va2llT2JqZWN0LT5wdXREaXJlY3Qo
c2VjdXJlSWRlbnRpZmllciwganNCb29sZWFuKGNvb2tpZS5zZWN1cmUpKTsKKyAgICAgICAgY29v
a2llT2JqZWN0LT5wdXREaXJlY3Qoc2Vzc2lvbklkZW50aWZpZXIsIGpzQm9vbGVhbihjb29raWUu
c2Vzc2lvbikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKIEpTVmFsdWUg
SlNJbnNwZWN0b3JCYWNrZW5kOjpzZXR0aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmlkbAppbmRleCBiYWUxZjI2Li43NjlhMjA4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtNjgsNiArNjgsOCBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHZvaWQgZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoaW4gYm9vbGVhbiBhbHdheXMpOwog
ICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmluZyBwYW5lbE5hbWUp
OwogCisgICAgICAgIFtDdXN0b21dIEFycmF5IGNvb2tpZXMoKTsKKwogI2lmIGRlZmluZWQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAg
ICAgICAgIGJvb2xlYW4gZGVidWdnZXJFbmFibGVkKCk7CiAgICAgICAgIHZvaWQgZW5hYmxlRGVi
dWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjY0NmQzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29v
a2llX2gKKyNkZWZpbmUgQ29va2llX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBDb29raWUgeworICAgICAgICBDb29r
aWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBp
cmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwKKyAgICAgICAgICAgICAgICBib29sIHNl
c3Npb24pCisgICAgICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCisgICAgICAgICAgICAsIGRvbWFpbihkb21haW4pCisgICAgICAgICAgICAsIHBhdGgocGF0
aCkKKyAgICAgICAgICAgICwgZXhwaXJlcyhleHBpcmVzKQorICAgICAgICAgICAgLCBodHRwT25s
eShodHRwT25seSkKKyAgICAgICAgICAgICwgc2VjdXJlKHNlY3VyZSkKKyAgICAgICAgICAgICwg
c2Vzc2lvbihzZXNzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBTdHJpbmcgZG9tYWluOworICAg
ICAgICBTdHJpbmcgcGF0aDsKKyAgICAgICAgZG91YmxlIGV4cGlyZXM7CisgICAgICAgIGJvb2wg
aHR0cE9ubHk7CisgICAgICAgIGJvb2wgc2VjdXJlOworICAgICAgICBib29sIHNlc3Npb247Cisg
ICAgfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
SmFyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZUphci5oCmluZGV4IDYxNTkzODYuLmJjZTY0
MGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llSmFyLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9Db29raWVKYXIuaApAQCAtMjYsMTUgKzI2LDIwIEBACiAjaWZuZGVmIENvb2tp
ZUphcl9oCiAjZGVmaW5lIENvb2tpZUphcl9oCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIEtV
Ukw7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIERvY3VtZW50OworCisgICAgc3RydWN0
IENvb2tpZTsKIAogICAgIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50Kik7CisgICAg
dm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9Db29r
aWVKYXJIYWlrdS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tpZUphckhhaWt1LmNw
cAppbmRleCA3MzUxOWQ3Li5mOTZjMDAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2hh
aWt1L0Nvb2tpZUphckhhaWt1LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0Nvb2tp
ZUphckhhaWt1LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5o
IgpAQCAtNDEsMjEgKzQyLDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBTaG91
bGRuJ3QgdGhpcyBiZSBzYXZlZCB0byBhbmQgcmVzdG9yZWQgZnJvbSBkaXNrIHRvbz8KIHN0YXRp
YyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llcyhj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIC8qcG9saWN5VVJMKi8sIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29va2llSmFyLnNldCh1cmwuc3RyaW5nKCksIHZhbHVl
KTsKIH0KIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUph
ci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZCgpCitib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgYmUgYSBzZXR0aW5nCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0gYi9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Db29raWVKYXIubW0KaW5kZXggZDhkZjYwMS4uMDYzOTFlZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0Nvb2tpZUphci5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ29va2llSmFyLmgiCiAK
ICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgorI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0
ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMTE2LDQgKzExNywzMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
KikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1
bWVudCosIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCit7Cisg
ICAgcmF3Q29va2llcy5jbGVhcigpOworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
KworICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7CisgICAgTlNBcnJheSAqY29va2llcyA9IFtb
TlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gY29va2llc0ZvclVS
TDpjb29raWVVUkxdOworCisgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsK
KyAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisgICAgZm9yIChOU1VJbnRl
Z2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBOU0hUVFBDb29raWUgKmNvb2tp
ZSA9IChOU0hUVFBDb29raWUgKilbY29va2llcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBO
U1N0cmluZyAqbmFtZSA9IFtjb29raWUgbmFtZV07CisgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9
IFtjb29raWUgdmFsdWVdOworICAgICAgICBOU1N0cmluZyAqZG9tYWluID0gW2Nvb2tpZSBkb21h
aW5dOworICAgICAgICBOU1N0cmluZyAqcGF0aCA9IFtjb29raWUgcGF0aF07CisgICAgICAgIE5T
VGltZUludGVydmFsIGV4cGlyZXMgPSBbW2Nvb2tpZSBleHBpcmVzRGF0ZV0gdGltZUludGVydmFs
U2luY2UxOTcwXSAqIDEwMDA7CisgICAgICAgIGJvb2wgaHR0cE9ubHkgPSBbY29va2llIGlzSFRU
UE9ubHldOworICAgICAgICBib29sIHNlY3VyZSA9IFtjb29raWUgaXNTZWN1cmVdOworICAgICAg
ICBib29sIHNlc3Npb24gPSBbY29va2llIGlzU2Vzc2lvbk9ubHldOworICAgICAgICByYXdDb29r
aWVzLnVuY2hlY2tlZEFwcGVuZChDb29raWUobmFtZSwgdmFsdWUsIGRvbWFpbiwgcGF0aCwgZXhw
aXJlcywgaHR0cE9ubHksIHNlY3VyZSwgc2Vzc2lvbikpOworICAgIH0KKworICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCmluZGV4IDY1YmU0NTEuLjVm
MzZhNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29r
aWVKYXJDaHJvbWl1bS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L0Nvb2tpZUphckNocm9taXVtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5j
bHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogCkBAIC01Miw0
ICs1MywxMCBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3Qg
S1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckN1cmwuY3BwCmluZGV4IDVhYzBmOWMuLjM4YWVkNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRlICJDb29r
aWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNDMsNCArNDQsMTAgQEAgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBEb2N1bWVudCogLypkb2N1bWVudCovKQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
KyAgICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKaW5kZXggNzA1ZmRmMi4uM2M3YTExMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKQEAg
LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVKYXJT
b3VwLmgiCiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC04Niw0ICs4NywxMCBAQCBi
b29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiAvKmRvY3VtZW50Ki8pCiAgICAgcmV0
dXJuIGRlZmF1bHRDb29raWVKYXIoKTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERv
Y3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUph
ckNGTmV0V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZO
ZXRXaW4uY3BwCmluZGV4IGFmOWUzZjMuLjNhMWY1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyQ0ZOZXRXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNsdWRl
ICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlV2luLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0xMTMsNCArMTE0LDEwIEBAIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8qZG9jdW1lbnQqLykKICAgICByZXR1cm4gcG9s
aWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5
czsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYs
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQoreworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVhcigpOworfQorCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggNDFkMTJkOS4uZWI3MGU3
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZUph
ci5oIgogCisjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM1LDcgKzM2LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0KIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCog
Lypkb2N1bWVudCovLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgLy8gRklYTUU6IERlYWwgd2l0aCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS4K
QEAgLTY0LDQgKzY0LDEwIEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqIC8q
ZG9jdW1lbnQqLykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
eworICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCisgICAgcmF3Q29va2llcy5jbGVh
cigpOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDQwZDkzMDku
LjY5ZjY1ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAKKyNpbmNs
dWRlICJDb29raWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTI4LDYgKzEyOSwxMiBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKICNlbmRpZgogfQogCit2b2lk
IGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAg
ICByYXdDb29raWVzLmNsZWFyKCk7Cit9CisKIH0KIAogLy8gdmltOiB0cz00IHN3PTQgZXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>