<?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>89666</bug_id>
          
          <creation_ts>2012-06-21 08:18:39 -0700</creation_ts>
          <short_desc>Separate WebKit2 instances use the same local storage</short_desc>
          <delta_ts>2012-10-16 03:34:16 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99445</dependson>
    
    <dependson>99448</dependson>
          <blocked>77730</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Szilard Ledan">szledan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dpranke</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jbadics</cc>
    
    <cc>kadam</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kkristof</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654542</commentid>
    <comment_count>0</comment_count>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-06-21 08:18:39 -0700</bug_when>
    <thetext>WK1 uses separate temporary directories while WK2 does not. Similar to WK1, WK2 should also deal with own temporary directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654543</commentid>
    <comment_count>1</comment_count>
      <attachid>148807</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-06-21 08:19:45 -0700</bug_when>
    <thetext>Created attachment 148807
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654544</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-21 08:21:25 -0700</bug_when>
    <thetext>Attachment 148807 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Tools/WebKitTestRunner/qt/TestControllerQt.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/WebKitTestRunner/qt/TestControllerQt.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/WebKitTestRunner/qt/TestControllerQt.cpp:56:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Tools/WebKitTestRunner/qt/TestControllerQt.cpp:56:  Use 0 instead of NULL.  [readability/null] [5]
Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WebKit2/Shared/qt/QtDefaultDataLocation.h:38:  The parameter name &quot;dataLocation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/Shared/qt/QtDefaultDataLocation.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654560</commentid>
    <comment_count>3</comment_count>
      <attachid>148807</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-21 08:37:49 -0700</bug_when>
    <thetext>Comment on attachment 148807
patch

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

The idea is good but you need to polish the patch. Please listen to the style bot, and use check-webkit-style next time. (I did not mentioned style issues in the review.)

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

Normally we summarize the change in a few sentences here.

&gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.cpp:49
&gt; +    QString&amp; s_dataLocation = globalDataLocation();

It&apos;s no more a static, so please remove the misleading s_ prefix.

&gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.cpp:65
&gt; +    QString&amp; s_dataLocation = globalDataLocation();

ditto

&gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.h:36
&gt; +QString&amp; s_dataLocation();

What is this??? You don&apos;t use it anywhere.

&gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.h:38
&gt; +QWEBKIT_EXPORT void setDataLocation(QString dataLocation);

I would put this into global namespace. Maybe we could find a more expressing name, I&apos;m not sure what could it be. setPersistentDataLocation maybe. (And than rename defaultDataLocation to persistentDataLocation and the files as well, in a following cleanup patch.)

&gt; Tools/WebKitTestRunner/qt/TestControllerQt.cpp:57
&gt; +    if (getenv(&quot;DUMPRENDERTREE_TEMP&quot;) != NULL)
&gt; +        WebKit::setDataLocation(getenv(&quot;DUMPRENDERTREE_TEMP&quot;));

remove != NULL, and avoid calling qgetenv twice, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654561</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-21 08:38:45 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.h:38
&gt; &gt; +QWEBKIT_EXPORT void setDataLocation(QString dataLocation);
&gt; 

And this needs a comment saying it is private api for WebKitTestRunner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655364</commentid>
    <comment_count>5</comment_count>
      <attachid>148997</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-06-22 04:48:46 -0700</bug_when>
    <thetext>Created attachment 148997
patch

Thanks your advice. I fixed the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656064</commentid>
    <comment_count>6</comment_count>
      <attachid>148997</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-23 04:17:00 -0700</bug_when>
    <thetext>Comment on attachment 148997
patch

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

I would like to see the change first, later we can do the renaming. So I would like you to upload a patch that contains only the behavioral change.

&gt; Source/WebKit2/ChangeLog:5
&gt; +        [Qt] Added a new API in the WebKit namespace
&gt; +        for the WebKitTestRunner, which sets the DataDirectory.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=89666

There should be the title of the bug, as prepare-changelog do it for you. You should not edit that part manually :)

&gt; Source/WebKit2/ChangeLog:13
&gt; +        I have renamed defaultDataLocation to persistentDataLocation.
&gt; +        From now, with setPersistentDataLocation() we can set which
&gt; +        directory should be used by WebKitTestRunner instead of the
&gt; +        default one. Hence, parallelly run WKTRs don&apos;t use the same
&gt; +        DataLocation.

I would like to first do the behavior change, than the renamings in a following cleanup patch. It&apos;s hard to see from the history what has changed if you do it together.

&gt; Source/WebKit2/Shared/qt/QtPersistentDataLocation.cpp:63
&gt; +QWEBKIT_EXPORT void setPersistentDataLocation(QString dataLocation)

Please move it to global namespace, we don&apos;t use internal namespaces for API (even if it&apos;s private).

&gt; Tools/ChangeLog:6
&gt; +        [Qt] The WebKitTestRunner uses the default LocalStorage
&gt; +        directory.If ther is the DUMPRENDERTREE_TEMP environment
&gt; +        variables, use that, instead of the default.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=89666

Changelog error again. Put your description below the default prologue generated by prepare-changelog.

&gt; Tools/WebKitTestRunner/qt/TestControllerQt.cpp:57
&gt; +    if (!qgetenv(&quot;DUMPRENDERTREE_TEMP&quot;).isNull())
&gt; +        WebKit::setPersistentDataLocation(qgetenv(&quot;DUMPRENDERTREE_TEMP&quot;));

Don&apos;t call qgetenv twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658632</commentid>
    <comment_count>7</comment_count>
      <attachid>149754</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-06-27 08:39:15 -0700</bug_when>
    <thetext>Created attachment 149754
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658656</commentid>
    <comment_count>8</comment_count>
      <attachid>149754</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-27 09:23:18 -0700</bug_when>
    <thetext>Comment on attachment 149754
patch

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

Looks good to me.

&gt; Source/WebKit2/Shared/qt/QtDefaultDataLocation.cpp:65
&gt; +// It is private api for WebKitTestRunner

API

&gt; Tools/WebKitTestRunner/qt/TestControllerQt.cpp:61
&gt; +    QString dumprendertreetemp = qgetenv(&quot;DUMPRENDERTREE_TEMP&quot;);
&gt; +    if (!dumprendertreetemp.isNull())
&gt; +        setPersistentDataLocation(dumprendertreetemp);

dumpRenderTreeTemp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659191</commentid>
    <comment_count>9</comment_count>
      <attachid>149754</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-06-27 22:18:02 -0700</bug_when>
    <thetext>Comment on attachment 149754
patch

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

I do think that the idea is good, but I don&apos;t think the implementation is correct.

This is not an issue that is specific to the Qt port, so support for this should be present for all ports using WTR. And that appears to be the case, given that WTR&apos;s TestController.cpp already has code for reading the DUMPRENDERTREE_TEMP variable and then uses WKContextSetDatabaseDirectory to direct the databases to the location pointed to by the environment variable.

I suspect that what&apos;s happening in our case is that we end up running our initialization code afterwards and over-write the previously set database directory - for example the PlatformWebView is created after the call to the C API.

Consequently I think the cleanest fix would involve us correctly taking the existing cross-platform code path.

&gt; Source/WebKit2/ChangeLog:4
&gt; +        [Qt] Separate WebKit2 instances use the same local storage
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=89666

Can you elaborate a bit more (either in the changelog or bugzilla) what the _symptom_ is that you&apos;re trying to fix?

Is this an issue when using NWRT with multiple WTR instances writing to the same directory?

&gt; Tools/ChangeLog:9
&gt; +        directory.If ther is the DUMPRENDERTREE_TEMP environment

Space between punctuation and the If. And &quot;ther&quot; -&gt; &quot;there&quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667639</commentid>
    <comment_count>10</comment_count>
      <attachid>151914</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-07-12 05:05:03 -0700</bug_when>
    <thetext>Created attachment 151914
patch for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667641</commentid>
    <comment_count>11</comment_count>
      <attachid>151914</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-12 05:11:58 -0700</bug_when>
    <thetext>Comment on attachment 151914
patch for ews

Attachment 151914 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13198745</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667666</commentid>
    <comment_count>12</comment_count>
      <attachid>151914</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-12 05:33:09 -0700</bug_when>
    <thetext>Comment on attachment 151914
patch for ews

Attachment 151914 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13208668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678099</commentid>
    <comment_count>13</comment_count>
      <attachid>154367</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-07-25 08:41:07 -0700</bug_when>
    <thetext>Created attachment 154367
patch for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679084</commentid>
    <comment_count>14</comment_count>
      <attachid>154367</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-07-26 02:30:40 -0700</bug_when>
    <thetext>Comment on attachment 154367
patch for ews

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

LGTM with the need of some fix.

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:52
&gt; +    notImplemented();
&gt; +    return &quot;&quot;;

return String()

&gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:51
&gt; +    // FIXME: Implement
&gt; +    return WTF::String();

I don&apos;t think you need WTF:: here.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:-91
&gt; +    parameters.parentProcessName = [[NSProcessInfo processInfo] processName];
&gt;  
&gt;      NSURLCache *urlCache = [NSURLCache sharedURLCache];
&gt; -
&gt; -    parameters.parentProcessName = [[NSProcessInfo processInfo] processName];    
&gt; -    parameters.nsURLCachePath = [(NSString *)cachePath.get() stringByStandardizingPath];

You don&apos;t need to move the assigment of parentProcessName, it just adds noise to the patch.

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:216
&gt; -    appendReadwriteSandboxDirectory(sandboxParameters, &quot;NSURL_CACHE_DIR&quot;, parameters.nsURLCachePath);
&gt; +    appendReadwriteSandboxDirectory(sandboxParameters, &quot;NSURL_CACHE_DIR&quot;, static_cast&lt;NSString*&gt;(parameters.diskCacheDirectory));

Do you need to cast to NSString* here? Isn&apos;t appendRead... a webkit function that get&apos;s a String?

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:264
&gt; -    if (!parameters.nsURLCachePath.isNull()) {
&gt; +    if (!static_cast&lt;NSString*&gt;(parameters.diskCacheDirectory).isNull()) {
&gt;          NSUInteger cacheMemoryCapacity = parameters.nsURLCacheMemoryCapacity;
&gt;          NSUInteger cacheDiskCapacity = parameters.nsURLCacheDiskCapacity;

You don&apos;t need the cast here.

&gt; Tools/WebKitTestRunner/TestController.cpp:315
&gt; +    // Can we remove it?
&gt; +//    const char* path = libraryPathForTesting();
&gt; +//    if (path) {
&gt; +//        Vector&lt;char&gt; databaseDirectory(strlen(path) + strlen(&quot;/Databases&quot;) + 1);
&gt; +//        sprintf(databaseDirectory.data(), &quot;%s%s&quot;, path, &quot;/Databases&quot;);
&gt; +//        WKRetainPtr&lt;WKStringRef&gt; databaseDirectoryWK(AdoptWK, WKStringCreateWithUTF8CString(databaseDirectory.data()));
&gt; +//        WKContextSetDatabaseDirectory(m_context.get(), databaseDirectoryWK.get());
&gt; +//    }

I think we can. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679091</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-07-26 02:39:58 -0700</bug_when>
    <thetext>Adding API maintainers because this effects WebKit2 C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679202</commentid>
    <comment_count>16</comment_count>
      <attachid>154618</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-07-26 05:34:37 -0700</bug_when>
    <thetext>Created attachment 154618
patch for ews

Thanks for your advice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679231</commentid>
    <comment_count>17</comment_count>
      <attachid>154618</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-07-26 06:05:07 -0700</bug_when>
    <thetext>Comment on attachment 154618
patch for ews

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

&gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:51
&gt; +    // FIXME: Implement
&gt; +    return String();

Nit: missing a notImplemented() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679751</commentid>
    <comment_count>18</comment_count>
      <attachid>154618</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-26 14:17:43 -0700</bug_when>
    <thetext>Comment on attachment 154618
patch for ews

Attachment 154618 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13368050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693596</commentid>
    <comment_count>19</comment_count>
      <attachid>157977</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-08-13 06:13:50 -0700</bug_when>
    <thetext>Created attachment 157977
patch for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693600</commentid>
    <comment_count>20</comment_count>
      <attachid>157977</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-13 06:18:45 -0700</bug_when>
    <thetext>Comment on attachment 157977
patch for ews

Attachment 157977 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13493071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693645</commentid>
    <comment_count>21</comment_count>
      <attachid>157992</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-08-13 07:31:36 -0700</bug_when>
    <thetext>Created attachment 157992
patch for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703783</commentid>
    <comment_count>22</comment_count>
      <attachid>149754</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-23 23:09:31 -0700</bug_when>
    <thetext>Comment on attachment 149754
patch

Marking obviously obsolete attachmen to be obsolete :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703792</commentid>
    <comment_count>23</comment_count>
      <attachid>157992</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-23 23:13:57 -0700</bug_when>
    <thetext>Comment on attachment 157992
patch for ews

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

This patch is missing a ChangeLog, which I suppose would provide an explanation as to why these changes are submitted? :)

I&apos;m particularly curious why the disk cache directory needs to be per DRT/WTR instance.

&gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:-95
&gt; -    ASSERT(!parameters.nsURLCachePath.isEmpty());

Technically this ASSERT should move somewhere else, shouldn&apos;t it?

&gt; Tools/WebKitTestRunner/TestController.cpp:320
&gt; +        WKContextSetDatabaseDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));
&gt; +        WKContextSetLocalStorageDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));
&gt; +        WKContextSetDiskCacheDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));

I think you need to store the strings created by WKStringCreate* in a RetainPtr to avoid them leaking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709585</commentid>
    <comment_count>24</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-31 07:03:17 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 157992 [details])
&gt; I&apos;m particularly curious why the disk cache directory needs to be per DRT/WTR instance.

Because we would like to go forward and run layout tests parallel (https://bugs.webkit.org/show_bug.cgi?id=77730). It isn&apos;t a good
thing if a WTR modifies another ones disk cache. For example purges
it between tests, but the other one still uses it. It was implemented
for WK1 long time ago and works fine.

Additionally we run more bots on same machine (only one WK2 tester now
because of this bug), and don&apos;t want to let a slave to break an other
slaves disk cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709597</commentid>
    <comment_count>25</comment_count>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-08-31 07:24:01 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 157992 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=157992&amp;action=review
&gt; 
&gt; This patch is missing a ChangeLog, which I suppose would provide an explanation as to why these changes are submitted? :)

Sorry for the late response!
These patches were only made for testing EWS, and I had the wrong intention that these patches need to be r=? and cq=? to test the EWS.
I&apos;m going to apply your recommendations and hints in the final patch (that will also contain ChangeLogs of course :) ).

&gt; &gt; Source/WebKit2/UIProcess/mac/WebContextMac.mm:-95
&gt; &gt; -    ASSERT(!parameters.nsURLCachePath.isEmpty());
&gt; 
&gt; Technically this ASSERT should move somewhere else, shouldn&apos;t it?

From the final patch nsURLCachePath will be obsoleted.
 
&gt; &gt; Tools/WebKitTestRunner/TestController.cpp:320
&gt; &gt; +        WKContextSetDatabaseDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));
&gt; &gt; +        WKContextSetLocalStorageDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));
&gt; &gt; +        WKContextSetDiskCacheDirectory(m_context.get(), WKStringCreateWithUTF8CString(dumpRenderTreeTemp));
&gt; 
&gt; I think you need to store the strings created by WKStringCreate* in a RetainPtr to avoid them leaking.

I&apos;m going to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710026</commentid>
    <comment_count>26</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-31 15:17:03 -0700</bug_when>
    <thetext>Removing [Qt] as this touches platform independent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710222</commentid>
    <comment_count>27</comment_count>
      <attachid>161824</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-09-01 05:15:43 -0700</bug_when>
    <thetext>Created attachment 161824
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715781</commentid>
    <comment_count>28</comment_count>
      <attachid>163054</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-09-10 00:30:36 -0700</bug_when>
    <thetext>Created attachment 163054
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715893</commentid>
    <comment_count>29</comment_count>
      <attachid>163054</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-09-10 03:37:44 -0700</bug_when>
    <thetext>Comment on attachment 163054
patch v2

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

I think this patch is an improvement, though I still find the ChangeLog a bit too brief about the issue that is being fixed.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        WebContext has been extended for the paralelly started WTRs to use

*parallelly*

&gt; Source/WebKit2/ChangeLog:12
&gt; +        separate directories for their local storage.
&gt; +        platformDiskCacheDirectory API has been added to the existing
&gt; +        platformLocalStorageDirectory and platformDataBaseDirectory APIs.
&gt; +

I think it would be good to explain a bit more why this change is needed and what the symptoms of the bug are.

Probably also refer to https://bugs.webkit.org/show_bug.cgi?id=77730 and the special for Qt to run multiple run-webkit-test instances in parallel.

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:-104
&gt;      // FIXME: These should be merged with CFURLCache counterparts below.
&gt; -    String nsURLCachePath;
&gt; -    SandboxExtension::Handle nsURLCachePathExtensionHandle;

Following the FIXME comment to me it looks like the cfURLCachePath below is used for the same purpose on Windows as nsURLCachePath on Mac.

Doesn&apos;t this patch also affect the need for cfURLCachePath on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734512</commentid>
    <comment_count>30</comment_count>
      <attachid>167054</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-10-04 01:53:03 -0700</bug_when>
    <thetext>Created attachment 167054
patch for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734519</commentid>
    <comment_count>31</comment_count>
      <attachid>167054</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 02:07:51 -0700</bug_when>
    <thetext>Comment on attachment 167054
patch for ews

Attachment 167054 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14175021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734644</commentid>
    <comment_count>32</comment_count>
      <attachid>167094</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-10-04 06:34:42 -0700</bug_when>
    <thetext>Created attachment 167094
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734654</commentid>
    <comment_count>33</comment_count>
      <attachid>167094</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 06:54:12 -0700</bug_when>
    <thetext>Comment on attachment 167094
patch

Attachment 167094 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14171223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736651</commentid>
    <comment_count>34</comment_count>
      <attachid>167530</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-10-08 06:18:28 -0700</bug_when>
    <thetext>Created attachment 167530
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740778</commentid>
    <comment_count>35</comment_count>
      <attachid>167530</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-12 03:27:08 -0700</bug_when>
    <thetext>Comment on attachment 167530
patch

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

I think the patch looks good. The only two issues I can find are the missing notImplemented() and the static_cast that appears to be unnecessary. Please fix those before landing :)

(And I suppose this needs very careful perhaps manual landing, since it affects the quite a few ports)

&gt; Source/WebKit2/UIProcess/win/WebContextWin.cpp:107
&gt; +    // FIXME: not implemented!

Use notImplemented(); here?

&gt; Source/WebKit2/WebProcess/mac/WebProcessMac.mm:271
&gt; -        RetainPtr&lt;NSURLCache&gt; parentProcessURLCache(AdoptNS, [[NSURLCache alloc] initWithMemoryCapacity:cacheMemoryCapacity diskCapacity:cacheDiskCapacity diskPath:parameters.nsURLCachePath]);
&gt; +        RetainPtr&lt;NSURLCache&gt; parentProcessURLCache(AdoptNS, [[NSURLCache alloc] initWithMemoryCapacity:cacheMemoryCapacity diskCapacity:cacheDiskCapacity diskPath:static_cast&lt;NSString*&gt;(parameters.diskCacheDirectory)]);

Why is the static_cast needed here?

It seems that with

    diskPath:parameters.nsURLCachePath

the nsURLCachePath as a String. With 

    diskPath:static_cast&lt;NSString*&gt;(parameters.diskCacheDirectory)

the diskCacheDirectory appears to be a String, too. So I don&apos;t understand why the cast is needed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740784</commentid>
    <comment_count>36</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 03:56:48 -0700</bug_when>
    <thetext>I tried the patch, but it seems WTR still uses this file:
~/.local/share/WebKitTestRunner/.QtWebKit/WebpageIcons.db

Could you check it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740800</commentid>
    <comment_count>37</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 04:36:48 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I tried the patch, but it seems WTR still uses this file:
&gt; ~/.local/share/WebKitTestRunner/.QtWebKit/WebpageIcons.db
&gt; 
&gt; Could you check it?

I guess we should override the icondatabase path as well. But it should not stop this patch from landing, we can do that in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740803</commentid>
    <comment_count>38</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 04:38:32 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; I tried the patch, but it seems WTR still uses this file:
&gt; &gt; ~/.local/share/WebKitTestRunner/.QtWebKit/WebpageIcons.db
&gt; &gt; 
&gt; &gt; Could you check it?
&gt; 
&gt; I guess we should override the icondatabase path as well. But it should not stop this patch from landing, we can do that in a follow-up.

Sure, we can do it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741887</commentid>
    <comment_count>39</comment_count>
      <attachid>168660</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-10-15 02:50:45 -0700</bug_when>
    <thetext>Created attachment 168660
patch for commit

Thanks for your advice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742958</commentid>
    <comment_count>40</comment_count>
      <attachid>168660</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 01:43:10 -0700</bug_when>
    <thetext>Comment on attachment 168660
patch for commit

Clearing flags on attachment: 168660

Committed r131428: &lt;http://trac.webkit.org/changeset/131428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742959</commentid>
    <comment_count>41</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 01:43:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148807</attachid>
            <date>2012-06-21 08:19:45 -0700</date>
            <delta_ts>2012-06-22 04:48:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>3754</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhNjVlMDY4Li40MzgyZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDYtMjEgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBbUXRdIEFkZGVkIGEgbmV3IEFQSSBpbiB0aGUgV2ViS2l0IG5hbWVzcGFjZQor
ICAgICAgICBmb3IgdGhlIFdlYktpdFRlc3RSdW5uZXIsIHdoaWNoIHNldHMgdGhlIERhdGFEaXJl
Y3RvcnkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Z2xvYmFsRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OmRlZmF1bHREYXRhTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpzZXREYXRhTG9jYXRpb24p
OgorICAgICAgICAqIFNoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uaDoKKyAgICAgICAg
KFdlYktpdCk6CisKIDIwMTItMDYtMTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1
bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCB0aXRsZSBzdXBwb3J0IHRv
IEV3a19WaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0
RGF0YUxvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRh
TG9jYXRpb24uY3BwCmluZGV4IDc3MThiOTQuLmFlZTRjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uY3BwCkBAIC0zMiwxMyArMzIs
MjEgQEAKICNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFTdGFuZGFyZFBhdGhzPgogI2luY2x1
ZGUgPFFTdHJpbmdCdWlsZGVyPgorI2luY2x1ZGUgPHF3ZWJraXRnbG9iYWwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitRU3RyaW5nJiBnbG9iYWxEYXRhTG9jYXRpb24oKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUVN0cmluZywgZGF0YUxvY2F0aW9uLCAoKSk7CisgICAg
cmV0dXJuIGRhdGFMb2NhdGlvbjsKK30KKwogUVN0cmluZyBkZWZhdWx0RGF0YUxvY2F0aW9uKCkK
IHsKLSAgICBzdGF0aWMgUVN0cmluZyBzX2RhdGFMb2NhdGlvbjsKKyAgICBRU3RyaW5nJiBzX2Rh
dGFMb2NhdGlvbiA9IGdsb2JhbERhdGFMb2NhdGlvbigpOwogCiAgICAgaWYgKCFzX2RhdGFMb2Nh
dGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzX2RhdGFMb2NhdGlvbjsKQEAgLTUyLDQg
KzYwLDEyIEBAIFFTdHJpbmcgZGVmYXVsdERhdGFMb2NhdGlvbigpCiAgICAgcmV0dXJuIHNfZGF0
YUxvY2F0aW9uOwogfQogCitRV0VCS0lUX0VYUE9SVCB2b2lkIHNldERhdGFMb2NhdGlvbihRU3Ry
aW5nIGRhdGFMb2NhdGlvbikKK3sKKyAgICBRU3RyaW5nJiBzX2RhdGFMb2NhdGlvbiA9IGdsb2Jh
bERhdGFMb2NhdGlvbigpOworCisgICAgQVNTRVJUKHNfZGF0YUxvY2F0aW9uLmlzTnVsbCgpKTsK
KyAgICBzX2RhdGFMb2NhdGlvbiA9IGRhdGFMb2NhdGlvbjsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oCmluZGV4IDlmMzJjODcu
LjFiMmE5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHRE
YXRhTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0RGF0
YUxvY2F0aW9uLmgKQEAgLTI5LDEwICsyOSwxMyBAQAogI2RlZmluZSBRdERlZmF1bHREYXRhTG9j
YXRpb25faAogCiAjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxxd2Via2l0Z2xvYmFsLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitRU3RyaW5nJiBzX2RhdGFMb2NhdGlvbigpOwogUVN0
cmluZyBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7CitRV0VCS0lUX0VYUE9SVCB2b2lkIHNldERhdGFM
b2NhdGlvbihRU3RyaW5nIGRhdGFMb2NhdGlvbik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYzNWVkYjUuLmVmYWFhNTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMi0wNi0yMSAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5AaW5mLnUtc3plZ2VkLmh1
PgorCisgICAgICAgIFtRdF0gVGhlIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGUgZGVmYXVsdCBM
b2NhbFN0b3JhZ2UKKyAgICAgICAgZGlyZWN0b3J5LklmIHRoZXIgaXMgdGhlIERVTVBSRU5ERVJU
UkVFX1RFTVAgZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGVzLCB1c2UgdGhhdCwgaW5zdGVh
ZCBvZiB0aGUgZGVmYXVsdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorCiAyMDEy
LTA2LTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIEZvcmNlU2NoZWR1bGVyIHRvIGJ1aWxkLndlYmtpdC5vcmcKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDE1OGU4MDguLjViNTJlMDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcApA
QCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPFFMaWJyYXJ5PgogI2luY2x1ZGUgPFFPYmplY3Q+
CiAjaW5jbHVkZSA8cXF1aWNrd2Vidmlld19wLmg+CisjaW5jbHVkZSA8UVN0YW5kYXJkUGF0aHM+
CisjaW5jbHVkZSAiUXREZWZhdWx0RGF0YUxvY2F0aW9uLmgiCiAjaW5jbHVkZSA8UXRHbG9iYWw+
CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC01MSw2ICs1Myw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQog
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICBRUXVpY2tX
ZWJWaWV3OjpwbGF0Zm9ybUluaXRpYWxpemUoKTsKKyAgICBpZiAoZ2V0ZW52KCJEVU1QUkVOREVS
VFJFRV9URU1QIikgIT0gTlVMTCkKKyAgICAgICAgV2ViS2l0OjpzZXREYXRhTG9jYXRpb24oZ2V0
ZW52KCJEVU1QUkVOREVSVFJFRV9URU1QIikpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybVJ1blVudGlsKGJvb2wmIGNvbmRpdGlvbiwgZG91YmxlIHRpbWVvdXQpCg==
</data>
<flag name="review"
          id="156658"
          type_id="1"
          status="-"
          setter="kbalazs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148997</attachid>
            <date>2012-06-22 04:48:46 -0700</date>
            <delta_ts>2012-06-27 08:39:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>17560</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyNTU2YTI5Li41ZDhlNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMDYtMjIgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBbUXRdIEFkZGVkIGEgbmV3IEFQSSBpbiB0aGUgV2ViS2l0IG5hbWVzcGFjZQor
ICAgICAgICBmb3IgdGhlIFdlYktpdFRlc3RSdW5uZXIsIHdoaWNoIHNldHMgdGhlIERhdGFEaXJl
Y3RvcnkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkg
aGF2ZSByZW5hbWVkIGRlZmF1bHREYXRhTG9jYXRpb24gdG8gcGVyc2lzdGVudERhdGFMb2NhdGlv
bi4KKyAgICAgICAgRnJvbSBub3csIHdpdGggc2V0UGVyc2lzdGVudERhdGFMb2NhdGlvbigpIHdl
IGNhbiBzZXQgd2hpY2gKKyAgICAgICAgZGlyZWN0b3J5IHNob3VsZCBiZSB1c2VkIGJ5IFdlYktp
dFRlc3RSdW5uZXIgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgZGVmYXVsdCBvbmUuIEhlbmNlLCBw
YXJhbGxlbGx5IHJ1biBXS1RScyBkb24ndCB1c2UgdGhlIHNhbWUKKyAgICAgICAgRGF0YUxvY2F0
aW9uLgorCisgICAgICAgICogU2hhcmVkL3F0L1F0UGVyc2lzdGVudERhdGFMb2NhdGlvbi5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0
aW9uLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Omdsb2JhbERhdGFM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OnBlcnNpc3RlbnREYXRhTG9jYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpzZXRQZXJzaXN0ZW50RGF0YUxvY2F0aW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvcXQvUXRQZXJzaXN0ZW50RGF0YUxvY2F0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvcXQvUXREZWZhdWx0RGF0YUxvY2F0aW9uLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvcXQv
UGx1Z2luUHJvY2Vzc1Byb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWNoZUZpbGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSk6CisKIDIwMTItMDYtMjEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KIAogICAgICAgICBbV0syXSBBZGQgQyBBUEkgdG8gaW5zcGVjdCBhIFdlYiBJbnRl
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9j
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlv
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MThiOTQuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUXREZWZhdWx0RGF0YUxvY2F0aW9u
LmgiCi0KLSNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFEaXI+Ci0jaW5j
bHVkZSA8UVN0YW5kYXJkUGF0aHM+Ci0jaW5jbHVkZSA8UVN0cmluZ0J1aWxkZXI+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RU3RyaW5n
IGRlZmF1bHREYXRhTG9jYXRpb24oKQotewotICAgIHN0YXRpYyBRU3RyaW5nIHNfZGF0YUxvY2F0
aW9uOwotCi0gICAgaWYgKCFzX2RhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzX2RhdGFMb2NhdGlvbjsKLQotICAgIFFTdHJpbmcgZGF0YUxvY2F0aW9uID0gUVN0YW5kYXJk
UGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRhdGFMb2NhdGlvbik7Ci0g
ICAgaWYgKGRhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIGRhdGFMb2NhdGlvbiA9IFFE
aXI6OmhvbWVQYXRoKCkgJSBRRGlyOjpzZXBhcmF0b3IoKSAlIFFDb3JlQXBwbGljYXRpb246OmFw
cGxpY2F0aW9uTmFtZSgpOwotICAgIHNfZGF0YUxvY2F0aW9uID0gZGF0YUxvY2F0aW9uICUgUURp
cjo6c2VwYXJhdG9yKCkgJSBRU3RyaW5nTGl0ZXJhbCgiLlF0V2ViS2l0IikgJSBRRGlyOjpzZXBh
cmF0b3IoKTsKLSAgICBRRGlyOjpyb290KCkubWtwYXRoKHNfZGF0YUxvY2F0aW9uKTsKLQotICAg
IHJldHVybiBzX2RhdGFMb2NhdGlvbjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ZjMyYzg3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERl
ZmF1bHREYXRhTG9jYXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUXREZWZhdWx0RGF0YUxvY2F0aW9u
X2gKLSNkZWZpbmUgUXREZWZhdWx0RGF0YUxvY2F0aW9uX2gKLQotI2luY2x1ZGUgPFFTdHJpbmc+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RU3RyaW5nIGRlZmF1bHREYXRhTG9jYXRpb24oKTsK
LQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdFBl
cnNpc3RlbnREYXRhTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0UGVy
c2lzdGVudERhdGFMb2NhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMGExMDE1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9R
dFBlcnNpc3RlbnREYXRhTG9jYXRpb24uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICogQ29weXJpZ2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdFBl
cnNpc3RlbnREYXRhTG9jYXRpb24uaCIKKworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Cisj
aW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRU3RhbmRhcmRQYXRocz4KKyNpbmNsdWRlIDxRU3Ry
aW5nQnVpbGRlcj4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxx
d2Via2l0Z2xvYmFsLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUVN0cmluZyYgZ2xvYmFsRGF0YUxvY2F0aW9uKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFFTdHJpbmcsIGRhdGFMb2NhdGlvbiwgKCkpOworICAgIHJldHVybiBk
YXRhTG9jYXRpb247Cit9CisKK1FTdHJpbmcgcGVyc2lzdGVudERhdGFMb2NhdGlvbigpCit7Cisg
ICAgUVN0cmluZyYgcGVyc2lzdGVudERhdGFMb2NhdGlvbiA9IGdsb2JhbERhdGFMb2NhdGlvbigp
OworCisgICAgaWYgKCFwZXJzaXN0ZW50RGF0YUxvY2F0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHBlcnNpc3RlbnREYXRhTG9jYXRpb247CisKKyAgICBRU3RyaW5nIGRhdGFMb2NhdGlv
biA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhzOjpEYXRh
TG9jYXRpb24pOworICAgIGlmIChkYXRhTG9jYXRpb24uaXNFbXB0eSgpKQorICAgICAgICBkYXRh
TG9jYXRpb24gPSBRRGlyOjpob21lUGF0aCgpICUgUURpcjo6c2VwYXJhdG9yKCkgJSBRQ29yZUFw
cGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKTsKKyAgICBwZXJzaXN0ZW50RGF0YUxvY2F0aW9u
ID0gZGF0YUxvY2F0aW9uICUgUURpcjo6c2VwYXJhdG9yKCkgJSBRU3RyaW5nTGl0ZXJhbCgiLlF0
V2ViS2l0IikgJSBRRGlyOjpzZXBhcmF0b3IoKTsKKyAgICBRRGlyOjpyb290KCkubWtwYXRoKHBl
cnNpc3RlbnREYXRhTG9jYXRpb24pOworCisgICAgcmV0dXJuIHBlcnNpc3RlbnREYXRhTG9jYXRp
b247Cit9CisKK1FXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVyc2lzdGVudERhdGFMb2NhdGlvbihR
U3RyaW5nIGRhdGFMb2NhdGlvbikKK3sKKyAgICBRU3RyaW5nJiBwZXJzaXN0ZW50RGF0YUxvY2F0
aW9uID0gZ2xvYmFsRGF0YUxvY2F0aW9uKCk7CisKKyAgICBBU1NFUlQocGVyc2lzdGVudERhdGFM
b2NhdGlvbi5pc051bGwoKSk7CisgICAgcGVyc2lzdGVudERhdGFMb2NhdGlvbiA9IGRhdGFMb2Nh
dGlvbjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0UGVy
c2lzdGVudERhdGFMb2NhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0UGVyc2lz
dGVudERhdGFMb2NhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3
MzE1NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXRQZXJz
aXN0ZW50RGF0YUxvY2F0aW9uLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBRdFBlcnNpc3RlbnREYXRhTG9jYXRpb25faAorI2RlZmlu
ZSBRdFBlcnNpc3RlbnREYXRhTG9jYXRpb25faAorCisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNs
dWRlIDxxd2Via2l0Z2xvYmFsLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitRU3RyaW5nIHBl
cnNpc3RlbnREYXRhTG9jYXRpb24oKTsKKworLy8gSXQgaXMgcHJpdmF0ZSBhcGkgZm9yIFdlYktp
dFRlc3RSdW5uZXIKK1FXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVyc2lzdGVudERhdGFMb2NhdGlv
bihRU3RyaW5nKTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDdiOWFiOTkuLjZjYWZm
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQpAQCAtMTM5LDcgKzEzOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFNo
YXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmggXAogICAgIFNoYXJlZC9xdC9QbGF0Zm9ybUNlcnRp
ZmljYXRlSW5mby5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuaCBcCi0gICAg
U2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5oIFwKKyAgICBTaGFyZWQvcXQvUXRQZXJz
aXN0ZW50RGF0YUxvY2F0aW9uLmggXAogICAgIFNoYXJlZC9xdC9RdE5ldHdvcmtSZXBseURhdGEu
aCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29ya1JlcXVlc3REYXRhLmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaCBcCkBAIC00OTksNyArNDk5LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgU2hhcmVkL3F0L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0
L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYkV2ZW50RmFj
dG9yeVF0LmNwcCBcCi0gICAgU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHAgXAor
ICAgIFNoYXJlZC9xdC9RdFBlcnNpc3RlbnREYXRhTG9jYXRpb24uY3BwIFwKICAgICBTaGFyZWQv
cXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcCBcCiAgICAgU2hhcmVkL3F0L1F0TmV0d29ya1JlcXVl
c3REYXRhLmNwcCBcCiAgICAgU2hhcmVkL3F0L1dlYlVSTFJlcXVlc3RRdC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJvY2Vzc1By
b3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvcXQvUGx1Z2luUHJv
Y2Vzc1Byb3h5UXQuY3BwCmluZGV4IGIwYTViMjMuLmZkYmRlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3F0L1BsdWdpblByb2Nlc3NQcm94eVF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5Qcm9jZXNzUHJv
eHlRdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKLSNpbmNsdWRlICJRdERlZmF1bHRE
YXRhTG9jYXRpb24uaCIKKyNpbmNsdWRlICJRdFBlcnNpc3RlbnREYXRhTG9jYXRpb24uaCIKICNp
bmNsdWRlIDxRQnl0ZUFycmF5PgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURhdGVUaW1lPgpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQog
CiBzdGF0aWMgUGFzc093blB0cjxRRmlsZT4gY2FjaGVGaWxlKCkKIHsKLSAgICBzdGF0aWMgUVN0
cmluZyBjYWNoZUZpbGVQYXRoID0gZGVmYXVsdERhdGFMb2NhdGlvbigpICUgUVN0cmluZ0xpdGVy
YWwoInBsdWdpbl9tZXRhX2RhdGEuanNvbiIpOworICAgIHN0YXRpYyBRU3RyaW5nIGNhY2hlRmls
ZVBhdGggPSBwZXJzaXN0ZW50RGF0YUxvY2F0aW9uKCkgJSBRU3RyaW5nTGl0ZXJhbCgicGx1Z2lu
X21ldGFfZGF0YS5qc29uIik7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBRRmlsZShjYWNoZUZp
bGVQYXRoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRR
dC5jcHAKaW5kZXggM2YzOGRkMi4uNjA5OTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1
ZGUgIlF0RGVmYXVsdERhdGFMb2NhdGlvbi5oIgorI2luY2x1ZGUgIlF0UGVyc2lzdGVudERhdGFM
b2NhdGlvbi5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2lmIEVOQUJMRShHRU9M
T0NBVElPTikKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQuaCIKQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkKICAgICBp
ZiAoIXNfZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBzX2RlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnk7CiAKLSAgICBzX2RlZmF1bHREaXNrQ2FjaGVE
aXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGVmYXVsdERhdGFM
b2NhdGlvbigpLCAiY2FjaGUvIik7CisgICAgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5ID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnREYXRhTG9jYXRpb24o
KSwgImNhY2hlLyIpOwogICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzX2RlZmF1bHRE
aXNrQ2FjaGVEaXJlY3RvcnkpOwogICAgIHJldHVybiBzX2RlZmF1bHREaXNrQ2FjaGVEaXJlY3Rv
cnk7CiB9CkBAIC02NCw3ICs2NCw3IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkKIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIHFS
ZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0
dXMiKTsKLSAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0
YUxvY2F0aW9uKCk7CisgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gcGVy
c2lzdGVudERhdGFMb2NhdGlvbigpOwogICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
ID0gZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
ICAgICBzdGF0aWMgV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0KiBsb2NhdGlvbiA9IFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJRdDo6Y3JlYXRlKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkp
KTsKQEAgLTgxLDE0ICs4MSwxNCBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0
RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmICghc19kZWZhdWx0RGF0YWJhc2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc19kZWZhdWx0RGF0YWJhc2VEaXJlY3Rv
cnk7CiAKLSAgICBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHREYXRhTG9jYXRp
b24oKSArIFFMYXRpbjFTdHJpbmcoIkRhdGFiYXNlcyIpOworICAgIHNfZGVmYXVsdERhdGFiYXNl
RGlyZWN0b3J5ID0gcGVyc2lzdGVudERhdGFMb2NhdGlvbigpICsgUUxhdGluMVN0cmluZygiRGF0
YWJhc2VzIik7CiAgICAgUURpcigpLm1rcGF0aChzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeSk7
CiAgICAgcmV0dXJuIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5OwogfQogCiBTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGRlZmF1bHREYXRhTG9jYXRpb24oKSArIFFMYXRpbjFTdHJpbmcoIldlYnBhZ2VJY29u
cy5kYiIpOworICAgIHJldHVybiBwZXJzaXN0ZW50RGF0YUxvY2F0aW9uKCkgKyBRTGF0aW4xU3Ry
aW5nKCJXZWJwYWdlSWNvbnMuZGIiKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC05Niw3ICs5Niw3IEBAIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAogICAgIGlmICghc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKIAotICAgIHNf
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRhTG9jYXRpb24oKSArIFFM
YXRpbjFTdHJpbmcoIkxvY2FsU3RvcmFnZSIpOworICAgIHNfZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IHBlcnNpc3RlbnREYXRhTG9jYXRpb24oKSArIFFMYXRpbjFTdHJpbmcoIkxvY2Fs
U3RvcmFnZSIpOwogICAgIFFEaXIoKS5ta3BhdGgoc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KTsKICAgICByZXR1cm4gc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyYmRlOTQu
LjAxNDQwNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yMiAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5A
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFtRdF0gVGhlIFdlYktpdFRlc3RSdW5uZXIgdXNl
cyB0aGUgZGVmYXVsdCBMb2NhbFN0b3JhZ2UKKyAgICAgICAgZGlyZWN0b3J5LklmIHRoZXIgaXMg
dGhlIERVTVBSRU5ERVJUUkVFX1RFTVAgZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGVzLCB1
c2UgdGhhdCwgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9s
bGVyUXQuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKwogMjAxMi0wNi0yMiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIEFsbG93IER1bXBSZW5kZXJUcmVlIHRvIGR1bXAgYWJvdXQ6YmxhbmsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENvbnRyb2xsZXJRdC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4
IDE1OGU4MDguLjAwZmViOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQv
VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0
Q29udHJvbGxlclF0LmNwcApAQCAtMjgsMTcgKzI4LDE5IEBACiAjaW5jbHVkZSAiVGVzdENvbnRy
b2xsZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlF0UGVy
c2lzdGVudERhdGFMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKIAotI2luY2x1
ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRWxh
cHNlZFRpbWVyPgogI2luY2x1ZGUgPFFFdmVudExvb3A+CiAjaW5jbHVkZSA8UUZpbGVJbmZvPgog
I2luY2x1ZGUgPFFMaWJyYXJ5PgogI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVkZSA8cXF1aWNr
d2Vidmlld19wLmg+CisjaW5jbHVkZSA8UVN0YW5kYXJkUGF0aHM+CiAjaW5jbHVkZSA8UXRHbG9i
YWw+CisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxxcXVpY2t3ZWJ2aWV3X3AuaD4KICNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtNTEsNiArNTMsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CiAgICAgUVF1aWNrV2Vi
Vmlldzo6cGxhdGZvcm1Jbml0aWFsaXplKCk7CisgICAgaWYgKCFxZ2V0ZW52KCJEVU1QUkVOREVS
VFJFRV9URU1QIikuaXNOdWxsKCkpCisgICAgICAgIFdlYktpdDo6c2V0UGVyc2lzdGVudERhdGFM
b2NhdGlvbihxZ2V0ZW52KCJEVU1QUkVOREVSVFJFRV9URU1QIikpOwogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmIGNvbmRpdGlvbiwgZG91YmxlIHRpbWVv
dXQpCg==
</data>
<flag name="review"
          id="157119"
          type_id="1"
          status="-"
          setter="kbalazs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149754</attachid>
            <date>2012-06-27 08:39:15 -0700</date>
            <delta_ts>2012-08-23 23:09:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>4707</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkOTJjMDI5Li4wYTBmMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDYtMjcgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBbUXRdIFNlcGFyYXRlIFdlYktpdDIgaW5zdGFuY2VzIHVzZSB0aGUgc2FtZSBs
b2NhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgbmV3IEFQSSBpbiBnbG9iYWwgbmFtZXNwYWNlIGZvciB0aGUgV2ViS2l0VGVz
dFJ1bm5lciwKKyAgICAgICAgd2hpY2ggc2V0cyB0aGUgRGF0YURpcmVjdG9yeS4KKyAgICAgICAg
RnJvbSBub3csIHdpdGggc2V0UGVyc2lzdGVudERhdGFMb2NhdGlvbigpIHdlIGNhbiBzZXQgd2hp
Y2gKKyAgICAgICAgZGlyZWN0b3J5IHNob3VsZCBiZSB1c2VkIGJ5IFdlYktpdFRlc3RSdW5uZXIg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgZGVmYXVsdCBvbmUuIEhlbmNlLCBwYXJhbGxlbGx5IHJ1
biBXS1RScyBkb24ndCB1c2UgdGhlIHNhbWUKKyAgICAgICAgRGF0YUxvY2F0aW9uLgorCisgICAg
ICAgICogU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6Omdsb2JhbERhdGFMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpkZWZhdWx0RGF0YUxvY2F0aW9uKToKKyAgICAgICAgKHNldFBlcnNpc3RlbnREYXRhTG9j
YXRpb24pOgorICAgICAgICAqIFNoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uaDoKKwog
MjAxMi0wNi0yNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBBdm9pZCB1c2Ugb2YgZGVwcmVjYXRlZCBRdCBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9RdERlZmF1bHREYXRhTG9jYXRpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVmYXVsdERhdGFMb2NhdGlvbi5jcHAKaW5kZXggNzcx
OGI5NC4uNGVmMjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVm
YXVsdERhdGFMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0RGVm
YXVsdERhdGFMb2NhdGlvbi5jcHAKQEAgLTMzLDIzICszMyw0MCBAQAogI2luY2x1ZGUgPFFTdGFu
ZGFyZFBhdGhzPgogI2luY2x1ZGUgPFFTdHJpbmdCdWlsZGVyPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHF3ZWJraXRnbG9iYWwuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitRU3RyaW5nJiBnbG9iYWxE
YXRhTG9jYXRpb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUVN0cmluZywgZGF0YUxv
Y2F0aW9uLCAoKSk7CisgICAgcmV0dXJuIGRhdGFMb2NhdGlvbjsKK30KKwogUVN0cmluZyBkZWZh
dWx0RGF0YUxvY2F0aW9uKCkKIHsKLSAgICBzdGF0aWMgUVN0cmluZyBzX2RhdGFMb2NhdGlvbjsK
KyAgICBRU3RyaW5nJiBkZWZhdWx0RGF0YUxvY2F0aW9uID0gZ2xvYmFsRGF0YUxvY2F0aW9uKCk7
CiAKLSAgICBpZiAoIXNfZGF0YUxvY2F0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNf
ZGF0YUxvY2F0aW9uOworICAgIGlmICghZGVmYXVsdERhdGFMb2NhdGlvbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBkZWZhdWx0RGF0YUxvY2F0aW9uOwogCiAgICAgUVN0cmluZyBkYXRhTG9j
YXRpb24gPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6
RGF0YUxvY2F0aW9uKTsKICAgICBpZiAoZGF0YUxvY2F0aW9uLmlzRW1wdHkoKSkKICAgICAgICAg
ZGF0YUxvY2F0aW9uID0gUURpcjo6aG9tZVBhdGgoKSAlIFFEaXI6OnNlcGFyYXRvcigpICUgUUNv
cmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7Ci0gICAgc19kYXRhTG9jYXRpb24gPSBk
YXRhTG9jYXRpb24gJSBRRGlyOjpzZXBhcmF0b3IoKSAlIFFTdHJpbmdMaXRlcmFsKCIuUXRXZWJL
aXQiKSAlIFFEaXI6OnNlcGFyYXRvcigpOwotICAgIFFEaXI6OnJvb3QoKS5ta3BhdGgoc19kYXRh
TG9jYXRpb24pOworICAgIGRlZmF1bHREYXRhTG9jYXRpb24gPSBkYXRhTG9jYXRpb24gJSBRRGly
OjpzZXBhcmF0b3IoKSAlIFFTdHJpbmdMaXRlcmFsKCIuUXRXZWJLaXQiKSAlIFFEaXI6OnNlcGFy
YXRvcigpOworICAgIFFEaXI6OnJvb3QoKS5ta3BhdGgoZGVmYXVsdERhdGFMb2NhdGlvbik7CiAK
LSAgICByZXR1cm4gc19kYXRhTG9jYXRpb247CisgICAgcmV0dXJuIGRlZmF1bHREYXRhTG9jYXRp
b247CiB9CiAKIH0KKworLy8gSXQgaXMgcHJpdmF0ZSBhcGkgZm9yIFdlYktpdFRlc3RSdW5uZXIK
K1FXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVyc2lzdGVudERhdGFMb2NhdGlvbihRU3RyaW5nIGRh
dGFMb2NhdGlvbikKK3sKKyAgICBRU3RyaW5nJiBkZWZhdWx0RGF0YUxvY2F0aW9uID0gV2ViS2l0
OjpnbG9iYWxEYXRhTG9jYXRpb24oKTsKKworICAgIEFTU0VSVChkZWZhdWx0RGF0YUxvY2F0aW9u
LmlzTnVsbCgpKTsKKyAgICBkZWZhdWx0RGF0YUxvY2F0aW9uID0gZGF0YUxvY2F0aW9uOworfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRhNDk3
ODYuLjdjM2VkN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0yNyAgU3ppbGFyZCBMZWRhbiAgPHN6bGVk
YW5AaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFtRdF0gU2VwYXJhdGUgV2ViS2l0MiBpbnN0
YW5jZXMgdXNlIHRoZSBzYW1lIGxvY2FsIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFdlYktpdFRlc3RSdW5uZXIgdXNlcyB0aGUgZGVm
YXVsdCBMb2NhbFN0b3JhZ2UKKyAgICAgICAgZGlyZWN0b3J5LklmIHRoZXIgaXMgdGhlIERVTVBS
RU5ERVJUUkVFX1RFTVAgZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGVzLCB1c2UgdGhhdCwg
aW5zdGVhZCBvZiB0aGUgZGVmYXVsdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQv
VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUluaXRpYWxpemUpOgorCiAyMDEyLTA2LTI2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVu
YmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZWNpc2VUaW1lKCkg
dG8gV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9UZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdENv
bnRyb2xsZXJRdC5jcHAKaW5kZXggMTU4ZTgwOC4uODJlZjZkMCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5o
IgorI2luY2x1ZGUgIlF0RGVmYXVsdERhdGFMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldLU3RyaW5n
UXQuaCIKIAogI2luY2x1ZGUgPGNzdGRsaWI+CkBAIC0zNywxMSArMzgsMTUgQEAKICNpbmNsdWRl
IDxRRmlsZUluZm8+CiAjaW5jbHVkZSA8UUxpYnJhcnk+CiAjaW5jbHVkZSA8UU9iamVjdD4KLSNp
bmNsdWRlIDxxcXVpY2t3ZWJ2aWV3X3AuaD4KKyNpbmNsdWRlIDxRU3RhbmRhcmRQYXRocz4KICNp
bmNsdWRlIDxRdEdsb2JhbD4KKyNpbmNsdWRlIDxxcXVpY2t3ZWJ2aWV3X3AuaD4KICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorCitR
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFBlcnNpc3RlbnREYXRhTG9jYXRpb24oUVN0cmluZyk7CisK
IG5hbWVzcGFjZSBXVFIgewogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKQEAg
LTUxLDYgKzU2LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIFFRdWlja1dlYlZpZXc6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpOworICAgIFFTdHJpbmcgZHVtcHJlbmRlcnRyZWV0ZW1wID0g
cWdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpOworICAgIGlmICghZHVtcHJlbmRlcnRyZWV0
ZW1wLmlzTnVsbCgpKQorICAgICAgICBzZXRQZXJzaXN0ZW50RGF0YUxvY2F0aW9uKGR1bXByZW5k
ZXJ0cmVldGVtcCk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwo
Ym9vbCYgY29uZGl0aW9uLCBkb3VibGUgdGltZW91dCkK
</data>
<flag name="review"
          id="157854"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="157855"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151914</attachid>
            <date>2012-07-12 05:05:03 -0700</date>
            <delta_ts>2012-07-25 08:41:07 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>20120712.patch</filename>
            <type>text/plain</type>
            <size>11688</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDZhYmM1ZWMuLjRhMTc3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTcsNiArNTcsNyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3Rvcnk7ICAgIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0Vt
cHR5RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1Nl
Y3VyZTsKQEAgLTk1LDcgKzk2LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBDRlVSTENhY2hlIGNvdW50ZXJwYXJ0cyBiZWxv
dy4KLSAgICBTdHJpbmcgbnNVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0X3QgbnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKQEAg
LTEyMCw3ICsxMjAsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogI2lmIFBMQVRGT1JNKFFUKQogICAgIFN0cmluZyBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmlu
ZGV4IDlmNmRiYmMuLjY4ZGI5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCkBAIC0yMzUsNiArMjM1LDExIEBAIHZvaWQgV0tDb250ZXh0U2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBs
b2NhCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkodG9J
bXBsKGxvY2FsU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXREaXNrQ2FjaGVEaXJlY3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9yeSktPnN0
cmluZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+ZGlzYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggMDFkYWM0Yi4uMjliMGI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC02
Miw2ICs2Miw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQgcmVhbGx5
IGNoYW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQgY2hhbmdl
YWJsZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJl
Y3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlyZWN0b3J5
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogLy8gRklYTUU6IFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkgYW5kIHNob3VsZCBi
ZSByZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhhcyBiZWVuIGZvdW5kIGZvciB0
ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDVhNzE0
ZTguLjYxNmNkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAg
LTI3OSw2ICsyNzksNyBAQCB2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogICAg
IHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0g
ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVy
cy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9IGdldHBpZCgpOwpAQCAtOTAyLDYgKzkwMywxNCBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBy
ZXR1cm4gcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CiAKK1N0cmlu
ZyBXZWJDb250ZXh0OjpkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIGlmICghbV9v
dmVycmlkZURpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292
ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnNldEhUVFBQaXBlbGlu
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggNDE2ZTQ3ZC4uNDAzOGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xNzgsNiArMTc4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
aWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVMb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBkaXI7IH0KKyAgICB2b2lkIHNldERpc2tDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cikgeyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5ID0gZGlyOyB9CiAKICAgICB2b2lkIGVu
c3VyZVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIHdhcm1Jbml0aWFsUHJvY2VzcygpOwpAQCAtMjYw
LDYgKzI2MSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0OwogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdDsKIAorICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CisKICAgICB2
b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpOwog
ICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKIApAQCAtMzI0LDYgKzMyOCw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJp
bmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVMb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rv
cnk7CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGFjNzdl
ZjMuLjQ3YzI3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Q29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcApAQCAtNDYsNiArNDYsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiIjsKK30KKwogU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4uZTI1ZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC00NSw2ICs0NSwxMiBAQCB2b2lkIFdl
YkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0
CiB7CiAgICAgR093blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwgTlVMTCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4
IDQzODE4M2EuLjBhMGRkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KQEAgLTgxLDE0ICs4MSw5IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
CiAgICAgICAgIHBhcmFtZXRlcnMubWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uLmFw
cGVuZFJhbmdlKG1pbWVUeXBlLmJlZ2luKCksIG1pbWVUeXBlLmVuZCgpKTsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBXS0NvcHlGb3VuZGF0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgIGNhY2hl
UGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KE5TSG9tZURpcmVjdG9yeSgpKTsK
KyAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXSBwcm9jZXNzTmFtZV07CiAKICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXTsKLQotICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05h
bWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsgICAgCi0gICAg
cGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCA9IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkg
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiAgICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVt
b3J5Q2FwYWNpdHkgPSBbdXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldOwogICAgIHBhcmFtZXRlcnMu
bnNVUkxDYWNoZURpc2tDYXBhY2l0eSA9IFt1cmxDYWNoZSBkaXNrQ2FwYWNpdHldOwogCkBAIC0x
MjMsNyArMTE4LDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4
dCgpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07CiB9Ci0g
ICAgCisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0
Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIWNhY2hlUGF0
aCkKKyAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNI
b21lRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFN0cmluZyhbKE5TU3RyaW5nICopY2FjaGVQ
YXRoLmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogU3RyaW5nIFdlYkNv
bnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBO
U1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAppbmRleCAz
ZjM4ZGQyLi42MDQxZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dFF0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBR
U3RyaW5nIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5Owogc3RhdGljIFFTdHJpbmcgc19kZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogCi1zdGF0aWMgU3RyaW5nIGRlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKQorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIFN0cmluZyBzX2RlZmF1bHREaXNrQ2Fj
aGVEaXJlY3Rvcnk7CiAKQEAgLTY1LDcgKzY1LDYgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEK
IHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6RXhpdFN0YXR1cz4oIlFQcm9jZXNz
OjpFeGl0U3RhdHVzIik7CiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0g
ZGVmYXVsdERhdGFMb2NhdGlvbigpOwotICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
ID0gZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
ICAgICBzdGF0aWMgV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0KiBsb2NhdGlvbiA9IFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJRdDo6Y3JlYXRlKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkp
KTsKICAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKGdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KCkpLCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OnByb3ZpZGVyKGxvY2F0
aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5t
bQppbmRleCA2OWY0ZmIxLi44M2U4YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycwogICAgICAgICBOU1VJbnRlZ2VyIGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSBwYXJh
bWV0ZXJzLm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAgICAgICAgTlNVSW50ZWdlciBjYWNo
ZURpc2tDYXBhY2l0eSA9IHBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eTsKIAotICAg
ICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50UHJvY2Vzc1VSTENhY2hlKEFkb3B0TlMs
IFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTpjYWNoZU1lbW9yeUNh
cGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0eSBkaXNrUGF0aDpwYXJhbWV0ZXJz
Lm5zVVJMQ2FjaGVQYXRoXSk7CisgICAgICAgIFJldGFpblB0cjxOU1VSTENhY2hlPiBwYXJlbnRQ
cm9jZXNzVVJMQ2FjaGUoQWRvcHROUywgW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9y
eUNhcGFjaXR5OmNhY2hlTWVtb3J5Q2FwYWNpdHkgZGlza0NhcGFjaXR5OmNhY2hlRGlza0NhcGFj
aXR5IGRpc2tQYXRoOnN0YXRpY19jYXN0PE5TU3RyaW5nKj4ocGFyYW1ldGVycy5kaXNrQ2FjaGVE
aXJlY3RvcnkpXSk7CiAgICAgICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnBhcmVu
dFByb2Nlc3NVUkxDYWNoZS5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDNjMTBhYzEuLjZmZGZjODQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMDUsMTIgKzMwNSwxOSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
CiAKICAgICBtX2NvbnRleHQuYWRvcHQoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxl
UGF0aChpbmplY3RlZEJ1bmRsZVBhdGgoKSkpOwogCi0gICAgY29uc3QgY2hhciogcGF0aCA9IGxp
YnJhcnlQYXRoRm9yVGVzdGluZygpOwotICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIFZlY3Rvcjxj
aGFyPiBkYXRhYmFzZURpcmVjdG9yeShzdHJsZW4ocGF0aCkgKyBzdHJsZW4oIi9EYXRhYmFzZXMi
KSArIDEpOwotICAgICAgICBzcHJpbnRmKGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSwgIiVzJXMi
LCBwYXRoLCAiL0RhdGFiYXNlcyIpOwotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
ZGF0YWJhc2VEaXJlY3RvcnlXSyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhkYXRhYmFzZURpcmVjdG9yeS5kYXRhKCkpKTsKLSAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJh
c2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkYXRhYmFzZURpcmVjdG9yeVdLLmdldCgpKTsK
KyAgICAvLyBDYW4gd2UgcmVtb3ZlIGl0PworLy8gICAgY29uc3QgY2hhciogcGF0aCA9IGxpYnJh
cnlQYXRoRm9yVGVzdGluZygpOworLy8gICAgaWYgKHBhdGgpIHsKKy8vICAgICAgICBWZWN0b3I8
Y2hhcj4gZGF0YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgpICsgc3RybGVuKCIvRGF0YWJhc2Vz
IikgKyAxKTsKKy8vICAgICAgICBzcHJpbnRmKGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSwgIiVz
JXMiLCBwYXRoLCAiL0RhdGFiYXNlcyIpOworLy8gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBkYXRhYmFzZURpcmVjdG9yeVdLKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSkpOworLy8gICAgICAgIFdLQ29udGV4dFNl
dERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJhc2VEaXJlY3RvcnlXSy5n
ZXQoKSk7CisvLyAgICB9CisKKyAgICBpZiAoY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gZ2V0
ZW52KCJEVU1QUkVOREVSVFJFRV9URU1QIikpIHsKKyAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJh
c2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ZHVtcFJlbmRlclRyZWVUZW1wKSk7CisgICAgICAgIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVj
dG9yeShtX2NvbnRleHQuZ2V0KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGR1bXBS
ZW5kZXJUcmVlVGVtcCkpOwogICAgIH0KIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQo
KTsK
</data>
<flag name="commit-queue"
          id="160484"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154367</attachid>
            <date>2012-07-25 08:41:07 -0700</date>
            <delta_ts>2012-07-26 05:34:37 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>120725-WK2-temp</filename>
            <type>text/plain</type>
            <size>13301</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDZhYmM1ZWMuLjRhMTc3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTcsNiArNTcsNyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3Rvcnk7ICAgIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0Vt
cHR5RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1Nl
Y3VyZTsKQEAgLTk1LDcgKzk2LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBDRlVSTENhY2hlIGNvdW50ZXJwYXJ0cyBiZWxv
dy4KLSAgICBTdHJpbmcgbnNVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0X3QgbnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKQEAg
LTEyMCw3ICsxMjAsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogI2lmIFBMQVRGT1JNKFFUKQogICAgIFN0cmluZyBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmlu
ZGV4IDdiZmMwNGEuLmIzZmU1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCkBAIC0yNDQsNiArMjQ0LDExIEBAIHZvaWQgV0tDb250ZXh0U2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBs
b2NhCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkodG9J
bXBsKGxvY2FsU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXREaXNrQ2FjaGVEaXJlY3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9yeSktPnN0
cmluZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+ZGlzYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggMDFkYWM0Yi4uMjliMGI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC02
Miw2ICs2Miw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQgcmVhbGx5
IGNoYW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQgY2hhbmdl
YWJsZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJl
Y3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlyZWN0b3J5
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogLy8gRklYTUU6IFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkgYW5kIHNob3VsZCBi
ZSByZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhhcyBiZWVuIGZvdW5kIGZvciB0
ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDM4MWEy
NTYuLjU4OWFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAg
LTMwMyw2ICszMDMsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogICAg
IHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0g
ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVy
cy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9IGdldHBpZCgpOwpAQCAtOTUzLDYgKzk1NCwxNCBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBy
ZXR1cm4gcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CiAKK1N0cmlu
ZyBXZWJDb250ZXh0OjpkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIGlmICghbV9v
dmVycmlkZURpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292
ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnNldEhUVFBQaXBlbGlu
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZjAxNTYxMC4uY2U3ZDI3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xOTAsNiArMTkwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
aWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVMb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBkaXI7IH0KKyAgICB2b2lkIHNldERpc2tDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cikgeyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5ID0gZGlyOyB9CiAKICAgICB2b2lkIGVu
c3VyZVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIHdhcm1Jbml0aWFsUHJvY2VzcygpOwpAQCAtMjcy
LDYgKzI3Myw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0OwogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdDsKIAorICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CisKICAgICB2
b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpOwog
ICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKIApAQCAtMzQyLDYgKzM0Niw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJp
bmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVMb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rv
cnk7CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGFjNzdl
ZjMuLjQ3YzI3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Q29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcApAQCAtNDYsNiArNDYsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAiIjsKK30KKwogU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4uZTI1ZmQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC00NSw2ICs0NSwxMiBAQCB2b2lkIFdl
YkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0
CiB7CiAgICAgR093blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwgTlVMTCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4
IGZjZDAwNGUuLjNjN2E0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KQEAgLTgxLDE0ICs4MSw5IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
CiAgICAgICAgIHBhcmFtZXRlcnMubWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uLmFw
cGVuZFJhbmdlKG1pbWVUeXBlLmJlZ2luKCksIG1pbWVUeXBlLmVuZCgpKTsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBXS0NvcHlGb3VuZGF0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgIGNhY2hl
UGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KE5TSG9tZURpcmVjdG9yeSgpKTsK
KyAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXSBwcm9jZXNzTmFtZV07CiAKICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXTsKLQotICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05h
bWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsgICAgCi0gICAg
cGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCA9IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkg
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiAgICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVt
b3J5Q2FwYWNpdHkgPSBbdXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldOwogICAgIHBhcmFtZXRlcnMu
bnNVUkxDYWNoZURpc2tDYXBhY2l0eSA9IFt1cmxDYWNoZSBkaXNrQ2FwYWNpdHldOwogCkBAIC0x
MjMsNyArMTE4LDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4
dCgpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07CiB9Ci0g
ICAgCisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0
Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIWNhY2hlUGF0
aCkKKyAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNI
b21lRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFN0cmluZyhbKE5TU3RyaW5nICopY2FjaGVQ
YXRoLmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogU3RyaW5nIFdlYkNv
bnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBO
U1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAppbmRleCAz
ZjM4ZGQyLi42MDQxZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dFF0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBR
U3RyaW5nIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5Owogc3RhdGljIFFTdHJpbmcgc19kZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogCi1zdGF0aWMgU3RyaW5nIGRlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKQorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIFN0cmluZyBzX2RlZmF1bHREaXNrQ2Fj
aGVEaXJlY3Rvcnk7CiAKQEAgLTY1LDcgKzY1LDYgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEK
IHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6RXhpdFN0YXR1cz4oIlFQcm9jZXNz
OjpFeGl0U3RhdHVzIik7CiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0g
ZGVmYXVsdERhdGFMb2NhdGlvbigpOwotICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
ID0gZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
ICAgICBzdGF0aWMgV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0KiBsb2NhdGlvbiA9IFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJRdDo6Y3JlYXRlKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkp
KTsKICAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKGdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KCkpLCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OnByb3ZpZGVyKGxvY2F0
aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRl
eHRXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNw
cAppbmRleCA5OTY0ZGUwLi5kOTdhZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViQ29udGV4dFdpbi5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHZvaWQgV2ViQ29udGV4
dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiB7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0
OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVy
biBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJjYWNoZSIpOworfQorCiBTdHJpbmcgV2ViQ29udGV4
dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHJldHVy
biBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDBhOGMwYTQuLjI3MmM1MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpA
QCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgYXBwZW5kUmVhZHdy
aXRlU2FuZGJveERpcmVjdG9yeShzYW5kYm94UGFyYW1ldGVycywgIldFQktJVF9EQVRBQkFTRV9E
SVIiLCBwYXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICBhcHBlbmRSZWFkd3JpdGVT
YW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiV0VCS0lUX0xPQ0FMU1RPUkFHRV9E
SVIiLCBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgYXBwZW5kUmVhZHdy
aXRlU2FuZGJveERpcmVjdG9yeShzYW5kYm94UGFyYW1ldGVycywgIldFQktJVF9BUFBMSUNBVElP
Tl9DQUNIRV9ESVIiLCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwotICAg
IGFwcGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJOU1VS
TF9DQUNIRV9ESVIiLCBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoKTsKKyAgICBhcHBlbmRSZWFk
d3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiTlNVUkxfQ0FDSEVfRElS
Iiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcqPihwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSkp
OwogCiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PigwKSk7CiAKQEAgLTI1OSwxMSArMjU5LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiAg
ICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRp
b25OYW1lKTsKICAgICB9CiAKLSAgICBpZiAoIXBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGguaXNO
dWxsKCkpIHsKKyAgICBpZiAoIXN0YXRpY19jYXN0PE5TU3RyaW5nKj4ocGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkpLmlzTnVsbCgpKSB7CiAgICAgICAgIE5TVUludGVnZXIgY2FjaGVNZW1v
cnlDYXBhY2l0eSA9IHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5OwogICAgICAg
ICBOU1VJbnRlZ2VyIGNhY2hlRGlza0NhcGFjaXR5ID0gcGFyYW1ldGVycy5uc1VSTENhY2hlRGlz
a0NhcGFjaXR5OwogCi0gICAgICAgIFJldGFpblB0cjxOU1VSTENhY2hlPiBwYXJlbnRQcm9jZXNz
VVJMQ2FjaGUoQWRvcHROUywgW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFj
aXR5OmNhY2hlTWVtb3J5Q2FwYWNpdHkgZGlza0NhcGFjaXR5OmNhY2hlRGlza0NhcGFjaXR5IGRp
c2tQYXRoOnBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGhdKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
VVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxDYWNoZShBZG9wdE5TLCBbW05TVVJMQ2FjaGUgYWxs
b2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6Y2FjaGVNZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNp
dHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1BhdGg6c3RhdGljX2Nhc3Q8TlNTdHJpbmcqPihwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSldKTsKICAgICAgICAgW05TVVJMQ2FjaGUgc2V0U2hh
cmVkVVJMQ2FjaGU6cGFyZW50UHJvY2Vzc1VSTENhY2hlLmdldCgpXTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggM2MxMGFjMS4uNmZkZmM4
NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMwNSwx
MiArMzA1LDE5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNv
bnN0IGNoYXIqIGFyZ3ZbXSkKIAogICAgIG1fY29udGV4dC5hZG9wdChXS0NvbnRleHRDcmVhdGVX
aXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGluamVjdGVkQnVuZGxlUGF0aCgpKSk7CiAKLSAgICBjb25z
dCBjaGFyKiBwYXRoID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7Ci0gICAgaWYgKHBhdGgpIHsK
LSAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KHN0cmxlbihwYXRoKSArIHN0
cmxlbigiL0RhdGFiYXNlcyIpICsgMSk7Ci0gICAgICAgIHNwcmludGYoZGF0YWJhc2VEaXJlY3Rv
cnkuZGF0YSgpLCAiJXMlcyIsIHBhdGgsICIvRGF0YWJhc2VzIik7Ci0gICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBkYXRhYmFzZURpcmVjdG9yeVdLKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSkpOwotICAgICAgICBX
S0NvbnRleHRTZXREYXRhYmFzZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGRhdGFiYXNlRGly
ZWN0b3J5V0suZ2V0KCkpOworICAgIC8vIENhbiB3ZSByZW1vdmUgaXQ/CisvLyAgICBjb25zdCBj
aGFyKiBwYXRoID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7CisvLyAgICBpZiAocGF0aCkgewor
Ly8gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShzdHJsZW4ocGF0aCkgKyBz
dHJsZW4oIi9EYXRhYmFzZXMiKSArIDEpOworLy8gICAgICAgIHNwcmludGYoZGF0YWJhc2VEaXJl
Y3RvcnkuZGF0YSgpLCAiJXMlcyIsIHBhdGgsICIvRGF0YWJhc2VzIik7CisvLyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNlRGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpKSk7CisvLyAg
ICAgICAgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkYXRh
YmFzZURpcmVjdG9yeVdLLmdldCgpKTsKKy8vICAgIH0KKworICAgIGlmIChjaGFyKiBkdW1wUmVu
ZGVyVHJlZVRlbXAgPSBnZXRlbnYoIkRVTVBSRU5ERVJUUkVFX1RFTVAiKSkgeworICAgICAgICBX
S0NvbnRleHRTZXREYXRhYmFzZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVtcCkpOworICAgICAgICBXS0NvbnRl
eHRTZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0
U2V0RGlza0NhY2hlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoZHVtcFJlbmRlclRyZWVUZW1wKSk7CiAgICAgfQogCiAgICAgcGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154618</attachid>
            <date>2012-07-26 05:34:37 -0700</date>
            <delta_ts>2012-08-13 06:13:50 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>120726-WK2_temp</filename>
            <type>text/plain</type>
            <size>13003</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDZhYmM1ZWMuLjRhMTc3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTcsNiArNTcsNyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3Rvcnk7ICAgIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeTsK
ICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBkaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0Vt
cHR5RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1Nl
Y3VyZTsKQEAgLTk1LDcgKzk2LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBDRlVSTENhY2hlIGNvdW50ZXJwYXJ0cyBiZWxv
dy4KLSAgICBTdHJpbmcgbnNVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0X3QgbnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKQEAg
LTEyMCw3ICsxMjAsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogI2lmIFBMQVRGT1JNKFFUKQogICAgIFN0cmluZyBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmlu
ZGV4IDdiZmMwNGEuLmIzZmU1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCkBAIC0yNDQsNiArMjQ0LDExIEBAIHZvaWQgV0tDb250ZXh0U2V0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBs
b2NhCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkodG9J
bXBsKGxvY2FsU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQT1JUIHZv
aWQgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXREaXNrQ2FjaGVEaXJlY3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9yeSktPnN0
cmluZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+ZGlzYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggMDFkYWM0Yi4uMjliMGI0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC02
Miw2ICs2Miw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQgcmVhbGx5
IGNoYW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQgY2hhbmdl
YWJsZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJl
Y3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlyZWN0b3J5
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogLy8gRklYTUU6IFRo
aXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkgYW5kIHNob3VsZCBi
ZSByZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhhcyBiZWVuIGZvdW5kIGZvciB0
ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDM4MWEy
NTYuLjU4OWFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAg
LTMwMyw2ICszMDMsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogICAg
IHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VE
aXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0g
ZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVy
cy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCA9IGdldHBpZCgpOwpAQCAtOTUzLDYgKzk1NCwxNCBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBy
ZXR1cm4gcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CiAKK1N0cmlu
ZyBXZWJDb250ZXh0OjpkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIGlmICghbV9v
dmVycmlkZURpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292
ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OnNldEhUVFBQaXBlbGlu
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZjAxNTYxMC4uY2U3ZDI3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0xOTAsNiArMTkwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcg
aWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVMb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBkaXI7IH0KKyAgICB2b2lkIHNldERpc2tDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRp
cikgeyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5ID0gZGlyOyB9CiAKICAgICB2b2lkIGVu
c3VyZVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIHdhcm1Jbml0aWFsUHJvY2VzcygpOwpAQCAtMjcy
LDYgKzI3Myw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0OwogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdDsKIAorICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKyAgICBT
dHJpbmcgcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CisKICAgICB2
b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpOwog
ICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKIApAQCAtMzQyLDYgKzM0Niw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJp
bmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVMb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rv
cnk7CiAKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IGFjNzdl
ZjMuLmJiOTczZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Q29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcApAQCAtNDYsNiArNDYsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogU3RyaW5nIFdl
YkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
Q29udGV4dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4uM2M4MWQyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC00NSw2ICs0NSwxMiBAQCB2
b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJp
bmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBT
dHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25z
dAogewogICAgIEdPd25QdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImRhdGFiYXNlcyIsIE5VTEwp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRl
eCBmY2QwMDRlLi5lM2EyM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWFjLm1tCkBAIC04MSwxOCArODEsMTAgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmEKICAgICAgICAgcGFyYW1ldGVycy5taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb24u
YXBwZW5kUmFuZ2UobWltZVR5cGUuYmVnaW4oKSwgbWltZVR5cGUuZW5kKCkpOwogICAgIH0KIAot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIFdLQ29weUZvdW5k
YXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBpZiAoIWNhY2hlUGF0aCkKLSAgICAgICAgY2Fj
aGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNIb21lRGlyZWN0b3J5KCkp
OwotCiAgICAgTlNVUkxDYWNoZSAqdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNo
ZV07Ci0KLSAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07ICAgIAotICAgIHBhcmFtZXRlcnMubnNVUkxDYWNo
ZVBhdGggPSBbKE5TU3RyaW5nICopY2FjaGVQYXRoLmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGhdOwogICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gW3VybENh
Y2hlIG1lbW9yeUNhcGFjaXR5XTsKICAgICBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNp
dHkgPSBbdXJsQ2FjaGUgZGlza0NhcGFjaXR5XTsKLQotICAgIEFTU0VSVCghcGFyYW1ldGVycy5u
c1VSTENhY2hlUGF0aC5pc0VtcHR5KCkpOworICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05h
bWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBwYXJhbWV0ZXJzLmRpc2FibGVQbHVnaW5Qcm9jZXNz
TWVzc2FnZVRpbWVvdXQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBi
b29sRm9yS2V5OkAiV2ViS2l0RGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91dCJdOwpA
QCAtMTIzLDcgKzExNSwxNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNv
bnRleHQoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVt
b3ZlT2JzZXJ2ZXI6KGlkKW1fZW5oYW5jZWRBY2Nlc3NpYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOwog
fQotICAgIAorCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGly
ZWN0b3J5KCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChB
ZG9wdENGLCBXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgaWYgKCFjYWNo
ZVBhdGgpCisgICAgICAgIGNhY2hlUGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+
KE5TSG9tZURpcmVjdG9yeSgpKTsKKworICAgIHJldHVybiBbKE5TU3RyaW5nICopY2FjaGVQYXRo
LmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOworfQorCiBTdHJpbmcgV2ViQ29udGV4
dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIE5TU3Ry
aW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCmluZGV4IDNmMzhk
ZDIuLjYwNDFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0
UXQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIFFTdHJp
bmcgc19kZWZhdWx0RGF0YWJhc2VEaXJlY3Rvcnk7CiBzdGF0aWMgUVN0cmluZyBzX2RlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKLXN0YXRpYyBTdHJpbmcgZGVmYXVsdERpc2tDYWNoZURp
cmVjdG9yeSgpCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGly
ZWN0b3J5KCkgY29uc3QKIHsKICAgICBzdGF0aWMgU3RyaW5nIHNfZGVmYXVsdERpc2tDYWNoZURp
cmVjdG9yeTsKIApAQCAtNjUsNyArNjUsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogewog
ICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4
aXRTdGF0dXMiKTsKICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZh
dWx0RGF0YUxvY2F0aW9uKCk7Ci0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBk
ZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IHN0YXRpYyBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRp
b25Qcm92aWRlclF0OjpjcmVhdGUodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSkpOwog
ICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoZ2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoKSksIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlkZXIobG9jYXRpb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCmlu
ZGV4IDk5NjRkZTAuLmQ5N2FmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViQ29udGV4dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0V2luLmNwcApAQCAtODEsNiArODEsMTEgQEAgdm9pZCBXZWJDb250ZXh0Ojpw
bGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKIHsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBs
YXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgImNhY2hlIik7Cit9CisKIFN0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KaW5kZXggMGE4YzBhNC4uOGZmZjQ4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCkBAIC0y
MTMsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBhcHBlbmRSZWFkd3JpdGVT
YW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiV0VCS0lUX0RBVEFCQVNFX0RJUiIs
IHBhcmFtZXRlcnMuZGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRi
b3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJXRUJLSVRfTE9DQUxTVE9SQUdFX0RJUiIs
IHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICBhcHBlbmRSZWFkd3JpdGVT
YW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiV0VCS0lUX0FQUExJQ0FUSU9OX0NB
Q0hFX0RJUiIsIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7Ci0gICAgYXBw
ZW5kUmVhZHdyaXRlU2FuZGJveERpcmVjdG9yeShzYW5kYm94UGFyYW1ldGVycywgIk5TVVJMX0NB
Q0hFX0RJUiIsIHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGgpOworICAgIGFwcGVuZFJlYWR3cml0
ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJOU1VSTF9DQUNIRV9ESVIiLCBw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSk7CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5h
cHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KDApKTsKIApAQCAtMjU5LDExICsyNTksMTEg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRp
b25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlvbk5hbWUpOwogICAgIH0KIAotICAgIGlmICgh
cGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aC5pc051bGwoKSkgeworICAgIGlmICghcGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAgTlNVSW50ZWdlciBjYWNo
ZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAg
ICAgICAgIE5TVUludGVnZXIgY2FjaGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2Fj
aGVEaXNrQ2FwYWNpdHk7CiAKLSAgICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFBy
b2Nlc3NVUkxDYWNoZShBZG9wdE5TLCBbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5
Q2FwYWNpdHk6Y2FjaGVNZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNp
dHkgZGlza1BhdGg6cGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aF0pOworICAgICAgICBSZXRhaW5Q
dHI8TlNVUkxDYWNoZT4gcGFyZW50UHJvY2Vzc1VSTENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNo
ZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tD
YXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0eSBkaXNrUGF0aDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+
KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KV0pOwogICAgICAgICBbTlNVUkxDYWNoZSBz
ZXRTaGFyZWRVUkxDYWNoZTpwYXJlbnRQcm9jZXNzVVJMQ2FjaGUuZ2V0KCldOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAzYzEwYWMxLi5l
MWZkNGQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
MzA1LDEyICszMDUsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJn
YywgY29uc3QgY2hhciogYXJndltdKQogCiAgICAgbV9jb250ZXh0LmFkb3B0KFdLQ29udGV4dENy
ZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoKCkpKTsKIAotICAg
IGNvbnN0IGNoYXIqIHBhdGggPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0
aCkgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgp
ICsgc3RybGVuKCIvRGF0YWJhc2VzIikgKyAxKTsKLSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURp
cmVjdG9yeS5kYXRhKCksICIlcyVzIiwgcGF0aCwgIi9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNlRGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAg
ICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJh
c2VEaXJlY3RvcnlXSy5nZXQoKSk7CisgICAgaWYgKGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpKSB7CisgICAgICAgIFdLQ29udGV4dFNldERh
dGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoZHVtcFJlbmRlclRyZWVUZW1wKSk7CisgICAgICAgIFdLQ29udGV4dFNldExvY2FsU3Rv
cmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGR1bXBSZW5kZXJUcmVlVGVtcCkpOworICAgICAgICBXS0NvbnRleHRTZXREaXNrQ2FjaGVE
aXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhk
dW1wUmVuZGVyVHJlZVRlbXApKTsKICAgICB9CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCk7Cg==
</data>
<flag name="commit-queue"
          id="164071"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157977</attachid>
            <date>2012-08-13 06:13:50 -0700</date>
            <delta_ts>2012-08-13 07:31:36 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>120813-WK2_temp2</filename>
            <type>text/plain</type>
            <size>15732</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBiNDFlNjRiLi5kOGU0ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC01NCw2
ICs1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogICAgIGVuY29kZXItPmVuY29kZShkYXRhYmFzZURp
cmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKHVybFNjaGVtZXNSZWdpc3RlcmVyZEFzRW1wdHlEb2N1bWVudCk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmUpOwogICAgIGVuY29kZXItPmVuY29k
ZSh1cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxheGF0aW9uSXNGb3JiaWRkZW4pOwpAQCAtNzYs
NyArNzcsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBlbmNvZGVyLT5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOwogICAgIGVuY29kZXItPmVuY29k
ZShwcmVzZW50ZXJBcHBsaWNhdGlvblBpZCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2Fj
aGVQYXRoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKQEAgLTk3LDcgKzk3LDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGVu
Y29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUoZGlza0NhY2hlRGlyZWN0b3J5KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKQEAgLTExNyw2ICsxMTYsOCBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKSkKQEAgLTE1OCw4ICsxNTksNiBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5z
VVJMQ2FjaGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNo
ZURpc2tDYXBhY2l0eSkpCkBAIC0xOTMsOCArMTkyLDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWIKICNpZiBQTEFURk9STShRVCkKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2YWJjNWVjLi40YTE3Nzg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKQEAgLTU3LDYgKzU3LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyAgICAKICAg
ICBTdHJpbmcgZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKKyAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gdXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50OwogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmU7CkBAIC05NSw3ICs5Niw2IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBwaWRfdCBwcmVzZW50ZXJBcHBs
aWNhdGlvblBpZDsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgbWVyZ2VkIHdpdGgg
Q0ZVUkxDYWNoZSBjb3VudGVycGFydHMgYmVsb3cuCi0gICAgU3RyaW5nIG5zVVJMQ2FjaGVQYXRo
OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAgICB1aW50NjRfdCBu
c1VSTENhY2hlRGlza0NhcGFjaXR5OwogCkBAIC0xMjAsNyArMTIwLDYgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICNpZiBQ
TEFURk9STShRVCkKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTdHJp
bmcgZGlza0NhY2hlRGlyZWN0b3J5OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBmODAyZTkzLi4xMTM1Y2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMjU2LDYgKzI1
NiwxMSBAQCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbG9jYQogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KHRvSW1wbChsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLT5z
dHJpbmcoKSk7CiB9CiAKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVj
dG9yeShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0
b3J5KQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0RGlza0NhY2hlRGlyZWN0b3J5KHRv
SW1wbChkaXNrQ2FjaGVEaXJlY3RvcnkpLT5zdHJpbmcoKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0
RGlzYWJsZVByb2Nlc3NUZXJtaW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPmRpc2FibGVQcm9jZXNzVGVybWluYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4
IDQ5YWVjN2YuLjhmOWU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtNjAsNiArNjAsNyBAQCBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRJY29uRGF0YWJhc2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmlu
Z1JlZiBpYwogLy8gd2Ugc2hvdWxkIHJlYWxseSBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgdG8gYmUg
b24gV2ViUHJlZmVyZW5jZXMgYW5kIGNoYW5nZWFibGUgYXQgcnVudGltZS4KIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S1N0cmluZ1JlZiBkYXRhYmFzZURpcmVjdG9yeSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNr
Q2FjaGVEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRpc2tDYWNo
ZURpcmVjdG9yeSk7CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGVzdGlu
ZyBwdXJwb3NlcyBvbmx5IGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGEgYmV0dGVyCiAvLyBz
b2x1dGlvbiBoYXMgYmVlbiBmb3VuZCBmb3IgdGVzdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAppbmRleCBjODBhYWQ0Li5lMWRlNmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zMDIsNiArMzAyLDcgQEAgdm9pZCBXZWJDb250
ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5k
YXRhYmFzZURpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeSgpOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHBhcmFtZXRlcnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQgPSBn
ZXRwaWQoKTsKQEAgLTkwMyw2ICs5MDQsMTQgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6ZGlza0NhY2hlRGlyZWN0
b3J5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZURpc2tDYWNoZURpcmVjdG9yeTsKKwor
ICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwogdm9p
ZCBXZWJDb250ZXh0OjpzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewog
I2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IGFlZjhhZjkuLjZiZDY4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApA
QCAtMTk3LDYgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgo
Y29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAg
ICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292
ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGlyOyB9CisgICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZURpc2tDYWNoZURpcmVj
dG9yeSA9IGRpcjsgfQogCiAgICAgdm9pZCBlbnN1cmVXZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB3
YXJtSW5pdGlhbFByb2Nlc3MoKTsKQEAgLTI3Myw2ICsyNzQsOSBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKKyAgICBTdHJpbmcgZGlza0Nh
Y2hlRGlyZWN0b3J5KCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSgpIGNvbnN0OworCiAgICAgdm9pZCBoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKICAgICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVp
bnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
Pik7CiAKQEAgLTM0OCw2ICszNTIsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX292ZXJyaWRl
RGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRo
OwogICAgIFN0cmluZyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmlu
ZyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJt
aW5hdGlvbkVuYWJsZWQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi5jZWNjYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTQ3LDYgKzQ3LDEyIEBA
IHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tD
YWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRh
YmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZy
ZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9EYXRhYmFzZXMiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4u
YWJmYjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250
ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRH
dGsuY3BwCkBAIC00NSw2ICs0NSwxMyBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0
RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBX
ZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAg
ICAgR093blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IGZjZDAw
NGUuLmUzYTIzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRl
eHRNYWMubW0KQEAgLTgxLDE4ICs4MSwxMCBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAg
ICAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbi5hcHBlbmRS
YW5nZShtaW1lVHlwZS5iZWdpbigpLCBtaW1lVHlwZS5lbmQoKSk7CiAgICAgfQogCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5Rm91bmRhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOwotICAgIGlmICghY2FjaGVQYXRoKQotICAgICAgICBjYWNoZVBhdGgg
PSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihOU0hvbWVEaXJlY3RvcnkoKSk7Ci0KICAg
ICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKLQot
ICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vz
c0luZm9dIHByb2Nlc3NOYW1lXTsgICAgCi0gICAgcGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCA9
IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07
CiAgICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBbdXJsQ2FjaGUgbWVt
b3J5Q2FwYWNpdHldOwogICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eSA9IFt1
cmxDYWNoZSBkaXNrQ2FwYWNpdHldOwotCi0gICAgQVNTRVJUKCFwYXJhbWV0ZXJzLm5zVVJMQ2Fj
aGVQYXRoLmlzRW1wdHkoKSk7CisgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogCiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9DRVNTKQogICAgIHBhcmFtZXRlcnMuZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdl
VGltZW91dCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JL
ZXk6QCJXZWJLaXREaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0Il07CkBAIC0xMjMs
NyArMTE1LDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
CiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNl
cnZlcjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07CiB9Ci0gICAg
CisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0Ys
IFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIWNhY2hlUGF0aCkK
KyAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNIb21l
RGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkg
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgTlNTdHJpbmcgKmRh
dGFiYXNlc0RpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5kZXggM2YzOGRkMi4uNjA0
MWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRR
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgUVN0cmluZyBzX2Rl
ZmF1bHREYXRhYmFzZURpcmVjdG9yeTsKIHN0YXRpYyBRU3RyaW5nIHNfZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKIAotc3RhdGljIFN0cmluZyBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KCkKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdAogewogICAgIHN0YXRpYyBTdHJpbmcgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
OwogCkBAIC02NSw3ICs2NSw2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiB7CiAgICAgcVJl
Z2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0YXR1
cyIpOwogICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRh
TG9jYXRpb24oKTsKLSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRE
aXNrQ2FjaGVEaXJlY3RvcnkoKTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgc3RhdGlj
IFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdCogbG9jYXRpb24gPSBXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyUXQ6OmNyZWF0ZSh0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSk7CiAgICAgV0tH
ZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcih0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94
eSgpKSwgV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0Ojpwcm92aWRlcihsb2NhdGlvbikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKaW5kZXggOTk2
NGRlMC4uZDk3YWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJDb250ZXh0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNv
bnRleHRXaW4uY3BwCkBAIC04MSw2ICs4MSwxMSBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3Jt
SW52YWxpZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1E
ZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiY2FjaGUiKTsKK30KKwogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRleCAxODc2NTA0Li5mYTg0YTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTIxNyw3ICsy
MTcsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hE
aXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJXRUJLSVRfREFUQUJBU0VfRElSIiwgcGFyYW1l
dGVycy5kYXRhYmFzZURpcmVjdG9yeSk7CiAgICAgYXBwZW5kUmVhZHdyaXRlU2FuZGJveERpcmVj
dG9yeShzYW5kYm94UGFyYW1ldGVycywgIldFQktJVF9MT0NBTFNUT1JBR0VfRElSIiwgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hE
aXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMsICJXRUJLSVRfQVBQTElDQVRJT05fQ0FDSEVfRElS
IiwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsKLSAgICBhcHBlbmRSZWFk
d3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0ZXJzLCAiTlNVUkxfQ0FDSEVfRElS
IiwgcGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCk7CisgICAgYXBwZW5kUmVhZHdyaXRlU2FuZGJv
eERpcmVjdG9yeShzYW5kYm94UGFyYW1ldGVycywgIk5TVVJMX0NBQ0hFX0RJUiIsIHBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFwcGVuZChz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oMCkpOwogCkBAIC0yNjMsMTEgKzI2MywxMSBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycwogICAgICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5hbWUo
KENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7CiAgICAgfQogCi0gICAgaWYgKCFwYXJhbWV0
ZXJzLm5zVVJMQ2FjaGVQYXRoLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeS5pc051bGwoKSkgewogICAgICAgICBOU1VJbnRlZ2VyIGNhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAgICAgICAg
TlNVSW50ZWdlciBjYWNoZURpc2tDYXBhY2l0eSA9IHBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tD
YXBhY2l0eTsKIAotICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50UHJvY2Vzc1VS
TENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0
eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0eSBkaXNr
UGF0aDpwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoXSk7CisgICAgICAgIFJldGFpblB0cjxOU1VS
TENhY2hlPiBwYXJlbnRQcm9jZXNzVVJMQ2FjaGUoQWRvcHROUywgW1tOU1VSTENhY2hlIGFsbG9j
XSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OmNhY2hlTWVtb3J5Q2FwYWNpdHkgZGlza0NhcGFjaXR5
OmNhY2hlRGlza0NhcGFjaXR5IGRpc2tQYXRoOnN0YXRpY19jYXN0PE5TU3RyaW5nKj4ocGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpXSk7CiAgICAgICAgIFtOU1VSTENhY2hlIHNldFNoYXJl
ZFVSTENhY2hlOnBhcmVudFByb2Nlc3NVUkxDYWNoZS5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGJhZGI2NDYuLjc4ZThmMDcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMTQsMTIg
KzMxNCwxMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25z
dCBjaGFyKiBhcmd2W10pCiAKICAgICBtX2NvbnRleHQuYWRvcHQoV0tDb250ZXh0Q3JlYXRlV2l0
aEluamVjdGVkQnVuZGxlUGF0aChpbmplY3RlZEJ1bmRsZVBhdGgoKSkpOwogCi0gICAgY29uc3Qg
Y2hhciogcGF0aCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwotICAgIGlmIChwYXRoKSB7Ci0g
ICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShzdHJsZW4ocGF0aCkgKyBzdHJs
ZW4oIi9EYXRhYmFzZXMiKSArIDEpOwotICAgICAgICBzcHJpbnRmKGRhdGFiYXNlRGlyZWN0b3J5
LmRhdGEoKSwgIiVzJXMiLCBwYXRoLCAiL0RhdGFiYXNlcyIpOwotICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZGF0YWJhc2VEaXJlY3RvcnlXSyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5kYXRhKCkpKTsKLSAgICAgICAgV0tD
b250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkYXRhYmFzZURpcmVj
dG9yeVdLLmdldCgpKTsKKyAgICBpZiAoY2hhciogZHVtcFJlbmRlclRyZWVUZW1wID0gZ2V0ZW52
KCJEVU1QUkVOREVSVFJFRV9URU1QIikpIHsKKyAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJhc2VE
aXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhk
dW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZHVt
cFJlbmRlclRyZWVUZW1wKSk7CisgICAgICAgIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9y
eShtX2NvbnRleHQuZ2V0KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGR1bXBSZW5k
ZXJUcmVlVGVtcCkpOwogICAgIH0KIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKTsK
</data>
<flag name="commit-queue"
          id="167996"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157992</attachid>
            <date>2012-08-13 07:31:36 -0700</date>
            <delta_ts>2012-09-01 05:15:43 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>120813-WK2_temp3</filename>
            <type>text/plain</type>
            <size>15709</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBiNDFlNjRiLi5kOGU0ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC01NCw2
ICs1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogICAgIGVuY29kZXItPmVuY29kZShkYXRhYmFzZURp
cmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKHVybFNjaGVtZXNSZWdpc3RlcmVyZEFzRW1wdHlEb2N1bWVudCk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmUpOwogICAgIGVuY29kZXItPmVuY29k
ZSh1cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxheGF0aW9uSXNGb3JiaWRkZW4pOwpAQCAtNzYs
NyArNzcsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBlbmNvZGVyLT5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOwogICAgIGVuY29kZXItPmVuY29k
ZShwcmVzZW50ZXJBcHBsaWNhdGlvblBpZCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2Fj
aGVQYXRoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKQEAgLTk3LDcgKzk3LDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGVu
Y29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5KTsKLSAgICBlbmNvZGVyLT5lbmNv
ZGUoZGlza0NhY2hlRGlyZWN0b3J5KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKQEAgLTExNyw2ICsxMTYsOCBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKSkKQEAgLTE1OCw4ICsxNTksNiBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5z
VVJMQ2FjaGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNo
ZURpc2tDYXBhY2l0eSkpCkBAIC0xOTMsOCArMTkyLDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWIKICNpZiBQTEFURk9STShRVCkKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2YWJjNWVjLi40YTE3Nzg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKQEAgLTU3LDYgKzU3LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyAgICAKICAg
ICBTdHJpbmcgZGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKKyAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gdXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50OwogICAgIFZlY3RvcjxTdHJp
bmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmU7CkBAIC05NSw3ICs5Niw2IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBwaWRfdCBwcmVzZW50ZXJBcHBs
aWNhdGlvblBpZDsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgbWVyZ2VkIHdpdGgg
Q0ZVUkxDYWNoZSBjb3VudGVycGFydHMgYmVsb3cuCi0gICAgU3RyaW5nIG5zVVJMQ2FjaGVQYXRo
OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAgICB1aW50NjRfdCBu
c1VSTENhY2hlRGlza0NhcGFjaXR5OwogCkBAIC0xMjAsNyArMTIwLDYgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKICNpZiBQ
TEFURk9STShRVCkKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTdHJp
bmcgZGlza0NhY2hlRGlyZWN0b3J5OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBmODAyZTkzLi4xMTM1Y2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMjU2LDYgKzI1
NiwxMSBAQCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbG9jYQogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KHRvSW1wbChsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLT5z
dHJpbmcoKSk7CiB9CiAKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVj
dG9yeShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0
b3J5KQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0RGlza0NhY2hlRGlyZWN0b3J5KHRv
SW1wbChkaXNrQ2FjaGVEaXJlY3RvcnkpLT5zdHJpbmcoKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0
RGlzYWJsZVByb2Nlc3NUZXJtaW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPmRpc2FibGVQcm9jZXNzVGVybWluYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4
IDQ5YWVjN2YuLjhmOWU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtNjAsNiArNjAsNyBAQCBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRJY29uRGF0YWJhc2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmlu
Z1JlZiBpYwogLy8gd2Ugc2hvdWxkIHJlYWxseSBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgdG8gYmUg
b24gV2ViUHJlZmVyZW5jZXMgYW5kIGNoYW5nZWFibGUgYXQgcnVudGltZS4KIFdLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S1N0cmluZ1JlZiBkYXRhYmFzZURpcmVjdG9yeSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVm
IGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNr
Q2FjaGVEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRpc2tDYWNo
ZURpcmVjdG9yeSk7CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGVzdGlu
ZyBwdXJwb3NlcyBvbmx5IGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGEgYmV0dGVyCiAvLyBz
b2x1dGlvbiBoYXMgYmVlbiBmb3VuZCBmb3IgdGVzdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAppbmRleCBjODBhYWQ0Li5lMWRlNmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zMDIsNiArMzAyLDcgQEAgdm9pZCBXZWJDb250
ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5k
YXRhYmFzZURpcmVjdG9yeSA9IGRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeSgpOwogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHBhcmFtZXRlcnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQgPSBn
ZXRwaWQoKTsKQEAgLTkwMyw2ICs5MDQsMTQgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6ZGlza0NhY2hlRGlyZWN0
b3J5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZURpc2tDYWNoZURpcmVjdG9yeTsKKwor
ICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwogdm9p
ZCBXZWJDb250ZXh0OjpzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewog
I2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IGFlZjhhZjkuLjZiZDY4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApA
QCAtMTk3LDYgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgo
Y29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAg
ICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292
ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGlyOyB9CisgICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZURpc2tDYWNoZURpcmVj
dG9yeSA9IGRpcjsgfQogCiAgICAgdm9pZCBlbnN1cmVXZWJQcm9jZXNzKCk7CiAgICAgdm9pZCB3
YXJtSW5pdGlhbFByb2Nlc3MoKTsKQEAgLTI3Myw2ICsyNzQsOSBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKKyAgICBTdHJpbmcgZGlza0Nh
Y2hlRGlyZWN0b3J5KCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSgpIGNvbnN0OworCiAgICAgdm9pZCBoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKICAgICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVp
bnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4g
Pik7CiAKQEAgLTM0OCw2ICszNTIsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX292ZXJyaWRl
RGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRo
OwogICAgIFN0cmluZyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmlu
ZyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJt
aW5hdGlvbkVuYWJsZWQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi5jZWNjYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTQ3LDYgKzQ3LDEyIEBA
IHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tD
YWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRh
YmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZy
ZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9EYXRhYmFzZXMiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4u
M2M4MWQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250
ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRH
dGsuY3BwCkBAIC00NSw2ICs0NSwxMiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQogewogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0
RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCiBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZh
dWx0RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIEdPd25QdHI8Z2NoYXI+IGRhdGFi
YXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Vi
a2l0Z3RrIiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCBmY2QwMDRlLi5lM2EyM2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC04MSwxOCArODEs
MTAgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKICAgICAgICAgcGFyYW1ldGVycy5taW1lVHlw
ZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb24uYXBwZW5kUmFuZ2UobWltZVR5cGUuYmVnaW4oKSwg
bWltZVR5cGUuZW5kKCkpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Fj
aGVQYXRoKEFkb3B0Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBp
ZiAoIWNhY2hlUGF0aCkKLSAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0
cmluZ1JlZj4oTlNIb21lRGlyZWN0b3J5KCkpOwotCiAgICAgTlNVUkxDYWNoZSAqdXJsQ2FjaGUg
PSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07Ci0KLSAgICBwYXJhbWV0ZXJzLnBhcmVudFBy
b2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07ICAg
IAotICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGggPSBbKE5TU3RyaW5nICopY2FjaGVQYXRo
LmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogICAgIHBhcmFtZXRlcnMubnNVUkxD
YWNoZU1lbW9yeUNhcGFjaXR5ID0gW3VybENhY2hlIG1lbW9yeUNhcGFjaXR5XTsKICAgICBwYXJh
bWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHkgPSBbdXJsQ2FjaGUgZGlza0NhcGFjaXR5XTsK
LQotICAgIEFTU0VSVCghcGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aC5pc0VtcHR5KCkpOworICAg
IHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0lu
Zm9dIHByb2Nlc3NOYW1lXTsKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBwYXJh
bWV0ZXJzLmRpc2FibGVQbHVnaW5Qcm9jZXNzTWVzc2FnZVRpbWVvdXQgPSBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0RGlzYWJsZVBsdWdp
blByb2Nlc3NNZXNzYWdlVGltZW91dCJdOwpAQCAtMTIzLDcgKzExNSwxNiBAQCB2b2lkIFdlYkNv
bnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogewogICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6KGlkKW1fZW5oYW5jZWRBY2Nl
c3NpYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOwogfQotICAgIAorCitTdHJpbmcgV2ViQ29udGV4dDo6
cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBXS0NvcHlGb3VuZGF0aW9uQ2FjaGVE
aXJlY3RvcnkoKSk7CisgICAgaWYgKCFjYWNoZVBhdGgpCisgICAgICAgIGNhY2hlUGF0aCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KE5TSG9tZURpcmVjdG9yeSgpKTsKKworICAgIHJl
dHVybiBbKE5TU3RyaW5nICopY2FjaGVQYXRoLmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1Bh
dGhdOworfQorCiBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdAogewogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0YWJh
c2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJDb250ZXh0UXQuY3BwCmluZGV4IDNmMzhkZDIuLjYwNDFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogc3RhdGljIFFTdHJpbmcgc19kZWZhdWx0RGF0YWJhc2VEaXJlY3Rvcnk7
CiBzdGF0aWMgUVN0cmluZyBzX2RlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAKLXN0YXRp
YyBTdHJpbmcgZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpCitTdHJpbmcgV2ViQ29udGV4dDo6
cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBzdGF0aWMg
U3RyaW5nIHNfZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeTsKIApAQCAtNjUsNyArNjUsNiBAQCB2
b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNz
OjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMiKTsKICAgICBwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7Ci0gICAgcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CiAj
aWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblByb3ZpZGVy
UXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVhdGUodG9BUEkoZ2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkoKSkpOwogICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSksIFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXJRdDo6cHJvdmlkZXIobG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCmluZGV4IDk5NjRkZTAuLmQ5N2FmOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcApAQCAtODEsNiAr
ODEsMTEgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKIHsK
IH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9y
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgImNhY2hlIik7
Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNl
cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0K
aW5kZXggMTg3NjUwNC4uZmE4NGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFjLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVNhbmRib3goY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICBhcHBlbmRSZWFkd3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0
ZXJzLCAiV0VCS0lUX0RBVEFCQVNFX0RJUiIsIHBhcmFtZXRlcnMuZGF0YWJhc2VEaXJlY3Rvcnkp
OwogICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRlcnMs
ICJXRUJLSVRfTE9DQUxTVE9SQUdFX0RJUiIsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0
b3J5KTsKICAgICBhcHBlbmRSZWFkd3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJhbWV0
ZXJzLCAiV0VCS0lUX0FQUExJQ0FUSU9OX0NBQ0hFX0RJUiIsIHBhcmFtZXRlcnMuYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSk7Ci0gICAgYXBwZW5kUmVhZHdyaXRlU2FuZGJveERpcmVjdG9yeShz
YW5kYm94UGFyYW1ldGVycywgIk5TVVJMX0NBQ0hFX0RJUiIsIHBhcmFtZXRlcnMubnNVUkxDYWNo
ZVBhdGgpOworICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFt
ZXRlcnMsICJOU1VSTF9DQUNIRV9ESVIiLCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSk7
CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KDApKTsKIApAQCAtMjYzLDExICsyNjMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAg
ICAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNhdGlv
bk5hbWUpOwogICAgIH0KIAotICAgIGlmICghcGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aC5pc051
bGwoKSkgeworICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkp
IHsKICAgICAgICAgTlNVSW50ZWdlciBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5u
c1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAgICAgICAgIE5TVUludGVnZXIgY2FjaGVEaXNrQ2Fw
YWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKLSAgICAgICAgUmV0
YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxDYWNoZShBZG9wdE5TLCBbW05TVVJM
Q2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6Y2FjaGVNZW1vcnlDYXBhY2l0eSBk
aXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1BhdGg6cGFyYW1ldGVycy5uc1VSTENh
Y2hlUGF0aF0pOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50UHJvY2Vzc1VS
TENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0
eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0eSBkaXNr
UGF0aDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
KV0pOwogICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTpwYXJlbnRQcm9jZXNz
VVJMQ2FjaGUuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAppbmRleCBiYWRiNjQ2Li43OGU4ZjA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzE0LDEyICszMTQsMTAgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogCiAgICAg
bV9jb250ZXh0LmFkb3B0KFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5q
ZWN0ZWRCdW5kbGVQYXRoKCkpKTsKIAotICAgIGNvbnN0IGNoYXIqIHBhdGggPSBsaWJyYXJ5UGF0
aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0aCkgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0
YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgpICsgc3RybGVuKCIvRGF0YWJhc2VzIikgKyAxKTsK
LSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksICIlcyVzIiwgcGF0aCwg
Ii9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNl
RGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YWJh
c2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAgICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0
b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJhc2VEaXJlY3RvcnlXSy5nZXQoKSk7CisgICAgaWYg
KGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIp
KSB7CisgICAgICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQo
KSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZHVtcFJlbmRlclRyZWVUZW1wKSk7Cisg
ICAgICAgIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCks
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVtcCkpOworICAg
ICAgICBXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKICAgICB9CiAK
ICAgICBwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCk7Cg==
</data>
<flag name="review"
          id="168016"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="168017"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161824</attachid>
            <date>2012-09-01 05:15:43 -0700</date>
            <delta_ts>2012-09-10 00:30:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>120901-WK2</filename>
            <type>text/plain</type>
            <size>19536</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiOWM1M2Q3Li41MTFkNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDktMDEgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNlcyB1c2UgdGhlIHNhbWUgbG9jYWwg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJDb250ZXh0IGhhcyBiZWVuIGV4dGVuZGVkIGZvciB0aGUgcGFyYWxlbGx5IHN0YXJ0ZWQgV1RS
cyB0byB1c2UKKyAgICAgICAgc2VwYXJhdGUgZGlyZWN0b3JpZXMgZm9yIHRoZWlyIGxvY2FsIHN0
b3JhZ2UuCisgICAgICAgIHBsYXRmb3JtRGlza0NhY2hlRGlyZWN0b3J5IEFQSSBoYXMgYmVlbiBh
ZGRlZCB0byB0aGUgZXhpc3RpbmcKKyAgICAgICAgcGxhdGZvcm1Mb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgYW5kIHBsYXRmb3JtRGF0YUJhc2VEaXJlY3RvcnkgQVBJcy4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlza0NhY2hlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViQ29udGV4dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAx
Mi0wOC0zMCAgTWlrZSBTaWVycmEgIDxtaWtlLnNpZXJyYUBub2tpYS5jb20+CiAKICAgICAgICAg
W1FUXVtXSzJdIHdlYnZpZXcgQVBJIGRvYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGI0MWU2NGIuLmQ4ZTRm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b24KICAgICBlbmNvZGVyLT5lbmNvZGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGlza0NhY2hlRGly
ZWN0b3J5KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0
eURvY3VtZW50KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1Nl
Y3VyZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4
YXRpb25Jc0ZvcmJpZGRlbik7CkBAIC03Niw3ICs3Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rlcikg
Y29uCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXItPmVuY29kZShwYXJlbnRQcm9jZXNz
TmFtZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHByZXNlbnRlckFwcGxpY2F0aW9uUGlkKTsKLSAg
ICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZVBhdGgpOwogICAgIGVuY29kZXItPmVuY29kZShu
c1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkpOwogICAgIGVuY29kZXItPmVuY29kZShuc1VSTENhY2hl
RGlza0NhcGFjaXR5KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1BvcnQpOwpAQCAtOTcsNyArOTcsNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogI2VuZGlm
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkpOwotICAgIGVuY29kZXItPmVuY29kZShkaXNrQ2FjaGVEaXJlY3RvcnkpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQpAQCAtMTE3LDYgKzExNiw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVyZEFzRW1wdHlEb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1
cmUpKQpAQCAtMTU4LDggKzE1OSw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnByZXNl
bnRlckFwcGxpY2F0aW9uUGlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlTWVt
b3J5Q2FwYWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlRGlza0NhcGFjaXR5KSkKQEAgLTE5Myw4ICsxOTIs
NiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRp
c2tDYWNoZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IDZhYmM1ZWMuLjRhMTc3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTcsNiArNTcsNyBAQCBz
dHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3Rvcnk7ICAgIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeTsKICAg
ICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJl
Y3Rvcnk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5
RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3Vy
ZTsKQEAgLTk1LDcgKzk2LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgLy8gRklYTUU6IFRo
ZXNlIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBDRlVSTENhY2hlIGNvdW50ZXJwYXJ0cyBiZWxvdy4K
LSAgICBTdHJpbmcgbnNVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0X3QgbnNVUkxDYWNoZU1lbW9y
eUNhcGFjaXR5OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKQEAgLTEy
MCw3ICsxMjAsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5k
aWYgLy8gUExBVEZPUk0oV0lOKQogI2lmIFBMQVRGT1JNKFFUKQogICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4
IDI4YTcwODIuLjYwMGZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCkBAIC0yNjYsNiArMjY2LDExIEBAIHZvaWQgV0tDb250ZXh0U2V0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBsb2Nh
CiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkodG9JbXBs
KGxvY2FsU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5zZXREaXNrQ2FjaGVEaXJlY3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9yeSktPnN0cmlu
ZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+ZGlzYWJsZVBy
b2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggNDlhZWM3Zi4uOGY5ZTczNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC02MCw2
ICs2MCw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQgcmVhbGx5IGNo
YW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQgY2hhbmdlYWJs
ZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJlY3Rv
cnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlyZWN0b3J5KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKK1dLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogLy8gRklYTUU6IFRoaXMg
aXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkgYW5kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhhcyBiZWVuIGZvdW5kIGZvciB0ZXN0
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDkxODJmMTMu
LmI3N2RjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTMx
NSw2ICszMTUsNyBAQCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3Jl
YXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHBhcmFtZXRlcnMuZGF0YWJh
c2VEaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHBhcmFtZXRlcnMubG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcGFyYW1ldGVy
cy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3RvcnkoKTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlkID0gZ2V0cGlk
KCk7CkBAIC04NzYsNiArODc3LDE0IEBAIFN0cmluZyBXZWJDb250ZXh0Ojpsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OmRpc2tDYWNoZURpcmVjdG9yeSgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnk7CisKKyAgICBy
ZXR1cm4gcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7Cit9CisKIHZvaWQgV2Vi
Q29udGV4dDo6c2V0SFRUUFBpcGVsaW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBkMDdm
YzUxLi43N2VhNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTIw
MCw2ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0
IFN0cmluZyYpOwogICAgIFN0cmluZyBpY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlk
ZUxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRpcjsgfQorICAgIHZvaWQgc2V0RGlza0NhY2hlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnkg
PSBkaXI7IH0KIAogICAgIHZvaWQgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwogICAgIFBhc3NS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKCk7CkBAIC0yNzQsNiAr
Mjc1LDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29u
c3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0OwogCisgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0OworICAgIFN0cmlu
ZyBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKwogICAgIFByb2Nl
c3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nl
c3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM0NSw2ICszNDksNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX292ZXJyaWRlRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fb3ZlcnJp
ZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGly
ZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAg
Ym9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi5jZWNjYjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAK
QEAgLTQ3LDYgKzQ3LDEyIEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29u
dGV4dCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBs
YXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9EYXRh
YmFzZXMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250
ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5j
cHAKaW5kZXggNzFjN2JiZS4uYzc5MTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5
c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNiArNDYs
MTIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKIHsKIH0K
IAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0CiB7CiAgICAgR093blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwg
TlVMTCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1t
CmluZGV4IGZjZDAwNGUuLjI0MjY3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTgxLDE4ICs4MSwxMSBAQCB2b2lkIFdlYkNvbnRleHQ6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYQogICAgICAgICBwYXJhbWV0ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRh
dGlvbi5hcHBlbmRSYW5nZShtaW1lVHlwZS5iZWdpbigpLCBtaW1lVHlwZS5lbmQoKSk7CiAgICAg
fQogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5
Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGlmICghY2FjaGVQYXRoKQotICAgICAg
ICBjYWNoZVBhdGggPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihOU0hvbWVEaXJlY3Rv
cnkoKSk7Ci0KICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVS
TENhY2hlXTsKIAotICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vz
c0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsgICAgCi0gICAgcGFyYW1ldGVycy5uc1VS
TENhY2hlUGF0aCA9IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgc3RyaW5nQnlTdGFuZGFy
ZGl6aW5nUGF0aF07CiAgICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBb
dXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldOwogICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tD
YXBhY2l0eSA9IFt1cmxDYWNoZSBkaXNrQ2FwYWNpdHldOwotCi0gICAgQVNTRVJUKCFwYXJhbWV0
ZXJzLm5zVVJMQ2FjaGVQYXRoLmlzRW1wdHkoKSk7CisgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9j
ZXNzTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHBhcmFtZXRlcnMuZGlzYWJsZVBsdWdpblBy
b2Nlc3NNZXNzYWdlVGltZW91dCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGJvb2xGb3JLZXk6QCJXZWJLaXREaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0
Il07CkBAIC0xMjMsNyArMTE2LDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlk
YXRlQ29udGV4dCgpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQo
KV07CiB9Ci0gICAgCisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQ
YXRoKEFkb3B0Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAo
IWNhY2hlUGF0aCkKKyAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmlu
Z1JlZj4oTlNIb21lRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljYWNo
ZVBhdGguZ2V0KCkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9CisKIFN0cmluZyBXZWJD
b250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
TlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5kZXgg
ZjZhZjg5ZC4uNjYyMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYkNvbnRleHRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNv
bnRleHRRdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMg
UVN0cmluZyBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeTsKIHN0YXRpYyBRU3RyaW5nIHNfZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKIAotc3RhdGljIFN0cmluZyBkZWZhdWx0RGlza0Nh
Y2hlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHN0YXRpYyBTdHJpbmcgc19kZWZhdWx0RGlza0Nh
Y2hlRGlyZWN0b3J5OwogCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKICAgICBjb25zdCBTdHJpbmcgY2FjaGVEaXJlY3Rvcnkg
PSBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5jYWNoZURpcmVjdG9yeSgpOwogCiAgICAgaWYgKGNh
Y2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHREaXNrQ2FjaGVE
aXJlY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVj
dG9yeSgpOwogCiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5OwogfQpAQCAtNzAsNyArNzAsNiBA
QCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9j
ZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMiKTsKICAgICBwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7Ci0gICAgcGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVhdGUodG9BUEko
Z2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSkpOwogICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSksIFdlYkdlb2xvY2F0aW9u
UHJvdmlkZXJRdDo6cHJvdmlkZXIobG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCmluZGV4IDk5NjRkZTAuLmQ5N2FmOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcApAQCAtODEs
NiArODEsMTEgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkK
IHsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgImNhY2hl
Iik7Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVj
dG9yeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFi
YXNlcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMu
bW0KaW5kZXggMTg3NjUwNC4uZmE4NGE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKICAgICBhcHBlbmRSZWFkd3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJh
bWV0ZXJzLCAiV0VCS0lUX0RBVEFCQVNFX0RJUiIsIHBhcmFtZXRlcnMuZGF0YWJhc2VEaXJlY3Rv
cnkpOwogICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBhcmFtZXRl
cnMsICJXRUJLSVRfTE9DQUxTVE9SQUdFX0RJUiIsIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTsKICAgICBhcHBlbmRSZWFkd3JpdGVTYW5kYm94RGlyZWN0b3J5KHNhbmRib3hQYXJh
bWV0ZXJzLCAiV0VCS0lUX0FQUExJQ0FUSU9OX0NBQ0hFX0RJUiIsIHBhcmFtZXRlcnMuYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSk7Ci0gICAgYXBwZW5kUmVhZHdyaXRlU2FuZGJveERpcmVjdG9y
eShzYW5kYm94UGFyYW1ldGVycywgIk5TVVJMX0NBQ0hFX0RJUiIsIHBhcmFtZXRlcnMubnNVUkxD
YWNoZVBhdGgpOworICAgIGFwcGVuZFJlYWR3cml0ZVNhbmRib3hEaXJlY3Rvcnkoc2FuZGJveFBh
cmFtZXRlcnMsICJOU1VSTF9DQUNIRV9ESVIiLCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eSk7CiAKICAgICBzYW5kYm94UGFyYW1ldGVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KDApKTsKIApAQCAtMjYzLDExICsyNjMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMK
ICAgICAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilhcHBsaWNh
dGlvbk5hbWUpOwogICAgIH0KIAotICAgIGlmICghcGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aC5p
c051bGwoKSkgeworICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNOdWxs
KCkpIHsKICAgICAgICAgTlNVSW50ZWdlciBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVy
cy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAgICAgICAgIE5TVUludGVnZXIgY2FjaGVEaXNr
Q2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKLSAgICAgICAg
UmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxDYWNoZShBZG9wdE5TLCBbW05T
VVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6Y2FjaGVNZW1vcnlDYXBhY2l0
eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1BhdGg6cGFyYW1ldGVycy5uc1VS
TENhY2hlUGF0aF0pOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50UHJvY2Vz
c1VSTENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBh
Y2l0eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0eSBk
aXNrUGF0aDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0
b3J5KV0pOwogICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTpwYXJlbnRQcm9j
ZXNzVVJMQ2FjaGUuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU0MDhmMjguLmMwMTVhNTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0wOS0wMSAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5AaW5mLnUtc3plZ2VkLmh1PgorCisgICAg
ICAgIFNlcGFyYXRlIFdlYktpdDIgaW5zdGFuY2VzIHVzZSB0aGUgc2FtZSBsb2NhbCBzdG9yYWdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTY2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RDb250
cm9sbGVyIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGdldCB0aGUgbG9jYWwgc3RvcmFnZSBmcm9tCisg
ICAgICAgIERVTVBSRU5ERVJUUkVFX1RFTVAgZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIGl0J3Mg
dW5kZWZpbmVkCisgICAgICAgIHRoZW4gaXQgd29ya3Mgd2l0aCB0aGUgZGVmYXVsdCBkaXJlY3Rv
cnkuIFRoZSBhaW0gaXMgZm9yIHRoZSBwYXJhbGVsbHkKKyAgICAgICAgc3RhcnRlZCBXVFJzIHRv
IHVzZSBzZXBhcmF0ZSBkaXJlY3Rvcmllcy4gSXQgd2FzIGltcGxlbWVudGVkIGZvciBXSzEKKyAg
ICAgICAgbG9uZyB0aW1lIGFnbyBhbmQgaXQgd29ya3MgZmluZS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZSk6CisKIDIwMTItMDgtMzAgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW05SV1RdIEFkZCBzdXBwb3J0IGZvciByZWNvZ25p
emluZyBhcmJpdHJhcnkgcHJvY2VzcyBuYW1lcyBpbiBjcmFzaCBsaW5lcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAxNmEyM2MxLi42ZTQxZmJiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzE2LDEyICszMTYs
MTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hh
ciogYXJndltdKQogCiAgICAgbV9jb250ZXh0LmFkb3B0KFdLQ29udGV4dENyZWF0ZVdpdGhJbmpl
Y3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoKCkpKTsKIAotICAgIGNvbnN0IGNoYXIq
IHBhdGggPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0aCkgewotICAgICAg
ICBWZWN0b3I8Y2hhcj4gZGF0YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgpICsgc3RybGVuKCIv
RGF0YWJhc2VzIikgKyAxKTsKLSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURpcmVjdG9yeS5kYXRh
KCksICIlcyVzIiwgcGF0aCwgIi9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGRhdGFiYXNlRGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAgICAgIFdLQ29udGV4
dFNldERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJhc2VEaXJlY3RvcnlX
Sy5nZXQoKSk7CisgICAgaWYgKGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGdldGVudigiRFVN
UFJFTkRFUlRSRUVfVEVNUCIpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBk
dW1wUmVuZGVyVHJlZVRlbXBXSyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJl
Y3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVuZGVyVHJlZVRlbXBXSy5nZXQoKSk7CisgICAg
ICAgIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGR1
bXBSZW5kZXJUcmVlVGVtcFdLLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGlza0NhY2hl
RGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0KCkpOwog
ICAgIH0KIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163054</attachid>
            <date>2012-09-10 00:30:36 -0700</date>
            <delta_ts>2012-10-04 01:53:03 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>120910-WK2</filename>
            <type>text/plain</type>
            <size>20004</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZTVmYmYxLi5jZTE0ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDktMTAgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNlcyB1c2UgdGhlIHNhbWUgbG9jYWwg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJDb250ZXh0IGhhcyBiZWVuIGV4dGVuZGVkIGZvciB0aGUgcGFyYWxlbGx5IHN0YXJ0ZWQgV1RS
cyB0byB1c2UKKyAgICAgICAgc2VwYXJhdGUgZGlyZWN0b3JpZXMgZm9yIHRoZWlyIGxvY2FsIHN0
b3JhZ2UuCisgICAgICAgIHBsYXRmb3JtRGlza0NhY2hlRGlyZWN0b3J5IEFQSSBoYXMgYmVlbiBh
ZGRlZCB0byB0aGUgZXhpc3RpbmcKKyAgICAgICAgcGxhdGZvcm1Mb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgYW5kIHBsYXRmb3JtRGF0YUJhc2VEaXJlY3RvcnkgQVBJcy4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlza0NhY2hlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2V0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViQ29udGV4dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisKIDIwMTItMDktMDggIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gTWluaWJyb3dzZXIgY3Jhc2hlcyBvbiBy
aWdodCBtb3VzZSBjbGljawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDQzMzlkNTkuLmU1ZDA3NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTU3LDYgKzU3LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICAgICBl
bmNvZGVyLT5lbmNvZGUoZGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIGVu
Y29kZXItPmVuY29kZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIGVuY29kZXItPmVuY29k
ZShsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIGVuY29kZXItPmVu
Y29kZShkaXNrQ2FjaGVEaXJlY3RvcnkpOworICAgIGVuY29kZXItPmVuY29kZShkaXNrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIGVuY29kZXItPmVuY29kZSh1cmxTY2hlbWVz
UmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQpOwogICAgIGVuY29kZXItPmVuY29kZSh1cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc0Zv
cldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuKTsKQEAgLTgwLDggKzgyLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb24KICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rlci0+ZW5j
b2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocHJlc2VudGVyQXBw
bGljYXRpb25QaWQpOwotICAgIGVuY29kZXItPmVuY29kZShuc1VSTENhY2hlUGF0aCk7Ci0gICAg
ZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUobnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdQb3J0KTsKQEAgLTEwMiw3ICsxMDIsNiBAQCB2b2lkIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIpIGNvbgogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkpOwotICAgIGVuY29kZXItPmVuY29kZShkaXNrQ2FjaGVEaXJl
Y3RvcnkpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQpAQCAtMTI4LDYgKzEyNywxMCBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzU2VjdXJlKSkKQEAgLTE3MCwxMCArMTczLDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBXZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBh
cmFtZXRlcnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJz
Lm5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFj
aXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBh
cmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eSkpCkBAIC0yMDcsOCArMjA2LDYgQEAgYm9v
bCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBXZWIKICNpZiBQTEFURk9STShRVCkKICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2FjaGVE
aXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCA5ZmFlMTdmLi42NDcyYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTYwLDYgKzYwLDggQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBkYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0
eURvY3VtZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1
cmU7CkBAIC0xMDAsOSArMTAyLDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHBpZF90IHByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgLy8gRklYTUU6
IFRoZXNlIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBDRlVSTENhY2hlIGNvdW50ZXJwYXJ0cyBiZWxv
dy4KLSAgICBTdHJpbmcgbnNVUkxDYWNoZVBhdGg7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlOwotCiAgICAgdWludDY0X3QgbnNVUkxD
YWNoZU1lbW9yeUNhcGFjaXR5OwogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7
CiAKQEAgLTEyNiw3ICsxMjUsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogI2lmIFBMQVRGT1JNKFFUKQogICAgIFN0cmlu
ZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05P
VElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCmluZGV4IDI4YTcwODIuLjYwMGZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0yNjYsNiArMjY2LDExIEBAIHZvaWQgV0tDb250ZXh0
U2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmlu
Z1JlZiBsb2NhCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkodG9JbXBsKGxvY2FsU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNv
bnRleHRSZWYpLT5zZXREaXNrQ2FjaGVEaXJlY3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9y
eSktPnN0cmluZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0
aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
ZGlzYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggNDlhZWM3Zi4uOGY5ZTczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5o
CkBAIC02MCw2ICs2MCw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFz
ZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQg
cmVhbGx5IGNoYW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQg
Y2hhbmdlYWJsZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJh
c2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGly
ZWN0b3J5KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9y
eShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KTsKIAogLy8gRklY
TUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2VzIG9ubHkgYW5kIHNo
b3VsZCBiZSByZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhhcyBiZWVuIGZvdW5k
IGZvciB0ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4
IDAwMDMzODcuLjA0YzhjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTMyOSw2ICszMjksMTAgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNv
bnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIGlmICghcGFyYW1ldGVycy5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVE
aXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIHBhcmFtZXRlcnMu
c2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgPSBtX2hpc3RvcnlDbGllbnQuc2hvdWxkVHJhY2tWaXNp
dGVkTGlua3MoKTsKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBtX2NhY2hlTW9kZWw7CiAg
ICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CkBAIC05
MTEsNiArOTE1LDE0IEBAIFN0cmluZyBXZWJDb250ZXh0Ojpsb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OmRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7
CisgICAgaWYgKCFtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcGxh
dGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6
c2V0SFRUUFBpcGVsaW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCBhOGRkYzVmLi5iYjA2
Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTIwMCw2ICsyMDAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYp
OwogICAgIFN0cmluZyBpY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IGRpcjsgfQorICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXI7IH0K
IAogICAgIHZvaWQgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwogICAgIFBhc3NSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQcm9jZXNzKCk7CkBAIC0yNzQsNiArMjc1LDkgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAg
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisg
ICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0OworICAgIFN0cmluZyBwbGF0Zm9y
bURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKwogICAgIFByb2Nlc3NNb2RlbCBt
X3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
PiBtX3Byb2Nlc3NlczsKQEAgLTM0Niw2ICszNTAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X292ZXJyaWRlRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0
YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3By
b2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi4xNWNjODA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTYzLDQg
KzYzLDEwIEBAIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9kYXRh
X2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlIjsKIH0KIAorU3RyaW5nIFdl
YkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKaW5kZXggNzFjN2JiZS4uNzI2MzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMs
NCArNjQsMTAgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmco
c3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9y
bURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCA4Yjdi
ZTk1Li45YWRlYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tCkBAIC04NSwxNCArODUsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogCiAg
ICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gcHJvY2Vzc05hbWVdOyAgICAKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Fj
aGVQYXRoKEFkb3B0Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBp
ZiAoIWNhY2hlUGF0aCkKLSAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0
cmluZ1JlZj4oTlNIb21lRGlyZWN0b3J5KCkpOwotCi0gICAgcGFyYW1ldGVycy5uc1VSTENhY2hl
UGF0aCA9IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgc3RyaW5nQnlTdGFuZGFyZGl6aW5n
UGF0aF07Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmFtZXRlcnMubnNV
UkxDYWNoZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5uc1VS
TENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgQVNTRVJUKCFwYXJhbWV0ZXJzLm5zVVJM
Q2FjaGVQYXRoLmlzRW1wdHkoKSk7Ci0KICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9IFtOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXTsKICAgICBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IFt1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07CiAgICAgcGFyYW1ldGVycy5uc1VS
TENhY2hlRGlza0NhcGFjaXR5ID0gW3VybENhY2hlIGRpc2tDYXBhY2l0eV07CkBAIC0xMjgsNyAr
MTIwLDE2IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiB7
CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZl
cjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07CiB9Ci0gICAgCisK
K1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIFdL
Q29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIWNhY2hlUGF0aCkKKyAg
ICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNIb21lRGly
ZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9y
bURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgTlNTdHJpbmcgKmRhdGFi
YXNlc0RpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9i
amVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5kZXggZjZhZjg5ZC4uNjYyMDlh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBzdGF0aWMgUVN0cmluZyBzX2RlZmF1
bHREYXRhYmFzZURpcmVjdG9yeTsKIHN0YXRpYyBRU3RyaW5nIHNfZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeTsKIAotc3RhdGljIFN0cmluZyBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkK
K1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdAogewogICAgIHN0YXRpYyBTdHJpbmcgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5Owog
CkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkKICAgICBjb25zdCBTdHJpbmcgY2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpjYWNo
ZVN0b3JhZ2UoKS5jYWNoZURpcmVjdG9yeSgpOwogCiAgICAgaWYgKGNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKTsKKyAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogCiAgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5OwogfQpAQCAtNzAsNyArNzAsNiBAQCB2b2lkIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVz
PigiUVByb2Nlc3M6OkV4aXRTdGF0dXMiKTsKICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7Ci0gICAgcGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3RvcnkgPSBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CiAjaWYgRU5BQkxFKEdF
T0xPQ0FUSU9OKQogICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQqIGxvY2F0aW9u
ID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVhdGUodG9BUEkoZ2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoKSkpOwogICAgIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEko
Z2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSksIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJv
dmlkZXIobG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViQ29udGV4dFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNv
bnRleHRXaW4uY3BwCmluZGV4IDk5NjRkZTAuLjQzNmMyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcApAQCAtOTcsNSArOTcsMTAgQEAgU3Ry
aW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwog
fQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiY2FjaGUiKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IGY4NDBlZTcuLjY3ODI1NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpAQCAtMjU2LDE4
ICsyNTYsMTggQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1l
UGVybWFuZW50bHkocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0Nh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5wYXJl
bnRQcm9jZXNzTmFtZS5pc051bGwoKSkgewogICAgICAgICBOU1N0cmluZyAqYXBwbGljYXRpb25O
YW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENv
bnRlbnQiLCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlz
IHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnBhcmVudFBy
b2Nlc3NOYW1lXTsKICAgICAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmlu
Z1JlZilhcHBsaWNhdGlvbk5hbWUpOwogICAgIH0KIAotICAgIGlmICghcGFyYW1ldGVycy5uc1VS
TENhY2hlUGF0aC5pc051bGwoKSkgeworICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAgTlNVSW50ZWdlciBjYWNoZU1lbW9yeUNhcGFjaXR5
ID0gcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAgICAgICAgIE5TVUludGVn
ZXIgY2FjaGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7
CiAKLSAgICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxDYWNoZShB
ZG9wdE5TLCBbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6Y2FjaGVN
ZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1BhdGg6cGFy
YW1ldGVycy5uc1VSTENhY2hlUGF0aF0pOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4g
cGFyZW50UHJvY2Vzc1VSTENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdp
dGhNZW1vcnlDYXBhY2l0eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURp
c2tDYXBhY2l0eSBkaXNrUGF0aDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+KHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5KV0pOwogICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNo
ZTpwYXJlbnRQcm9jZXNzVVJMQ2FjaGUuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3ODhhZDIuLjRhNTRmZWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0wOS0xMCAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5AaW5mLnUtc3plZ2Vk
Lmh1PgorCisgICAgICAgIFNlcGFyYXRlIFdlYktpdDIgaW5zdGFuY2VzIHVzZSB0aGUgc2FtZSBs
b2NhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RDb250cm9sbGVyIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGdldCB0aGUgbG9jYWwgc3Rv
cmFnZSBmcm9tCisgICAgICAgIERVTVBSRU5ERVJUUkVFX1RFTVAgZW52aXJvbm1lbnQgdmFyaWFi
bGUuIElmIGl0J3MgdW5kZWZpbmVkCisgICAgICAgIHRoZW4gaXQgd29ya3Mgd2l0aCB0aGUgZGVm
YXVsdCBkaXJlY3RvcnkuIFRoZSBhaW0gaXMgZm9yIHRoZSBwYXJhbGVsbHkKKyAgICAgICAgc3Rh
cnRlZCBXVFJzIHRvIHVzZSBzZXBhcmF0ZSBkaXJlY3Rvcmllcy4gSXQgd2FzIGltcGxlbWVudGVk
IGZvciBXSzEKKyAgICAgICAgbG9uZyB0aW1lIGFnbyBhbmQgaXQgd29ya3MgZmluZS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisKIDIwMTItMDktMDggIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBOZXcg
ZmFzdC9ldmVudHMvdGFiLWZvY3VzLWxpbmstaW4tY2FudmFzIGZhaWxzIGZyb20gcjEyNjkwOApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAwMzZlYjU0Li5m
MjczZjNiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
MzE3LDEyICszMTcsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJn
YywgY29uc3QgY2hhciogYXJndltdKQogCiAgICAgbV9jb250ZXh0LmFkb3B0KFdLQ29udGV4dENy
ZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoKCkpKTsKIAotICAg
IGNvbnN0IGNoYXIqIHBhdGggPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0
aCkgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgp
ICsgc3RybGVuKCIvRGF0YWJhc2VzIikgKyAxKTsKLSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURp
cmVjdG9yeS5kYXRhKCksICIlcyVzIiwgcGF0aCwgIi9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNlRGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAg
ICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJh
c2VEaXJlY3RvcnlXSy5nZXQoKSk7CisgICAgaWYgKGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBkdW1wUmVuZGVyVHJlZVRlbXBXSyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0
RGF0YWJhc2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVuZGVyVHJlZVRlbXBXSy5n
ZXQoKSk7CisgICAgICAgIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShtX2NvbnRl
eHQuZ2V0KCksIGR1bXBSZW5kZXJUcmVlVGVtcFdLLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0
U2V0RGlza0NhY2hlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1w
V0suZ2V0KCkpOwogICAgIH0KIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167054</attachid>
            <date>2012-10-04 01:53:03 -0700</date>
            <delta_ts>2012-10-04 06:34:42 -0700</delta_ts>
            <desc>patch for ews</desc>
            <filename>121004-WK2-temp</filename>
            <type>text/plain</type>
            <size>23541</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCBjYzJjZWNjLi4zMGI5M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC01OCw2
ICs1OCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogICAgIGVuY29kZXItPmVuY29kZShk
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURp
cmVjdG9yeSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOwor
ICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3Vt
ZW50KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSk7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4YXRpb25J
c0ZvcmJpZGRlbik7CkBAIC04NSw4ICs4OSw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXItPmVuY29kZShwYXJlbnRQcm9jZXNzTmFtZSk7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHByZXNlbnRlckFwcGxpY2F0aW9uUGlkKTsKLSAgICBlbmNv
ZGVyLT5lbmNvZGUobnNVUkxDYWNoZVBhdGgpOwotICAgIGVuY29kZXItPmVuY29kZShuc1VSTENh
Y2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2FjaGVN
ZW1vcnlDYXBhY2l0eSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2FjaGVEaXNrQ2FwYWNp
dHkpOwogICAgIGVuY29kZXItPmVuY29kZShhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCk7CkBA
IC05NSw3ICs5Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAgICAgZW5jb2Rlci0+ZW5j
b2RlKHNob3VsZEZvcmNlU2NyZWVuRm9udFN1YnN0aXR1dGlvbik7CiAjZWxpZiBQTEFURk9STShX
SU4pCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpOwotICAg
IGVuY29kZXItPmVuY29kZShjZlVSTENhY2hlUGF0aCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNm
VVJMQ2FjaGVEaXNrQ2FwYWNpdHkpOwogICAgIGVuY29kZXItPmVuY29kZShjZlVSTENhY2hlTWVt
b3J5Q2FwYWNpdHkpOwogICAgIGVuY29kZXItPmVuY29kZShpbml0aWFsSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk7CkBAIC0xMDYsMTAgKzEwNyw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAg
ICAgICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBzdG9yYWdlU2Vzc2lvbik7CiAjZW5kaWYg
Ly8gVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oUVQpCi0g
ICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOwotICAgIGVuY29kZXIt
PmVuY29kZShkaXNrQ2FjaGVEaXJlY3RvcnkpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIGVuY29kZXItPmVu
Y29kZShub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CkBAIC0xMzQsNiArMTMxLDE0IEBAIGJvb2wg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURv
Y3VtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSkpCkBAIC0xODQsMTAgKzE4
OSw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlk
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFt
ZXRlcnMubnNVUkxDYWNoZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0
ZXJzLm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHkp
KQpAQCAtMjAzLDggKzIwNCw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAjZWxpZiBQTEFU
Rk9STShXSU4pCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jZlVSTENhY2hlRGlza0Nh
cGFjaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHBhcmFtZXRlcnMuY2ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KSkKQEAgLTIyMCwxMyArMjE5LDYg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWIKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VT
U0lPTlMpCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjdhYjMzMC4uNzg0ZWRmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC02MCw2ICs2MCwxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBT
dHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBk
aXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3RyaW5nIGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVz
UmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc1NlY3VyZTsKQEAgLTEwMywxMCArMTA3LDYgQEAgc3RydWN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgcGlkX3QgcHJlc2VudGVyQXBwbGljYXRpb25Q
aWQ7CiAKLSAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIG1lcmdlZCB3aXRoIENGVVJMQ2Fj
aGUgY291bnRlcnBhcnRzIGJlbG93LgotICAgIFN0cmluZyBuc1VSTENhY2hlUGF0aDsKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbnNVUkxDYWNoZVBhdGhFeHRlbnNpb25IYW5kbGU7Ci0K
ICAgICB1aW50NjRfdCBuc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAgICAgdWludDY0X3QgbnNV
UkxDYWNoZURpc2tDYXBhY2l0eTsKIApAQCAtMTE3LDcgKzExNyw2IEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGJvb2wgc2hvdWxkRm9yY2VTY3JlZW5Gb250
U3Vic3RpdHV0aW9uOwogI2VsaWYgUExBVEZPUk0oV0lOKQotICAgIFN0cmluZyBjZlVSTENhY2hl
UGF0aDsKICAgICB1aW50NjRfdCBjZlVSTENhY2hlRGlza0NhcGFjaXR5OwogICAgIHVpbnQ2NF90
IGNmVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKIApAQCAtMTI5LDEwICsxMjgsNiBAQCBzdHJ1Y3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
c2VyaWFsaXplZERlZmF1bHRTdG9yYWdlU2Vzc2lvbjsKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9S
QUdFU0VTU0lPTlMpCiAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQotI2lmIFBMQVRGT1JNKFFUKQot
ICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBkaXNrQ2FjaGVE
aXJlY3Rvcnk7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNh
dGlvblBlcm1pc3Npb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAppbmRleCAyOGE3MDgyLi41NzQwYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMjY2LDYgKzI2NiwxNiBAQCB2b2lkIFdLQ29u
dGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tT
dHJpbmdSZWYgbG9jYQogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KHRvSW1wbChsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0b3J5KQoreworICAgIHRvSW1w
bChjb250ZXh0UmVmKS0+c2V0RGlza0NhY2hlRGlyZWN0b3J5KHRvSW1wbChkaXNrQ2FjaGVEaXJl
Y3RvcnkpLT5zdHJpbmcoKSk7Cit9CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIGNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRDb29r
aWVTdG9yYWdlRGlyZWN0b3J5KHRvSW1wbChjb29raWVTdG9yYWdlRGlyZWN0b3J5KS0+c3RyaW5n
KCkpOworfQorCiB2b2lkIFdLQ29udGV4dERpc2FibGVQcm9jZXNzVGVybWluYXRpb24oV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5kaXNhYmxlUHJv
Y2Vzc1Rlcm1pbmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dFByaXZhdGUuaAppbmRleCA0OWFlYzdmLi40MjQ3Y2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAgLTYwLDYg
KzYwLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aChXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgaWMKIC8vIHdlIHNob3VsZCByZWFsbHkgY2hh
bmdlIHRoZXNlIHNldHRpbmdzIHRvIGJlIG9uIFdlYlByZWZlcmVuY2VzIGFuZCBjaGFuZ2VhYmxl
IGF0IHJ1bnRpbWUuCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREYXRhYmFzZURpcmVjdG9y
eShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgZGF0YWJhc2VEaXJlY3RvcnkpOwog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1N0cmluZ1JlZiBkaXNrQ2FjaGVEaXJlY3RvcnkpOworV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0Q29va2llU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tT
dHJpbmdSZWYgY29va2llU3RvcmFnZURpcmVjdG9yeSk7CiAKIC8vIEZJWE1FOiBUaGlzIGlzIGEg
d29ya2Fyb3VuZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5IGFuZCBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIGEgYmV0dGVyCiAvLyBzb2x1dGlvbiBoYXMgYmVlbiBmb3VuZCBmb3IgdGVzdGluZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCA0NmFhZDAxLi4yMjhm
ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zMjksNiAr
MzI5LDE0IEBAIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVO
ZXdXZWJQcm9jZXNzKCkKICAgICBpZiAoIXBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeSgpOworICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworCisgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5
ID0gY29va2llU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGlmICghcGFyYW1ldGVycy5jb29raWVT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVu
c2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOworCiAgICAgcGFyYW1ldGVycy5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyA9IG1f
aGlzdG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpOwogICAgIHBhcmFtZXRlcnMu
Y2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKQEAgLTkzMCw2ICs5MzgsMjIgQEAgU3RyaW5nIFdlYkNv
bnRleHQ6OmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXRmb3Jt
RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6
ZGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3ZlcnJpZGVEaXNrQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZURpc2tDYWNo
ZURpcmVjdG9yeTsKKworICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rv
cnkoKTsKK30KKworU3RyaW5nIFdlYkNvbnRleHQ6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAoreworICAgIGlmICghbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CisK
KyAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpOworfQor
CiB2b2lkIFdlYkNvbnRleHQ6OnNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
aW5kZXggMjUwZWFlOS4uMDE1YWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCkBAIC0yMDQsNiArMjA0LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWNvbkRhdGFiYXNl
UGF0aChjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgaWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyKSB7
IG1fb3ZlcnJpZGVMb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkaXI7IH0KKyAgICB2b2lkIHNldERp
c2tDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlRGlza0NhY2hl
RGlyZWN0b3J5ID0gZGlyOyB9CisgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gZGly
OyB9CiAKICAgICB2b2lkIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICBQYXNzUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlTmV3V2ViUHJvY2VzcygpOwpAQCAtMjc4LDYgKzI4MCwx
MiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
ICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7
CiAKKyAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7CisgICAgU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0OworCisgICAgU3RyaW5nIGNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKKyAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0
Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OworCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJv
Y2Vzc01vZGVsOwogICAgIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiA+IG1f
cHJvY2Vzc2VzOwpAQCAtMzUyLDYgKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fb3Zl
cnJpZGVEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9vdmVycmlkZUljb25EYXRhYmFz
ZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVMb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
U3RyaW5nIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fb3ZlcnJp
ZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlv
bkVuYWJsZWQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi44YjM2YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTYzLDQgKzYzLDE2IEBAIFN0cmlu
ZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dAogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9kYXRhX2hvbWVfZ2V0KCkpICsg
Ii9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlIjsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRm
b3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcApp
bmRleCBkMzVhZWZmLi5hZmViMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29udGV4dEd0ay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw0ICs2NCwxNiBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhzdG9yYWdlRGly
ZWN0b3J5LmdldCgpKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRD
b29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KaW5kZXggNjhjOGUxMS4u
MjVmNDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250
ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1h
Yy5tbQpAQCAtODUsMTQgKzg1LDYgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIAogICAgIHBh
cmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
IHByb2Nlc3NOYW1lXTsgICAgCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0
aChBZG9wdENGLCBXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgaWYgKCFj
YWNoZVBhdGgpCi0gICAgICAgIGNhY2hlUGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KE5TSG9tZURpcmVjdG9yeSgpKTsKLQotICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGgg
PSBbKE5TU3RyaW5nICopY2FjaGVQYXRoLmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhd
OwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoLCBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoRXh0
ZW5zaW9uSGFuZGxlKTsKLSAgICBBU1NFUlQoIXBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGguaXNF
bXB0eSgpKTsKLQogICAgIE5TVVJMQ2FjaGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVk
VVJMQ2FjaGVdOwogICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gW3Vy
bENhY2hlIG1lbW9yeUNhcGFjaXR5XTsKICAgICBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSBbdXJsQ2FjaGUgZGlza0NhcGFjaXR5XTsKQEAgLTEzMSw3ICsxMjMsMjIgQEAgdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKIHsKICAgICBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOihpZCltX2VuaGFu
Y2VkQWNjZXNzaWJpbGl0eU9ic2VydmVyLmdldCgpXTsKIH0KLSAgICAKKworU3RyaW5nIFdlYkNv
bnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5Rm91bmRhdGlv
bkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGlmICghY2FjaGVQYXRoKQorICAgICAgICBjYWNoZVBh
dGggPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihOU0hvbWVEaXJlY3RvcnkoKSk7CisK
KyAgICByZXR1cm4gWyhOU1N0cmluZyAqKWNhY2hlUGF0aC5nZXQoKSBzdHJpbmdCeVN0YW5kYXJk
aXppbmdQYXRoXTsKK30KKworU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBub3QgaW1wbGVtZW50
ZWQhCisgICAgcmV0dXJuIFtAIiIgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9CisKIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0
CiB7CiAgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5j
cHAKaW5kZXggZjZhZjg5ZC4uNDUzMjlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1dlYkNvbnRleHRRdC5jcHAKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0YXRpYyBRU3RyaW5nIHNfZGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5Owogc3RhdGljIFFT
dHJpbmcgc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5Oworc3RhdGljIFFTdHJpbmcgc19k
ZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeTsKIAotc3RhdGljIFN0cmluZyBkZWZhdWx0RGlz
a0NhY2hlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNr
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHN0YXRpYyBTdHJpbmcgc19kZWZhdWx0RGlz
a0NhY2hlRGlyZWN0b3J5OwogCkBAIC02MSw3ICs2Miw3IEBAIFN0cmluZyBXZWJDb250ZXh0Ojph
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKICAgICBjb25zdCBTdHJpbmcgY2FjaGVEaXJlY3Rv
cnkgPSBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5jYWNoZURpcmVjdG9yeSgpOwogCiAgICAgaWYg
KGNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURp
cmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5OwogfQpAQCAtNjksOCArNzAs
NiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB2b2lk
IFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJv
Y2Vzczo6RXhpdFN0YXR1cz4oIlFQcm9jZXNzOjpFeGl0U3RhdHVzIik7Ci0gICAgcGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdERhdGFMb2NhdGlvbigpOwotICAgIHBh
cmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgp
OwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBzdGF0aWMgV2ViR2VvbG9jYXRpb25Qcm92
aWRlclF0KiBsb2NhdGlvbiA9IFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6Y3JlYXRlKHRvQVBJ
KGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkpKTsKICAgICBXS0dlb2xvY2F0aW9uTWFuYWdlclNl
dFByb3ZpZGVyKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkpLCBXZWJHZW9sb2NhdGlv
blByb3ZpZGVyUXQ6OnByb3ZpZGVyKGxvY2F0aW9uKSk7CkBAIC0xMDYsNCArMTA1LDEzIEBAIFN0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAogICAgIHJldHVybiBzX2RlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiB9CiAKK1N0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKK3sKKyAgICBpZiAoIXNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeTsKKwor
ICAgIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9u
KCk7CisgICAgcmV0dXJuIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2Vi
Q29udGV4dFdpbi5jcHAKaW5kZXggOTk2NGRlMC4uNjM3YjJhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCkBAIC02MCwxMiArNjAsMTIgQEAg
dm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKICAgICBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSBDRlVSTENhY2hlRGlza0NhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpOwogICAgIHBh
cmFtZXRlcnMuY2ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gQ0ZVUkxDYWNoZU1lbW9yeUNhcGFj
aXR5KGNmdXJsQ2FjaGUuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVS
TENhY2hlUGF0aChBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOwot
ICAgIHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGggPSBTdHJpbmcoY2ZVUkxDYWNoZVBhdGguZ2V0
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkxDYWNoZVBhdGgoQWRvcHRDRiwg
Q2FjaGV3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOworICAgIHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmVVJMQ2FjaGVQYXRoKTsKICAgICAvLyBSZW1v
dmUgdGhlIGVuZGluZyAnXCcgKG5lY2Vzc2FyeSB0byBoYXZlIENGTmV0d29yayBmaW5kIHRoZSBD
YWNoZSBmaWxlKS4KLSAgICBBU1NFUlQocGFyYW1ldGVycy5jZlVSTENhY2hlUGF0aC5sZW5ndGgo
KSk7Ci0gICAgaWYgKHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGhbcGFyYW1ldGVycy5jZlVSTENh
Y2hlUGF0aC5sZW5ndGgoKSAtIDFdID09ICdcXCcpCi0gICAgICAgIHBhcmFtZXRlcnMuY2ZVUkxD
YWNoZVBhdGgucmVtb3ZlKHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGgubGVuZ3RoKCkgLSAxKTsK
KyAgICBBU1NFUlQocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkubGVuZ3RoKCkpOworICAg
IGlmIChwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5lbmRzV2l0aChVQ2hhcignXFwnKSkp
CisgICAgICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnJlbW92ZShwYXJhbWV0ZXJz
LmRpc2tDYWNoZURpcmVjdG9yeS5sZW5ndGgoKSAtIDEpOwogCiAjaWYgVVNFKENGVVJMU1RPUkFH
RVNFU1NJT05TKQogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0
cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5m
b0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZp
ZXJLZXkpKSk7CkBAIC05Nyw1ICs5NywxNiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1E
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJjYWNoZSIpOworfQorCitTdHJpbmcgV2ViQ29udGV4dDo6
cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IG5vdCBpbXBsZW1lbnRlZCEKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbQppbmRleCBmZjc1Y2ViLi4xZmUwN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTI1NiwxOCArMjU2LDE4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5k
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5
KHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05h
bWUuaXNOdWxsKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZp
c2libGUgbmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGlj
YXRpb24gbmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZV07
CiAgICAgICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGlj
YXRpb25OYW1lKTsKICAgICB9CiAKLSAgICBpZiAoIXBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGgu
aXNOdWxsKCkpIHsKKyAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzTnVs
bCgpKSB7CiAgICAgICAgIE5TVUludGVnZXIgY2FjaGVNZW1vcnlDYXBhY2l0eSA9IHBhcmFtZXRl
cnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5OwogICAgICAgICBOU1VJbnRlZ2VyIGNhY2hlRGlz
a0NhcGFjaXR5ID0gcGFyYW1ldGVycy5uc1VSTENhY2hlRGlza0NhcGFjaXR5OwogCi0gICAgICAg
IFJldGFpblB0cjxOU1VSTENhY2hlPiBwYXJlbnRQcm9jZXNzVVJMQ2FjaGUoQWRvcHROUywgW1tO
U1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OmNhY2hlTWVtb3J5Q2FwYWNp
dHkgZGlza0NhcGFjaXR5OmNhY2hlRGlza0NhcGFjaXR5IGRpc2tQYXRoOnBhcmFtZXRlcnMubnNV
UkxDYWNoZVBhdGhdKTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nl
c3NVUkxDYWNoZShBZG9wdE5TLCBbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2Fw
YWNpdHk6Y2FjaGVNZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkg
ZGlza1BhdGg6c3RhdGljX2Nhc3Q8TlNTdHJpbmcqPihwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeSldKTsKICAgICAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6cGFyZW50UHJv
Y2Vzc1VSTENhY2hlLmdldCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggODA5YWFjYi4uZjBjMTk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmIChkZWZhdWx0U3Rv
cmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGguY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwg
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgaWYg
KCFjYWNoZVBhdGgpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCA0YmY1M2Q0Li4wNzY1OWRm
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Ry
aXZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Ry
aXZlci5weQpAQCAtMjcwLDYgKzI3MCw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgIGRl
ZiBfc3RhcnQoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgogICAgICAgICBzZWxm
LnN0b3AoKQogICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNlbGYuX3BvcnQuX2ZpbGVz
eXN0ZW0ubWtkdGVtcChwcmVmaXg9JyVzLScgJSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCisg
ICAgICAgIHByaW50IHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikKICAgICAgICAgc2VydmVyX25h
bWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKICAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxm
Ll9wb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKICAgICAgICAgZW52
aXJvbm1lbnRbJ0RZTERfTElCUkFSWV9QQVRIJ10gPSBzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMzNkOTEzZi4u
OTBkM2EzZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTMyOCwxMiArMzI4LDEyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFy
Z2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBtX2NvbnRleHQuYWRvcHQoV0tDb250ZXh0Q3Jl
YXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChpbmplY3RlZEJ1bmRsZVBhdGgoKSkpOwogICAgIG1f
Z2VvbG9jYXRpb25Qcm92aWRlciA9IGFkb3B0UHRyKG5ldyBHZW9sb2NhdGlvblByb3ZpZGVyTW9j
ayhtX2NvbnRleHQuZ2V0KCkpKTsKIAotICAgIGNvbnN0IGNoYXIqIHBhdGggPSBsaWJyYXJ5UGF0
aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0aCkgewotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0
YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgpICsgc3RybGVuKCIvRGF0YWJhc2VzIikgKyAxKTsK
LSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksICIlcyVzIiwgcGF0aCwg
Ii9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNl
RGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZGF0YWJh
c2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAgICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0
b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJhc2VEaXJlY3RvcnlXSy5nZXQoKSk7CisgICAgaWYg
KGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygp
KSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkdW1wUmVuZGVyVHJlZVRlbXBX
SyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkdW1wUmVuZGVyVHJlZVRl
bXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkobV9jb250ZXh0Lmdl
dCgpLCBkdW1wUmVuZGVyVHJlZVRlbXBXSy5nZXQoKSk7CisgICAgICAgIFdLQ29udGV4dFNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGR1bXBSZW5kZXJUcmVlVGVtcFdL
LmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0b3J5KG1fY29udGV4
dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0KCkpOworICAgICAgICBXS0NvbnRleHRT
ZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVU
ZW1wV0suZ2V0KCkpOwogICAgIH0KIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKTsK
</data>
<flag name="commit-queue"
          id="179610"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167094</attachid>
            <date>2012-10-04 06:34:42 -0700</date>
            <delta_ts>2012-10-08 06:18:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>121004-WK2-temp-v2</filename>
            <type>text/plain</type>
            <size>26945</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMzU2YjBmLi5mODI0NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTItMTAtMDQgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNlcyB1c2UgdGhlIHNhbWUgbG9jYWwg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b3IgbXVsdGktdGhyZWFkZWQgKHBhcmFsbGVsKSB0ZXN0aW5nLCBXVFJzIG11c3Qgbm90IHdyaXRl
IGludG8gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgICAgICBUbyBhdm9pZCB0aGF0LCByZXN1bHRz
IG5lZWQgdG8gYmUgc3RvcmVkIGluIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5IERVTVBSRU5ERVJU
UkVFX1RFTVAKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBpcyBjcmVhdGVkIGJ5
IE5SV1QuIFRvIGRvIHRoYXQsIFdlYkNvbnRleHQgbmVlZGVkIHRvIGJlCisgICAgICAgIGV4dGVu
ZGVkIHdpdGggZGlza0NhY2hlRGlyZWN0b3J5IGFuZCBjb29raWVTdG9yYWdlRGlyZWN0b3J5IEFQ
SXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0
b3J5KToKKyAgICAgICAgKFdLQ29udGV4dFNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlza0NhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldERpc2tDYWNoZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZh
dWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1
bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDEyLTEw
LTAyICBIdWdvIFBhcmVudGUgTGltYSAgPGh1Z28ubGltYUBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFtXSzJdIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaCB1c2VzIFdlYkNvcmUgY2xh
c3Mgd2l0aG91dCBkZWNsYXJpbmcgdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGNjMmNlY2MuLjMwYjkz
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTU4LDYgKzU4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rlcikg
Y29uCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUobG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoZGlza0NhY2hlRGlyZWN0b3J5KTsKKyAgICBlbmNvZGVyLT5lbmNvZGUo
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUo
Y29va2llU3RvcmFnZURpcmVjdG9yeSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIGVuY29kZXItPmVuY29kZSh1cmxTY2hl
bWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQpOwogICAgIGVuY29kZXItPmVuY29kZSh1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1l
c0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuKTsKQEAgLTg1LDggKzg5LDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rlci0+
ZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocHJlc2VudGVy
QXBwbGljYXRpb25QaWQpOwotICAgIGVuY29kZXItPmVuY29kZShuc1VSTENhY2hlUGF0aCk7Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsKICAgICBlbmNvZGVyLT5l
bmNvZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKQEAgLTk1LDcgKzk3LDYgQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyKSBjb24KICAgICBlbmNvZGVyLT5lbmNvZGUoc2hvdWxkRm9yY2VTY3JlZW5Gb250U3Vic3Rp
dHV0aW9uKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBlbmNvZGVyLT5lbmNvZGUoc2hvdWxk
UGFpbnROYXRpdmVDb250cm9scyk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGNmVVJMQ2FjaGVQYXRo
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoY2ZVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKGNmVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKGluaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKQEAgLTEwNiwxMCArMTA3LDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICAgICAgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIs
IHN0b3JhZ2VTZXNzaW9uKTsKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAj
ZW5kaWYKLSNpZiBQTEFURk9STShRVCkKLSAgICBlbmNvZGVyLT5lbmNvZGUoY29va2llU3RvcmFn
ZURpcmVjdG9yeSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURpcmVjdG9yeSk7Ci0j
ZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTsK
QEAgLTEzNCw2ICsxMzEsMTQgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubG9jYWxTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMu
ZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVj
dG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShw
YXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzU2VjdXJlKSkKQEAgLTE4NCwxMCArMTg5LDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWIK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMucHJlc2VudGVyQXBwbGljYXRpb25QaWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5zVVJM
Q2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eSkpCkBAIC0yMDMsOCArMjA0LDYgQEAgYm9vbCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBXZWIKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShwYXJhbWV0ZXJzLnNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jZlVSTENhY2hl
UGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShw
YXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jZlVSTENhY2hlTWVtb3J5Q2Fw
YWNpdHkpKQpAQCAtMjIwLDEzICsyMTksNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYgogI2Vu
ZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
UVQpCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGly
ZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi0KICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubm90aWZpY2F0
aW9uUGVybWlzc2lvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA2N2Fi
MzMwLi43ODRlZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTYwLDYgKzYwLDEwIEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKKyAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVyZEFzRW1wdHlEb2N1bWVudDsKICAg
ICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlOwpAQCAtMTAzLDEw
ICsxMDcsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBw
aWRfdCBwcmVzZW50ZXJBcHBsaWNhdGlvblBpZDsKIAotICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91
bGQgYmUgbWVyZ2VkIHdpdGggQ0ZVUkxDYWNoZSBjb3VudGVycGFydHMgYmVsb3cuCi0gICAgU3Ry
aW5nIG5zVVJMQ2FjaGVQYXRoOwotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBuc1VSTENh
Y2hlUGF0aEV4dGVuc2lvbkhhbmRsZTsKLQogICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVNZW1vcnlD
YXBhY2l0eTsKICAgICB1aW50NjRfdCBuc1VSTENhY2hlRGlza0NhcGFjaXR5OwogCkBAIC0xMTcs
NyArMTE3LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAg
Ym9vbCBzaG91bGRGb3JjZVNjcmVlbkZvbnRTdWJzdGl0dXRpb247CiAjZWxpZiBQTEFURk9STShX
SU4pCi0gICAgU3RyaW5nIGNmVVJMQ2FjaGVQYXRoOwogICAgIHVpbnQ2NF90IGNmVVJMQ2FjaGVE
aXNrQ2FwYWNpdHk7CiAgICAgdWludDY0X3QgY2ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5OwogCkBA
IC0xMjksMTAgKzEyOCw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzZXJpYWxpemVkRGVmYXVsdFN0b3JhZ2VTZXNzaW9u
OwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZiAvLyBQTEFURk9S
TShXSU4pCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnk7Ci0gICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKLSNlbmRpZgogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBIYXNo
TWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDI4YTcwODIuLjU3NDBjOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0y
NjYsNiArMjY2LDE2IEBAIHZvaWQgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBsb2NhCiAgICAgdG9JbXBsKGNvbnRl
eHRSZWYpLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkodG9JbXBsKGxvY2FsU3RvcmFnZURpcmVj
dG9yeSktPnN0cmluZygpKTsKIH0KIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGlza0Nh
Y2hlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBkaXNrQ2Fj
aGVEaXJlY3RvcnkpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkodG9JbXBsKGRpc2tDYWNoZURpcmVjdG9yeSktPnN0cmluZygpKTsKK30KKworV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0Q29va2llU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tTdHJpbmdSZWYgY29va2llU3RvcmFnZURpcmVjdG9yeSkKK3sKKyAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkodG9JbXBsKGNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkpLT5zdHJpbmcoKSk7Cit9CisKIHZvaWQgV0tDb250ZXh0RGlzYWJs
ZVByb2Nlc3NUZXJtaW5hdGlvbihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICB0b0lt
cGwoY29udGV4dFJlZiktPmRpc2FibGVQcm9jZXNzVGVybWluYXRpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDQ5YWVj
N2YuLjQyNDdjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dFByaXZhdGUuaApAQCAtNjAsNiArNjAsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRJY29uRGF0YWJhc2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBp
YwogLy8gd2Ugc2hvdWxkIHJlYWxseSBjaGFuZ2UgdGhlc2Ugc2V0dGluZ3MgdG8gYmUgb24gV2Vi
UHJlZmVyZW5jZXMgYW5kIGNoYW5nZWFibGUgYXQgcnVudGltZS4KIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmlu
Z1JlZiBkYXRhYmFzZURpcmVjdG9yeSk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVE
aXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGRpc2tDYWNoZURpcmVj
dG9yeSk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBjb29raWVTdG9yYWdlRGlyZWN0b3J5
KTsKIAogLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0ZXN0aW5nIHB1cnBvc2Vz
IG9ubHkgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgYSBiZXR0ZXIKIC8vIHNvbHV0aW9uIGhh
cyBiZWVuIGZvdW5kIGZvciB0ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCmluZGV4IDQ2YWFkMDEuLjIyOGZkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKQEAgLTMyOSw2ICszMjksMTQgQEAgUGFzc1JlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIGlmICghcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKIAorICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0Nh
Y2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICBwYXJhbWV0
ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCk7Cisg
ICAgaWYgKCFwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGFyYW1ldGVycy5jb29raWVTdG9y
YWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZFRyYWNrVmlzaXRlZExpbmtzID0gbV9oaXN0b3J5Q2xpZW50LnNob3VsZFRyYWNrVmlzaXRl
ZExpbmtzKCk7CiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gbV9jYWNoZU1vZGVsOwogICAg
IHBhcmFtZXRlcnMubGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwpAQCAtOTMw
LDYgKzkzOCwyMiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKICAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0OjpkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAorewor
ICAgIGlmICghbV9vdmVycmlkZURpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRm
b3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOworfQorCitTdHJpbmcgV2ViQ29udGV4dDo6
Y29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX292ZXJyaWRlQ29v
a2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX292ZXJyaWRl
Q29va2llU3RvcmFnZURpcmVjdG9yeTsKKworICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRDb29r
aWVTdG9yYWdlRGlyZWN0b3J5KCk7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6c2V0SFRUUFBpcGVs
aW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAyNTBlYWU5Li4wMTVhZTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTIwNCw2ICsyMDQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmlu
ZyBpY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUxvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IGRpcjsgfQorICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyKSB7IG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXI7IH0KKyAgICB2b2lkIHNl
dENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkaXI7IH0KIAogICAgIHZvaWQgZW5zdXJlU2hhcmVkV2Vi
UHJvY2VzcygpOwogICAgIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVOZXdXZWJQ
cm9jZXNzKCk7CkBAIC0yNzgsNiArMjgwLDEyIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAorICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdDsKKyAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KCkgY29uc3Q7CisKKyAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Owor
ICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7
CisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAgICAgCiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gbV9wcm9jZXNzZXM7CkBAIC0zNTIsNiArMzYwLDggQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9vdmVycmlkZURhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aDsKICAgICBTdHJpbmcgbV9vdmVycmlkZUxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZURpc2tDYWNoZURpcmVj
dG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CiAKICAg
ICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCmluZGV4IDhhNDc5ZDIuLjhiMzZh
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNw
cApAQCAtNjMsNCArNjMsMTYgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
ZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9Mb2NhbFN0b3JhZ2UiOwogfQog
CitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCmluZGV4IGQzNWFlZmYuLmFmZWIxNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTYzLDQgKzY0LDE2IEBAIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpm
aWxlbmFtZVRvU3RyaW5nKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCitTdHJpbmcgV2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIFdl
YkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29u
dGV4dE1hYy5tbQppbmRleCA2OGM4ZTExLi4zZDhkYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgog
I2ltcG9ydCA8c3lzL3BhcmFtLmg+CiAKQEAgLTg1LDE0ICs4Niw2IEBAIHZvaWQgV2ViQ29udGV4
dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhCiAKICAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nl
c3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07ICAgIAogCi0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOwotICAgIGlmICghY2FjaGVQYXRoKQotICAgICAgICBjYWNoZVBhdGggPSByZWludGVy
cHJldF9jYXN0PENGU3RyaW5nUmVmPihOU0hvbWVEaXJlY3RvcnkoKSk7Ci0KLSAgICBwYXJhbWV0
ZXJzLm5zVVJMQ2FjaGVQYXRoID0gWyhOU1N0cmluZyAqKWNhY2hlUGF0aC5nZXQoKSBzdHJpbmdC
eVN0YW5kYXJkaXppbmdQYXRoXTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aCwgcGFyYW1ldGVy
cy5uc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgQVNTRVJUKCFwYXJhbWV0ZXJz
Lm5zVVJMQ2FjaGVQYXRoLmlzRW1wdHkoKSk7Ci0KICAgICBOU1VSTENhY2hlICp1cmxDYWNoZSA9
IFtOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKICAgICBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVN
ZW1vcnlDYXBhY2l0eSA9IFt1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07CiAgICAgcGFyYW1ldGVy
cy5uc1VSTENhY2hlRGlza0NhcGFjaXR5ID0gW3VybENhY2hlIGRpc2tDYXBhY2l0eV07CkBAIC0x
MzEsNyArMTI0LDIyIEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4
dCgpCiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjooaWQpbV9lbmhhbmNlZEFjY2Vzc2liaWxpdHlPYnNlcnZlci5nZXQoKV07CiB9Ci0g
ICAgCisKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdAoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0
Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIWNhY2hlUGF0
aCkKKyAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oTlNI
b21lRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0
KCkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07Cit9CisKK1N0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBbQCIiIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhd
OworfQorCiBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGF0YWJhc2VEaXJlY3Rv
cnkoKSBjb25zdAogewogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VE
aXJlY3RvcnlEZWZhdWx0c0tleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViQ29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJD
b250ZXh0UXQuY3BwCmluZGV4IGY2YWY4OWQuLjQ1MzI5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdGF0aWMgUVN0cmluZyBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeTsK
IHN0YXRpYyBRU3RyaW5nIHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKK3N0YXRpYyBR
U3RyaW5nIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnk7CiAKLXN0YXRpYyBTdHJpbmcg
ZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1E
ZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBzdGF0aWMgU3RyaW5nIHNf
ZGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeTsKIApAQCAtNjEsNyArNjIsNyBAQCBTdHJpbmcgV2Vi
Q29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAgICAgY29uc3QgU3RyaW5nIGNh
Y2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuY2FjaGVEaXJlY3RvcnkoKTsK
IAogICAgIGlmIChjYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBkZWZh
dWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7CisgICAgICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRE
aXNrQ2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBjYWNoZURpcmVjdG9yeTsKIH0KQEAg
LTY5LDggKzcwLDYgQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQogdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgcVJlZ2lzdGVyTWV0
YVR5cGU8UVByb2Nlc3M6OkV4aXRTdGF0dXM+KCJRUHJvY2Vzczo6RXhpdFN0YXR1cyIpOwotICAg
IHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRhTG9jYXRpb24o
KTsKLSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHREaXNrQ2FjaGVE
aXJlY3RvcnkoKTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgc3RhdGljIFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJRdCogbG9jYXRpb24gPSBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OmNy
ZWF0ZSh0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSk7CiAgICAgV0tHZW9sb2NhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcih0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSwgV2Vi
R2VvbG9jYXRpb25Qcm92aWRlclF0Ojpwcm92aWRlcihsb2NhdGlvbikpOwpAQCAtMTA2LDQgKzEw
NSwxMyBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
OwogfQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURp
cmVjdG9yeSgpIGNvbnN0Cit7CisgICAgaWYgKCFzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3Rvcnk7CisKKyAgICBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdERh
dGFMb2NhdGlvbigpOworICAgIHJldHVybiBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCmluZGV4IDk5NjRkZTAuLjQ1NzdiZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcApAQCAtNjEsMTEg
KzYxLDExIEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAgICAgcGFyYW1ldGVycy5jZlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkgPSBDRlVSTENhY2hlTWVtb3J5Q2FwYWNpdHkoY2Z1cmxDYWNoZS5n
ZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMQ2FjaGVQYXRoKEFkb3B0
Q0YsIHdrQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgwKSk7Ci0gICAgcGFyYW1ldGVycy5j
ZlVSTENhY2hlUGF0aCA9IFN0cmluZyhjZlVSTENhY2hlUGF0aC5nZXQoKSk7CisgICAgcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBTdHJpbmcoY2ZVUkxDYWNoZVBhdGgpOwogICAgIC8v
IFJlbW92ZSB0aGUgZW5kaW5nICdcJyAobmVjZXNzYXJ5IHRvIGhhdmUgQ0ZOZXR3b3JrIGZpbmQg
dGhlIENhY2hlIGZpbGUpLgotICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVQYXRoLmxl
bmd0aCgpKTsKLSAgICBpZiAocGFyYW1ldGVycy5jZlVSTENhY2hlUGF0aFtwYXJhbWV0ZXJzLmNm
VVJMQ2FjaGVQYXRoLmxlbmd0aCgpIC0gMV0gPT0gJ1xcJykKLSAgICAgICAgcGFyYW1ldGVycy5j
ZlVSTENhY2hlUGF0aC5yZW1vdmUocGFyYW1ldGVycy5jZlVSTENhY2hlUGF0aC5sZW5ndGgoKSAt
IDEpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5sZW5ndGgoKSk7
CisgICAgaWYgKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmVuZHNXaXRoKFVDaGFyKCdc
XCcpKSkKKyAgICAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkucmVtb3ZlKHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5Lmxlbmd0aCgpIC0gMSk7CiAKICNpZiBVU0UoQ0ZVUkxT
VE9SQUdFU0VTU0lPTlMpCiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVy
ID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVG
b3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwga0NGQnVuZGxlSWRl
bnRpZmllcktleSkpKTsKQEAgLTk3LDUgKzk3LDE2IEBAIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgImNhY2hlIik7Cit9CisKK1N0cmluZyBXZWJDb250
ZXh0OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogbm90IGltcGxlbWVudGVkIQorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IGZmNzVjZWIuLjFmZTA3YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpAQCAtMjU2LDE4ICsyNTYs
MTggQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25z
dW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0
ZXJzLmRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5wYXJlbnRQcm9j
ZXNzTmFtZS5pc051bGwoKSkgewogICAgICAgICBOU1N0cmluZyAqYXBwbGljYXRpb25OYW1lID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiJUAgV2ViIENvbnRlbnQi
LCAiVmlzaWJsZSBuYW1lIG9mIHRoZSB3ZWIgcHJvY2Vzcy4gVGhlIGFyZ3VtZW50IGlzIHRoZSBh
cHBsaWNhdGlvbiBuYW1lLiIpLCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NO
YW1lXTsKICAgICAgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilh
cHBsaWNhdGlvbk5hbWUpOwogICAgIH0KIAotICAgIGlmICghcGFyYW1ldGVycy5uc1VSTENhY2hl
UGF0aC5pc051bGwoKSkgeworICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnku
aXNOdWxsKCkpIHsKICAgICAgICAgTlNVSW50ZWdlciBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFy
YW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAgICAgICAgIE5TVUludGVnZXIgY2Fj
aGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxDYWNoZShBZG9wdE5T
LCBbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6Y2FjaGVNZW1vcnlD
YXBhY2l0eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1BhdGg6cGFyYW1ldGVy
cy5uc1VSTENhY2hlUGF0aF0pOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50
UHJvY2Vzc1VSTENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1v
cnlDYXBhY2l0eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBh
Y2l0eSBkaXNrUGF0aDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+KHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5KV0pOwogICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTpwYXJl
bnRQcm9jZXNzVVJMQ2FjaGUuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAppbmRleCA4MDlhYWNiLi5mMGMxOTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApA
QCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgaWYgKGRlZmF1
bHRTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgcGFyYW1ldGVycy5jZlVSTENhY2hlUGF0aC5jcmVh
dGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9w
dENGLCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpKTsKICAg
ICBpZiAoIWNhY2hlUGF0aCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTgwM2Q2NS4uYmVmYTgwMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTEwLTA0ICBTemlsYXJkIExlZGFuICA8c3psZWRhbkBpbmYudS1zemVnZWQuaHU+
CisKKyAgICAgICAgU2VwYXJhdGUgV2ViS2l0MiBpbnN0YW5jZXMgdXNlIHRoZSBzYW1lIGxvY2Fs
IHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdENvbnRyb2xsZXIgaGFzIGJlZW4gbW9kaWZpZWQgdG8gZ2V0IHRoZSBsb2NhbCBzdG9yYWdl
IGZyb20KKyAgICAgICAgRFVNUFJFTkRFUlRSRUVfVEVNUCBlbnZpcm9ubWVudCB2YXJpYWJsZS4g
SWYgaXQncyB1bmRlZmluZWQKKyAgICAgICAgdGhlbiBpdCB3b3JrcyB3aXRoIHRoZSBkZWZhdWx0
IGRpcmVjdG9yeS4gVGhlIGFpbSBpcyBmb3IgdGhlIHBhcmFsbGVsbHkKKyAgICAgICAgc3RhcnRl
ZCBXVFJzIHRvIHVzZSBzZXBhcmF0ZSBkaXJlY3Rvcmllcy4gSXQgd2FzIGltcGxlbWVudGVkIGZv
ciBXSzEKKyAgICAgICAgbG9uZyB0aW1lIGFnbyBhbmQgaXQgd29ya3MgZmluZS4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisKIDIwMTItMTAtMDIgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0syXSBSRUdSRVNTSU9OKHIxMjg2
MjMpOiBJdCBtYWRlIGxheW91dCB0ZXN0cyBleHRyZW1lbHkgc2xvdwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAzM2Q5MTNmLi45MGQzYTNkIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzI4LDEyICszMjgsMTIg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciog
YXJndltdKQogICAgIG1fY29udGV4dC5hZG9wdChXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRC
dW5kbGVQYXRoKGluamVjdGVkQnVuZGxlUGF0aCgpKSk7CiAgICAgbV9nZW9sb2NhdGlvblByb3Zp
ZGVyID0gYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrKG1fY29udGV4dC5nZXQo
KSkpOwogCi0gICAgY29uc3QgY2hhciogcGF0aCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpOwot
ICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShz
dHJsZW4ocGF0aCkgKyBzdHJsZW4oIi9EYXRhYmFzZXMiKSArIDEpOwotICAgICAgICBzcHJpbnRm
KGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSwgIiVzJXMiLCBwYXRoLCAiL0RhdGFiYXNlcyIpOwot
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGF0YWJhc2VEaXJlY3RvcnlXSyhBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5kYXRh
KCkpKTsKLSAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkobV9jb250ZXh0Lmdl
dCgpLCBkYXRhYmFzZURpcmVjdG9yeVdLLmdldCgpKTsKKyAgICBpZiAoY29uc3QgY2hhciogZHVt
cFJlbmRlclRyZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBSZW5kZXJUcmVlVGVtcFdLKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVtcCkpOworICAgICAgICBX
S0NvbnRleHRTZXREYXRhYmFzZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGR1bXBSZW5kZXJU
cmVlVGVtcFdLLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KG1fY29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0KCkpOworICAgICAg
ICBXS0NvbnRleHRTZXREaXNrQ2FjaGVEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVu
ZGVyVHJlZVRlbXBXSy5nZXQoKSk7CisgICAgICAgIFdLQ29udGV4dFNldENvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVuZGVyVHJlZVRlbXBXSy5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpOwo=
</data>
<flag name="commit-queue"
          id="179658"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167530</attachid>
            <date>2012-10-08 06:18:28 -0700</date>
            <delta_ts>2012-10-15 02:50:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>121008-WK2-temp</filename>
            <type>text/plain</type>
            <size>26928</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyZjFlZjNiLi4zYzRlOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTItMTAtMDggIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNlcyB1c2UgdGhlIHNhbWUgbG9jYWwg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b3IgbXVsdGktdGhyZWFkZWQgKHBhcmFsbGVsKSB0ZXN0aW5nLCBXVFJzIG11c3Qgbm90IHdyaXRl
IGludG8gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgICAgICBUbyBhdm9pZCB0aGF0LCByZXN1bHRz
IG5lZWQgdG8gYmUgc3RvcmVkIGluIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5IERVTVBSRU5ERVJU
UkVFX1RFTVAKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBpcyBjcmVhdGVkIGJ5
IE5SV1QuIFRvIGRvIHRoYXQsIFdlYkNvbnRleHQgbmVlZGVkIHRvIGJlCisgICAgICAgIGV4dGVu
ZGVkIHdpdGggZGlza0NhY2hlRGlyZWN0b3J5IGFuZCBjb29raWVTdG9yYWdlRGlyZWN0b3J5IEFQ
SXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0
b3J5KToKKyAgICAgICAgKFdLQ29udGV4dFNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlza0NhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldERpc2tDYWNoZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZh
dWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1
bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDEyLTEw
LTA4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjEzMDYzMApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4
IDgwMDMwYWMuLmQwZDBlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTU5LDYgKzU5LDEwIEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciogZW5jb2RlcikgY29uCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGRhdGFiYXNlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobG9jYWxTdG9yYWdlRGlyZWN0
b3J5KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZGlza0NhY2hlRGlyZWN0b3J5KTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoY29va2llU3RvcmFnZURpcmVjdG9yeSk7CisgICAgZW5jb2Rlci0+ZW5j
b2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIGVuY29kZXIt
PmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0VtcHR5RG9jdW1lbnQpOwogICAgIGVuY29k
ZXItPmVuY29kZSh1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUodXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuKTsKQEAg
LTgzLDggKzg3LDYgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICNpZiBQTEFURk9STShNQUMp
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKICAgICBlbmNvZGVyLT5l
bmNvZGUocHJlc2VudGVyQXBwbGljYXRpb25QaWQpOwotICAgIGVuY29kZXItPmVuY29kZShuc1VS
TENhY2hlUGF0aCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0KTsKQEAgLTk0LDcgKzk2LDYgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb24KICAgICBlbmNvZGVyLT5lbmNvZGUoc2hvdWxkRW5hYmxl
S2VybmluZ0FuZExpZ2F0dXJlc0J5RGVmYXVsdCk7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpOwotICAgIGVuY29kZXIt
PmVuY29kZShjZlVSTENhY2hlUGF0aCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNmVVJMQ2FjaGVE
aXNrQ2FwYWNpdHkpOwogICAgIGVuY29kZXItPmVuY29kZShjZlVSTENhY2hlTWVtb3J5Q2FwYWNp
dHkpOwogICAgIGVuY29kZXItPmVuY29kZShpbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7
CkBAIC0xMDUsMTAgKzEwNiw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAgICAgICAgIENv
cmVJUEM6OmVuY29kZShlbmNvZGVyLCBzdG9yYWdlU2Vzc2lvbik7CiAjZW5kaWYgLy8gVVNFKENG
VVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgZW5jb2Rl
ci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOwotICAgIGVuY29kZXItPmVuY29kZShk
aXNrQ2FjaGVEaXJlY3RvcnkpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykg
fHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIGVuY29kZXItPmVuY29kZShub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyk7CkBAIC0xMzMsNiArMTMwLDE0IEBAIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRp
c2tDYWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0
ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSkpCkBAIC0xNzksMTAgKzE4NCw2IEBAIGJv
b2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlkKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNV
UkxDYWNoZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5zVVJM
Q2FjaGVNZW1vcnlDYXBhY2l0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHkpKQpAQCAtMjAw
LDggKzIwMSw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAjZWxpZiBQTEFURk9STShXSU4p
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQYWludE5hdGl2ZUNv
bnRyb2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jZlVSTENhY2hlRGlza0NhcGFjaXR5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMuY2ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KSkKQEAgLTIxNywxMyArMjE2LDYgQEAgYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBXZWIKICNlbmRpZiAvLyBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
IHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKaW5kZXggMGQ1NDNmYS4uM2RiODU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02MCw2ICs2
MCwxMCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGRhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
IFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgZGlz
a0NhY2hlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkaXNrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJl
cmRBc0VtcHR5RG9jdW1lbnQ7CiAgICAgVmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc1NlY3VyZTsKQEAgLTk5LDEwICsxMDMsNiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAKICAgICBwaWRfdCBwcmVzZW50ZXJBcHBsaWNhdGlvblBpZDsKIAotICAg
IC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgbWVyZ2VkIHdpdGggQ0ZVUkxDYWNoZSBjb3VudGVy
cGFydHMgYmVsb3cuCi0gICAgU3RyaW5nIG5zVVJMQ2FjaGVQYXRoOwotICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBuc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZTsKLQogICAgIHVpbnQ2
NF90IG5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAgICB1aW50NjRfdCBuc1VSTENhY2hlRGlz
a0NhcGFjaXR5OwogCkBAIC0xMTQsNyArMTE0LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkRm9yY2VTY3JlZW5Gb250U3Vic3RpdHV0aW9u
OwogICAgIGJvb2wgc2hvdWxkRW5hYmxlS2VybmluZ0FuZExpZ2F0dXJlc0J5RGVmYXVsdDsKICNl
bGlmIFBMQVRGT1JNKFdJTikKLSAgICBTdHJpbmcgY2ZVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0
X3QgY2ZVUkxDYWNoZURpc2tDYXBhY2l0eTsKICAgICB1aW50NjRfdCBjZlVSTENhY2hlTWVtb3J5
Q2FwYWNpdHk7CiAKQEAgLTEyNiwxMCArMTI1LDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNlcmlhbGl6ZWREZWZhdWx0
U3RvcmFnZVNlc3Npb247CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdJTikKLSNpZiBQTEFURk9STShRVCkKLSAgICBTdHJpbmcgY29va2ll
U3RvcmFnZURpcmVjdG9yeTsKLSAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwotI2VuZGlm
CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJ
T05TKQogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMjhh
NzA4Mi4uNTc0MGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKQEAgLTI2Niw2ICsyNjYsMTYgQEAgdm9pZCBXS0NvbnRleHRTZXRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIGxvY2EKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSh0b0ltcGwobG9j
YWxTdG9yYWdlRGlyZWN0b3J5KS0+c3RyaW5nKCkpOwogfQogCitXS19FWFBPUlQgdm9pZCBXS0Nv
bnRleHRTZXREaXNrQ2FjaGVEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIGRpc2tDYWNoZURpcmVjdG9yeSkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNl
dERpc2tDYWNoZURpcmVjdG9yeSh0b0ltcGwoZGlza0NhY2hlRGlyZWN0b3J5KS0+c3RyaW5nKCkp
OworfQorCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjb29raWVTdG9yYWdlRGlyZWN0
b3J5KQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0Q29va2llU3RvcmFnZURpcmVjdG9y
eSh0b0ltcGwoY29va2llU3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKK30KKwogdm9pZCBX
S0NvbnRleHREaXNhYmxlUHJvY2Vzc1Rlcm1pbmF0aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
KQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+ZGlzYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRl
LmgKaW5kZXggNDlhZWM3Zi4uNDI0N2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC02MCw2ICs2MCw4IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLU3RyaW5nUmVmIGljCiAvLyB3ZSBzaG91bGQgcmVhbGx5IGNoYW5nZSB0aGVzZSBzZXR0aW5n
cyB0byBiZSBvbiBXZWJQcmVmZXJlbmNlcyBhbmQgY2hhbmdlYWJsZSBhdCBydW50aW1lLgogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlyZWN0b3J5KTsKIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tT
dHJpbmdSZWYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dFNldERpc2tDYWNoZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYg
ZGlza0NhY2hlRGlyZWN0b3J5KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkpOwogCiAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRl
c3RpbmcgcHVycG9zZXMgb25seSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBhIGJldHRlcgog
Ly8gc29sdXRpb24gaGFzIGJlZW4gZm91bmQgZm9yIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZmUwNDQxMS4uMjFhMjI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMzMxLDYgKzMzMSwxNCBAQCBQYXNzUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShw
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0Nh
Y2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlKHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpS
ZWFkV3JpdGUsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
KworICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXJhbWV0
ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwg
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAg
IHBhcmFtZXRlcnMuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgPSBtX2hpc3RvcnlDbGllbnQuc2hv
dWxkVHJhY2tWaXNpdGVkTGlua3MoKTsKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBtX2Nh
Y2hlTW9kZWw7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7CkBAIC05NDgsNiArOTU2LDIyIEBAIFN0cmluZyBXZWJDb250ZXh0Ojpsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OmRpc2tDYWNoZURpcmVjdG9y
eSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnk7CisKKyAg
ICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7Cit9CisKK1N0cmlu
ZyBXZWJDb250ZXh0Ojpjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRm
b3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKK30KKwogdm9pZCBXZWJDb250ZXh0
OjpzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGFkMWZmZjkuLjc4
OWM1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjA0LDYgKzIw
NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5n
Jik7CiAgICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlTG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gZGlyOyB9CisgICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZURpc2tDYWNoZURpcmVjdG9yeSA9IGRpcjsg
fQorICAgIHZvaWQgc2V0Q29va2llU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikg
eyBtX292ZXJyaWRlQ29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRpcjsgfQogCiAgICAgdm9pZCBl
bnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CiAgICAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKQEAgLTI3OCw2ICsyODAsMTIgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRm
b3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisgICAgU3RyaW5nIGRp
c2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0OworICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHREaXNr
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKKworICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKKwogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM1
Niw2ICszNjQsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX292ZXJyaWRlRGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmlu
ZyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRl
RGlza0NhY2hlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2llU3RvcmFnZURp
cmVjdG9yeTsKIAogICAgIGJvb2wgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKaW5kZXgg
OGE0NzlkMi4uOGIzNmE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbnRleHRFZmwuY3BwCkBAIC02Myw0ICs2MywxNiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxh
dGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChlZnJlZXRfZGF0YV9ob21lX2dldCgpKSArICIvV2ViS2l0RWZsL0xvY2Fs
U3RvcmFnZSI7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2ll
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKaW5kZXggZDM1YWVmZi4uYWZl
YjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNCArNjQsMTYgQEAgU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiB9
CiAKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCmluZGV4IDE1YWEwNTAuLmJjNGNiZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTMwLDYgKzMw
LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Q
YXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4KIApAQCAtODUsMTQgKzg2LDYgQEAg
dm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIAogICAgIHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05h
bWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsgICAgCiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBXS0NvcHlGb3VuZGF0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgaWYgKCFjYWNoZVBhdGgpCi0gICAgICAgIGNhY2hl
UGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KE5TSG9tZURpcmVjdG9yeSgpKTsK
LQotICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGggPSBbKE5TU3RyaW5nICopY2FjaGVQYXRo
LmdldCgpIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwotICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQ
YXRoLCBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKLSAgICBBU1NF
UlQoIXBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGguaXNFbXB0eSgpKTsKLQogICAgIE5TVVJMQ2Fj
aGUgKnVybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdOwogICAgIHBhcmFtZXRl
cnMubnNVUkxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gW3VybENhY2hlIG1lbW9yeUNhcGFjaXR5XTsK
ICAgICBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHkgPSBbdXJsQ2FjaGUgZGlza0Nh
cGFjaXR5XTsKQEAgLTEyOCw3ICsxMjEsMjIgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOihpZCltX2VuaGFuY2VkQWNjZXNzaWJpbGl0eU9ic2VydmVy
LmdldCgpXTsKIH0KLSAgICAKKworU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
YWNoZVBhdGgoQWRvcHRDRiwgV0tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAg
IGlmICghY2FjaGVQYXRoKQorICAgICAgICBjYWNoZVBhdGggPSByZWludGVycHJldF9jYXN0PENG
U3RyaW5nUmVmPihOU0hvbWVEaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gWyhOU1N0cmluZyAq
KWNhY2hlUGF0aC5nZXQoKSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKK30KKworU3RyaW5n
IFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFtAIiIgc3RyaW5nQnlTdGFu
ZGFyZGl6aW5nUGF0aF07Cit9CisKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRE
YXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVj
dG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktl
eTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKaW5kZXggZjZhZjg5ZC4uNDUzMjlkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAKQEAgLTQzLDggKzQz
LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBRU3RyaW5nIHNfZGVmYXVsdERhdGFi
YXNlRGlyZWN0b3J5Owogc3RhdGljIFFTdHJpbmcgc19kZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5Oworc3RhdGljIFFTdHJpbmcgc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeTsKIAot
c3RhdGljIFN0cmluZyBkZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJDb250
ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAogewogICAgIHN0
YXRpYyBTdHJpbmcgc19kZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5OwogCkBAIC02MSw3ICs2Miw3
IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKICAgICBj
b25zdCBTdHJpbmcgY2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5jYWNo
ZURpcmVjdG9yeSgpOwogCiAgICAgaWYgKGNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGRlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHBs
YXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5OwogfQpAQCAtNjksOCArNzAsNiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAg
ICBxUmVnaXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6RXhpdFN0YXR1cz4oIlFQcm9jZXNzOjpFeGl0
U3RhdHVzIik7Ci0gICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVs
dERhdGFMb2NhdGlvbigpOwotICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGVm
YXVsdERpc2tDYWNoZURpcmVjdG9yeSgpOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBz
dGF0aWMgV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0KiBsb2NhdGlvbiA9IFdlYkdlb2xvY2F0aW9u
UHJvdmlkZXJRdDo6Y3JlYXRlKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkpKTsKICAg
ICBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKHRvQVBJKGdlb2xvY2F0aW9uTWFuYWdl
clByb3h5KCkpLCBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OnByb3ZpZGVyKGxvY2F0aW9uKSk7
CkBAIC0xMDYsNCArMTA1LDEzIEBAIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBzX2RlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRD
b29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAoIXNfZGVmYXVsdENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc19kZWZhdWx0Q29v
a2llU3RvcmFnZURpcmVjdG9yeTsKKworICAgIHNfZGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7CisgICAgcmV0dXJuIHNfZGVmYXVsdENvb2tpZVN0
b3JhZ2VEaXJlY3Rvcnk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKaW5kZXggOTk2NGRlMC4uNmZl
ZDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4u
Y3BwCkBAIC02MSwxMSArNjEsMTEgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKICAgICBwYXJh
bWV0ZXJzLmNmVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0
eShjZnVybENhY2hlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkxD
YWNoZVBhdGgoQWRvcHRDRiwgd2tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKLSAg
ICBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVQYXRoID0gU3RyaW5nKGNmVVJMQ2FjaGVQYXRoLmdldCgp
KTsKKyAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IFN0cmluZyhjZlVSTENhY2hl
UGF0aC5nZXQoKSk7CiAgICAgLy8gUmVtb3ZlIHRoZSBlbmRpbmcgJ1wnIChuZWNlc3NhcnkgdG8g
aGF2ZSBDRk5ldHdvcmsgZmluZCB0aGUgQ2FjaGUgZmlsZSkuCi0gICAgQVNTRVJUKHBhcmFtZXRl
cnMuY2ZVUkxDYWNoZVBhdGgubGVuZ3RoKCkpOwotICAgIGlmIChwYXJhbWV0ZXJzLmNmVVJMQ2Fj
aGVQYXRoW3BhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGgubGVuZ3RoKCkgLSAxXSA9PSAnXFwnKQot
ICAgICAgICBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVQYXRoLnJlbW92ZShwYXJhbWV0ZXJzLmNmVVJM
Q2FjaGVQYXRoLmxlbmd0aCgpIC0gMSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5Lmxlbmd0aCgpKTsKKyAgICBpZiAocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rv
cnkuZW5kc1dpdGgoVUNoYXIoJ1xcJykpKQorICAgICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeS5yZW1vdmUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkubGVuZ3RoKCkgLSAx
KTsKIAogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICAgICBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0J1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1
bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkpOwpAQCAtOTcsNSArOTcsMTYgQEAgU3Ry
aW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwog
fQogCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiY2FjaGUiKTsK
K30KKworU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBub3QgaW1wbGVtZW50ZWQhCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KaW5kZXggNTE5ZDYyYi4uZjA2
NWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFj
Lm1tCkBAIC0yNTcsMTggKzI1NywxOCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmxvY2FsU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoRXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFy
YW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFw
YXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgIE5TU3RyaW5n
ICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RS
SU5HKCIlQCBXZWIgQ29udGVudCIsICJWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBU
aGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuIiksIChOU1N0cmluZyAqKXBhcmFt
ZXRlcnMucGFyZW50UHJvY2Vzc05hbWVdOwogICAgICAgICBXS1NldFZpc2libGVBcHBsaWNhdGlv
bk5hbWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7CiAgICAgfQogCi0gICAgaWYgKCFw
YXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwYXJhbWV0ZXJz
LmRpc2tDYWNoZURpcmVjdG9yeS5pc051bGwoKSkgewogICAgICAgICBOU1VJbnRlZ2VyIGNhY2hl
TWVtb3J5Q2FwYWNpdHkgPSBwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eTsKICAg
ICAgICAgTlNVSW50ZWdlciBjYWNoZURpc2tDYXBhY2l0eSA9IHBhcmFtZXRlcnMubnNVUkxDYWNo
ZURpc2tDYXBhY2l0eTsKIAotICAgICAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gcGFyZW50UHJv
Y2Vzc1VSTENhY2hlKEFkb3B0TlMsIFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlD
YXBhY2l0eTpjYWNoZU1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0eTpjYWNoZURpc2tDYXBhY2l0
eSBkaXNrUGF0aDpwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoXSk7CisgICAgICAgIFJldGFpblB0
cjxOU1VSTENhY2hlPiBwYXJlbnRQcm9jZXNzVVJMQ2FjaGUoQWRvcHROUywgW1tOU1VSTENhY2hl
IGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OmNhY2hlTWVtb3J5Q2FwYWNpdHkgZGlza0Nh
cGFjaXR5OmNhY2hlRGlza0NhcGFjaXR5IGRpc2tQYXRoOnN0YXRpY19jYXN0PE5TU3RyaW5nKj4o
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpXSk7CiAgICAgICAgIFtOU1VSTENhY2hlIHNl
dFNoYXJlZFVSTENhY2hlOnBhcmVudFByb2Nlc3NVUkxDYWNoZS5nZXQoKV07CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4
IDgwOWFhY2IuLmYwYzE5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
d2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMKICAgICBpZiAoZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBwYXJhbWV0ZXJz
LmNmVVJMQ2FjaGVQYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmNy
ZWF0ZUNGU3RyaW5nKCkpOwogICAgIGlmICghY2FjaGVQYXRoKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYTUy
YzA2Li5kMTdlNjcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTAtMDggIFN6aWxhcmQgTGVkYW4gIDxzemxl
ZGFuQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNl
cyB1c2UgdGhlIHNhbWUgbG9jYWwgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0Q29udHJvbGxlciBoYXMgYmVlbiBtb2RpZmllZCB0byBn
ZXQgdGhlIGxvY2FsIHN0b3JhZ2UgZnJvbQorICAgICAgICBEVU1QUkVOREVSVFJFRV9URU1QIGVu
dmlyb25tZW50IHZhcmlhYmxlLiBJZiBpdCdzIHVuZGVmaW5lZAorICAgICAgICB0aGVuIGl0IHdv
cmtzIHdpdGggdGhlIGRlZmF1bHQgZGlyZWN0b3J5LiBUaGUgYWltIGlzIGZvciB0aGUgcGFyYWxs
ZWxseQorICAgICAgICBzdGFydGVkIFdUUnMgdG8gdXNlIHNlcGFyYXRlIGRpcmVjdG9yaWVzLiBJ
dCB3YXMgaW1wbGVtZW50ZWQgZm9yIFdLMQorICAgICAgICBsb25nIHRpbWUgYWdvIGFuZCBpdCB3
b3JrcyBmaW5lLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKwogMjAxMi0x
MC0wOCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0
XSBSZWVuYWJsZSBwbHVnaW4gdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggNDJiODEyZS4uY2YwNDNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTMxNSwxMiArMzE1LDEyIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBtX2Nv
bnRleHQuYWRvcHQoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChpbmplY3Rl
ZEJ1bmRsZVBhdGgoKSkpOwogICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IGFkb3B0UHRyKG5l
dyBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhtX2NvbnRleHQuZ2V0KCkpKTsKIAotICAgIGNvbnN0
IGNoYXIqIHBhdGggPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKTsKLSAgICBpZiAocGF0aCkgewot
ICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YWJhc2VEaXJlY3Rvcnkoc3RybGVuKHBhdGgpICsgc3Ry
bGVuKCIvRGF0YWJhc2VzIikgKyAxKTsKLSAgICAgICAgc3ByaW50ZihkYXRhYmFzZURpcmVjdG9y
eS5kYXRhKCksICIlcyVzIiwgcGF0aCwgIi9EYXRhYmFzZXMiKTsKLSAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGRhdGFiYXNlRGlyZWN0b3J5V0soQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpKSk7Ci0gICAgICAgIFdL
Q29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZGF0YWJhc2VEaXJl
Y3RvcnlXSy5nZXQoKSk7CisgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBkdW1wUmVuZGVyVHJlZVRlbXBXSyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXApKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGF0YWJh
c2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVuZGVyVHJlZVRlbXBXSy5nZXQoKSk7
CisgICAgICAgIFdLQ29udGV4dFNldExvY2FsU3RvcmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0
KCksIGR1bXBSZW5kZXJUcmVlVGVtcFdLLmdldCgpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0RGlz
a0NhY2hlRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0
KCkpOworICAgICAgICBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KG1fY29udGV4
dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0KCkpOwogICAgIH0KIAogICAgIHBsYXRm
b3JtSW5pdGlhbGl6ZUNvbnRleHQoKTsK
</data>
<flag name="review"
          id="180237"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="180238"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168660</attachid>
            <date>2012-10-15 02:50:45 -0700</date>
            <delta_ts>2012-10-16 01:43:10 -0700</delta_ts>
            <desc>patch for commit</desc>
            <filename>121015-WK2-temp</filename>
            <type>text/plain</type>
            <size>27085</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNjRjNjAyLi4xZjc5MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTItMTAtMTUgIFN6aWxhcmQgTGVkYW4gIDxzemxlZGFuQGluZi51LXN6ZWdlZC5odT4K
KworICAgICAgICBTZXBhcmF0ZSBXZWJLaXQyIGluc3RhbmNlcyB1c2UgdGhlIHNhbWUgbG9jYWwg
c3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBG
b3IgbXVsdGktdGhyZWFkZWQgKHBhcmFsbGVsKSB0ZXN0aW5nLCBXVFJzIG11c3Qgbm90IHdyaXRl
IGludG8gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgICAgICBUbyBhdm9pZCB0aGF0LCByZXN1bHRz
IG5lZWQgdG8gYmUgc3RvcmVkIGluIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5IERVTVBSRU5ERVJU
UkVFX1RFTVAKKyAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBpcyBjcmVhdGVkIGJ5
IE5SV1QuIFRvIGRvIHRoYXQsIFdlYkNvbnRleHQgbmVlZGVkIHRvIGJlCisgICAgICAgIGV4dGVu
ZGVkIHdpdGggZGlza0NhY2hlRGlyZWN0b3J5IGFuZCBjb29raWVTdG9yYWdlRGlyZWN0b3J5IEFQ
SXMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RGlza0NhY2hlRGlyZWN0
b3J5KToKKyAgICAgICAgKFdLQ29udGV4dFNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVh
dGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlza0NhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldERpc2tDYWNoZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNldENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZh
dWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1
bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNv
bnRleHRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2Fj
aGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDEyLTEw
LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHRoZSB3b3JsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAwMTIzNGY3Li5lMTVlNTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC01OSw2ICs1OSwxMCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbgogICAgIGVuY29k
ZXItPmVuY29kZShkYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxv
Y2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5jb2Rl
KGRpc2tDYWNoZURpcmVjdG9yeSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2tDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkpOworICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVyZXJk
QXNFbXB0eURvY3VtZW50KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc1NlY3VyZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVybFNjaGVtZXNGb3JXaGljaERvbWFp
blJlbGF4YXRpb25Jc0ZvcmJpZGRlbik7CkBAIC04Miw4ICs4Niw2IEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXItPmVuY29kZShwYXJlbnRQ
cm9jZXNzTmFtZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHByZXNlbnRlckFwcGxpY2F0aW9uUGlk
KTsKLSAgICBlbmNvZGVyLT5lbmNvZGUobnNVUkxDYWNoZVBhdGgpOwotICAgIGVuY29kZXItPmVu
Y29kZShuc1VSTENhY2hlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG5zVVJMQ2Fj
aGVEaXNrQ2FwYWNpdHkpOwogICAgIGVuY29kZXItPmVuY29kZShhY2NlbGVyYXRlZENvbXBvc2l0
aW5nUG9ydCk7CkBAIC05Myw3ICs5NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uCiAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHNob3VsZEVuYWJsZUtlcm5pbmdBbmRMaWdhdHVyZXNCeURlZmF1bHQp
OwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIGVuY29kZXItPmVuY29kZShzaG91bGRQYWludE5h
dGl2ZUNvbnRyb2xzKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoY2ZVUkxDYWNoZVBhdGgpOwogICAg
IGVuY29kZXItPmVuY29kZShjZlVSTENhY2hlRGlza0NhcGFjaXR5KTsKICAgICBlbmNvZGVyLT5l
bmNvZGUoY2ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoaW5p
dGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwpAQCAtMTA0LDEwICsxMDUsNiBAQCB2b2lkIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIpIGNvbgogICAgICAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RvcmFn
ZVNlc3Npb24pOwogI2VuZGlmIC8vIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKICNlbmRpZgot
I2lmIFBMQVRGT1JNKFFUKQotICAgIGVuY29kZXItPmVuY29kZShjb29raWVTdG9yYWdlRGlyZWN0
b3J5KTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoZGlza0NhY2hlRGlyZWN0b3J5KTsKLSNlbmRpZgog
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKICAgICBlbmNvZGVyLT5lbmNvZGUobm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOwpAQCAtMTMy
LDYgKzEyOSwxNCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNS
ZWdpc3RlcmVyZEFzRW1wdHlEb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1
cmUpKQpAQCAtMTc2LDEwICsxODEsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5wcmVz
ZW50ZXJBcHBsaWNhdGlvblBpZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVQYXRoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubnNVUkxDYWNoZVBh
dGhFeHRlbnNpb25IYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5uc1VS
TENhY2hlRGlza0NhcGFjaXR5KSkKQEAgLTE5Nyw4ICsxOTgsNiBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYgogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVQYXRoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRl
cnMuY2ZVUkxDYWNoZURpc2tDYXBhY2l0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSkp
CkBAIC0yMTQsMTMgKzIxMyw2IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViCiAjZW5kaWYgLy8g
VVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkKLSAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJt
aXNzaW9ucykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGY5NTQ4ZGYuLjA3
MTdmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtNjAsNiArNjAsMTAgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBkYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKKyAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAg
IFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBjb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50OwogICAgIFZlY3Rv
cjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmU7CkBAIC05NiwxMCArMTAwLDYg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgcGlkX3QgcHJl
c2VudGVyQXBwbGljYXRpb25QaWQ7CiAKLSAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIG1l
cmdlZCB3aXRoIENGVVJMQ2FjaGUgY291bnRlcnBhcnRzIGJlbG93LgotICAgIFN0cmluZyBuc1VS
TENhY2hlUGF0aDsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbnNVUkxDYWNoZVBhdGhF
eHRlbnNpb25IYW5kbGU7Ci0KICAgICB1aW50NjRfdCBuc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHk7
CiAgICAgdWludDY0X3QgbnNVUkxDYWNoZURpc2tDYXBhY2l0eTsKIApAQCAtMTEyLDcgKzExMiw2
IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3Vs
ZEVuYWJsZUtlcm5pbmdBbmRMaWdhdHVyZXNCeURlZmF1bHQ7CiAKICNlbGlmIFBMQVRGT1JNKFdJ
TikKLSAgICBTdHJpbmcgY2ZVUkxDYWNoZVBhdGg7CiAgICAgdWludDY0X3QgY2ZVUkxDYWNoZURp
c2tDYXBhY2l0eTsKICAgICB1aW50NjRfdCBjZlVSTENhY2hlTWVtb3J5Q2FwYWNpdHk7CiAKQEAg
LTEyNCwxMCArMTIzLDYgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNlcmlhbGl6ZWREZWZhdWx0U3RvcmFnZVNlc3Npb247
CiAjZW5kaWYgLy8gVVNFKENGVVJMU1RPUkFHRVNFU1NJT05TKQogI2VuZGlmIC8vIFBMQVRGT1JN
KFdJTikKLSNpZiBQTEFURk9STShRVCkKLSAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9y
eTsKLSAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwotI2VuZGlmCiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIEhhc2hN
YXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25QZXJtaXNzaW9uczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYTQxYTc2Mi4uMjZlNGFiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTI2
Niw2ICsyNjYsMTYgQEAgdm9pZCBXS0NvbnRleHRTZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIGxvY2EKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSh0b0ltcGwobG9jYWxTdG9yYWdlRGlyZWN0
b3J5KS0+c3RyaW5nKCkpOwogfQogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIGRpc2tDYWNo
ZURpcmVjdG9yeSkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldERpc2tDYWNoZURpcmVj
dG9yeSh0b0ltcGwoZGlza0NhY2hlRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworfQorCitXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRTZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1N0cmluZ1JlZiBjb29raWVTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+c2V0Q29va2llU3RvcmFnZURpcmVjdG9yeSh0b0ltcGwoY29va2ll
U3RvcmFnZURpcmVjdG9yeSktPnN0cmluZygpKTsKK30KKwogdm9pZCBXS0NvbnRleHREaXNhYmxl
UHJvY2Vzc1Rlcm1pbmF0aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1w
bChjb250ZXh0UmVmKS0+ZGlzYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggOGFhOWMw
Yi4uNzljMmVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0UHJpdmF0ZS5oCkBAIC02MCw2ICs2MCw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dFNldEljb25EYXRhYmFzZVBhdGgoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGlj
CiAvLyB3ZSBzaG91bGQgcmVhbGx5IGNoYW5nZSB0aGVzZSBzZXR0aW5ncyB0byBiZSBvbiBXZWJQ
cmVmZXJlbmNlcyBhbmQgY2hhbmdlYWJsZSBhdCBydW50aW1lLgogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0RGF0YWJhc2VEaXJlY3RvcnkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5n
UmVmIGRhdGFiYXNlRGlyZWN0b3J5KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldExvY2Fs
U3RvcmFnZURpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERpc2tDYWNoZURp
cmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgZGlza0NhY2hlRGlyZWN0
b3J5KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvb2tpZVN0b3JhZ2VEaXJlY3Rvcnko
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIGNvb2tpZVN0b3JhZ2VEaXJlY3Rvcnkp
OwogCiAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRlc3RpbmcgcHVycG9zZXMg
b25seSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBhIGJldHRlcgogLy8gc29sdXRpb24gaGFz
IGJlZW4gZm91bmQgZm9yIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAKaW5kZXggZDNkYWI2Yy4uNDEwZmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcApAQCAtMzU1LDYgKzM1NSwxNCBAQCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgaWYgKCFwYXJhbWV0
ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKworICAgIHBhcmFtZXRl
cnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAg
ICBpZiAoIXBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkVHJhY2tWaXNpdGVkTGlua3MgPSBtX2hpc3RvcnlDbGllbnQuc2hvdWxkVHJhY2tWaXNpdGVk
TGlua3MoKTsKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBtX2NhY2hlTW9kZWw7CiAgICAg
cGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CkBAIC05MTcs
NiArOTI1LDIyIEBAIFN0cmluZyBXZWJDb250ZXh0Ojpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
IH0KIAorU3RyaW5nIFdlYkNvbnRleHQ6OmRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG1fb3ZlcnJpZGVEaXNrQ2FjaGVEaXJlY3Rvcnk7CisKKyAgICByZXR1cm4gcGxhdGZv
cm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCk7Cit9CisKK1N0cmluZyBXZWJDb250ZXh0Ojpj
b29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3ZlcnJpZGVDb29r
aWVTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVD
b29raWVTdG9yYWdlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKK30KKwogdm9pZCBXZWJDb250ZXh0OjpzZXRIVFRQUGlwZWxp
bmluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDExYTMzOGQuLjllOGQ4MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMjE1LDYgKzIxNSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5n
IGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlTG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gZGlyOyB9CisgICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXIpIHsgbV9vdmVycmlkZURpc2tDYWNoZURpcmVjdG9yeSA9IGRpcjsgfQorICAgIHZvaWQgc2V0
Q29va2llU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlQ29v
a2llU3RvcmFnZURpcmVjdG9yeSA9IGRpcjsgfQogCiAgICAgdm9pZCBlbnN1cmVTaGFyZWRXZWJQ
cm9jZXNzKCk7CiAgICAgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZU5ld1dlYlBy
b2Nlc3MoKTsKQEAgLTI5NSw2ICsyOTcsMTIgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9y
eSgpIGNvbnN0OworICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdDsKKworICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7Cisg
ICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
KwogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICBWZWN0b3I8UmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nlc3NlczsKQEAgLTM3Myw2ICszODEsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX292ZXJyaWRlRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlTG9j
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRlRGlza0NhY2hlRGlyZWN0
b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2llU3RvcmFnZURpcmVjdG9yeTsKIAogICAg
IGJvb2wgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAppbmRleCA4YTQ3OWQyLi44YjM2YTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAg
LTYzLDQgKzYzLDE2IEBAIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVl
dF9kYXRhX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvTG9jYWxTdG9yYWdlIjsKIH0KIAorU3Ry
aW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0R3RrLmNwcAppbmRleCBkMzVhZWZmLi5hZmViMTcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC02Myw0ICs2NCwxNiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5h
bWVUb1N0cmluZyhzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAorU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBXZWJDb250
ZXh0OjpwbGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
YWMubW0KaW5kZXggYmJiOTgxYy4uNWNmOTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbXBv
cnQgPHN5cy9wYXJhbS5oPgogCkBAIC03OSwxNCArODAsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYQogCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOyAgICAKIAotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKLSAgICBpZiAoIWNhY2hlUGF0aCkKLSAgICAgICAgY2FjaGVQYXRoID0gcmVpbnRlcnByZXRf
Y2FzdDxDRlN0cmluZ1JlZj4oTlNIb21lRGlyZWN0b3J5KCkpOwotCi0gICAgcGFyYW1ldGVycy5u
c1VSTENhY2hlUGF0aCA9IFsoTlNTdHJpbmcgKiljYWNoZVBhdGguZ2V0KCkgc3RyaW5nQnlTdGFu
ZGFyZGl6aW5nUGF0aF07Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGgsIHBhcmFtZXRlcnMubnNV
UkxDYWNoZVBhdGhFeHRlbnNpb25IYW5kbGUpOwotICAgIEFTU0VSVCghcGFyYW1ldGVycy5uc1VS
TENhY2hlUGF0aC5pc0VtcHR5KCkpOwotCiAgICAgTlNVUkxDYWNoZSAqdXJsQ2FjaGUgPSBbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07CiAgICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBbdXJsQ2FjaGUgbWVtb3J5Q2FwYWNpdHldOwogICAgIHBhcmFtZXRlcnMubnNV
UkxDYWNoZURpc2tDYXBhY2l0eSA9IFt1cmxDYWNoZSBkaXNrQ2FwYWNpdHldOwpAQCAtMTIyLDcg
KzExNSwyMiBAQCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQog
ewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2
ZXI6KGlkKW1fZW5oYW5jZWRBY2Nlc3NpYmlsaXR5T2JzZXJ2ZXIuZ2V0KCldOwogfQotICAgIAor
CitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkg
Y29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBX
S0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgaWYgKCFjYWNoZVBhdGgpCisg
ICAgICAgIGNhY2hlUGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KE5TSG9tZURp
cmVjdG9yeSgpKTsKKworICAgIHJldHVybiBbKE5TU3RyaW5nICopY2FjaGVQYXRoLmdldCgpIHN0
cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOworfQorCitTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZv
cm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gW0AiIiBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKK30K
KwogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KCkg
Y29uc3QKIHsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGlyZWN0
b3J5RGVmYXVsdHNLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYkNvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4
dFF0LmNwcAppbmRleCBmNmFmODlkLi40NTMyOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViQ29udGV4dFF0LmNwcApAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RhdGljIFFTdHJpbmcgc19kZWZhdWx0RGF0YWJhc2VEaXJlY3Rvcnk7CiBzdGF0
aWMgUVN0cmluZyBzX2RlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CitzdGF0aWMgUVN0cmlu
ZyBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5OwogCi1zdGF0aWMgU3RyaW5nIGRlZmF1
bHREaXNrQ2FjaGVEaXJlY3RvcnkoKQorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVs
dERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgc3RhdGljIFN0cmluZyBzX2RlZmF1
bHREaXNrQ2FjaGVEaXJlY3Rvcnk7CiAKQEAgLTYxLDcgKzYyLDcgQEAgU3RyaW5nIFdlYkNvbnRl
eHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIGNvbnN0IFN0cmluZyBjYWNoZURp
cmVjdG9yeSA9IFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLmNhY2hlRGlyZWN0b3J5KCk7CiAKICAg
ICBpZiAoY2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZGVmYXVsdERp
c2tDYWNoZURpcmVjdG9yeSgpOworICAgICAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0RGlza0Nh
Y2hlRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gY2FjaGVEaXJlY3Rvcnk7CiB9CkBAIC02OSw4
ICs3MCw2IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkK
IHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBl
PFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMiKTsKLSAgICBwYXJh
bWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0RGF0YUxvY2F0aW9uKCk7Ci0g
ICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0RGlza0NhY2hlRGlyZWN0
b3J5KCk7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIHN0YXRpYyBXZWJHZW9sb2NhdGlv
blByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVhdGUo
dG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSkpOwogICAgIFdLR2VvbG9jYXRpb25NYW5h
Z2VyU2V0UHJvdmlkZXIodG9BUEkoZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSksIFdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlkZXIobG9jYXRpb24pKTsKQEAgLTEwNiw0ICsxMDUsMTMg
QEAgU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0CiAgICAgcmV0dXJuIHNfZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeTsKIH0K
IAorU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdENvb2tpZVN0b3JhZ2VEaXJlY3Rv
cnkoKSBjb25zdAoreworICAgIGlmICghc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzX2RlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5
OworCisgICAgc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHREYXRhTG9j
YXRpb24oKTsKKyAgICByZXR1cm4gc19kZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0V2luLmNwcAppbmRleCA5OTY0ZGUwLi45ZGQwNTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViQ29udGV4dFdpbi5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiAjaWYgVVNFKENGTkVUV09SSykK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KQEAgLTYxLDExICs2MiwxMSBA
QCB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogICAgIHBhcmFtZXRlcnMuY2ZVUkxDYWNoZU1lbW9y
eUNhcGFjaXR5ID0gQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGNmdXJsQ2FjaGUuZ2V0KCkpOwog
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTENhY2hlUGF0aChBZG9wdENGLCB3a0Nv
cHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOwotICAgIHBhcmFtZXRlcnMuY2ZVUkxDYWNo
ZVBhdGggPSBTdHJpbmcoY2ZVUkxDYWNoZVBhdGguZ2V0KCkpOworICAgIHBhcmFtZXRlcnMuZGlz
a0NhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmVVJMQ2FjaGVQYXRoLmdldCgpKTsKICAgICAvLyBS
ZW1vdmUgdGhlIGVuZGluZyAnXCcgKG5lY2Vzc2FyeSB0byBoYXZlIENGTmV0d29yayBmaW5kIHRo
ZSBDYWNoZSBmaWxlKS4KLSAgICBBU1NFUlQocGFyYW1ldGVycy5jZlVSTENhY2hlUGF0aC5sZW5n
dGgoKSk7Ci0gICAgaWYgKHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGhbcGFyYW1ldGVycy5jZlVS
TENhY2hlUGF0aC5sZW5ndGgoKSAtIDFdID09ICdcXCcpCi0gICAgICAgIHBhcmFtZXRlcnMuY2ZV
UkxDYWNoZVBhdGgucmVtb3ZlKHBhcmFtZXRlcnMuY2ZVUkxDYWNoZVBhdGgubGVuZ3RoKCkgLSAx
KTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkubGVuZ3RoKCkpOwor
ICAgIGlmIChwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5lbmRzV2l0aChVQ2hhcignXFwn
KSkpCisgICAgICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LnJlbW92ZShwYXJhbWV0
ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5sZW5ndGgoKSAtIDEpOwogCiAjaWYgVVNFKENGVVJMU1RP
UkFHRVNFU1NJT05TKQogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9
IFN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9y
SW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50
aWZpZXJLZXkpKSk7CkBAIC05Nyw1ICs5OCwxNiBAQCBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZv
cm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7CiB9CiAKK1N0cmluZyBXZWJDb250ZXh0
OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVy
biBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJjYWNoZSIpOworfQorCitTdHJpbmcgV2ViQ29udGV4
dDo6cGxhdGZvcm1EZWZhdWx0Q29va2llU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9X
ZWJQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbQppbmRleCA1MTlkNjJiLi5mY2M0MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KQEAgLTI1NywxOCArMjU3LDE4IEBAIHZvaWQg
V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5kYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMubnNVUkxDYWNoZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNp
b246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUuaXNO
dWxsKCkpIHsKICAgICAgICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAIFdlYiBDb250ZW50IiwgIlZpc2libGUg
bmFtZSBvZiB0aGUgd2ViIHByb2Nlc3MuIFRoZSBhcmd1bWVudCBpcyB0aGUgYXBwbGljYXRpb24g
bmFtZS4iKSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZV07CiAgICAg
ICAgIFdLU2V0VmlzaWJsZUFwcGxpY2F0aW9uTmFtZSgoQ0ZTdHJpbmdSZWYpYXBwbGljYXRpb25O
YW1lKTsKICAgICB9CiAKLSAgICBpZiAoIXBhcmFtZXRlcnMubnNVUkxDYWNoZVBhdGguaXNOdWxs
KCkpIHsKKyAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7
CiAgICAgICAgIE5TVUludGVnZXIgY2FjaGVNZW1vcnlDYXBhY2l0eSA9IHBhcmFtZXRlcnMubnNV
UkxDYWNoZU1lbW9yeUNhcGFjaXR5OwogICAgICAgICBOU1VJbnRlZ2VyIGNhY2hlRGlza0NhcGFj
aXR5ID0gcGFyYW1ldGVycy5uc1VSTENhY2hlRGlza0NhcGFjaXR5OwogCi0gICAgICAgIFJldGFp
blB0cjxOU1VSTENhY2hlPiBwYXJlbnRQcm9jZXNzVVJMQ2FjaGUoQWRvcHROUywgW1tOU1VSTENh
Y2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OmNhY2hlTWVtb3J5Q2FwYWNpdHkgZGlz
a0NhcGFjaXR5OmNhY2hlRGlza0NhcGFjaXR5IGRpc2tQYXRoOnBhcmFtZXRlcnMubnNVUkxDYWNo
ZVBhdGhdKTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHBhcmVudFByb2Nlc3NVUkxD
YWNoZShBZG9wdE5TLCBbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6
Y2FjaGVNZW1vcnlDYXBhY2l0eSBkaXNrQ2FwYWNpdHk6Y2FjaGVEaXNrQ2FwYWNpdHkgZGlza1Bh
dGg6cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnldKTsKICAgICAgICAgW05TVVJMQ2FjaGUg
c2V0U2hhcmVkVVJMQ2FjaGU6cGFyZW50UHJvY2Vzc1VSTENhY2hlLmdldCgpXTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4u
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5k
ZXggODA5YWFjYi4uZjBjMTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycwogICAgIGlmIChkZWZhdWx0U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRl
cnMuY2ZVUkxDYWNoZVBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjYWNoZVBhdGgoQWRvcHRDRiwgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnku
Y3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgaWYgKCFjYWNoZVBhdGgpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1
NGZkODEuLmIxNTA2MDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0xNSAgU3ppbGFyZCBMZWRhbiAgPHN6
bGVkYW5AaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFNlcGFyYXRlIFdlYktpdDIgaW5zdGFu
Y2VzIHVzZSB0aGUgc2FtZSBsb2NhbCBzdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIFRlc3RDb250cm9sbGVyIGhhcyBiZWVuIG1vZGlmaWVkIHRv
IGdldCB0aGUgbG9jYWwgc3RvcmFnZSBmcm9tCisgICAgICAgIERVTVBSRU5ERVJUUkVFX1RFTVAg
ZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIGl0J3MgdW5kZWZpbmVkCisgICAgICAgIHRoZW4gaXQg
d29ya3Mgd2l0aCB0aGUgZGVmYXVsdCBkaXJlY3RvcnkuIFRoZSBhaW0gaXMgZm9yIHRoZSBwYXJh
bGxlbGx5CisgICAgICAgIHN0YXJ0ZWQgV1RScyB0byB1c2Ugc2VwYXJhdGUgZGlyZWN0b3JpZXMu
IEl0IHdhcyBpbXBsZW1lbnRlZCBmb3IgV0sxCisgICAgICAgIGxvbmcgdGltZSBhZ28gYW5kIGl0
IHdvcmtzIGZpbmUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorCiAyMDEy
LTEwLTE0ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBub3Rp
ZmljYXRpb24gb3JpZ2luIHBlcm1pc3Npb24gcmVxdWVzdCB3aGVuIG5vIGpzIGNhbGxiYWNrIGlz
IHByb3ZpZGVkCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDdlYjA4MjcuLjA1NGNhZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC0zMTcsMTIgKzMxNywxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFs
aXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgbV9jb250ZXh0LmFkb3B0KFdL
Q29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoKCkp
KTsKICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBhZG9wdFB0cihuZXcgR2VvbG9jYXRpb25Q
cm92aWRlck1vY2sobV9jb250ZXh0LmdldCgpKSk7CiAKLSAgICBjb25zdCBjaGFyKiBwYXRoID0g
bGlicmFyeVBhdGhGb3JUZXN0aW5nKCk7Ci0gICAgaWYgKHBhdGgpIHsKLSAgICAgICAgVmVjdG9y
PGNoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KHN0cmxlbihwYXRoKSArIHN0cmxlbigiL0RhdGFiYXNl
cyIpICsgMSk7Ci0gICAgICAgIHNwcmludGYoZGF0YWJhc2VEaXJlY3RvcnkuZGF0YSgpLCAiJXMl
cyIsIHBhdGgsICIvRGF0YWJhc2VzIik7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBkYXRhYmFzZURpcmVjdG9yeVdLKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGRhdGFiYXNlRGlyZWN0b3J5LmRhdGEoKSkpOwotICAgICAgICBXS0NvbnRleHRTZXREYXRh
YmFzZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGRhdGFiYXNlRGlyZWN0b3J5V0suZ2V0KCkp
OworICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZv
clRlc3RpbmcoKSkgeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFJlbmRl
clRyZWVUZW1wV0soQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZHVtcFJl
bmRlclRyZWVUZW1wKSk7CisgICAgICAgIFdLQ29udGV4dFNldERhdGFiYXNlRGlyZWN0b3J5KG1f
Y29udGV4dC5nZXQoKSwgZHVtcFJlbmRlclRyZWVUZW1wV0suZ2V0KCkpOworICAgICAgICBXS0Nv
bnRleHRTZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkobV9jb250ZXh0LmdldCgpLCBkdW1wUmVuZGVy
VHJlZVRlbXBXSy5nZXQoKSk7CisgICAgICAgIFdLQ29udGV4dFNldERpc2tDYWNoZURpcmVjdG9y
eShtX2NvbnRleHQuZ2V0KCksIGR1bXBSZW5kZXJUcmVlVGVtcFdLLmdldCgpKTsKKyAgICAgICAg
V0tDb250ZXh0U2V0Q29va2llU3RvcmFnZURpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIGR1bXBS
ZW5kZXJUcmVlVGVtcFdLLmdldCgpKTsKICAgICB9CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemVD
b250ZXh0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>