<?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>21810</bug_id>
          
          <creation_ts>2008-10-22 14:31:32 -0700</creation_ts>
          <short_desc>Remove use of static C++ objects that are destroyed at exit time (destructors)</short_desc>
          <delta_ts>2023-03-02 11:02:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>22061</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Greg Bolsinga">bolsinga</reporter>
          <assigned_to name="Greg Bolsinga">bolsinga</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>faustjonson</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>96231</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-22 14:31:32 -0700</bug_when>
    <thetext>Remove use of static C++ objects in general, but for an example from Timer.cpp:

static Vector&lt;TimerBase*&gt;* timerHeap;
static HashSet&lt;const TimerBase*&gt;* timersReadyToFire;

In a multi-threaded WebCore environment, a thread may be using these while the main thread is deleting them causing crashes.

Objects like this are also held in memory until exit is called, when the C++ runtime cleans these up. So the destructors only run at exit and don&apos;t really provide any benefit. Without them, the program would quit somewhat faster. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96233</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-22 14:39:40 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Remove use of static C++ objects in general, but for an example from Timer.cpp:
&gt; 
&gt; static Vector&lt;TimerBase*&gt;* timerHeap;
&gt; static HashSet&lt;const TimerBase*&gt;* timersReadyToFire;
&gt; 
&gt; In a multi-threaded WebCore environment, a thread may be using these while the
&gt; main thread is deleting them causing crashes.

WebCore in general is not usable from multiple threads concurrently. I guess this would be a step towards making it safe to use in that fashion?

&gt; Objects like this are also held in memory until exit is called, when the C++
&gt; runtime cleans these up. So the destructors only run at exit and don&apos;t really
&gt; provide any benefit. Without them, the program would quit somewhat faster. ;)

The two examples you gave are just pointers, and thus don&apos;t cause any destructors to run when the process exits. But what you said is true for static objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96236</commentid>
    <comment_count>2</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-22 14:49:09 -0700</bug_when>
    <thetext>Arg. You are correct about those being pointers. Terrible example to quote in this bug report.

But yes in general this would be good for static objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96278</commentid>
    <comment_count>3</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-22 18:44:41 -0700</bug_when>
    <thetext>I think this finds the statics on Mac OS X:

nm /Builds/Release/WebCore.framework/WebCore | grep &quot; b &quot; | sed -e&quot;s|^........ b ||&quot; | sort</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96749</commentid>
    <comment_count>4</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-27 11:50:44 -0700</bug_when>
    <thetext>WebKit is currently using this script:

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/check-for-global-initializers

but that script is not finding some instances of this. For example it doesn&apos;t find one in the following. Search for gFunctionMap in:

http://trac.webkit.org/browser/trunk/WebCore/html/HTMLParser.cpp

Looking at nm output, I think these are in the bss section, but so are pointers to classes.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96752</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-27 12:07:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; WebKit is currently using this script:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/check-for-global-initializers
&gt; 
&gt; but that script is not finding some instances of this. For example it doesn&apos;t
&gt; find one in the following. Search for gFunctionMap in:

This is because gFunctionMap is not a global initializer, it is a lazily initialized the first time the getNode method is called.  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96756</commentid>
    <comment_count>6</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-27 12:51:29 -0700</bug_when>
    <thetext>Sure. However, if you look at MediaQueryEvaluator, HTMLElementFactory, SVGElementFactory, etc. They have FunctionMaps too, but allocate them on the heap with new. I&apos;d like to be able to find ones that are not new&apos;d, and eliminate those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96762</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-27 13:20:04 -0700</bug_when>
    <thetext>1) We&apos;re not going to remove all use of static C++ objects, so the title of this bug is bogus. I&apos;ve retitled.

2) The check-for-global-initializers script checks for objects with global initializers. Those are objects that are initialized at library load time.

3) What Greg is after is eliminating global objects with exit-time destructor calls. I think it&apos;s reasonable to get rid of those. We already use a coding style that avoids them. It could speed up process termination for any program using WebKit and has the benefit Greg mentioned for the project he&apos;s working on.

The script to grep for all static objects is a mistake. We need something that finds only statics that have exit-time destructor code.

All the examples cited in this bug so far, such as timerHeap, timersReadyToFire, and gFunctionMap, are already fine. They don&apos;t have any exit-time destructors. But there are lots of objects that do have them. Such as staticWrapperSet in JSDOMBinding.cpp. The trick is to find some way to locate all of those.

However, in debug builds we use these exit-time destructors to log error messages after all other cleanup is complete. I&apos;m not sure what the right thing to do for those is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97585</commentid>
    <comment_count>8</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:09:28 -0800</bug_when>
    <thetext>I think this has been solved by 22061.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97587</commentid>
    <comment_count>9</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:11:44 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 22061 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97589</commentid>
    <comment_count>10</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:18:19 -0800</bug_when>
    <thetext>Ah well, too soon. HTMLParser.cpp&apos;s gFunctionMap wasn&apos;t caught by that script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97593</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 11:20:40 -0800</bug_when>
    <thetext>The script has a list of files to skip. Until that list is empty we&apos;re not done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97597</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 11:32:04 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Ah well, too soon. HTMLParser.cpp&apos;s gFunctionMap wasn&apos;t caught by that script.

Specifically http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/check-for-exit-time-destructors contains this line:

    next if $shortName eq &quot;HTMLParser.o&quot;;

If you remove this line then you&apos;ll see the error in that file. There are 89 files skipped right now. So writing the script is done; next step is to start fixing the cases in each of those 89 files (and 9 more files in WebKit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97598</commentid>
    <comment_count>13</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:34:45 -0800</bug_when>
    <thetext>Yep. I totally missed that. I had seen the script and the fixes to some parts of the code, and figured I had missed the commits for the rest going by.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97621</commentid>
    <comment_count>14</comment_count>
      <attachid>24896</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 15:10:11 -0800</bug_when>
    <thetext>Created attachment 24896
Removes many exit-time destructors

The types of exit time destructors this does not cover are for code like:

static RefPtr&lt;T&gt; sVar;

This would be:

static RefPtr&lt;T&gt;&amp; sVar = *new RefPtr&lt;T&gt;;

and that just seems weird. Should these be OwnPtr&apos;s? There is a similar issue with RetainPtr&lt;T&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97627</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 15:30:10 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; The types of exit time destructors this does not cover are for code like:
&gt; 
&gt; static RefPtr&lt;T&gt; sVar;
&gt; 
&gt; This would be:
&gt; 
&gt; static RefPtr&lt;T&gt;&amp; sVar = *new RefPtr&lt;T&gt;;

For these I think we want this:

    static T* sVar = &lt;expression&gt;.releaseRef();

Just use a raw pointer for the intentionally leaked pointer. You&apos;ll have to change the sites that use the pointer to do things like remove calls to get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97628</commentid>
    <comment_count>16</comment_count>
      <attachid>24896</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 15:33:49 -0800</bug_when>
    <thetext>Comment on attachment 24896
Removes many exit-time destructors

&gt; -    static ApplicationCacheStorage storage;
&gt; +    static ApplicationCacheStorage&amp; storage = *new ApplicationCacheStorage();

No need for the parens here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97630</commentid>
    <comment_count>17</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 15:57:08 -0800</bug_when>
    <thetext>I get different results once I run a release build:

CSSStyleSelector.o has exit time destructors in it! (/Builds/WebCore.build/Release/WebCore.build/Objects-normal/i386/CSSStyleSelector.o)
    WebCore::CSSStyleSelector::applyProperty(int, WebCore::CSSValue*)
FontCache.o has exit time destructors in it! (/Builds/WebCore.build/Release/WebCore.build/Objects-normal/i386/FontCache.o)
    WebCore::FontCache::purgeInactiveFontData(int)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97631</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 15:59:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I get different results once I run a release build:
&gt; 
&gt; CSSStyleSelector.o has exit time destructors in it!
&gt; (/Builds/WebCore.build/Release/WebCore.build/Objects-normal/i386/CSSStyleSelector.o)
&gt;     WebCore::CSSStyleSelector::applyProperty(int, WebCore::CSSValue*)
&gt; FontCache.o has exit time destructors in it!
&gt; (/Builds/WebCore.build/Release/WebCore.build/Objects-normal/i386/FontCache.o)
&gt;     WebCore::FontCache::purgeInactiveFontData(int)

Yes, I think that&apos;s why I broke the build when I first checked in. We&apos;ll have to try both debug and release builds.

It&apos;s possible the tool has a flaw, but it seems to be mostly working correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97632</commentid>
    <comment_count>19</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 16:04:21 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Yes, I think that&apos;s why I broke the build when I first checked in. We&apos;ll have
&gt; to try both debug and release builds.
&gt; 
&gt; It&apos;s possible the tool has a flaw, but it seems to be mostly working correctly.

Agreed. I&apos;ll get as many as I can now. There is definitely a _cxa_atexit, but I&apos;m not sure what is forcing it to be called yet.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97733</commentid>
    <comment_count>20</comment_count>
      <attachid>24917</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-05 14:08:17 -0800</bug_when>
    <thetext>Created attachment 24917
Updated patch to get more objects

I&apos;ve updated the patch to do some, but not all the RefPtr&lt;T&gt; code.

What to do with static RefPtr&lt;T&gt; m = f(), when PassRefPtr&lt;T&gt; f();?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97739</commentid>
    <comment_count>21</comment_count>
      <attachid>24920</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-05 14:49:11 -0800</bug_when>
    <thetext>Created attachment 24920
Missed one in WebHTMLRepresentation.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97743</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-05 15:38:40 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; What to do with static RefPtr&lt;T&gt; m = f(), when PassRefPtr&lt;T&gt; f();?

static T* m = f().releaseRef();
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97744</commentid>
    <comment_count>23</comment_count>
      <attachid>24920</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-05 15:54:29 -0800</bug_when>
    <thetext>Comment on attachment 24920
Missed one in WebHTMLRepresentation.mm

Am I re-reviewing stuff I reviewed before? Can you land part of this so we can just review the new parts?

Please don&apos;t keep making larger and larger patches. It&apos;s hard to review them!

&gt; +	https://bugs.webkit.org/show_bug.cgi?id=21810
&gt; +	Remove use of static C++ objects that are destroyed at exit time (destructors)

Please don&apos;t use tabs.

&gt; -            static RetainPtr&lt;NSColor&gt; clearColor = [NSColor clearColor];
&gt; -            return clearColor.get();
&gt; +            static NSColor *clearColor = [NSColor clearColor];
&gt; +            return clearColor;

How did you determine it was OK to not call retain in this case? Is the result of [NSColor clearColor] guaranteed to not be autoreleased?

&gt; -            static RetainPtr&lt;NSColor&gt; cachedColors[cacheSize];
&gt; +            static NSColor* cachedColors[cacheSize];

This change is wrong. We need to call CFRetain on the colors when we put them in the cache and CFRelease on the old colors when we punt them from the cache. I think that instead you should do this:

               static RetainPtr&lt;NSColor&gt;* cachedColors = new [cacheSize] RetainPtr&lt;NSColor&gt;;

&gt; -    static RetainPtr&lt;NSColor&gt; spellingPatternColor = nil;
&gt; +    static NSColor *spellingPatternColor = nil;

We need to retain the spelling pattern color when we initialize it. We can&apos;t keep the code as-is.

&gt; -    static RetainPtr&lt;NSColor&gt; grammarPatternColor = nil;
&gt; +    static NSColor *grammarPatternColor = nil;

Same comment.

&gt; -    static RetainPtr&lt;NSString&gt; webFallbackFontFamily = nil;
&gt; +    static NSString* webFallbackFontFamily = nil;

This change is wrong. We need to CFRetain the NSString when putting it into this variable.

&gt; -    static RetainPtr&lt;NSArray&gt; types = nil;
&gt; +    static NSArray *types = nil;

This change is wrong. We need to CFRetain the NSArray when putting it into this variable in case we&apos;re running under GC. Although I&apos;m not entirely sure -- this might work properly in cases where the global is inside an Objective-C method and not a C/C++ function.

&gt; -    static RetainPtr&lt;NSMutableArray&gt; types = nil;
&gt; +    static NSMutableArray *types = nil;

Ditto.

&gt; -    static RetainPtr&lt;NSString&gt; attachmentCharacterString = [NSString stringWithCharacters:&amp;attachmentCharacter length:1];
&gt; +    static NSString *attachmentCharacterString = [NSString stringWithCharacters:&amp;attachmentCharacter length:1];

This change is wrong. We need to CFRetain this string.

&gt; -    static RetainPtr&lt;NSArray&gt; types;
&gt; +    static NSArray *types;

This change is wrong. We need to CFRetain the array in the case where we&apos;re running under GC.

&gt; -    static RetainPtr&lt;NSMutableArray&gt; types;
&gt; +    static NSMutableArray *types;

Ditto.

&gt; -    static RetainPtr&lt;NSMutableArray&gt; types;
&gt; +    static NSMutableArray *types;

Ditto.

&gt; -    static RetainPtr&lt;NSArray&gt; types = [[NSArray alloc] initWithObjects:WebArchivePboardType, NSHTMLPboardType,
&gt; +    static NSArray *types = [[NSArray alloc] initWithObjects:WebArchivePboardType, NSHTMLPboardType,
&gt;             NSFilenamesPboardType, NSTIFFPboardType, NSPICTPboardType, NSURLPboardType, 
&gt;             NSRTFDPboardType, NSRTFPboardType, NSStringPboardType, NSColorPboardType, nil];

Ditto.

&gt;      
&gt; -    static RetainPtr&lt;NSArray&gt; staticSupportedMIMETypes =
&gt; +    static NSArray *staticSupportedMIMETypes =
&gt;          concatenateArrays([self supportedNonImageMIMETypes], [self supportedImageMIMETypes]);

Ditto.

&gt; -    static RetainPtr&lt;NSArray&gt; staticSupportedNonImageMIMETypes =
&gt; +    static NSArray *staticSupportedNonImageMIMETypes =
&gt;          stringArray(MIMETypeRegistry::getSupportedNonImageMIMETypes());

Ditto.

&gt; -    static RetainPtr&lt;NSArray&gt; staticSupportedImageMIMETypes =
&gt; +    static NSArray *staticSupportedImageMIMETypes =
&gt;          stringArray(MIMETypeRegistry::getSupportedImageMIMETypes());

Ditto.

&gt; +        next if (!defined($currentSymbol) || !length($currentSymbol));

This should just be:

    next unless $currentSymbol;

There&apos;s no case where $currentSymbol is undefined, and we can allow the string &quot;0&quot;, so I think that&apos;s reads nicer.

review- because this includes quite a few incorrect RetainPtr removals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97847</commentid>
    <comment_count>24</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-11-06 11:29:29 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 24896 [edit])
&gt; &gt; -    static ApplicationCacheStorage storage;
&gt; &gt; +    static ApplicationCacheStorage&amp; storage = *new ApplicationCacheStorage();
&gt; 
&gt; No need for the parens here.
&gt; 
&gt; r=me

Landed Attachment #24896 as r38189:

http://trac.webkit.org/changeset/38189

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97878</commentid>
    <comment_count>25</comment_count>
      <attachid>24956</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-06 14:23:00 -0800</bug_when>
    <thetext>Created attachment 24956
Incremental patch addressing Retain &amp; GC and PassRefPtr&lt;T&gt;

This gets all above but:

static String v = f(); where String f();

I completely missed the boat on GC! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97879</commentid>
    <comment_count>26</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-06 14:29:15 -0800</bug_when>
    <thetext>In addition EventHandlerMac.mm has:

static RetainPtr&lt;NSEvent&gt;&amp; currentEvent();

and it is used like:

currentEvent() = event;

This and return values of String (from Comment 25) seem to require SPI changes, unless there is some C++ foo I&apos;ve not yet attained.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97886</commentid>
    <comment_count>27</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-11-06 16:57:13 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 24896 [edit] [edit])
&gt; &gt; &gt; -    static ApplicationCacheStorage storage;
&gt; &gt; &gt; +    static ApplicationCacheStorage&amp; storage = *new ApplicationCacheStorage();
&gt; &gt; 
&gt; &gt; No need for the parens here.
&gt; &gt; 
&gt; &gt; r=me
&gt; 
&gt; Landed Attachment #24896 [edit] as r38189:
&gt; 
&gt; http://trac.webkit.org/changeset/38189

Backed out in r38202:  http://trac.webkit.org/changeset/38202

Backed in in r38203:  http://trac.webkit.org/changeset/38203

Backed out again in r38207:  http://trac.webkit.org/changeset/38207

There is a bug in gcc that ships with Xcode 3.0 that must be worked around.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97945</commentid>
    <comment_count>28</comment_count>
      <attachid>24956</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-07 09:15:09 -0800</bug_when>
    <thetext>Comment on attachment 24956
Incremental patch addressing Retain &amp; GC and PassRefPtr&lt;T&gt;

&gt; -    static RefPtr&lt;Image&gt; brokenImage;
&gt; +    static Image* brokenImage = 0;
&gt;      if (!brokenImage)
&gt; -        brokenImage = Image::loadPlatformResource(&quot;missingImage&quot;);
&gt; -    return brokenImage.get();
&gt; +        brokenImage = Image::loadPlatformResource(&quot;missingImage&quot;).releaseRef();

There&apos;s no need for the if statement here; you didn&apos;t add it, but it&apos;s not needed.

    static Image* brokenImage = Image::loadPlatformResource(&quot;missingImage&quot;).releaseRef();

The above will do the same thing a bit more efficiently.

&gt; +            static NSColor *clearColor = (NSColor*)CFRetain([NSColor clearColor]);

For these it would be slightly better to use the HardRetain function from FoundationExtras.h. I think that using HardRetain would eliminate the need for the typecast.

If it doesn&apos;t remove the need for the typecast, I&apos;ll mention that we&apos;d normally use static_cast or reinterpret_cast rather than a C-style cast for these. Also, we use &quot;NSColor *&quot; with a space for Objective-C types. It&apos;s a confusing rule, but we&apos;ve been following it consistently elsewhere.

&gt; -        spellingPatternColor = color;
&gt; +        spellingPatternColor = (NSColor*)CFRetain(color);

In these cases where it&apos;s just assignment and not a definition, I think it&apos;s better for type safety to just do the HardRetain on a separate line.

&gt; -    static RetainPtr&lt;NSString&gt; webFallbackFontFamily = nil;
&gt; +    static NSString* webFallbackFontFamily = nil;
&gt;      if (!webFallbackFontFamily)
&gt; -        webFallbackFontFamily = [[NSFont systemFontOfSize:16.0f] familyName];
&gt; -    return webFallbackFontFamily.get();
&gt; +        webFallbackFontFamily = (NSString*)CFRetain([[NSFont systemFontOfSize:16.0f] familyName]);
&gt; +    return webFallbackFontFamily;

We use spaces in Objective-C types like &quot;NSString *&quot;. This can be done in a single line. Please try this:

    static NSString *webFallbackFontFamily = HardRetain([[NSFont systemFontOfSize:16.0f] familyName]);

By the way, this single-line approach can be used even for more complicated cases by putting the code to compute the initial value into a separate function, perhaps an inline function. But I&apos;m not asking you to change that everywhere -- just where it&apos;s simple and easy.

&gt; -    static RetainPtr&lt;NSMutableArray&gt; types = nil;
&gt; +    static NSMutableArray *types = nil;
&gt;      if (!types) {
&gt;          types = [[NSMutableArray alloc] initWithObjects:NSTIFFPboardType, nil];
&gt; -        [types.get() addObjectsFromArray:writableTypesForURL()];
&gt; -        [types.get() addObject:NSRTFDPboardType];
&gt; +        [types addObjectsFromArray:writableTypesForURL()];
&gt; +        [types addObject:NSRTFDPboardType];
&gt; +        CFRetain(types);

This one could use HardRetainWithNSRelease; there&apos;s no need for the double retain in a case like this.

&gt; -    static RefPtr&lt;Image&gt; resizeCornerImage;
&gt; +    static Image* resizeCornerImage = 0;
&gt;      if (!resizeCornerImage)
&gt; -        resizeCornerImage = Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;);
&gt; +        resizeCornerImage = Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;).releaseRef();

Another single-line candidate.

&gt;  + (NSArray *)_web_writableTypesForURL
&gt;  {
&gt; -    static RetainPtr&lt;NSArray&gt; types;
&gt; +    static NSArray *types = nil;
&gt;      if (!types) {
&gt;          types = [[NSArray alloc] initWithObjects:
&gt;              WebURLsWithTitlesPboardType,
&gt; @@ -67,29 +67,32 @@ NSString *WebURLNamePboardType = @&quot;publi
&gt;              WebURLNamePboardType,
&gt;              NSStringPboardType,
&gt;              nil];
&gt; +        CFRetain(types);
&gt;      }
&gt; -    return types.get();
&gt; +    return types;
&gt;  }

Another HardRetainWithNSRelease candidate.

&gt;  static NSArray *_writableTypesForImageWithoutArchive (void)
&gt;  {
&gt; -    static RetainPtr&lt;NSMutableArray&gt; types;
&gt; +    static NSMutableArray *types = nil;
&gt;      if (types == nil) {
&gt;          types = [[NSMutableArray alloc] initWithObjects:NSTIFFPboardType, nil];
&gt; -        [types.get() addObjectsFromArray:[NSPasteboard _web_writableTypesForURL]];
&gt; +        [types addObjectsFromArray:[NSPasteboard _web_writableTypesForURL]];
&gt; +        CFRetain(types);
&gt;      }
&gt; -    return types.get();
&gt; +    return types;
&gt;  }

Ditto.

&gt;  static NSArray *_writableTypesForImageWithArchive (void)
&gt;  {
&gt; -    static RetainPtr&lt;NSMutableArray&gt; types;
&gt; +    static NSMutableArray *types = nil;
&gt;      if (types == nil) {
&gt;          types = [_writableTypesForImageWithoutArchive() mutableCopy];
&gt; -        [types.get() addObject:NSRTFDPboardType];
&gt; -        [types.get() addObject:WebArchivePboardType];
&gt; +        [types addObject:NSRTFDPboardType];
&gt; +        [types addObject:WebArchivePboardType];
&gt; +        CFRetain(types);
&gt;      }
&gt; -    return types.get();
&gt; +    return types;
&gt;  }

Ditto.

&gt; -    static RetainPtr&lt;NSArray&gt; types = [[NSArray alloc] initWithObjects:WebArchivePboardType, NSHTMLPboardType,
&gt; +    static NSArray *types = (NSArray*)CFRetain([[NSArray alloc] initWithObjects:WebArchivePboardType, NSHTMLPboardType,
&gt;             NSFilenamesPboardType, NSTIFFPboardType, NSPICTPboardType, NSURLPboardType, 
&gt; -           NSRTFDPboardType, NSRTFPboardType, NSStringPboardType, NSColorPboardType, nil];
&gt; +           NSRTFDPboardType, NSRTFPboardType, NSStringPboardType, NSColorPboardType, nil]);

HardRetainWithNSRelease is exactly what we want here.

&gt;          if (!$result) {
&gt; -            print &quot;$shortName has exit time destructors in it! ($path)\n&quot;;
&gt; +            print &quot;$shortName has exit time destructors in it!\n  ($path)\n&quot;;
&gt;              $result = 1;
&gt;          }

I don&apos;t like this change. Usually you want to ignore the full path of the file, which is why it&apos;s off to the right.

And if you are convinced that the new format is better, then I&apos;d like to change the other two check-for scripts that use this same format for the error message.

I&apos;m going to say review+ because none of my comments above seem like showstoppers, but I think this can be improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97946</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-07 09:30:00 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; In addition EventHandlerMac.mm has:
&gt; 
&gt; static RetainPtr&lt;NSEvent&gt;&amp; currentEvent();
&gt; 
&gt; and it is used like:
&gt; 
&gt; currentEvent() = event;

That&apos;s no problem. If you write the function like this it will work:

    RetainPtr&lt;NSEvent&gt;&amp; currentEvent()
    {
        static RetainPtr&lt;NSEvent&gt;&amp; currentEventStorage = *new RetainPtr&lt;NSEvent&gt;;
        return currentEventStorage;
    }

&gt; This and return values of String (from Comment 25) seem to require SPI changes,
&gt; unless there is some C++ foo I&apos;ve not yet attained.

I&apos;m almost certain they won&apos;t require those changes. Please give me a specific example and I&apos;ll help you out with it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97978</commentid>
    <comment_count>30</comment_count>
      <attachid>24975</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-07 16:31:26 -0800</bug_when>
    <thetext>Created attachment 24975
This is the bt of the crash that happens with the first patch applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97983</commentid>
    <comment_count>31</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-07 16:56:32 -0800</bug_when>
    <thetext>I have filed &lt;rdar://problem/6354696&gt; bad compiler code on the compiler problems found with the first patch from 11/05/2008 that is holding up landing this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97984</commentid>
    <comment_count>32</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-07 16:59:02 -0800</bug_when>
    <thetext>Also if I don&apos;t have static HashMap&lt;String, unsigned&gt;&amp; defaultPorts = *new HashMap&lt;String, unsigned&gt;; and switch it back to static HashMap&lt;String, unsigned&gt; defaultPorts; the contents of defaultPorts in gdb look the same, and it doesn&apos;t crash.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98104</commentid>
    <comment_count>33</comment_count>
      <attachid>25008</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-09 14:18:38 -0800</bug_when>
    <thetext>Created attachment 25008
Updates patch that doesn&apos;t crash running all LayoutTests

This updates the patch that David Kilzer added and removed in Comment 27.

It sets GCC_THREADSAFE_STATICS = YES to work around the compiler bug reported in &lt;rdar://problem/6354696&gt; Codegen issue with C++ static reference in gcc build 5465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98106</commentid>
    <comment_count>34</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-09 14:20:03 -0800</bug_when>
    <thetext>After the most recent path is reviewed and committed, I&apos;ll address the review comments in Comment 28 and Comment 29.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98109</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-09 16:18:42 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; It sets GCC_THREADSAFE_STATICS = YES to work around the compiler bug reported
&gt; in &lt;rdar://problem/6354696&gt; Codegen issue with C++ static reference in gcc
&gt; build 5465

Please do *not* land this change. We turned this option off for a speedup, and we don&apos;t want to give the speed back.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98116</commentid>
    <comment_count>36</comment_count>
      <attachid>25008</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-09 16:58:49 -0800</bug_when>
    <thetext>Comment on attachment 25008
Updates patch that doesn&apos;t crash running all LayoutTests

-GCC_THREADSAFE_STATICS = NO;
+GCC_THREADSAFE_STATICS = YES;

This will cause a performance regression. We need to solve the problem some other way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98202</commentid>
    <comment_count>37</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2008-11-10 13:40:09 -0800</bug_when>
    <thetext>Won&apos;t this cause problems in cases where webkit is a dll that we load and unload dynamically?  Seems to be ruling out this use case permanently...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98203</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-10 13:58:26 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Won&apos;t this cause problems in cases where webkit is a dll that we load and
&gt; unload dynamically?  Seems to be ruling out this use case permanently...

If we want to create a project so that DLLs can be unloaded, we could visit these sites again and come up with a way to destroy the objects.

WebKit today isn&apos;t even close to working that way, and I don&apos;t think these changes create any major additional obstacles to doing that work some day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98214</commentid>
    <comment_count>39</comment_count>
      <attachid>25029</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-10 14:57:43 -0800</bug_when>
    <thetext>Created attachment 25029
Remove *new construct

This is an update to the 11/05/2008 patch.

For each of these: Changed to leak an object to avoid an exit-time destructor.
        
In general code of the form:
        
static T m;
        
became:
        
static T* mPtr = new T;
 T&amp; m = *mPtr;
        
This is to work around &lt;rdar://problem/6354696&gt; Codegen issue with C++ static reference in gcc build 5465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98215</commentid>
    <comment_count>40</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-10 14:59:10 -0800</bug_when>
    <thetext>In addition, this gets some other code points that have the *new construct that were not in the previous patch. I tested it on a Leopard Xcode 3.0 system (with the bad compiler), and ran all LayoutTests without crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98399</commentid>
    <comment_count>41</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-11 16:51:54 -0800</bug_when>
    <thetext>See Bug 22183. The last patch covers this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98404</commentid>
    <comment_count>42</comment_count>
      <attachid>25029</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-11 17:15:34 -0800</bug_when>
    <thetext>Comment on attachment 25029
Remove *new construct

This seems really bad to me!  I&apos;d much rather see a temporary macro being used to avoid this ugliness.  This is all to work around a temporary bug in gcc??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98405</commentid>
    <comment_count>43</comment_count>
      <attachid>25029</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-11 17:18:09 -0800</bug_when>
    <thetext>Comment on attachment 25029
Remove *new construct

Another single-line way to hand this would be:

static Mutex&amp; mutex = *(new Mutex);

Assuming that compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98408</commentid>
    <comment_count>44</comment_count>
      <attachid>25029</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-11 17:30:03 -0800</bug_when>
    <thetext>Comment on attachment 25029
Remove *new construct

Someone else can review this. :)  It&apos;s ugly.  I wish that we had a nicer solution to avoid this temporary ugliness, but I&apos;ll let the more-informed Apple people make that call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98473</commentid>
    <comment_count>45</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-11-12 08:29:47 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 25029 [review])
&gt; Another single-line way to hand this would be:
&gt; 
&gt; static Mutex&amp; mutex = *(new Mutex);
&gt; 
&gt; Assuming that compiles.

That will compile, and was in fact the way this patch was first written (though without the parentheses you added). But this caused crashes with some versions of GCC. See comment 30, comment 31, and comment 32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98476</commentid>
    <comment_count>46</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 09:57:06 -0800</bug_when>
    <thetext>Greg, I think you&apos;re already doing this, but I think a macro would be a good idea. Something with a name like DEFINE_STATIC_LOCAL or something along those lines to be used like this:

    DEFINE_STATIC_LOCAL(type, name, arguments)

So you&apos;d say:

    DEFINE_STATIC_LOCAL(HashSet&lt;int&gt;, intSet, ())

Is this what you&apos;re currently working on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98477</commentid>
    <comment_count>47</comment_count>
      <attachid>24956</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 09:57:41 -0800</bug_when>
    <thetext>Comment on attachment 24956
Incremental patch addressing Retain &amp; GC and PassRefPtr&lt;T&gt;

Clearing review flag because of the GCC issue that we discovered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98478</commentid>
    <comment_count>48</comment_count>
      <attachid>24896</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 09:57:45 -0800</bug_when>
    <thetext>Comment on attachment 24896
Removes many exit-time destructors

Clearing review flag because of the GCC issue that we discovered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98479</commentid>
    <comment_count>49</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 09:59:15 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; This is all to work around a temporary bug in gcc??

No.

There are two issues here:

    1) We need to avoid having destructors that are run at process exit time.

    2) The simplest style we came up with to do that ran into a bug in older versions of gcc and we&apos;re now trying to sidestep that issue.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98481</commentid>
    <comment_count>50</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-12 10:17:32 -0800</bug_when>
    <thetext>I&apos;m working the macros style now. Do varargs macros work across compilers? I think I&apos;ll need them for multiple value initializers.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98484</commentid>
    <comment_count>51</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 10:21:52 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; Do varargs macros work across compilers? I
&gt; think I&apos;ll need them for multiple value initializers.

I don&apos;t think you need them. The arguments to the initializer should be a single macro argument:

    #define DEFINE_STATIC_LOCAL(type, name, arguments) \
        static type* const name##Ptr = new type arguments; \
        static type&amp; name = *name##Ptr

Something like that. Used as I mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98494</commentid>
    <comment_count>52</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-12 11:22:33 -0800</bug_when>
    <thetext>Awesome. I did not know the parenthesis trick!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98508</commentid>
    <comment_count>53</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 12:49:05 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; Awesome. I did not know the parenthesis trick!

I know you&apos;re trying to get this whole thing done as fast as you can, but may I suggest that the first patch simply add the macro and then adopt it in places where we&apos;re already doing the &quot;bad thing&quot; just to fix the crashes with the old compiler? I&apos;d like to see that done soon because I think it&apos;s bad that we&apos;re crashing on Tiger! That&apos;s basically a P1 regression I caused while trying to help fix the P2 issue.

Then do the &quot;use the macro in more places&quot; patches in subsequent chunks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98509</commentid>
    <comment_count>54</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-12 12:58:47 -0800</bug_when>
    <thetext>I have a full patch (matching the first one committed, removed, committed, removed) coming in about 30 minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98511</commentid>
    <comment_count>55</comment_count>
      <attachid>25102</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-12 13:14:02 -0800</bug_when>
    <thetext>Created attachment 25102
This patch uses a macro

This is a cleaner patch. It uses a macro for DEFINE_STATIC_LOCAL. This macro always uses the ugly code right now. It can be updated to check compiler versions and platform versions to default the the sane static T&amp; = *new T variant.

I built optimized  on a Leopard system with the &apos;bad&apos; compiler, and ran all the LayoutTests without crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98520</commentid>
    <comment_count>56</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-12 14:36:59 -0800</bug_when>
    <thetext>Does this compiler bug exist for pointers? I&apos;m not sure why we can&apos;t just write &quot;static Mutex* mutex = new Mutex;&quot; and change places where it is used. Seems much cleaner than a macro to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98521</commentid>
    <comment_count>57</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-12 14:43:05 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; Does this compiler bug exist for pointers? I&apos;m not sure why we can&apos;t just write
&gt; &quot;static Mutex* mutex = new Mutex;&quot; and change places where it is used. Seems
&gt; much cleaner than a macro to me.

It&apos;s a possibility, but the macro has at least one other benefit: We could use the macro as a hook for some kind of destruction scheme other than &quot;never destroy any of these objects&quot; if we want to pursue that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98636</commentid>
    <comment_count>58</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 12:55:10 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; Does this compiler bug exist for pointers? I&apos;m not sure why we can&apos;t just write
&gt; &quot;static Mutex* mutex = new Mutex;&quot; and change places where it is used. Seems
&gt; much cleaner than a macro to me.

This macro is the smallest change, as all of these are used as non-pointer variables. Changing them to pointers would be an even larger change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98642</commentid>
    <comment_count>59</comment_count>
      <attachid>25102</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 13:30:27 -0800</bug_when>
    <thetext>Comment on attachment 25102
This patch uses a macro

&gt; +        * wtf/Platform.h: Add DEFINE_STATIC_LOCAL macro

This file is not the right place for the macro. I know it&apos;s tempting because it&apos;s a header that&apos;s &quot;included everywhere&quot;, but as you discovered while working on the patch, it&apos;s not included everywhere. And the header is supposed to contain only platform-configuration macros, not general purpose ones like this.

Lets put this in its own separate header file. As we discussed on IRC, I think it could be &lt;wtf/StdLibExtras.h&gt; since this is closely related to exit() and atexit() behavior. I think it might be OK to stick this into &quot;config.h&quot; files so we don&apos;t have to include it everywhere, or add the includes everywhere we need it.

&gt; +typedef HashMap&lt;int, PropertyLonghand&gt; ShortHandMap;

Since &quot;shorthand&quot; is one word, it should be ShorthandMap, not ShortHandMap. Also, to match the other names that use this.

&gt; -            static const String rectParen(&quot;rect(&quot;);
&gt; +            DEFINE_STATIC_LOCAL(String, rectParen, (&quot;rect(&quot;));

You&apos;re removing the &quot;const&quot; here and in many other places too.

    DEFINE_STATIC_LOCAL(const String, rectParen, (&quot;rect(&quot;));

The above would work and I think be slightly better because it preserves the const. These globals can be const or non-const. We could even make some more const that weren&apos;t previously const.

&gt; -    static Cursor&amp; c = leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11);
&gt; +    static Cursor* cPtr = leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11);
&gt; +    Cursor&amp; c = *cPtr;

These aren&apos;t using the macro. They should.

&gt; -    static HashMap&lt;String, int&gt;&amp; stringIdentifierToGUIDMap = *new HashMap&lt;String, int&gt;;
&gt; +    typedef HashMap&lt;String, int&gt; IDGuidMap;
&gt; +    DEFINE_STATIC_LOCAL(IDGuidMap, stringIdentifierToGUIDMap, ());

Are you adding these typedefs for clarity, or does the macro malfunction if you don&apos;t use them? I would have tried something like this:

    DEFINE_STATIC_LOCAL(HashMap&lt;String, int&gt;, stringIdentifierToGUIDMap, ());

I think when you land this it should be in small pieces. The first patch could just add the macro and include the JavaScriptCore changes. Then you could do the WebCore change and the WebKit change each as a separate patch or a number of them.

Then you could finish up with the tools list change as a separate patch.

This would be especially good if some of these cause problems. Someone could figure out which patch broke things if the patches are smaller pieces.

review- because of the Platform.h issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98643</commentid>
    <comment_count>60</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 13:40:17 -0800</bug_when>
    <thetext>(In reply to comment #59)

&gt; atexit() behavior. I think it might be OK to stick this into &quot;config.h&quot; files
&gt; so we don&apos;t have to include it everywhere, or add the includes everywhere we
&gt; need it.

I&apos;ll include everywhere required

&gt; &gt; -            static const String rectParen(&quot;rect(&quot;);
&gt; &gt; +            DEFINE_STATIC_LOCAL(String, rectParen, (&quot;rect(&quot;));
&gt; 
&gt; You&apos;re removing the &quot;const&quot; here and in many other places too.
&gt; 
&gt;     DEFINE_STATIC_LOCAL(const String, rectParen, (&quot;rect(&quot;));
&gt; 
&gt; The above would work and I think be slightly better because it preserves the
&gt; const. These globals can be const or non-const. We could even make some more
&gt; const that weren&apos;t previously const.

I&apos;ll see if I can safely have all of them be const inside of the macro; if that doesn&apos;t work I&apos;ll const them as needed.

&gt; &gt; -    static Cursor&amp; c = leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11);
&gt; &gt; +    static Cursor* cPtr = leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11);
&gt; &gt; +    Cursor&amp; c = *cPtr;
&gt; 
&gt; These aren&apos;t using the macro. They should.

I&apos;ll have to add a new macro for these, as there is no &apos;new&apos; involved.

&gt; Are you adding these typedefs for clarity, or does the macro malfunction if you
&gt; don&apos;t use them? I would have tried something like this:

The macro fails without them
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98681</commentid>
    <comment_count>61</comment_count>
      <attachid>25102</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 16:31:33 -0800</bug_when>
    <thetext>Comment on attachment 25102
This patch uses a macro

&gt; +#define DEFINE_STATIC_LOCAL(type, name, arguments) \
&gt; +    static type* name##Ptr = new type arguments; \
&gt; +    type&amp; name = *name##Ptr

To see how fun this compiler bug is, I had tried what Darin originally suggested:

 +    static type* const name##Ptr = new type arguments; \

That crashes like crazy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98686</commentid>
    <comment_count>62</comment_count>
      <attachid>25143</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 16:49:03 -0800</bug_when>
    <thetext>Created attachment 25143
JavaScriptCore only patch

It has a new header file &lt;wtf/StdLibExtras.h&gt; that is included only by the files that need this functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98687</commentid>
    <comment_count>63</comment_count>
      <attachid>25144</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 16:51:36 -0800</bug_when>
    <thetext>Created attachment 25144
WebCore only patch

This uses wtf/StdLibExtras.h where applicable. It uses const in the same places as before. It also uses an ASSIGN macro for the CursorMac.mm case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98688</commentid>
    <comment_count>64</comment_count>
      <attachid>25145</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 16:52:32 -0800</bug_when>
    <thetext>Created attachment 25145
WebKit only patch

This uses wtf/StdLibExtras.h where applicable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98689</commentid>
    <comment_count>65</comment_count>
      <attachid>25146</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-13 16:53:21 -0800</bug_when>
    <thetext>Created attachment 25146
WebKitTools only patch

This updates the script to remove classes that no longer have static C++ global destructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98690</commentid>
    <comment_count>66</comment_count>
      <attachid>25143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 16:59:08 -0800</bug_when>
    <thetext>Comment on attachment 25143
JavaScriptCore only patch

&gt; +#define DEFINE_STATIC_LOCAL_ASSIGN(type, name, data) \
&gt; +    static type* name##Ptr = data; \
&gt; +    type&amp; name = *name##Ptr

I think we should come up with a better name for this later. I&apos;m not sure this is really a static local at all and if it is, I think the word &quot;pointer&quot; needs to be in the name somewhere, since data is a type*, not an initialization parameter for a type. Maybe DEFINE_STATIC_LOCAL_WITH_POINTER. Now I almost wish I hadn&apos;t asked for the Cursor class changes!

&gt;  #include &quot;config.h&quot;
&gt; +#include &quot;StdLibExtras.h&quot;
&gt;  #include &quot;Threading.h&quot;

Threading.h here is the file&apos;s &quot;own&quot; header, so &quot;StdLibExtras.h&quot; should go in a separate include paragraph below.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98693</commentid>
    <comment_count>67</comment_count>
      <attachid>25144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 17:03:12 -0800</bug_when>
    <thetext>Comment on attachment 25144
WebCore only patch

&gt; -static Cursor&amp; leakNamedCursor(const char* name, int x, int y)
&gt; +static Cursor* leakNamedCursor(const char* name, int x, int y)

I think that if you made this return an NSCursor * instead of a Cursor you could just change the call sites to use the plain old DEFINE_STATIC_LOCAL and you wouldn&apos;t need DEFINE_STATIC_LOCAL_ASSIGN at all.

&gt; -    static Cursor&amp; c = leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11);
&gt; +    DEFINE_STATIC_LOCAL_ASSIGN(Cursor, c, (leakNamedCursor(&quot;crossHairCursor&quot;, 11, 11)));

You don&apos;t need the parentheses around the leakNamedCursor call. But really, we should eliminate the name &quot;leak&quot; from this entirely and use DEFINE_STATIC_LOCAL if we can.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98694</commentid>
    <comment_count>68</comment_count>
      <attachid>25145</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 17:03:35 -0800</bug_when>
    <thetext>Comment on attachment 25145
WebKit only patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98696</commentid>
    <comment_count>69</comment_count>
      <attachid>25146</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 17:04:13 -0800</bug_when>
    <thetext>Comment on attachment 25146
WebKitTools only patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98791</commentid>
    <comment_count>70</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-14 09:27:06 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; I think that if you made this return an NSCursor * instead of a Cursor you
&gt; could just change the call sites to use the plain old DEFINE_STATIC_LOCAL and
&gt; you wouldn&apos;t need DEFINE_STATIC_LOCAL_ASSIGN at all.

I&apos;ve done exactly that, and it looks much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98838</commentid>
    <comment_count>71</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-14 17:30:40 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; r=me

http://trac.webkit.org/changeset/38411
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98848</commentid>
    <comment_count>72</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-14 20:48:01 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; r=me

http://trac.webkit.org/changeset/38418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98872</commentid>
    <comment_count>73</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 08:56:13 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; (From update of attachment 25145 [review])
&gt; r=me

http://trac.webkit.org/changeset/38421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98876</commentid>
    <comment_count>74</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 10:21:01 -0800</bug_when>
    <thetext>(In reply to comment #69)
&gt; (From update of attachment 25146 [review])
&gt; r=me
&gt; 

http://trac.webkit.org/changeset/38422</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98884</commentid>
    <comment_count>75</comment_count>
      <attachid>25143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-15 12:10:09 -0800</bug_when>
    <thetext>Comment on attachment 25143
JavaScriptCore only patch

Clearing review flag since this patch has been landed, but the bug is still open, so this won&apos;t show up in the commit queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98885</commentid>
    <comment_count>76</comment_count>
      <attachid>25144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-15 12:10:12 -0800</bug_when>
    <thetext>Comment on attachment 25144
WebCore only patch

Clearing review flag since this patch has been landed, but the bug is still open, so this won&apos;t show up in the commit queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98886</commentid>
    <comment_count>77</comment_count>
      <attachid>25145</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-15 12:10:17 -0800</bug_when>
    <thetext>Comment on attachment 25145
WebKit only patch

Clearing review flag since this patch has been landed, but the bug is still open, so this won&apos;t show up in the commit queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98887</commentid>
    <comment_count>78</comment_count>
      <attachid>25146</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-15 12:10:20 -0800</bug_when>
    <thetext>Comment on attachment 25146
WebKitTools only patch

Clearing review flag since this patch has been landed, but the bug is still open, so this won&apos;t show up in the commit queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98889</commentid>
    <comment_count>79</comment_count>
      <attachid>25189</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 12:51:45 -0800</bug_when>
    <thetext>Created attachment 25189
WebCore only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

This is basically an update of Attachment 24956 covering Darin&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98890</commentid>
    <comment_count>80</comment_count>
      <attachid>25190</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 12:52:44 -0800</bug_when>
    <thetext>Created attachment 25190
WebKit only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

This is basically an update of Attachment 24956 covering Darin&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98891</commentid>
    <comment_count>81</comment_count>
      <attachid>25191</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 12:53:31 -0800</bug_when>
    <thetext>Created attachment 25191
WebKitTools only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

This is basically an update of Attachment 24956 covering Darin&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98896</commentid>
    <comment_count>82</comment_count>
      <attachid>25194</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-15 13:31:05 -0800</bug_when>
    <thetext>Created attachment 25194
JavaScriptCore patch to workaround buggy compilers only when required

Conditionally have the DEFINE_STATIC_LOCAL workaround &lt;rdar://problem/6354696&gt; (Codegen issue with C++ static reference in gcc build 5465) based upon the compiler build versions. It will use the:
        static T&amp; = *new T;
style for all other compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98957</commentid>
    <comment_count>83</comment_count>
      <attachid>25189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 12:45:18 -0800</bug_when>
    <thetext>Comment on attachment 25189
WebCore only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

As we discussed, lets use DEFINE_STATIC_LOCAL in more places instead of more efficient hand coded ones.

Also, a couple places where you removed const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98958</commentid>
    <comment_count>84</comment_count>
      <attachid>25190</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 12:46:06 -0800</bug_when>
    <thetext>Comment on attachment 25190
WebKit only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

As we discussed, lets use DEFINE_STATIC_LOCAL in more places instead of more efficient hand coded ones. But we still might want to use those helper functions to make the initialization cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98959</commentid>
    <comment_count>85</comment_count>
      <attachid>25194</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 12:47:30 -0800</bug_when>
    <thetext>Comment on attachment 25194
JavaScriptCore patch to workaround buggy compilers only when required

&gt; +#if COMPILER(GCC) &amp;&amp; (__GNUC__ == 4) &amp;&amp; (__GNUC_MINOR__ == 0) &amp;&amp; (__GNUC_PATCHLEVEL__ == 1) &amp;&amp; (__APPLE_CC__ == 5465)

This vesrion check seems a little too specific to me. Are you sure that no other version needs it?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98961</commentid>
    <comment_count>86</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 13:29:27 -0800</bug_when>
    <thetext>(In reply to comment #85)
&gt; This vesrion check seems a little too specific to me. Are you sure that no
&gt; other version needs it?

This is the only one we saw it on, so I wanted to be very specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98966</commentid>
    <comment_count>87</comment_count>
      <attachid>25200</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 15:05:19 -0800</bug_when>
    <thetext>Created attachment 25200
Address Comment 83 for WebCore

Please look at FTPDirectoryDocument.cpp closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98968</commentid>
    <comment_count>88</comment_count>
      <attachid>25201</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 15:06:24 -0800</bug_when>
    <thetext>Created attachment 25201
Address Comment 84 for WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98970</commentid>
    <comment_count>89</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 15:08:31 -0800</bug_when>
    <thetext>(In reply to comment #85)
&gt; r=me

http://trac.webkit.org/changeset/38457
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98971</commentid>
    <comment_count>90</comment_count>
      <attachid>25194</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 15:08:55 -0800</bug_when>
    <thetext>Comment on attachment 25194
JavaScriptCore patch to workaround buggy compilers only when required

Clearing flag since it is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98972</commentid>
    <comment_count>91</comment_count>
      <attachid>24956</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 15:09:39 -0800</bug_when>
    <thetext>Comment on attachment 24956
Incremental patch addressing Retain &amp; GC and PassRefPtr&lt;T&gt;

This has been obsoleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98973</commentid>
    <comment_count>92</comment_count>
      <attachid>25200</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 15:13:50 -0800</bug_when>
    <thetext>Comment on attachment 25200
Address Comment 83 for WebCore

&gt; -    static RefPtr&lt;BitmapImage&gt; nullImage = BitmapImage::create();
&gt; +    DEFINE_STATIC_LOCAL(RefPtr&lt;BitmapImage&gt;, nullImage, (BitmapImage::create()));;

Extra semicolon here.

&gt; +static inline SharedBuffer* _createTemplateDocumentData(Settings *settings)

The * should be next to Settings, not &quot;settings&quot;.

There&apos;s no reason to have a leading underscore in this function name.

The argument here could be the Document rather than the Settings. But it&apos;s fine this way.

&gt; +static inline NSColor* _createPatternColor(NSString* name, NSColor* defaultColor, bool&amp; usingDot)

There&apos;s no reason to have a leading underscore in this function name.

I&apos;m don&apos;t think this function should be marked inline.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98974</commentid>
    <comment_count>93</comment_count>
      <attachid>25201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-16 15:15:08 -0800</bug_when>
    <thetext>Comment on attachment 25201
Address Comment 84 for WebKit

&gt; +    DEFINE_STATIC_LOCAL(RetainPtr&lt;NSArray&gt;, types, ([[NSArray alloc] initWithObjects:
&gt; +                                WebURLsWithTitlesPboardType,
&gt; +                                NSURLPboardType,
&gt; +                                WebURLPboardType,
&gt; +                                WebURLNamePboardType,
&gt; +                                NSStringPboardType,
&gt; +                                nil]));

I would just indent these type names in four spaces, not so far in, if it was me

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98980</commentid>
    <comment_count>94</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 17:05:59 -0800</bug_when>
    <thetext>(In reply to comment #92)
&gt; r=me
&gt; 

http://trac.webkit.org/changeset/38458</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98981</commentid>
    <comment_count>95</comment_count>
      <attachid>25200</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 17:06:34 -0800</bug_when>
    <thetext>Comment on attachment 25200
Address Comment 83 for WebCore

clearing flag since it is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98990</commentid>
    <comment_count>96</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 20:19:28 -0800</bug_when>
    <thetext>(In reply to comment #93)
&gt; r=me
&gt; 

http://trac.webkit.org/changeset/38469

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98991</commentid>
    <comment_count>97</comment_count>
      <attachid>25201</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 20:19:50 -0800</bug_when>
    <thetext>Comment on attachment 25201
Address Comment 84 for WebKit

This has been committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98992</commentid>
    <comment_count>98</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 20:21:11 -0800</bug_when>
    <thetext>WebKitTools committed:

http://trac.webkit.org/changeset/38476

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98994</commentid>
    <comment_count>99</comment_count>
      <attachid>25191</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 20:21:32 -0800</bug_when>
    <thetext>Comment on attachment 25191
WebKitTools only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;

This has been committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98995</commentid>
    <comment_count>100</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 20:24:59 -0800</bug_when>
    <thetext>So these are the remaining files (only in WebCore):

&quot;AccessibilityRenderObject.o&quot;;
&quot;CSSStyleSelector.o&quot;;
&quot;FontCache.o&quot;;
&quot;JSHTMLElementWrapperFactory.o&quot;;
&quot;JSSVGAnimatedLength.o&quot;;
&quot;JSSVGAnimatedRect.o&quot;;
&quot;JSSVGElementWrapperFactory.o&quot;;
&quot;JSSVGLength.o&quot;;
&quot;JSSVGRect.o&quot;;
&quot;StyleTransformData.o&quot;;

Nothing obvious jumps out at me in the source code. I&apos;m not sure if it is a tool bug, or something subtler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98999</commentid>
    <comment_count>101</comment_count>
      <attachid>25207</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 22:02:08 -0800</bug_when>
    <thetext>Created attachment 25207
This gets the last of them in WebCore

It also has to generate code properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99000</commentid>
    <comment_count>102</comment_count>
      <attachid>25208</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-16 22:03:24 -0800</bug_when>
    <thetext>Created attachment 25208
Tool now has no exceptions

This also prints out what the developer ought to do if they create a static C++ object with an atexit dtor by pointing them to DEFINE_STATIC_LOCAL and StdLibExtras.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99045</commentid>
    <comment_count>103</comment_count>
      <attachid>25207</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-17 09:04:50 -0800</bug_when>
    <thetext>Comment on attachment 25207
This gets the last of them in WebCore

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99048</commentid>
    <comment_count>104</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-17 09:11:49 -0800</bug_when>
    <thetext>(In reply to comment #103)
&gt; (From update of attachment 25207 [review])
&gt; r=me
&gt; 

http://trac.webkit.org/changeset/38502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99049</commentid>
    <comment_count>105</comment_count>
      <attachid>25207</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-17 09:12:19 -0800</bug_when>
    <thetext>Comment on attachment 25207
This gets the last of them in WebCore

This has been committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99332</commentid>
    <comment_count>106</comment_count>
      <attachid>25208</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-19 09:59:32 -0800</bug_when>
    <thetext>Comment on attachment 25208
Tool now has no exceptions

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99335</commentid>
    <comment_count>107</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-19 10:10:19 -0800</bug_when>
    <thetext>(In reply to comment #106)
&gt; (From update of attachment 25208 [review])
&gt; r=me
&gt; 

http://trac.webkit.org/changeset/38598

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99336</commentid>
    <comment_count>108</comment_count>
      <attachid>25208</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-19 10:10:34 -0800</bug_when>
    <thetext>Comment on attachment 25208
Tool now has no exceptions

committed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24896</attachid>
            <date>2008-11-04 15:10:11 -0800</date>
            <delta_ts>2008-11-12 09:57:45 -0800</delta_ts>
            <desc>Removes many exit-time destructors</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>91894</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkwIEBACisyMDA4LTExLTA0ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxMAorCisgICAgICAg
ICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjQ29u
dHJvbGxlcik6IENoYW5nZWQgdG8gbGVhayBhbiBvYmplY3QgdG8gYXZvaWQgYW4gZXhpdC10aW1l
IGRlc3RydWN0b3IuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndyYXBwZXJTZXQpOiBEaXR0bworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVy
cyk6IERpdHRvCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlcnMpOiBEaXR0bworICAgICAgICAqIGJy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6cm9vdE9iamVj
dFNldCk6IERpdHRvCisgICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQ
cm9wZXJ0eSk6IERpdHRvCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KTogRGl0dG8KKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OmV4dHJhY3RQc2V1ZG9UeXBlKTogRGl0dG8KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5FdmFsKTogRGl0dG8KKyAgICAgICAgKFdl
YkNvcmU6OnByaW50RXZhbCk6IERpdHRvCisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHMTBGZWF0dXJlKTogRGl0dG8KKyAgICAgICAg
KFdlYkNvcmU6OmlzU1ZHMTFGZWF0dXJlKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKTogRGl0dG8KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1ByZWZpeE5hbWVzcGFjZU1p
c21hdGNoKTogRGl0dG8KKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1N1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6IERpdHRvCisgICAgICAg
ICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHls
ZVNwYW5DbGFzc1N0cmluZyk6IERpdHRvCisgICAgICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFu
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KTogRGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL0lu
ZGVudE91dGRlbnRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluZGVudEJsb2NrcXVv
dGVTdHJpbmcpOiBEaXR0bworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKTogRGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OmlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4pOiBE
aXR0bworICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKTogRGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6Om5vbkJyZWFraW5nU3BhY2VTdHJpbmcpOiBEaXR0bworICAgICAgICAqIGVkaXRpbmcvbWFy
a3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEF0dHJpYnV0ZVZhbHVlKTogRGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDb250ZW50KTogRGl0dG8KKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEFkZE5hbWVzcGFjZUF0dHIpOiBEaXR0bworICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kTmFtZXNwYWNlKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFN0YXJ0
TWFya3VwKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IERpdHRvCisg
ICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQnV0dG9uRWxlbWVudDo6dHlwZSk6IERpdHRvCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNSZWNvZ25pemVkVGFnTmFt
ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjppbmxpbmVUYWdMaXN0KTogRGl0dG8KKyAgICAg
ICAgKFdlYkNvcmU6OmJsb2NrVGFnTGlzdCk6IERpdHRvCisgICAgICAgICogaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6
OnR5cGUpOiBEaXR0bworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0eXBlKTogRGl0dG8KKyAgICAgICAgKiBo
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5F
bGVtZW50Ojp0eXBlKTogRGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMZWdlbmRFbGVtZW50Ojp0eXBlKTogRGl0dG8KKyAg
ICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9wdEdyb3VwRWxlbWVudDo6dHlwZSk6IERpdHRvCisgICAgICAgICogaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6dHlw
ZSk6IERpdHRvCisgICAgICAgICogaHRtbC9IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQYXJzZXI6OmdldE5vZGUpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SFRNTFBh
cnNlcjo6aXNIZWFkZXJUYWcpOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6
aXNSZXNpZHVhbFN0eWxlVGFnKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6
OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUpOiBEaXR0bworICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnR5
cGUpOiBEaXR0bworICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBlKTogRGl0dG8KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
bGF0Zm9ybSk6IERpdHRvCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCk6
IERpdHRvCisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2ZpbGVDYWNoZSk6IERpdHRvCisgICAgICAgICogaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9maWxlTm9kZUNh
Y2hlKTogRGl0dG8KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bG9jYWxTY2hlbWVzKTogRGl0dG8KKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVTdG9y
YWdlKTogRGl0dG8KKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlTUlNRVR5cGVzKTogRGl0dG8KKyAgICAgICAgKiBs
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFi
YXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSk6IERpdHRvCisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUp
OiBEaXR0bworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUmVnRXhwRm9yTGFiZWxzKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmtlZXBBbGl2ZVNl
dCk6IERpdHRvCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6Omdyb3VwTmFtZSk6IERpdHRvCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wpOiBEaXR0bworICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcik6IERpdHRv
CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpyZWdF
eHBGb3JMYWJlbHMpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YmxhbmtVUkwpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbHRlcm5hdGVGYW1pbHlOYW1lKTog
RGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6
IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFj
a0ZvbnQpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSk6IERpdHRv
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1UaGVtZSk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RocmVhZENoZWNr
Lm1tOgorICAgICAgICAoV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbik6IERpdHRvCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcik6IERpdHRvCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpn
ZXRTdHJlYW1Gb3JtRGF0YU1hcCk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJlYW1S
ZXNvdXJjZUhhbmRsZU1hcCk6IERpdHRvCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQpOiBEaXR0bworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6aXNKYXBhbmVz
ZSk6IERpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6IERpdHRvCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlck1hcHMp
OiBEaXR0bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3gpOiBEaXR0
bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dCk6IERpdHRvCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSk6IERpdHRvCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnN5c3RlbUZvbnQpOiBEaXR0bworICAgICAgICAqIHJlbmRlcmluZy9iaWRpLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KTog
RGl0dG8KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKTogRGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucyk6IERp
dHRvCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9jYWxTdG9yYWdlTWFwKTogRGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OnJvdGF0ZU1vZGUpOiBEaXR0bworICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNNb2RlKTogRGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVR5cGUp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2
ZSk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3Vt
dWxhdGVkKTogRGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UpOiBEaXR0bworICAgICAgICAqIHN2Zy9T
VkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNvbnRl
bnRTY3JpcHRUeXBlKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNv
bnRlbnRTdHlsZVR5cGUpOiBEaXR0bworICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKTogRGl0dG8KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOiBEaXR0bworICAgICAgICAqIHN2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENv
bnRlbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IERpdHRvCisgICAgICAgICogc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlM
RWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NN
SUxFbGVtZW50OjpyZXN0YXJ0KTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpmaWxsKTogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpyZXBl
YXRDb3VudCk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6bm90aWZ5
RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZCk6IERpdHRvCisgICAgICAgICogc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaWVudE1hcCk6IERpdHRvCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KTogRGl0dG8KKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmxpZ2h0UmVzdWx0Q2FjaGUp
OiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNTYWZlUmVxdWVzdEhlYWRlcik6IERpdHRvCisg
ICAgICAgIChXZWJDb3JlOjppc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0
KTogRGl0dG8KKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6RXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQpOiBEaXR0bwor
ICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
aXNBeGlzTmFtZSk6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNOb2RlVHlwZU5h
bWUpOiBEaXR0bworICAgICAgICAqIHhtbC9YUGF0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpWYWx1ZTo6dG9Ob2RlU2V0KTogRGl0dG8KKwogMjAwOC0xMS0wNCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBObyByZXZpZXcuCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODExMikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBzdGF0aWMgdm9pZCogY29sbGVjdCh2b2lkKikKIAogR0NDb250cm9sbGVy
JiBnY0NvbnRyb2xsZXIoKQogewotICAgIHN0YXRpYyBHQ0NvbnRyb2xsZXIgc3RhdGljR0NDb250
cm9sbGVyOworICAgIHN0YXRpYyBHQ0NvbnRyb2xsZXImIHN0YXRpY0dDQ29udHJvbGxlciA9ICpu
ZXcgR0NDb250cm9sbGVyOwogICAgIHJldHVybiBzdGF0aWNHQ0NvbnRyb2xsZXI7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NywxMCArOTcsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZVdyYXBwZXJzKGNvbnN0IAog
c3RhdGljIEhhc2hTZXQ8RE9NT2JqZWN0Kj4mIHdyYXBwZXJTZXQoKQogewogI2lmIEVOQUJMRShX
T1JLRVJTKQotICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxIYXNoU2V0PERPTU9iamVjdCo+ID4g
c3RhdGljV3JhcHBlclNldDsKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8SGFzaFNldDxET01P
YmplY3QqPiA+JiBzdGF0aWNXcmFwcGVyU2V0ID0gKm5ldyBUaHJlYWRTcGVjaWZpYzxIYXNoU2V0
PERPTU9iamVjdCo+ID47CiAgICAgcmV0dXJuICpzdGF0aWNXcmFwcGVyU2V0OwogI2Vsc2UKLSAg
ICBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIHN0YXRp
YyBIYXNoU2V0PERPTU9iamVjdCo+JiBzdGF0aWNXcmFwcGVyU2V0ID0gKm5ldyBIYXNoU2V0PERP
TU9iamVjdCo+OwogICAgIHJldHVybiBzdGF0aWNXcmFwcGVyU2V0OwogI2VuZGlmCiB9CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3Bw
CShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmpl
Y3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB0eXBlZGVmIEhh
c2hNYXA8SlNHbG9iYWxPYmplY3QqLCBXcmFwcGVyCiAKIHN0YXRpYyBHbG9iYWxPYmplY3RXcmFw
cGVyTWFwJiB3cmFwcGVycygpCiB7Ci0gICAgc3RhdGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAg
bWFwOworICAgIHN0YXRpYyBHbG9iYWxPYmplY3RXcmFwcGVyTWFwJiBtYXAgPSAqbmV3IEdsb2Jh
bE9iamVjdFdyYXBwZXJNYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAJKHJldmlz
aW9uIDM4MTEyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3Jh
cHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgdHlwZWRlZiBIYXNoTWFw
PEpTT2JqZWN0KiwgSlNJbnNwZWN0b3JDYQogCiBzdGF0aWMgV3JhcHBlck1hcCYgd3JhcHBlcnMo
KQogewotICAgIHN0YXRpYyBXcmFwcGVyTWFwIG1hcDsKKyAgICBzdGF0aWMgV3JhcHBlck1hcCYg
bWFwID0gKm5ldyBXcmFwcGVyTWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9yb290LmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2JyaWRnZS9ydW50
aW1lX3Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgSGFz
aFNldDxSb290T2JqZWN0Kj4gUm9vdE9iamVjdFMKIAogc3RhdGljIFJvb3RPYmplY3RTZXQqIHJv
b3RPYmplY3RTZXQoKQogewotICAgIHN0YXRpYyBSb290T2JqZWN0U2V0IHN0YXRpY1Jvb3RPYmpl
Y3RTZXQ7CisgICAgc3RhdGljIFJvb3RPYmplY3RTZXQmIHN0YXRpY1Jvb3RPYmplY3RTZXQgPSAq
bmV3IFJvb3RPYmplY3RTZXQ7CiAgICAgcmV0dXJuICZzdGF0aWNSb290T2JqZWN0U2V0OwogfQog
CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZp
c2lvbiAzODExMikKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6cmVtb3YKIHsKICAgICBlYyA9IDA7CiAKLSAgICBzdGF0aWMgSGFzaE1h
cDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+IHNob3J0aGFuZE1hcDsKKyAgICBzdGF0aWMgSGFzaE1h
cDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+JiBzaG9ydGhhbmRNYXAgPSAqbmV3IEhhc2hNYXA8aW50
LCBQcm9wZXJ0eUxvbmdoYW5kPjsKICAgICBpZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkKICAg
ICAgICAgaW5pdFNob3J0aGFuZE1hcChzaG9ydGhhbmRNYXApOwogCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg2LDcgKzY4Niw3IEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgbGlzdC1zdHlsZSBhbmQgc2VwYXJhdG9yCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfUkVDVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyByZWN0UGFy
ZW4oInJlY3QoIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiByZWN0UGFyZW4g
PSAqbmV3IFN0cmluZygicmVjdCgiKTsKIAogICAgICAgICAgICAgUmVjdCogcmVjdFZhbCA9IGdl
dFJlY3RWYWx1ZSgpOwogICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CkBAIC03MDks
OSArNzA5LDkgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJT
RVJfSEVYQ09MT1I6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgY29tbWFTcGFj
ZSgiLCAiKTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmdiUGFyZW4oInJnYigi
KTsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmdiYVBhcmVuKCJyZ2JhKCIpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29tbWFTcGFjZSA9ICpuZXcgU3RyaW5n
KCIsICIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcmdiUGFyZW4gPSAqbmV3
IFN0cmluZygicmdiKCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcmdiYVBh
cmVuID0gKm5ldyBTdHJpbmcoInJnYmEoIik7CiAKICAgICAgICAgICAgIFJHQkEzMiByZ2JDb2xv
ciA9IG1fdmFsdWUucmdiY29sb3I7CiAgICAgICAgICAgICBpZiAobV90eXBlID09IENTU19QQVJT
RVJfSEVYQ09MT1IpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNzUgKzYyLDc1
IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBpZiAobV9t
YXRjaCAhPSBQc2V1ZG9DbGFzcyAmJiBtX21hdGNoICE9IFBzZXVkb0VsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYWN0aXZlKCJhY3RpdmUiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGFmdGVyKCJhZnRlciIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgYW55TGluaygiLXdlYmtpdC1hbnktbGluayIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgYXV0b2ZpbGwoIi13ZWJraXQtYXV0b2ZpbGwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGJlZm9yZSgiYmVmb3JlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBjaGVja2VkKCJjaGVj
a2VkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaWxlVXBsb2FkQnV0dG9uKCItd2Via2l0
LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZGlzYWJsZWQo
ImRpc2FibGVkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyByZWFkT25seSgicmVhZC1vbmx5
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyByZWFkV3JpdGUoInJlYWQtd3JpdGUiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGRyYWcoIi13ZWJraXQtZHJhZyIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZHJhZ0FsaWFzKCIta2h0bWwtZHJhZyIpOyAvLyB3YXMgZG9jdW1lbnRlZCB3
aXRoIHRoaXMgbmFtZSBpbiBBcHBsZSBkb2N1bWVudGF0aW9uLCBzbyBrZWVwIGFuIGFsaWFzCi0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBlbXB0eSgiZW1wdHkiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGVuYWJsZWQoImVuYWJsZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZpcnN0
Q2hpbGQoImZpcnN0LWNoaWxkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdExldHRl
cigiZmlyc3QtbGV0dGVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdExpbmUoImZp
cnN0LWxpbmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZpcnN0T2ZUeXBlKCJmaXJzdC1v
Zi10eXBlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmdWxsUGFnZU1lZGlhKCItd2Via2l0
LWZ1bGwtcGFnZS1tZWRpYSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRoQ2hpbGQoIm50
aC1jaGlsZCgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50aE9mVHlwZSgibnRoLW9mLXR5
cGUoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBudGhMYXN0Q2hpbGQoIm50aC1sYXN0LWNo
aWxkKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRoTGFzdE9mVHlwZSgibnRoLWxhc3Qt
b2YtdHlwZSgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZvY3VzKCJmb2N1cyIpOwotICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgaG92ZXIoImhvdmVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBpbmRldGVybWluYXRlKCJpbmRldGVybWluYXRlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBpbnB1dFBsYWNlaG9sZGVyKCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBsYXN0Q2hpbGQoImxhc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGxhc3RPZlR5cGUoImxhc3Qtb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgbGluaygibGluayIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFuZygibGFu
ZygiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNQYW5lbCgiLXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFD
b250cm9sc011dGVCdXR0b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24iKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNQbGF5QnV0dG9uKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBt
ZWRpYUNvbnRyb2xzVGltZURpc3BsYXkoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNw
bGF5Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzVGltZWxpbmUoIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IG1lZGlhQ29udHJvbHNTZWVrQmFja0J1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVr
LWJhY2stYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzU2Vl
a0ZvcndhcmRCdXR0b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRv
biIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc0Z1bGxzY3JlZW5CdXR0
b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24iKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIG5vdFN0cigibm90KCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
b25seUNoaWxkKCJvbmx5LWNoaWxkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBvbmx5T2ZU
eXBlKCJvbmx5LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJlc2l6ZXIoIi13
ZWJraXQtcmVzaXplciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgcm9vdCgicm9vdCIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyKCItd2Via2l0LXNjcm9sbGJhciIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyQnV0dG9uKCItd2Via2l0LXNjcm9sbGJh
ci1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhckNvcm5lcigiLXdl
YmtpdC1zY3JvbGxiYXItY29ybmVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxi
YXJUaHVtYigiLXdlYmtpdC1zY3JvbGxiYXItdGh1bWIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHNjcm9sbGJhclRyYWNrKCItd2Via2l0LXNjcm9sbGJhci10cmFjayIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyVHJhY2tQaWVjZSgiLXdlYmtpdC1zY3JvbGxiYXItdHJh
Y2stcGllY2UiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNlYXJjaENhbmNlbEJ1dHRvbigi
LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
c2VhcmNoRGVjb3JhdGlvbigiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgc2VhcmNoUmVzdWx0c0RlY29yYXRpb24oIi13ZWJraXQtc2VhcmNoLXJl
c3VsdHMtZGVjb3JhdGlvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VhcmNoUmVzdWx0
c0J1dHRvbigiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHNlbGVjdGlvbigic2VsZWN0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBzbGlkZXJUaHVtYigiLXdlYmtpdC1zbGlkZXItdGh1bWIiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIHRhcmdldCgidGFyZ2V0Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB2aXNpdGVk
KCJ2aXNpdGVkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB3aW5kb3dJbmFjdGl2ZSgid2lu
ZG93LWluYWN0aXZlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkZWNyZW1lbnQoImRlY3Jl
bWVudCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgaW5jcmVtZW50KCJpbmNyZW1lbnQiKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHN0YXJ0KCJzdGFydCIpOwotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgZW5kKCJlbmQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGhvcml6b250YWwo
Imhvcml6b250YWwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHZlcnRpY2FsKCJ2ZXJ0aWNh
bCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZG91YmxlQnV0dG9uKCJkb3VibGUtYnV0dG9u
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzaW5nbGVCdXR0b24oInNpbmdsZS1idXR0b24i
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG5vQnV0dG9uKCJuby1idXR0b24iKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGNvcm5lclByZXNlbnQoImNvcm5lci1wcmVzZW50Iik7CisgICAg
c3RhdGljIEF0b21pY1N0cmluZyYgYWN0aXZlID0gKm5ldyBBdG9taWNTdHJpbmcoImFjdGl2ZSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGFmdGVyID0gKm5ldyBBdG9taWNTdHJpbmcoImFm
dGVyIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYW55TGluayA9ICpuZXcgQXRvbWljU3Ry
aW5nKCItd2Via2l0LWFueS1saW5rIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYXV0b2Zp
bGwgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1hdXRvZmlsbCIpOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcmIGJlZm9yZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJiZWZvcmUiKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBjaGVja2VkID0gKm5ldyBBdG9taWNTdHJpbmcoImNoZWNrZWQi
KTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBmaWxlVXBsb2FkQnV0dG9uID0gKm5ldyBBdG9t
aWNTdHJpbmcoIi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgZGlzYWJsZWQgPSAqbmV3IEF0b21pY1N0cmluZygiZGlzYWJsZWQiKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiByZWFkT25seSA9ICpuZXcgQXRvbWljU3RyaW5nKCJyZWFkLW9u
bHkiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiByZWFkV3JpdGUgPSAqbmV3IEF0b21pY1N0
cmluZygicmVhZC13cml0ZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGRyYWcgPSAqbmV3
IEF0b21pY1N0cmluZygiLXdlYmtpdC1kcmFnIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYg
ZHJhZ0FsaWFzID0gKm5ldyBBdG9taWNTdHJpbmcoIi1raHRtbC1kcmFnIik7IC8vIHdhcyBkb2N1
bWVudGVkIHdpdGggdGhpcyBuYW1lIGluIEFwcGxlIGRvY3VtZW50YXRpb24sIHNvIGtlZXAgYW4g
YWxpYXMKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBlbXB0eSA9ICpuZXcgQXRvbWljU3RyaW5n
KCJlbXB0eSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVuYWJsZWQgPSAqbmV3IEF0b21p
Y1N0cmluZygiZW5hYmxlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0Q2hpbGQg
PSAqbmV3IEF0b21pY1N0cmluZygiZmlyc3QtY2hpbGQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nJiBmaXJzdExldHRlciA9ICpuZXcgQXRvbWljU3RyaW5nKCJmaXJzdC1sZXR0ZXIiKTsKKyAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nJiBmaXJzdExpbmUgPSAqbmV3IEF0b21pY1N0cmluZygiZmly
c3QtbGluZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0T2ZUeXBlID0gKm5ldyBB
dG9taWNTdHJpbmcoImZpcnN0LW9mLXR5cGUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBm
dWxsUGFnZU1lZGlhID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlh
Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbnRoQ2hpbGQgPSAqbmV3IEF0b21pY1N0cmlu
ZygibnRoLWNoaWxkKCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG50aE9mVHlwZSA9ICpu
ZXcgQXRvbWljU3RyaW5nKCJudGgtb2YtdHlwZSgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBudGhMYXN0Q2hpbGQgPSAqbmV3IEF0b21pY1N0cmluZygibnRoLWxhc3QtY2hpbGQoIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgbnRoTGFzdE9mVHlwZSA9ICpuZXcgQXRvbWljU3RyaW5n
KCJudGgtbGFzdC1vZi10eXBlKCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZvY3VzID0g
Km5ldyBBdG9taWNTdHJpbmcoImZvY3VzIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgaG92
ZXIgPSAqbmV3IEF0b21pY1N0cmluZygiaG92ZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBpbmRldGVybWluYXRlID0gKm5ldyBBdG9taWNTdHJpbmcoImluZGV0ZXJtaW5hdGUiKTsKKyAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nJiBpbnB1dFBsYWNlaG9sZGVyID0gKm5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBsYXN0Q2hpbGQgPSAqbmV3IEF0b21pY1N0cmluZygibGFzdC1jaGlsZCIpOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcmIGxhc3RPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygibGFzdC1vZi10
eXBlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbGluayA9ICpuZXcgQXRvbWljU3RyaW5n
KCJsaW5rIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbGFuZyA9ICpuZXcgQXRvbWljU3Ry
aW5nKCJsYW5nKCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNQYW5l
bCA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc011dGVCdXR0b24gPSAqbmV3IEF0
b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNQbGF5QnV0dG9uID0gKm5ldyBBdG9taWNT
dHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzVGltZURpc3BsYXkgPSAqbmV3IEF0b21pY1N0cmlu
ZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXkiKTsKKyAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzVGltZWxpbmUgPSAqbmV3IEF0b21pY1N0cmluZygiLXdl
YmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IG1lZGlhQ29udHJvbHNTZWVrQmFja0J1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nJiBtZWRpYUNvbnRyb2xzU2Vla0ZvcndhcmRCdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygi
LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIik7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc0Z1bGxzY3JlZW5CdXR0b24gPSAqbmV3IEF0b21p
Y1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIG5vdFN0ciA9ICpuZXcgQXRvbWljU3RyaW5nKCJub3QoIik7
CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgb25seUNoaWxkID0gKm5ldyBBdG9taWNTdHJpbmco
Im9ubHktY2hpbGQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBvbmx5T2ZUeXBlID0gKm5l
dyBBdG9taWNTdHJpbmcoIm9ubHktb2YtdHlwZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IHJlc2l6ZXIgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1yZXNpemVyIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgcm9vdCA9ICpuZXcgQXRvbWljU3RyaW5nKCJyb290Iik7CisgICAg
c3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJr
aXQtc2Nyb2xsYmFyIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyQnV0dG9u
ID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIHNjcm9sbGJhckNvcm5lciA9ICpuZXcgQXRvbWljU3RyaW5nKCIt
d2Via2l0LXNjcm9sbGJhci1jb3JuZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzY3Jv
bGxiYXJUaHVtYiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNjcm9sbGJhci10aHVtYiIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNjcm9sbGJhclRyYWNrID0gKm5ldyBBdG9taWNT
dHJpbmcoIi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgc2Nyb2xsYmFyVHJhY2tQaWVjZSA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNjcm9s
bGJhci10cmFjay1waWVjZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNlYXJjaENhbmNl
bEJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9u
Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2VhcmNoRGVjb3JhdGlvbiA9ICpuZXcgQXRv
bWljU3RyaW5nKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgc2VhcmNoUmVzdWx0c0RlY29yYXRpb24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdl
YmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgc2VhcmNoUmVzdWx0c0J1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNlYXJj
aC1yZXN1bHRzLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNlbGVjdGlvbiA9
ICpuZXcgQXRvbWljU3RyaW5nKCJzZWxlY3Rpb24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBzbGlkZXJUaHVtYiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNsaWRlci10aHVtYiIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHRhcmdldCA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0
YXJnZXQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiB2aXNpdGVkID0gKm5ldyBBdG9taWNT
dHJpbmcoInZpc2l0ZWQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiB3aW5kb3dJbmFjdGl2
ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ3aW5kb3ctaW5hY3RpdmUiKTsKKyAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBkZWNyZW1lbnQgPSAqbmV3IEF0b21pY1N0cmluZygiZGVjcmVtZW50Iik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgaW5jcmVtZW50ID0gKm5ldyBBdG9taWNTdHJpbmcoImlu
Y3JlbWVudCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHN0YXJ0ID0gKm5ldyBBdG9taWNT
dHJpbmcoInN0YXJ0Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZW5kID0gKm5ldyBBdG9t
aWNTdHJpbmcoImVuZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGhvcml6b250YWwgPSAq
bmV3IEF0b21pY1N0cmluZygiaG9yaXpvbnRhbCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IHZlcnRpY2FsID0gKm5ldyBBdG9taWNTdHJpbmcoInZlcnRpY2FsIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgZG91YmxlQnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoImRvdWJsZS1idXR0
b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzaW5nbGVCdXR0b24gPSAqbmV3IEF0b21p
Y1N0cmluZygic2luZ2xlLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG5vQnV0
dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoIm5vLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcmIGNvcm5lclByZXNlbnQgPSAqbmV3IEF0b21pY1N0cmluZygiY29ybmVyLXByZXNlbnQi
KTsKIAogICAgIGJvb2wgZWxlbWVudCA9IGZhbHNlOyAvLyBwc2V1ZG8tZWxlbWVudAogICAgIGJv
b2wgY29tcGF0ID0gZmFsc2U7IC8vIHNpbmdsZSBjb2xvbiBjb21wYXRiaWxpdHkgbW9kZQpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MiwxMyArMzcyLDEz
IEBAIHN0YXRpYyBib29sIGVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3QKIAogc3RhdGljIGNv
bnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHNjcmVlbkV2YWwoKQogewotICAgIHN0YXRpYyBjb25z
dCBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHN0YXRpY1NjcmVlbkV2YWwoInNjcmVlbiIpOworICAgIHN0
YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBzdGF0aWNTY3JlZW5FdmFsID0gKm5ldyBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yKCJzY3JlZW4iKTsKICAgICByZXR1cm4gc3RhdGljU2NyZWVuRXZh
bDsKIH0KIAogc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHByaW50RXZhbCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Igc3RhdGljUHJpbnRFdmFsKCJw
cmludCIpOworICAgIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBzdGF0aWNQcmlu
dEV2YWwgPSAqbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3IoInByaW50Iik7CiAgICAgcmV0dXJuIHN0
YXRpY1ByaW50RXZhbDsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2
aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nKEhhc2hTZXQ8
U3RyaW5nLCBDYQogc3RhdGljIGJvb2wgaXNTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nICZmZWF0
dXJlKQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IHN2Z0ZlYXR1cmVzOworICAgIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgc3ZnRmVhdHVyZXMgPSAqbmV3IEhh
c2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsK
ICNpZiBFTkFCTEUoU1ZHX1VTRSkgJiYgRU5BQkxFKFNWR19GT1JFSUdOX09CSkVDVCkgJiYgRU5B
QkxFKFNWR19GSUxURVIpICYmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgICAgIGFkZFN0cmluZyhz
dmdGZWF0dXJlcywgInN2ZyIpOwpAQCAtODksNyArODksNyBAQCBzdGF0aWMgYm9vbCBpc1NWRzEw
RmVhdHVyZShjb25zdCBTdHJpbmcgCiBzdGF0aWMgYm9vbCBpc1NWRzExRmVhdHVyZShjb25zdCBT
dHJpbmcgJmZlYXR1cmUpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsK
LSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gc3ZnRmVhdHVyZXM7
CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBzdmdGZWF0dXJl
cyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAgICAgaWYgKCFpbml0
aWFsaXplZCkgewogICAgICAgICAvLyBTYWRseSwgd2UgY2Fubm90IGNsYWltIHRvIGltcGxlbWVu
dCBhbnkgb2YgdGhlIFNWRyAxLjEgZ2VuZXJpYyBmZWF0dXJlIHNldHMKICAgICAgICAgLy8gbGFj
ayBvZiBGb250IGFuZCBGaWx0ZXIgc3VwcG9ydC4KQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIERP
TUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvCiAgICAgaWYgKG1pbWVUeXBlID09ICJ0
ZXh0L3htbCIgfHwgbWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3htbCIgfHwgbWltZVR5cGUgPT0g
InRleHQveHNsIikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHZhbGlkQ2hhcnMgPSAiWzAtOWEtekEtWl9cXC0rfiEkXFxee318LiUnYCMmKl0iOyAvLyBwZXIg
UkZDczogMzAyMywgMjA0NQotICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB4bWxUeXBlUmVn
RXhwKFN0cmluZygiXiIpICsgdmFsaWRDaGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4
bWwkIik7CisgICAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uJiB4bWxUeXBlUmVnRXhwID0gKm5l
dyBSZWd1bGFyRXhwcmVzc2lvbihTdHJpbmcoIl4iKSArIHZhbGlkQ2hhcnMgKyAiKy8iICsgdmFs
aWRDaGFycyArICIrXFwreG1sJCIpOwogICAgIHJldHVybiB4bWxUeXBlUmVnRXhwLm1hdGNoKG1p
bWVUeXBlKSA+IC0xOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDkgKzcxMyw5IEBA
IFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXMKIAogYm9vbCBEb2N1bWVu
dDo6aGFzUHJlZml4TmFtZXNwYWNlTWlzbWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxuc05hbWVzcGFjZVVSSSgiaHR0
cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIHhtbG5zKCJ4bWxucyIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sKCJ4
bWwiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxuc05hbWVzcGFjZVVSSSA9
ICpuZXcgQXRvbWljU3RyaW5nKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHhtbG5zID0gKm5ldyBBdG9taWNTdHJpbmcoInht
bG5zIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sID0gKm5ldyBBdG9taWNT
dHJpbmcoInhtbCIpOwogCiAgICAgLy8gVGhlc2UgY2hlY2tzIGFyZSBmcm9tIERPTSBDb3JlIExl
dmVsIDIsIGNyZWF0ZUVsZW1lbnROUwogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1M
ZXZlbC0yLUNvcmUvY29yZS5odG1sI0lELURvY0NyRWxOUwpJbmRleDogV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVT
b3VyY2VBdHRyaWJ1dAogLy8gSGVscGVyIGZ1bmN0aW9uCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZEphdmFTY3JpcHRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBsYW5ndWFnZXM7CisgICAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBsYW5ndWFnZXMgPSAqbmV3IEhhc2hT
ZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OwogICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKICAgICAgICAgbGFuZ3Vh
Z2VzLmFkZCgiamF2YXNjcmlwdCIpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIFN0eWxlQ2hh
bmdlOjpjdXJyZW50bHlIYXNTdHlsZShjb25zCiAKIHN0YXRpYyBTdHJpbmcgJnN0eWxlU3BhbkNs
YXNzU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHN0eWxlU3BhbkNsYXNzU3RyaW5nID0g
QXBwbGVTdHlsZVNwYW5DbGFzczsKKyAgICBzdGF0aWMgU3RyaW5nJiBzdHlsZVNwYW5DbGFzc1N0
cmluZyA9ICpuZXcgU3RyaW5nKEFwcGxlU3R5bGVTcGFuQ2xhc3MpOwogICAgIHJldHVybiBzdHls
ZVNwYW5DbGFzc1N0cmluZzsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNo
YW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5j
cHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIHsKIAogU3RyaW5n
IGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRlZFNw
YWNlU3RyaW5nOworICAgIHN0YXRpYyBTdHJpbmcmIGNvbnZlcnRlZFNwYWNlU3RyaW5nID0gKm5l
dyBTdHJpbmc7CiAgICAgaWYgKGNvbnZlcnRlZFNwYWNlU3RyaW5nLmlzTnVsbCgpKSB7CiAgICAg
ICAgIGNvbnZlcnRlZFNwYWNlU3RyaW5nID0gIjxzcGFuIGNsYXNzPVwiIjsKICAgICAgICAgY29u
dmVydGVkU3BhY2VTdHJpbmcgKz0gQXBwbGVDb252ZXJ0ZWRTcGFjZTsKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9l
ZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJD
b3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBTdHJpbmcg
aW5kZW50QmxvY2txdW90ZVN0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHJpbmcgPSAi
d2Via2l0LWluZGVudC1ibG9ja3F1b3RlIjsKKyAgICBzdGF0aWMgU3RyaW5nJiBzdHJpbmcgPSAq
bmV3IFN0cmluZygid2Via2l0LWluZGVudC1ibG9ja3F1b3RlIik7CiAgICAgcmV0dXJuIHN0cmlu
ZzsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE0ICs4OSwxNCBAQCBwcml2YXRlOgog
CiBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSAqbm9kZSkK
IHsKLSAgICBzdGF0aWMgU3RyaW5nIGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nKEFwcGxl
SW50ZXJjaGFuZ2VOZXdsaW5lKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBpbnRlcmNoYW5nZU5ld2xp
bmVDbGFzc1N0cmluZyA9ICpuZXcgU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKICAg
ICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSAmJiAKICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0
cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7CiB9CiAKIHN0YXRpYyBib29sIGlz
SW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqbm9kZSkKIHsKLSAgICBz
dGF0aWMgU3RyaW5nIGNvbnZlcnRlZFNwYWNlU3BhbkNsYXNzU3RyaW5nKEFwcGxlQ29udmVydGVk
U3BhY2UpOworICAgIHN0YXRpYyBTdHJpbmcmIGNvbnZlcnRlZFNwYWNlU3BhbkNsYXNzU3RyaW5n
ID0gKm5ldyBTdHJpbmcoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CiAgICAgcmV0dXJuIG5vZGUtPmlz
SFRNTEVsZW1lbnQoKSAmJiAKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1l
bnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IGNvbnZlcnRlZFNwYWNlU3Bh
bkNsYXNzU3RyaW5nOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiAz
ODExMikKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2NCw5ICszNjQsOSBAQCBpbnQgbWF4RGVlcE9mZnNldChjb25zdCBOb2RlICpub2RlKQog
CiBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIHN0YXJ0SXNTdGFydE9mUGFyYWdyYXBoLCBib29sIGVuZElzRW5kT2ZQYXJhZ3Jh
cGgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyB0d29TcGFjZXMoIiAgIik7Ci0gICAgc3RhdGljIFN0
cmluZyBuYnNwKCJceGEwIik7Ci0gICAgc3RhdGljIFN0cmluZyBwYXR0ZXJuKCIgXHhhMCIpOwor
ICAgIHN0YXRpYyBTdHJpbmcmIHR3b1NwYWNlcyA9ICpuZXcgU3RyaW5nKCIgICIpOworICAgIHN0
YXRpYyBTdHJpbmcmIG5ic3AgPSAqbmV3IFN0cmluZygiXHhhMCIpOworICAgIHN0YXRpYyBTdHJp
bmcmIHBhdHRlcm4gPSAqbmV3IFN0cmluZygiIFx4YTAiKTsKIAogICAgIFN0cmluZyByZWJhbGFu
Y2VkU3RyaW5nID0gc3RyaW5nOwogCkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBpc1RhYmxlU3Ry
dWN0dXJlTm9kZShjb25zdCBOb2RlICpubwogCiBjb25zdCBTdHJpbmcmIG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJpbmcgbm9uQnJlYWtpbmdTcGFjZVN0cmluZyA9
IFN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBub25CcmVha2lu
Z1NwYWNlU3RyaW5nID0gKm5ldyBTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSk7CiAgICAgcmV0dXJu
IG5vbkJyZWFraW5nU3BhY2VTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lv
biAzODExMikKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlVmFsdWUoVmVjdG9y
PAogICAgIHVuc2lnbmVkIGxlbiA9IGF0dHIubGVuZ3RoKCk7CiAgICAgdW5zaWduZWQgbGFzdENv
cGllZEZyb20gPSAwOwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBhbXBFbnRpdHkoIiZhbXA7
Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBndEVudGl0eSgiJmd0OyIpOwotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbHRFbnRpdHkoIiZsdDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IHF1b3RFbnRpdHkoIiZxdW90OyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbmJzcEVudGl0
eSgiJm5ic3A7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgYW1wRW50aXR5ID0gKm5ldyBT
dHJpbmcoIiZhbXA7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ3RFbnRpdHkgPSAqbmV3
IFN0cmluZygiJmd0OyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGx0RW50aXR5ID0gKm5l
dyBTdHJpbmcoIiZsdDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBxdW90RW50aXR5ID0g
Km5ldyBTdHJpbmcoIiZxdW90OyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIG5ic3BFbnRp
dHkgPSAqbmV3IFN0cmluZygiJm5ic3A7Iik7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSB1Y2hhcnNbaV07CkBAIC0xNDIs
MTAgKzE0MiwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ29udGVudChWZWN0b3I8CiAg
ICAgdW5zaWduZWQgbGVuID0gcmFuZ2Uuc2Vjb25kOwogICAgIHVuc2lnbmVkIGxhc3RDb3BpZWRG
cm9tID0gMDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGFtcEVudGl0eSgiJmFtcDsi
KTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCImZ3Q7Iik7Ci0gICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
bmJzcEVudGl0eSgiJm5ic3A7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgYW1wRW50aXR5
ID0gKm5ldyBTdHJpbmcoIiZhbXA7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ3RFbnRp
dHkgPSAqbmV3IFN0cmluZygiJmd0OyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGx0RW50
aXR5ID0gKm5ldyBTdHJpbmcoIiZsdDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBuYnNw
RW50aXR5ID0gKm5ldyBTdHJpbmcoIiZuYnNwOyIpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSB1Y2hhcnNbaV07CkBAIC0zMTYs
OCArMzE2LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkQWRkTmFtZXNwYWNlRWxlbShjb25zdAogc3Rh
dGljIGJvb2wgc2hvdWxkQWRkTmFtZXNwYWNlQXR0cihjb25zdCBBdHRyaWJ1dGUqIGF0dHIsIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0ltcGwqPiYgbmFtZXNwYWNlcykK
IHsKICAgICAvLyBEb24ndCBhZGQgbmFtZXNwYWNlIGF0dHJpYnV0ZXMgdHdpY2UKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zVVJJID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
eG1sbnMvIjsKLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSB4bWxuc0F0dHIobnVsbEF0
b20sICJ4bWxucyIsIHhtbG5zVVJJKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB4
bWxuc1VSSSA9ICpuZXcgQXRvbWljU3RyaW5nKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5z
LyIpOworICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB4bWxuc0F0dHIgPSAqbmV3IFF1
YWxpZmllZE5hbWUobnVsbEF0b20sICJ4bWxucyIsIHhtbG5zVVJJKTsKICAgICBpZiAoYXR0ci0+
bmFtZSgpID09IHhtbG5zQXR0cikgewogICAgICAgICBuYW1lc3BhY2VzLnNldChlbXB0eUF0b20u
aW1wbCgpLCBhdHRyLT52YWx1ZSgpLmltcGwoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmROYW1lc3BhY2UoVmVjdG9yPFVDaGFy
CiAgICAgQXRvbWljU3RyaW5nSW1wbCogZm91bmROUyA9IG5hbWVzcGFjZXMuZ2V0KHByZSk7CiAg
ICAgaWYgKGZvdW5kTlMgIT0gbnMuaW1wbCgpKSB7CiAgICAgICAgIG5hbWVzcGFjZXMuc2V0KHBy
ZSwgbnMuaW1wbCgpKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyB4bWxucygieG1sbnMi
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgeG1sbnMgPSAqbmV3IFN0cmluZygieG1s
bnMiKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICBhcHBlbmQocmVzdWx0
LCB4bWxucyk7CiAgICAgICAgIGlmICghcHJlZml4LmlzRW1wdHkoKSkgewpAQCAtNTAxLDcgKzUw
MSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0YXJ0TWFya3VwKFZlY3RvcjxVQ2gKICAgICAgICAg
ICAgICAgICBpZiAoY29udmVydCkKICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwogICAgICAgICAg
ICAgICAgIGlmIChzdHlsZS0+bGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVQcmVmaXgoIiBzdHlsZT1cIiIpOworICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdHlsZVByZWZpeCA9ICpuZXcgU3RyaW5nKCIg
c3R5bGU9XCIiKTsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgc3R5bGVQcmVm
aXgpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShyZXN1bHQsIHN0
eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnXCInKTsKQEAgLTcwMiw3ICs3MDIsNyBAQCBTdHJpbmcgam9pbk1hcmt1cHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4gCiAvLyBGSVhNRTogQXQgbGVhc3QsIGFubm90YXRpb24gYW5k
IHN0eWxlIGluZm8gc2hvdWxkIHByb2JhYmx5IG5vdCBiZSBpbmNsdWRlZCBpbiByYW5nZS5tYXJr
dXBTdHJpbmcoKQogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3Rv
cjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSwgYm9vbCBj
b252ZXJ0QmxvY2tzVG9JbmxpbmVzKQogewotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgaW50ZXJj
aGFuZ2VOZXdsaW5lU3RyaW5nID0gU3RyaW5nKCI8YnIgY2xhc3M9XCIiKSArIEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lICsgIlwiPiI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgaW50ZXJjaGFu
Z2VOZXdsaW5lU3RyaW5nID0gKm5ldyBTdHJpbmcoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUgIlwiPiIpOwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuICIi
OwpAQCAtOTA1LDE0ICs5MDUsMTQgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSog
cmFuZ2UsIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+bGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRpdlN0eWxlKCI8ZGl2IHN0eWxl
PVwiIik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpdlN0eWxl
ID0gKm5ldyBTdHJpbmcoIjxkaXYgc3R5bGU9XCIiKTsKICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kKG9wZW5UYWcsIGRpdlN0eWxlKTsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQXR0cmli
dXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAg
ICAgICAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKICAgICAgICAgICAgICAgICAg
ICAgb3BlblRhZy5hcHBlbmQoJz4nKTsKICAgICAgICAgICAgICAgICAgICAgcHJlTWFya3Vwcy5h
cHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBkaXZDbG9zZVRhZygiPC9kaXY+Iik7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpdkNsb3NlVGFnID0gKm5ldyBTdHJpbmcoIjwvZGl2
PiIpOwogICAgICAgICAgICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChkaXZDbG9zZVRhZyk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTkyOSw4ICs5MjksOCBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgIH0KICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVNwYW5PcGVuID0gU3RyaW5n
KCI8c3BhbiBjbGFzcz1cIiIgQXBwbGVTdHlsZVNwYW5DbGFzcyAiXCIgc3R5bGU9XCIiKTsKLSAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxlU3BhbkNsb3NlKCI8L3NwYW4+Iik7CisgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgc3R5bGVTcGFuT3BlbiA9ICpuZXcgU3RyaW5nKCI8c3BhbiBjbGFz
cz1cIiIgQXBwbGVTdHlsZVNwYW5DbGFzcyAiXCIgc3R5bGU9XCIiKTsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBzdHlsZVNwYW5DbG9zZSA9ICpuZXcgU3RyaW5nKCI8L3NwYW4+Iik7CiAgICAg
CiAgICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0aGF0IGFsbCBvZiB0
aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgogICAgIE5vZGUqIHBhcmVudE9mTGFzdENs
b3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAwOwpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE1ICs1Nywx
NSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxCdXR0b25FbGVtZW50Ojp0CiB7CiAgICAgc3dp
dGNoIChtX3R5cGUpIHsKICAgICAgICAgY2FzZSBTVUJNSVQ6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgc3VibWl0KCJzdWJtaXQiKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCA9ICpuZXcgQXRvbWljU3RyaW5nKCJzdWJtaXQi
KTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBC
VVRUT046IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0dG9uKCJi
dXR0b24iKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbiA9
ICpuZXcgQXRvbWljU3RyaW5nKCJidXR0b24iKTsKICAgICAgICAgICAgIHJldHVybiBidXR0b247
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBSRVNFVDogewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyByZXNldCgicmVzZXQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHJlc2V0ID0gKm5ldyBBdG9taWNTdHJpbmcoInJlc2V0Iik7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzZXQ7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODA4LDcgKzgwOCw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmNoaWxk
QWxsb3dlZChOb2RlICpuZXcKIC8vIFRoaXMgdW5mb3J0dW5hdGUgZnVuY3Rpb24gaXMgb25seSBu
ZWVkZWQgd2hlbiBjaGVja2luZyBhZ2FpbnN0IHRoZSBEVEQuICBPdGhlciBsYW5ndWFnZXMgKGxp
a2UgU1ZHKSB3b24ndCBuZWVkIHRoaXMuCiBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRU
YWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHRhZ0xpc3Q7CisgICAgc3RhdGljIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+JiB0YWdMaXN0ID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjsK
ICAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2l6ZV90IHRhZ0NvdW50ID0g
MDsKICAgICAgICAgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIHRhZ3MgPSBIVE1MTmFtZXM6Omdl
dEhUTUxUYWdzKCZ0YWdDb3VudCk7CkBAIC04MjIsNyArODIyLDcgQEAgYm9vbCBIVE1MRWxlbWVu
dDo6aXNSZWNvZ25pemVkVGFnTmFtZShjbwogLy8gbmVlZCB0byBiZSBpbiB0aGVzZSB0d28gbGlz
dHMuCiBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogaW5saW5lVGFnTGlzdCgpCiB7Ci0gICAg
c3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHRhZ0xpc3Q7CisgICAgc3RhdGljIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiB0YWdMaXN0ID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPjsKICAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgdGFnTGlz
dC5hZGQodHRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoaVRh
Zy5sb2NhbE5hbWUoKS5pbXBsKCkpOwpAQCAtODgxLDcgKzg4MSw3IEBAIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+KiBpbmxpbmVUYWdMaXMKIAogSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4q
IGJsb2NrVGFnTGlzdCgpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
IHRhZ0xpc3Q7CisgICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiB0YWdMaXN0
ID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjsKICAgICBpZiAodGFnTGlzdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgdGFnTGlzdC5hZGQoYWRkcmVzc1RhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOwogICAgICAgICB0YWdMaXN0LmFkZChibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEx
MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBib29sIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmlzRm9jdXNhYmxl
KCkgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDo6dHlwZSgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWVsZHNldCgiZmllbGRzZXQi
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWVsZHNldCA9ICpuZXcgQXRvbWlj
U3RyaW5nKCJmaWVsZHNldCIpOwogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw1MyArMzczLDUzIEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTElucHV0RWxlbWVudDo6dHkKICAgICAvLyBuZWVkcyB0
byBiZSBsb3dlcmNhc2UgYWNjb3JkaW5nIHRvIERPTSBzcGVjCiAgICAgc3dpdGNoIChpbnB1dFR5
cGUoKSkgewogICAgICAgICBjYXNlIEJVVFRPTjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyBidXR0b24oImJ1dHRvbiIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgYnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOwogICAg
ICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENIRUNLQk9Y
OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGNoZWNrYm94KCJjaGVj
a2JveCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2hlY2tib3gg
PSAqbmV3IEF0b21pY1N0cmluZygiY2hlY2tib3giKTsKICAgICAgICAgICAgIHJldHVybiBjaGVj
a2JveDsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZJTEU6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgZmlsZSgiZmlsZSIpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZmlsZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJmaWxlIik7CiAgICAg
ICAgICAgICByZXR1cm4gZmlsZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIEhJRERFTjogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBoaWRkZW4oImhpZGRlbiIpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuID0gKm5ldyBBdG9t
aWNTdHJpbmcoImhpZGRlbiIpOwogICAgICAgICAgICAgcmV0dXJuIGhpZGRlbjsKICAgICAgICAg
fQogICAgICAgICBjYXNlIElNQUdFOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIGltYWdlKCJpbWFnZSIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgaW1hZ2UgPSAqbmV3IEF0b21pY1N0cmluZygiaW1hZ2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBpbWFnZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIElTSU5ERVg6CiAgICAgICAgICAg
ICByZXR1cm4gZW1wdHlBdG9tOwogICAgICAgICBjYXNlIFBBU1NXT1JEOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHBhc3N3b3JkKCJwYXNzd29yZCIpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFzc3dvcmQgPSAqbmV3IEF0b21pY1N0
cmluZygicGFzc3dvcmQiKTsKICAgICAgICAgICAgIHJldHVybiBwYXNzd29yZDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIFJBRElPOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIHJhZGlvKCJyYWRpbyIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgcmFkaW8gPSAqbmV3IEF0b21pY1N0cmluZygicmFkaW8iKTsKICAgICAgICAgICAgIHJl
dHVybiByYWRpbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJBTkdFOiB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJhbmdlKCJyYW5nZSIpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFuZ2UgPSAqbmV3IEF0b21pY1N0cmluZygicmFu
Z2UiKTsKICAgICAgICAgICAgIHJldHVybiByYW5nZTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFJFU0VUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJlc2V0KCJy
ZXNldCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQgPSAq
bmV3IEF0b21pY1N0cmluZygicmVzZXQiKTsKICAgICAgICAgICAgIHJldHVybiByZXNldDsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFNFQVJDSDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyBzZWFyY2goInNlYXJjaCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc2VhcmNoID0gKm5ldyBBdG9taWNTdHJpbmcoInNlYXJjaCIpOwogICAg
ICAgICAgICAgcmV0dXJuIHNlYXJjaDsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNVQk1JVDog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0ID0gKm5ldyBB
dG9taWNTdHJpbmcoInN1Ym1pdCIpOwogICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdDsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFRFWFQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgdGV4dCgidGV4dCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgdGV4dCA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0Iik7CiAgICAgICAgICAgICByZXR1
cm4gdGV4dDsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50
LmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEhUTUxLZXlnZW5FbGVtZW50OjpI
VE1MS2V5Z2VuRWxlbWVudChEb2MKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MS2V5Z2VuRWxl
bWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBrZXln
ZW4oImtleWdlbiIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtleWdlbiA9ICpu
ZXcgQXRvbWljU3RyaW5nKCJrZXlnZW4iKTsKICAgICByZXR1cm4ga2V5Z2VuOwogfQogCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQCBSZW5kZXJPYmplY3QqIEhUTUxMZWdlbmRFbGVtZW50OjpjcmVhdGVSCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTExlZ2VuZEVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgbGVnZW5kKCJsZWdlbmQiKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBsZWdlbmQgPSAqbmV3IEF0b21pY1N0cmluZygibGVnZW5kIik7CiAgICAg
cmV0dXJuIGxlZ2VuZDsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNw
cAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBIVE1MT3B0R3JvdXBFbGVt
ZW50Ojppc0ZvY3VzYWJsZSgpIAogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRHcm91cEVs
ZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgb3B0
Z3JvdXAoIm9wdGdyb3VwIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3B0Z3Jv
dXAgPSAqbmV3IEF0b21pY1N0cmluZygib3B0Z3JvdXAiKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMTIp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY28K
IAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT3B0aW9uRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBvcHRpb24oIm9wdGlvbiIpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9wdGlvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJvcHRp
b24iKTsKICAgICByZXR1cm4gb3B0aW9uOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCShyZXZp
c2lvbiAzODExMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODMyLDcgKzgzMiw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6bWFwQ3JlYXRlRXJyb3JDaGVj
ayhUb2sKIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShUb2tlbiogdCkKIHsK
ICAgICAvLyBJbml0IG91ciBlcnJvciBoYW5kbGluZyB0YWJsZS4KLSAgICBzdGF0aWMgRnVuY3Rp
b25NYXAgZ0Z1bmN0aW9uTWFwOworICAgIHN0YXRpYyBGdW5jdGlvbk1hcCYgZ0Z1bmN0aW9uTWFw
ID0gKm5ldyBGdW5jdGlvbk1hcDsKICAgICBpZiAoZ0Z1bmN0aW9uTWFwLmlzRW1wdHkoKSkgewog
ICAgICAgICBnRnVuY3Rpb25NYXAuc2V0KGFUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBh
cnNlcjo6bmVzdGVkQ3JlYXRlRXJyb3JDaGVjayk7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQo
YWRkcmVzc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRl
RXJyb3JDaGVjayk7CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpwcm9jZXNz
Q2xvc2VUYWcoVG9rZW4qIAogCiBib29sIEhUTUxQYXJzZXI6OmlzSGVhZGVyVGFnKGNvbnN0IEF0
b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4gaGVhZGVyVGFnczsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4m
IGhlYWRlclRhZ3MgPSAqbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAgIGlmICho
ZWFkZXJUYWdzLmlzRW1wdHkoKSkgewogICAgICAgICBoZWFkZXJUYWdzLmFkZChoMVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwogICAgICAgICBoZWFkZXJUYWdzLmFkZChoMlRhZy5sb2NhbE5hbWUo
KS5pbXBsKCkpOwpAQCAtOTg2LDcgKzk4Niw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNJbmxpbmUo
Tm9kZSogbm9kZSkgY28KIAogYm9vbCBIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5bGVUYWcoY29u
c3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiByZXNpZHVhbFN0eWxlVGFnczsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4mIHJlc2lkdWFsU3R5bGVUYWdzID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPjsKICAgICBpZiAocmVzaWR1YWxTdHlsZVRhZ3MuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHJlc2lkdWFsU3R5bGVUYWdzLmFkZChhVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAg
IHJlc2lkdWFsU3R5bGVUYWdzLmFkZChmb250VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC0x
MDEzLDcgKzEwMTMsNyBAQCBib29sIEhUTUxQYXJzZXI6OmlzUmVzaWR1YWxTdHlsZVRhZyhjb25z
CiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZShjb25zdCBBdG9t
aWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+IHVuYWZmZWN0ZWRUYWdzOworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiYgdW5hZmZlY3RlZFRhZ3MgPSAqbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAg
IGlmICh1bmFmZmVjdGVkVGFncy5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3Mu
YWRkKGJvZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3Mu
YWRkKHRhYmxlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDggKzExNCw4IEBAIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlKCBTdHkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
U2VsZWN0RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyBzZWxlY3RNdWx0aXBsZSgic2VsZWN0LW11bHRpcGxlIik7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyBzZWxlY3RPbmUoInNlbGVjdC1vbmUiKTsKKyAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBzZWxlY3RNdWx0aXBsZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJzZWxlY3Qt
bXVsdGlwbGUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RPbmUgPSAq
bmV3IEF0b21pY1N0cmluZygic2VsZWN0LW9uZSIpOwogICAgIHJldHVybiBtX211bHRpcGxlID8g
c2VsZWN0TXVsdGlwbGUgOiBzZWxlY3RPbmU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAogY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIHRleHRhcmVhKCJ0ZXh0YXJlYSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIHRleHRhcmVhID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHRhcmVhIik7CiAgICAgcmV0
dXJuIHRleHRhcmVhOwogfQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYyLDIwICs4NjIsMjAgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgcGxhdGZvcm0oSlNDb250ZXh0UmVmIAogewogI2lmIFBMQVRGT1JNKE1B
QykKICNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxh
dGZvcm0gPSAibWFjLXRpZ2VyIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9
ICpuZXcgU3RyaW5nKCJtYWMtdGlnZXIiKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBwbGF0Zm9ybSA9ICJtYWMtbGVvcGFyZCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxh
dGZvcm0gPSAqbmV3IFN0cmluZygibWFjLWxlb3BhcmQiKTsKICNlbmRpZgogI2VsaWYgUExBVEZP
Uk0oV0lOX09TKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAid2luZG93cyI7
CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygid2luZG93
cyIpOwogI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9y
bSA9ICJxdCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmlu
ZygicXQiKTsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBs
YXRmb3JtID0gImd0ayI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3
IFN0cmluZygiZ3RrIik7CiAjZWxpZiBQTEFURk9STShXWCkKLSAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtID0gInd4IjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9
ICpuZXcgU3RyaW5nKCJ3eCIpOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRm
b3JtID0gInVua25vd24iOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKm5l
dyBTdHJpbmcoInVua25vd24iKTsKICNlbmRpZgogCiAgICAgSlNWYWx1ZVJlZiBwbGF0Zm9ybVZh
bHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBqc1N0cmluZ1JlZihwbGF0Zm9ybSkuZ2V0KCkp
OwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWRlZiBKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6Okxpc3RlbmVyUwogCiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXImIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKIHsKLSAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2Vy
dmVyIHNlcnZlcjsKKyAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2VydmVyJiBzZXJ2ZXIgPSAq
bmV3IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjsKICAgICByZXR1cm4gc2VydmVyOwogfQogCkluZGV4
OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAzODExMikK
KysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UHJvZmlsZSosIEpTT2JqZWN0Kj4g
UHJvCiAKIHN0YXRpYyBQcm9maWxlTWFwJiBwcm9maWxlQ2FjaGUoKQogeyAKLSAgICBzdGF0aWMg
UHJvZmlsZU1hcCBzdGF0aWNQcm9maWxlczsKKyAgICBzdGF0aWMgUHJvZmlsZU1hcCYgc3RhdGlj
UHJvZmlsZXMgPSAqbmV3IFByb2ZpbGVNYXA7CiAgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOwog
fQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAJ
KHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8
UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+CiAKIHN0YXRpYyBQcm9maWxlTm9kZU1hcCYgcHJvZmls
ZU5vZGVDYWNoZSgpCiB7IAotICAgIHN0YXRpYyBQcm9maWxlTm9kZU1hcCBzdGF0aWNQcm9maWxl
Tm9kZXM7CisgICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwJiBzdGF0aWNQcm9maWxlTm9kZXMgPSAq
bmV3IFByb2ZpbGVOb2RlTWFwOwogICAgIHJldHVybiBzdGF0aWNQcm9maWxlTm9kZXM7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDcgKzExNzIsNyBA
QCBib29sIEZyYW1lTG9hZGVyOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjCiAKIHN0YXRpYyBIYXNo
U2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzKCkKIHsKLSAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbG9jYWxTY2hlbWVzOworICAgIHN0
YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzID0gKm5l
dyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKIAogICAgIGlmIChsb2NhbFNjaGVt
ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5TwogICAgIAogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UmIGNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlIHN0b3JhZ2U7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
JiBzdG9yYWdlID0gKm5ldyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwogICAgIAogICAgIHJl
dHVybiBzdG9yYWdlOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIAogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcs
IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiYgYXJjaGl2ZU1JTUVU
eXBlcygpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5j
dGlvbiosIENhc2VGb2xkaW5nSGFzaD4gbWltZVR5cGVzOworICAgIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+JiBtaW1lVHlw
ZXMgPSAqbmV3IEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENhc2VG
b2xkaW5nSGFzaD47CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICAK
ICAgICBpZiAoaW5pdGlhbGl6ZWQpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUwLDcgKzg1MCw3IEBAIFN0cmluZyBJY29uRGF0YWJh
c2U6OmRhdGFiYXNlUGF0aCgpIGNvbnMKIAogU3RyaW5nIEljb25EYXRhYmFzZTo6ZGVmYXVsdERh
dGFiYXNlRmlsZW5hbWUoKQogewotICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUgPSAiV2VicGFnZUljb25zLmRiIjsKKyAgICBzdGF0aWMgU3RyaW5nJiBkZWZhdWx0RGF0
YWJhc2VGaWxlbmFtZSA9ICpuZXcgU3RyaW5nKCJXZWJwYWdlSWNvbnMuZGIiKTsKICAgICByZXR1
cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUuY29weSgpOwogfQogCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIEV2ZW50SGFuZGxlcjo6fkV2ZW50
SGFuZGxlcigpCiAgICAgCiBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlckRyYWdTdGF0ZSYgRXZl
bnRIYW5kbGVyOjpkcmFnU3RhdGUoKQogewotICAgIHN0YXRpYyBFdmVudEhhbmRsZXJEcmFnU3Rh
dGUgc3RhdGU7CisgICAgc3RhdGljIEV2ZW50SGFuZGxlckRyYWdTdGF0ZSYgc3RhdGUgPSAqbmV3
IEV2ZW50SGFuZGxlckRyYWdTdGF0ZTsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAgICAgCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogY3Jl
YXRlUmVnRXhwRm8KICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1l
TWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhl
IHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBSZWd1
bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0gUmVndWxhckV4cHJlc3Npb24oIlxcdyIpOworICAg
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiYgd29yZFJlZ0V4cCA9ICpuZXcgUmVndWxhckV4cHJl
c3Npb24oIlxcdyIpOwogICAgIFN0cmluZyBwYXR0ZXJuKCIoIik7CiAgICAgdW5zaWduZWQgaW50
IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC0xMDEx
LDcgKzEwMTEsNyBAQCB2b2lkIEZyYW1lOjpyZW1vdmVFZGl0aW5nU3R5bGVGcm9tRWxlbWVuCiAj
aWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hTZXQ8RnJhbWUqPiYga2VlcEFsaXZlU2V0KCkKIHsK
LSAgICBzdGF0aWMgSGFzaFNldDxGcmFtZSo+IHN0YXRpY0tlZXBBbGl2ZVNldDsKKyAgICBzdGF0
aWMgSGFzaFNldDxGcmFtZSo+JiBzdGF0aWNLZWVwQWxpdmVTZXQgPSAqbmV3IEhhc2hTZXQ8RnJh
bWUqPjsKICAgICByZXR1cm4gc3RhdGljS2VlcEFsaXZlU2V0OwogfQogI2VuZGlmCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgUGFnZTo6c2V0R3JvdXBOYW1lKGNvbnN0IFN0cmlu
ZyYgbmEKIAogY29uc3QgU3RyaW5nJiBQYWdlOjpncm91cE5hbWUoKSBjb25zdAogewotICAgIHN0
YXRpYyBTdHJpbmcgbnVsbFN0cmluZzsKKyAgICBzdGF0aWMgU3RyaW5nJiBudWxsU3RyaW5nID0g
Km5ldyBTdHJpbmc7CiAgICAgcmV0dXJuIG1fZ3JvdXAgPyBtX2dyb3VwLT5uYW1lKCkgOiBudWxs
U3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDM4MTEy
KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBzdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5zCiAg
ICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gZGVmYXVsdFBvcnRzOworICAgIHN0YXRp
YyBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+JiBkZWZhdWx0UG9ydHMgPSAqbmV3IEhhc2hNYXA8
U3RyaW5nLCB1bnNpZ25lZD47CiAgICAgaWYgKGRlZmF1bHRQb3J0cy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cCIsIDgwKTsKICAgICAgICAgZGVmYXVsdFBvcnRz
LnNldCgiaHR0cHMiLCA0NDMpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2kKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFz
ZUlkZW50aWZpZXIoKSBjb25zdCAKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcGFyYXRvclN0cmlu
ZyA9IFN0cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBz
ZXBhcmF0b3JTdHJpbmcgPSAqbmV3IFN0cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKICAg
ICByZXR1cm4gbV9wcm90b2NvbCArIHNlcGFyYXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRv
clN0cmluZyArIFN0cmluZzo6bnVtYmVyKG1fcG9ydCk7IAogfQogCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvbWFjL0ZyYW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVN
YWMubW0JKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsOCBAQCBSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhw
Rm9yTGFiZWxzKE5TQXJyCiAgICAgLy8gdGhhdCB0aGUgYXBwIHdpbGwgdXNlIGlzIGVxdWFsIHRv
IHRoZSBudW1iZXIgb2YgbG9jYWxlcyBpcyB1c2VkIGluIHNlYXJjaGluZy4KICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW50IHJlZ0V4cENhY2hlU2l6ZSA9IDQ7CiAgICAgc3RhdGljIE5TTXV0
YWJsZUFycmF5KiByZWdFeHBMYWJlbHMgPSBuaWw7Ci0gICAgc3RhdGljIFZlY3RvcjxSZWd1bGFy
RXhwcmVzc2lvbio+IHJlZ0V4cHM7Ci0gICAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uIHdvcmRS
ZWdFeHAgPSBSZWd1bGFyRXhwcmVzc2lvbigiXFx3Iik7CisgICAgc3RhdGljIFZlY3RvcjxSZWd1
bGFyRXhwcmVzc2lvbio+JiByZWdFeHBzID0gKm5ldyBWZWN0b3I8UmVndWxhckV4cHJlc3Npb24q
PjsKKyAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24mIHdvcmRSZWdFeHAgPSAqbmV3IFJlZ3Vs
YXJFeHByZXNzaW9uKCJcXHciKTsKIAogICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZXN1bHQ7CiAg
ICAgaWYgKCFyZWdFeHBMYWJlbHMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHJldmlzaW9uIDM4MTEyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2Myw3ICsx
NTYzLDcgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJgogCiBjb25z
dCBLVVJMJiBibGFua1VSTCgpCiB7Ci0gICAgc3RhdGljIEtVUkwgc3RhdGljQmxhbmtVUkwoImFi
b3V0OmJsYW5rIik7CisgICAgc3RhdGljIEtVUkwmIHN0YXRpY0JsYW5rVVJMID0gKm5ldyBLVVJM
KCJhYm91dDpibGFuayIpOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkocmV2aXNpb24gMzgxMTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCwyMSArMTI0LDI0IEBAIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGUqIGdGb250
UGxhdGYKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0ZUZhbWlseU5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIC8vIEFsaWFzIENvdXJpZXIgPC0+
IENvdXJpZXIgTmV3Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBjb3VyaWVyKCJDb3VyaWVyIiks
IGNvdXJpZXJOZXcoIkNvdXJpZXIgTmV3Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgY291
cmllciA9ICpuZXcgQXRvbWljU3RyaW5nKCJDb3VyaWVyIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgY291cmllck5ldyA9ICpuZXcgQXRvbWljU3RyaW5nKCJDb3VyaWVyIE5ldyIpOwogICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBjb3VyaWVyKSkKICAgICAgICAgcmV0
dXJuIGNvdXJpZXJOZXc7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGNv
dXJpZXJOZXcpKQogICAgICAgICByZXR1cm4gY291cmllcjsKIAogICAgIC8vIEFsaWFzIFRpbWVz
IGFuZCBUaW1lcyBOZXcgUm9tYW4uCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lcygiVGlt
ZXMiKSwgdGltZXNOZXdSb21hbigiVGltZXMgTmV3IFJvbWFuIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgdGltZXMgPSAqbmV3IEF0b21pY1N0cmluZygiVGltZXMiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiB0aW1lc05ld1JvbWFuID0gKm5ldyBBdG9taWNTdHJpbmcoIlRpbWVzIE5l
dyBSb21hbiIpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCB0aW1lcykp
CiAgICAgICAgIHJldHVybiB0aW1lc05ld1JvbWFuOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHlOYW1lLCB0aW1lc05ld1JvbWFuKSkKICAgICAgICAgcmV0dXJuIHRpbWVzOwogICAg
IAogICAgIC8vIEFsaWFzIEFyaWFsIGFuZCBIZWx2ZXRpY2EKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGFyaWFsKCJBcmlhbCIpLCBoZWx2ZXRpY2EoIkhlbHZldGljYSIpOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcmIGFyaWFsID0gKm5ldyBBdG9taWNTdHJpbmcoIkFyaWFsIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgaGVsdmV0aWNhID0gKm5ldyBBdG9taWNTdHJpbmcoIkhlbHZldGlj
YSIpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBhcmlhbCkpCiAgICAg
ICAgIHJldHVybiBoZWx2ZXRpY2E7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5h
bWUsIGhlbHZldGljYSkpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q2FjaGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3
IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckYKICAgICB3aGlsZSAo
Y3VyckZhbWlseSAmJiAhcGxhdGZvcm1EYXRhKSB7CiAgICAgICAgIGlmIChjdXJyRmFtaWx5LT5m
YW1pbHkoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAgc3RhdGljIFN0cmluZyBtYXRjaFdvcmRz
WzNdID0geyBTdHJpbmcoIkFyYWJpYyIpLCBTdHJpbmcoIlBhc2h0byIpLCBTdHJpbmcoIlVyZHUi
KSB9OwotICAgICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyBnZWV6YVN0cigiR2VlemEgUHJv
Iik7CisgICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBnZWV6YVN0ciA9ICpuZXcgQXRv
bWljU3RyaW5nKCJHZWV6YSBQcm8iKTsKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg
MyAmJiAhcGxhdGZvcm1EYXRhOyArK2opCiAgICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHkt
PmZhbWlseSgpLmNvbnRhaW5zKG1hdGNoV29yZHNbal0sIGZhbHNlKSkKICAgICAgICAgICAgICAg
ICAgICAgcGxhdGZvcm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnRE
ZXNjcmlwdGlvbigpLCBnZWV6YVN0cik7CkBAIC0xNTMsOCArMTUzLDggQEAgRm9udFBsYXRmb3Jt
RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2Fj
aGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24pCiB7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMi
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGx1Y2lkYUdyYW5kZVN0cigiTHVjaWRhIEdyYW5k
ZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHRpbWVzU3RyID0gKm5ldyBBdG9taWNTdHJp
bmcoIlRpbWVzIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbHVjaWRhR3JhbmRlU3RyID0g
Km5ldyBBdG9taWNTdHJpbmcoIkx1Y2lkYSBHcmFuZGUiKTsKIAogICAgIC8vIEZJWE1FOiBXb3Vs
ZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBo
ZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNl
ciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGJhclRoZW1lKiBTY3Jv
bGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAgIHN0YXRpYyBTY3JvbGxiYXJUaGVtZU1h
YyB0aGVtZTsKKyAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVNYWMmIHRoZW1lID0gKm5ldyBTY3Jv
bGxiYXJUaGVtZU1hYzsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBlbnVtIHsKIAogVGhl
bWUqIHBsYXRmb3JtVGhlbWUoKQogewotICAgIHN0YXRpYyBUaGVtZU1hYyB0aGVtZU1hYzsKKyAg
ICBzdGF0aWMgVGhlbWVNYWMmIHRoZW1lTWFjID0gKm5ldyBUaGVtZU1hYzsKICAgICByZXR1cm4g
JnRoZW1lTWFjOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQkocmV2
aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCB2b2lkIHJlcG9ydFRocmVhZFZpb2xhdGlvbihj
b25zdCBjaGFyKiBmCiB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hh
ciogZnVuY3Rpb24pCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0gICAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiBsb2dnZWRGdW5jdGlvbnM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3Ry
aW5nPiYgbG9nZ2VkRnVuY3Rpb25zID0gKm5ldyBIYXNoU2V0PFN0cmluZz47CiAgICAgc3dpdGNo
ICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcikgewogICAgICAgICBjYXNlIE5vVGhyZWFkQ2hlY2s6
CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RhdGVOb3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0d29ya1N0YXRlTm90
aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV0d29ya1N0YXRl
Tm90aWZpZXIgbmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgc3RhdGljIE5ldHdvcmtTdGF0ZU5v
dGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmllciA9ICpuZXcgTmV0d29ya1N0YXRlTm90aWZpZXI7
CiAgICAgCiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyOwogfQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCShyZXZp
c2lvbiAzODExMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJl
YW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBSZWZQdHI8Rm9ybURhdGE+
ID4gU3RyZWFtRm9ybURhdGFNYXA7CiBzdGF0aWMgU3RyZWFtRm9ybURhdGFNYXAmIGdldFN0cmVh
bUZvcm1EYXRhTWFwKCkKIHsKLSAgICBzdGF0aWMgU3RyZWFtRm9ybURhdGFNYXAgc3RyZWFtRm9y
bURhdGFNYXA7CisgICAgc3RhdGljIFN0cmVhbUZvcm1EYXRhTWFwJiBzdHJlYW1Gb3JtRGF0YU1h
cCA9ICpuZXcgU3RyZWFtRm9ybURhdGFNYXA7CiAgICAgcmV0dXJuIHN0cmVhbUZvcm1EYXRhTWFw
OwogfQogCiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+ID4gU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiBzdGF0aWMgU3RyZWFtUmVzb3VyY2VI
YW5kbGVNYXAmIGdldFN0cmVhbVJlc291cmNlSGFuZGxlTWFwKCkKIHsKLSAgICBzdGF0aWMgU3Ry
ZWFtUmVzb3VyY2VIYW5kbGVNYXAgc3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CisgICAgc3RhdGlj
IFN0cmVhbVJlc291cmNlSGFuZGxlTWFwJiBzdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCA9ICpuZXcg
U3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiAgICAgcmV0dXJuIHN0cmVhbVJlc291cmNlSGFuZGxl
TWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVz
cG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTksNyArOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoCiAg
ICAgICAgIC8vIGlzIHJldHVybmluZyBpbmNvcnJlY3QgTUlNRSB0eXBlIGZvciBsb2NhbCAueGh0
bWwgZmlsZXMpIHdoaWNoIGlzIG9ubHkgcmVxdWlyZWQgaW4gTGVvcGFyZC4KICAgICAgICAgaWYg
KG1fdXJsLmlzTG9jYWxGaWxlKCkgJiYgbV9taW1lVHlwZSA9PSAidGV4dC9odG1sIikgewogICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbV91cmwucGF0aCgpOwotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFN0cmluZyB4aHRtbEV4dCgiLnhodG1sIik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiB4aHRtbEV4dCA9ICpuZXcgU3RyaW5nKCIueGh0bWwiKTsKICAgICAg
ICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKHhodG1sRXh0LCBmYWxzZSkpCiAgICAgICAgICAgICAg
ICAgbV9taW1lVHlwZSA9ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwogICAgICAgICB9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkocmV2aXNpb24gMzgxMTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgVGV4dEVuY29kaW5nOjppc0phcGFuZXNlKCkgY29uc3QK
ICAgICBpZiAobm9FeHRlbmRlZFRleHRFbmNvZGluZ05hbWVVc2VkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PGNvbnN0IGNoYXIqPiBzZXQ7CisgICAgc3Rh
dGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+JiBzZXQgPSAqbmV3IEhhc2hTZXQ8Y29uc3QgY2hhcio+
OwogICAgIGlmIChzZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFkZEVuY29kaW5nTmFtZShzZXQs
ICJ4LW1hYy1qYXBhbmVzZSIpOwogICAgICAgICBhZGRFbmNvZGluZ05hbWUoc2V0LCAiY3A5MzIi
KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk4
LDcgKzE3OTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludEVsbGlwc2lzQm94ZXMoUGFpCiAK
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4qIGNvbnRpbnVh
dGlvbk91dGxpbmVUYWJsZSgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBS
ZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4gdGFibGU7CisgICAgc3RhdGljIEhhc2hNYXA8UmVuZGVy
QmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4mIHRhYmxlID0gKm5ldyBIYXNoTWFwPFJl
bmRlckJsb2NrKiwgUmVuZGVyRmxvd1NlcXVlbmNlZFNldCo+OwogICAgIHJldHVybiAmdGFibGU7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCShyZXZpc2lvbiAzODEx
MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogY291bnRlcihSZW5kZXJPYmpl
Y3QKIAogc3RhdGljIENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7Ci0gICAgc3RhdGljIENv
dW50ZXJNYXBzIHN0YXRpY0NvdW50ZXJNYXBzOworICAgIHN0YXRpYyBDb3VudGVyTWFwcyYgc3Rh
dGljQ291bnRlck1hcHMgPSAqbmV3IENvdW50ZXJNYXBzOwogICAgIHJldHVybiBzdGF0aWNDb3Vu
dGVyTWFwczsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJvCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgZWxsaXBzaXNBbmRTcGFjZVsyXSA9IHsgaG9y
aXpvbnRhbEVsbGlwc2lzLCAnICcgfTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGVsbGlwc2lzQW5kU3BhY2VTdHIoZWxsaXBzaXNBbmRTcGFjZSwgMik7CisgICAgICAgICAg
ICAgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZWxsaXBzaXNBbmRTcGFjZVN0ciA9ICpuZXcgQXRv
bWljU3RyaW5nKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwogCiAgICAgICAgICAgICAgICAgY29uc3Qg
Rm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVMaW5lcyA9PSAxKS0+Zm9udCgpOwogICAgICAg
ICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNwYWNlV2lkdGggPSBmb250LndpZHRoKFRleHRSdW4o
ZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBjb25zdCBTdHJpbmcmIFJl
bmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7CiAgICAgaWYgKG1fbWFya2VyKQogICAgICAgICBy
ZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHN0YXRpY051bGxTdHJp
bmc7CisgICAgc3RhdGljIFN0cmluZyYgc3RhdGljTnVsbFN0cmluZyA9ICpuZXcgU3RyaW5nOwog
ICAgIHJldHVybiBzdGF0aWNOdWxsU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNjcm9sbGJhclRoZW1lKiBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogewotICAgIHN0YXRp
YyBSZW5kZXJTY3JvbGxiYXJUaGVtZSB0aGVtZTsKKyAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFy
VGhlbWUmIHRoZW1lID0gKm5ldyBSZW5kZXJTY3JvbGxiYXJUaGVtZTsKICAgICByZXR1cm4gJnRo
ZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
MzgxMTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDEzICsxNjgsMTMgQEAgc3RhdGljIEZvbnRXZWlnaHQgdG9Gb250V2VpZ2h0
KE5TSW50ZWdlcgogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Gb250KGludCBjc3NWYWx1
ZUlkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBzdGF0
aWMgRm9udERlc2NyaXB0aW9uIHN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlv
biBzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtZW51Rm9udDsK
LSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGxhYmVsRm9udDsKLSAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uIG1pbmlDb250cm9sRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHNt
YWxsQ29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBjb250cm9sRm9udDsK
KyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzeXN0ZW1Gb250ID0gKm5ldyBGb250RGVzY3Jp
cHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgc21hbGxTeXN0ZW1Gb250ID0gKm5l
dyBGb250RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgbWVudUZvbnQg
PSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBsYWJl
bEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9u
JiBtaW5pQ29udHJvbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9u
dERlc2NyaXB0aW9uJiBzbWFsbENvbnRyb2xGb250ID0gKm5ldyBGb250RGVzY3JpcHRpb247Cisg
ICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgY29udHJvbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlw
dGlvbjsKIAogICAgIEZvbnREZXNjcmlwdGlvbiogY2FjaGVkRGVzYzsKICAgICBOU0ZvbnQqIGZv
bnQgPSBuaWw7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9iaWRpLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5Miw3ICsyMTkyLDcgQEAg
dm9pZCBSZW5kZXJCbG9jazo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZgogICAgIC8vIERldGVybWlu
ZSB0aGUgd2lkdGggb2YgdGhlIGVsbGlwc2lzIHVzaW5nIHRoZSBjdXJyZW50IGZvbnQuCiAgICAg
Ly8gRklYTUU6IENTUzMgc2F5cyB0aGlzIGlzIGNvbmZpZ3VyYWJsZSwgYWxzbyBuZWVkIHRvIHVz
ZSAweDAwMkUgKEZVTEwgU1RPUCkgaWYgaG9yaXpvbnRhbCBlbGxpcHNpcyBpcyAibm90IHJlbmRl
cmFibGUiCiAgICAgVGV4dFJ1biBlbGxpcHNpc1J1bigmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVsbGlwc2lzU3RyKCZob3Jpem9udGFsRWxsaXBzaXMs
IDEpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyID0gKm5ldyBBdG9taWNT
dHJpbmcoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgY29uc3QgRm9udCYgZmlyc3RMaW5l
Rm9udCA9IGZpcnN0TGluZVN0eWxlKCktPmZvbnQoKTsKICAgICBjb25zdCBGb250JiBmb250ID0g
c3R5bGUoKS0+Zm9udCgpOwogICAgIGludCBmaXJzdExpbmVFbGxpcHNpc1dpZHRoID0gZmlyc3RM
aW5lRm9udC53aWR0aChlbGxpcHNpc1J1bik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDEzICs3MjAsMTMgQEAg
Q291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2VzcwogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRl
clN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgc3RhdGljIFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj4gZW1wdHlMaXN0OworICAgIHN0YXRpYyBWZWN0b3I8U3R5bGVE
YXNoYm9hcmRSZWdpb24+JiBlbXB0eUxpc3QgPSAqbmV3IFZlY3RvcjxTdHlsZURhc2hib2FyZFJl
Z2lvbj47CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3QgVmVjdG9yPFN0eWxlRGFz
aGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkKIHsKLSAg
ICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBub25lTGlzdDsKKyAgICBzdGF0
aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZUxpc3QgPSAqbmV3IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj47CiAgICAgc3RhdGljIGJvb2wgbm9uZUxpc3RJbml0aWFsaXpl
ZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7CkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBMb2NhbFN0b3JhZ2UqPiBMCiAKIHN0YXRpYyBMb2NhbFN0b3JhZ2VN
YXAmIGxvY2FsU3RvcmFnZU1hcCgpCiB7Ci0gICAgc3RhdGljIExvY2FsU3RvcmFnZU1hcCBsb2Nh
bFN0b3JhZ2VNYXA7CisgICAgc3RhdGljIExvY2FsU3RvcmFnZU1hcCYgbG9jYWxTdG9yYWdlTWFw
ID0gKm5ldyBMb2NhbFN0b3JhZ2VNYXA7CiAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZU1hcDsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24g
MzgxMTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6
cGFyc2VNYXBwZQogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcgYXV0b1ZhbCgiYXV0byIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGF1dG9WYWwgPSAqbmV3IEF0b21pY1N0cmluZygiYXV0byIpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9SZXZlcnNlID0gKm5ldyBBdG9taWNTdHJpbmco
ImF1dG8tcmV2ZXJzZSIpOwogICAgIFN0cmluZyByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OnJvdGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKICAgICAgICAgcmV0
dXJuIFJvdGF0ZUF1dG87CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2
aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk2LDEwICsxOTYsMTAgQEAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6QW5p
bWF0aW9uTW9kZSBTVkdBbgogCiBTVkdBbmltYXRpb25FbGVtZW50OjpDYWxjTW9kZSBTVkdBbmlt
YXRpb25FbGVtZW50OjpjYWxjTW9kZSgpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcgZGlzY3JldGUoImRpc2NyZXRlIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBsaW5lYXIoImxpbmVhciIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcg
cGFjZWQoInBhY2VkIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzcGxpbmUoInNw
bGluZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2NyZXRlID0gKm5ldyBB
dG9taWNTdHJpbmcoImRpc2NyZXRlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
bGluZWFyID0gKm5ldyBBdG9taWNTdHJpbmcoImxpbmVhciIpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHBhY2VkID0gKm5ldyBBdG9taWNTdHJpbmcoInBhY2VkIik7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3BsaW5lID0gKm5ldyBBdG9taWNTdHJpbmcoInNwbGlu
ZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmNhbGNNb2RlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGRpc2NyZXRlKQogICAgICAgICBy
ZXR1cm4gQ2FsY01vZGVEaXNjcmV0ZTsKQEAgLTIxNCw4ICsyMTQsOCBAQCBTVkdBbmltYXRpb25F
bGVtZW50OjpDYWxjTW9kZSBTVkdBbmltYXRpCiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkF0dHJp
YnV0ZVR5cGUgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmlidXRlVHlwZSgpIGNvbnN0CiB7ICAg
IAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgY3NzKCJDU1MiKTsKLSAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nIHhtbCgiWE1MIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgY3NzID0gKm5ldyBBdG9taWNTdHJpbmcoIkNTUyIpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHhtbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJYTUwiKTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjphdHRyaWJ1dGVUeXBl
QXR0cik7CiAgICAgaWYgKHZhbHVlID09IGNzcykKICAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZVR5
cGVDU1M7CkBAIC0yNDEsMTQgKzI0MSwxNCBAQCBTdHJpbmcgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
ZnJvbVZhbHVlKCkgCiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW0oInN1bSIpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bSA9ICpuZXcgQXRvbWljU3RyaW5nKCJzdW0iKTsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjph
ZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwgYW5pbWF0aW9uTW9kZSgp
ID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWNjdW11
bGF0ZWQoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc3VtKCJzdW0i
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdW0gPSAqbmV3IEF0b21pY1N0cmlu
Zygic3VtIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0ZShT
VkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gJiYgYW5p
bWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGFu
Z1NwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCShy
ZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFhtbGxhbmcoY29u
c3QgQXRvbQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6OnhtbHNwYWNlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0Iik7CisgICAgICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGRlZmF1bHRTdHJpbmcgPSAqbmV3IEF0b21pY1N0cmluZygiZGVmYXVsdCIpOwog
ICAgICAgICByZXR1cm4gZGVmYXVsdFN0cmluZzsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdF
bGVtZW50KCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250ZW50U2Ny
aXB0VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0
VmFsdWUoInRleHQvZWNtYXNjcmlwdCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGRlZmF1bHRWYWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2VjbWFzY3JpcHQiKTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoY29udGVudFNjcmlwdFR5cGVB
dHRyKTsKICAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDb250ZW50U2NyaXB0VHlwZQog
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUoKSBj
b25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGVmYXVsdFZhbHVlKCJ0ZXh0
L2NzcyIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRWYWx1ZSA9ICpu
ZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2NzcyIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9
IGdldEF0dHJpYnV0ZShjb250ZW50U3R5bGVUeXBlQXR0cik7CiAgICAgcmV0dXJuIG4uaXNOdWxs
KCkgPyBkZWZhdWx0VmFsdWUgOiBuOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldFhtbHNw
YWNlKGNvbnN0IAogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgp
IGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0VmFsdWUoInRl
eHQvY3NzIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdFZhbHVlID0g
Km5ldyBBdG9taWNTdHJpbmcoInRleHQvY3NzIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBu
ID0gZ2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1
bHRWYWx1ZSA6IG47CiB9CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50Ojpz
ZXRUeXBlKGNvbnN0IEF0b20KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTdHlsZUVsZW1lbnQ6
Om1lZGlhKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRW
YWx1ZSgiYWxsIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdFZhbHVl
ID0gKm5ldyBBdG9taWNTdHJpbmcoImFsbCIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9
IGdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVs
dFZhbHVlIDogbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gMzgxMTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoU1ZH
TGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgewogICAgICAgICAgICAgaWYg
KGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKSB7Ci0gICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBwcmVzZXJ2ZVN0cmluZygicHJlc2VydmUi
KTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVzZXJ2ZVN0
cmluZyA9ICpuZXcgQXRvbWljU3RyaW5nKCJwcmVzZXJ2ZSIpOwogCiAgICAgICAgICAgICAgICAg
aWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmUp
OwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCShyZXZpc2lv
biAzODExMikKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6
cGFyc2VDbG9ja1ZhbHVlCiAgICAgCiAgICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRl
U3BhY2UoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaW5kZWZpbml0ZVZhbHVl
KCJpbmRlZmluaXRlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5kZWZpbml0
ZVZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoImluZGVmaW5pdGUiKTsKICAgICBpZiAocGFyc2Ug
PT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUo
KTsKIApAQCAtNDU3LDggKzQ1Nyw4IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzRnJvemVuKCkg
Y29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0
YXJ0KCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBuZXZlcigi
bmV2ZXIiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHdoZW5Ob3RBY3RpdmUoIndo
ZW5Ob3RBY3RpdmUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBuZXZlciA9ICpu
ZXcgQXRvbWljU3RyaW5nKCJuZXZlciIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHdoZW5Ob3RBY3RpdmUgPSAqbmV3IEF0b21pY1N0cmluZygid2hlbk5vdEFjdGl2ZSIpOwogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJlc3Rh
cnRBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gbmV2ZXIpCiAgICAgICAgIHJldHVybiBSZXN0YXJ0
TmV2ZXI7CkBAIC00NjksNyArNDY5LDcgQEAgU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQgU1ZHU01J
TEVsZW1lbnQ6OgogICAgIAogU1ZHU01JTEVsZW1lbnQ6OkZpbGxNb2RlIFNWR1NNSUxFbGVtZW50
OjpmaWxsKCkgY29uc3QKIHsgICAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGZyZWV6
ZSgiZnJlZXplIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZnJlZXplID0gKm5l
dyBBdG9taWNTdHJpbmcoImZyZWV6ZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbGxBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0g
ZnJlZXplID8gRmlsbEZyZWV6ZSA6IEZpbGxSZW1vdmU7CiB9CkBAIC01MDYsNyArNTA2LDcgQEAg
U01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KCkgYwogICAgIGlmICh2YWx1ZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluZGVmaW5pdGVWYWx1ZSA9ICpuZXcgQXRv
bWljU3RyaW5nKCJpbmRlZmluaXRlIik7CiAgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVWYWx1
ZSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAgICAgYm9vbCBvazsK
QEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGlt
ZSBlCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2Vk
KE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewogICAgIEFTU0VSVChtX2lu
dGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U1ZHU01JTEVsZW1l
bnQqPiBsb29wQnJlYWtlcjsKKyAgICBzdGF0aWMgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+JiBs
b29wQnJlYWtlciA9ICpuZXcgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+OwogICAgIGlmIChsb29w
QnJlYWtlci5jb250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJuOwogICAgIGxvb3BCcmVha2Vy
LmFkZCh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDM4MTEyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBSZXNvdXJjZVNldCB7IAogfTsKIAog
c3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNlU2V0Kj4mIGNsaWVudE1h
cCgpIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQq
PiBtYXA7CisgICAgc3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNlU2V0
Kj4mIG1hcCA9ICpuZXcgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPjsK
ICAgICByZXR1cm4gbWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIFNWR1Jlc291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAgICAgaWYgKCFtX21hcmtl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U1ZHUmVzb3VyY2VNYXJr
ZXIqPiBjdXJyZW50bHlEcmF3aW5nTWFya2VyczsKKyAgICBzdGF0aWMgSGFzaFNldDxTVkdSZXNv
dXJjZU1hcmtlcio+JiBjdXJyZW50bHlEcmF3aW5nTWFya2VycyA9ICpuZXcgSGFzaFNldDxTVkdS
ZXNvdXJjZU1hcmtlcio+OwogCiAgICAgLy8gYXZvaWQgZHJhd2luZyBjaXJjdWxhciBtYXJrZXIg
cmVmZXJlbmNlcwogICAgIGlmIChjdXJyZW50bHlEcmF3aW5nTWFya2Vycy5jb250YWlucyh0aGlz
KSkKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBA
IHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwKIAogc3RhdGljIFByZWZs
aWdodFJlc3VsdENhY2hlJiBwcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiB7Ci0gICAgc3RhdGljIFBy
ZWZsaWdodFJlc3VsdENhY2hlIGNhY2hlOworICAgIHN0YXRpYyBQcmVmbGlnaHRSZXN1bHRDYWNo
ZSYgY2FjaGUgPSAqbmV3IFByZWZsaWdodFJlc3VsdENhY2hlOwogICAgIHJldHVybiBjYWNoZTsK
IH0KIApAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQcmVmbGlnaHRSZXN1bHRD
YWNoZUVuCiAKIHN0YXRpYyBib29sIGlzU2FmZVJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBu
YW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBmb3Ji
aWRkZW5IZWFkZXJzOwotICAgIHN0YXRpYyBTdHJpbmcgcHJveHlTdHJpbmcoInByb3h5LSIpOwot
ICAgIHN0YXRpYyBTdHJpbmcgc2VjU3RyaW5nKCJzZWMtIik7CisgICAgc3RhdGljIEhhc2hTZXQ8
U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBmb3JiaWRkZW5IZWFkZXJzID0gKm5ldyBIYXNoU2V0
PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBzdGF0aWMgU3RyaW5nJiBwcm94eVN0cmlu
ZyA9ICpuZXcgU3RyaW5nKCJwcm94eS0iKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBzZWNTdHJpbmcg
PSAqbmV3IFN0cmluZygic2VjLSIpOwogICAgIAogICAgIGlmIChmb3JiaWRkZW5IZWFkZXJzLmlz
RW1wdHkoKSkgewogICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgiYWNjZXB0LWNoYXJzZXQi
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBs
ZVJlcXVlCiAKIHN0YXRpYyBib29sIGlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0
ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiBhbGxvd2VkSGVhZGVyczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4mIGFsbG93ZWRIZWFkZXJzID0gKm5ldyBIYXNoU2V0PFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBpZiAoYWxsb3dlZEhlYWRlcnMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGFsbG93ZWRIZWFkZXJzLmFkZCgiY2FjaGUtY29udHJvbCIpOwogICAgICAgICBh
bGxvd2VkSGVhZGVycy5hZGQoImNvbnRlbnQtbGFuZ3VhZ2UiKTsKSW5kZXg6IFdlYkNvcmUveG1s
L1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRo
RXhwcmVzc2lvbk5vZGUuY3BwCShyZXZpc2lvbiAzODExMikKKysrIFdlYkNvcmUveG1sL1hQYXRo
RXhwcmVzc2lvbk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBYUGF0aCB7CiAgICAgCiBFdmFsdWF0aW9uQ29udGV4dCYgRXhwcmVzc2lvbjo6ZXZhbHVh
dGlvbkNvbnRleHQoKQogewotICAgIHN0YXRpYyBFdmFsdWF0aW9uQ29udGV4dCBldmFsdWF0aW9u
Q29udGV4dDsKKyAgICBzdGF0aWMgRXZhbHVhdGlvbkNvbnRleHQmIGV2YWx1YXRpb25Db250ZXh0
ID0gKm5ldyBFdmFsdWF0aW9uQ29udGV4dDsKICAgICByZXR1cm4gZXZhbHVhdGlvbkNvbnRleHQ7
CiB9CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViQ29yZS94
bWwvWFBhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRp
YyB2b2lkIHNldFVwQXhpc05hbWVzTWFwKEhhc2hNYXA8U3QKIAogc3RhdGljIGJvb2wgaXNBeGlz
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0ZXA6OkF4aXMmIHR5cGUpCiB7Ci0gICAgc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBheGlzTmFtZXM7CisgICAgc3RhdGljIEhhc2hN
YXA8U3RyaW5nLCBTdGVwOjpBeGlzPiYgYXhpc05hbWVzID0gKm5ldyBIYXNoTWFwPFN0cmluZywg
U3RlcDo6QXhpcz47CiAKICAgICBpZiAoYXhpc05hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgc2V0
VXBBeGlzTmFtZXNNYXAoYXhpc05hbWVzKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgYm9v
bCBpc0F4aXNOYW1lKGNvbnN0IFN0cmluZyYgbmFtCiAKIHN0YXRpYyBib29sIGlzTm9kZVR5cGVO
YW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG5v
ZGVUeXBlTmFtZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYgbm9kZVR5cGVOYW1lcyA9
ICpuZXcgSGFzaFNldDxTdHJpbmc+OwogICAgIGlmIChub2RlVHlwZU5hbWVzLmlzRW1wdHkoKSkg
ewogICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgiY29tbWVudCIpOwogICAgICAgICBub2RlVHlw
ZU5hbWVzLmFkZCgidGV4dCIpOwpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHJldmlzaW9uIDM4MTEyKQor
KysgV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDcgQEAgY29uc3QgVmFsdWU6OkFkb3B0VGFnIFZhbHVlOjphZG9wdCA9IHt9OwogY29uc3QgTm9k
ZVNldCYgVmFsdWU6OnRvTm9kZVNldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RhdGEpIHsKLSAg
ICAgICAgc3RhdGljIE5vZGVTZXQgZW1wdHlOb2RlU2V0OworICAgICAgICBzdGF0aWMgTm9kZVNl
dCYgZW1wdHlOb2RlU2V0ID0gKm5ldyBOb2RlU2V0OwogICAgICAgICByZXR1cm4gZW1wdHlOb2Rl
U2V0OwogICAgIH0KIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOC0xMS0wNCAgR3JlZyBC
b2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgxMAorCisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3RzKTogQ2hhbmdlZCB0byBsZWFrIGFuIG9i
amVjdCB0byBhdm9pZCBhbiBleGl0LXRpbWUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKiBIaXN0b3J5
L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlzdG9yeUl0ZW1XcmFwcGVycyk6IERpdHRv
CisgICAgICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubToKKyAgICAgICAgKGZvbnRGcm9t
TlNGb250KTogRGl0dG8KKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbToKKyAgICAgICAgKHN0cmVhbXMpOiBEaXR0bworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKTogRGl0dG8KKwogMjAwOC0xMS0w
NCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSm9obiBTdWxsaXZhbgpJbmRleDogV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRM
aXN0Lm1tCShyZXZpc2lvbiAzODExMikKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9y
d2FyZExpc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tG
b3J3YXJkTGlzdCo+JiBiYWNrRm9yd2FyZExpc3RzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxC
YWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiBzdGF0aWNCYWNrRm9yd2FyZExp
c3RzOworICAgIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tGb3J3YXJk
TGlzdCo+JiBzdGF0aWNCYWNrRm9yd2FyZExpc3RzID0gKm5ldyBIYXNoTWFwPEJhY2tGb3J3YXJk
TGlzdCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+OwogICAgIHJldHVybiBzdGF0aWNCYWNrRm9yd2Fy
ZExpc3RzOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCShyZXZp
c2lvbiAzODExMikKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmVIaXN0b3J5
SXRlbSogY29yZShXCiAKIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+JiBo
aXN0b3J5SXRlbVdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxIaXN0b3J5SXRlbSos
IFdlYkhpc3RvcnlJdGVtKj4gaGlzdG9yeUl0ZW1XcmFwcGVyczsKKyAgICBzdGF0aWMgSGFzaE1h
cDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBlcnMgPSAq
bmV3IEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+OwogICAgIHJldHVybiBo
aXN0b3J5SXRlbVdyYXBwZXJzOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViU3RyaW5n
VHJ1bmNhdG9yLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5j
YXRvci5tCShyZXZpc2lvbiAzODExMikKKysrIFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVu
Y2F0b3IubQkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgTlNGb250ICpk
ZWZhdWx0TWVudUZvbnQoKQogc3RhdGljIEZvbnQmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9u
dCkKIHsKICAgICBzdGF0aWMgTlNGb250ICpjdXJyZW50Rm9udDsKLSAgICBzdGF0aWMgRm9udCBj
dXJyZW50UmVuZGVyZXI7CisgICAgc3RhdGljIEZvbnQmIGN1cnJlbnRSZW5kZXJlciA9ICpuZXcg
Rm9udDsKIAogICAgIGlmIChbZm9udCBpc0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0
dXJuIGN1cnJlbnRSZW5kZXJlcjsKSW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0
c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNpb24gMzgxMTIpCisrKyBXZWJLaXQv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqQ2FyYm9uUGF0aEZyb21QT1NJWFBh
dGgKIHR5cGVkZWYgSGFzaE1hcDxOUFN0cmVhbSosIE5QUD4gU3RyZWFtTWFwOwogc3RhdGljIFN0
cmVhbU1hcCYgc3RyZWFtcygpCiB7Ci0gICAgc3RhdGljIFN0cmVhbU1hcCBzdGF0aWNTdHJlYW1z
OworICAgIHN0YXRpYyBTdHJlYW1NYXAmIHN0YXRpY1N0cmVhbXMgPSAqbmV3IFN0cmVhbU1hcDsK
ICAgICByZXR1cm4gc3RhdGljU3RyZWFtczsKIH0KIApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDM4MTEyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlw
dG9yKiBhZURlc2NGcm8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlm
IChvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjppbmZvKSkgewotICAgICAgICAgICAgc3RhdGlj
IEhhc2hTZXQ8SlNPYmplY3QqPiB2aXNpdGVkRWxlbXM7CisgICAgICAgICAgICBzdGF0aWMgSGFz
aFNldDxKU09iamVjdCo+JiB2aXNpdGVkRWxlbXMgPSAqbmV3IEhhc2hTZXQ8SlNPYmplY3QqPjsK
ICAgICAgICAgICAgIGlmICghdmlzaXRlZEVsZW1zLmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAg
ICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgCklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzODExMikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTExLTA0ICBHcmVnIEJvbHNpbmdhICA8Ym9s
c2luZ2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODEwCisgICAgICAgIAorICAgICAgICBSZW1vdmUgLm8gZmlsZXMgZnJvbSB0aGUgZXhjbHVk
ZSBsaXN0IHRoYXQgaGF2ZSBoYWQgdGhlaXIgZXhpdC10aW1lIGRlc3RydWN0b3JzIHJlbW92ZWQu
CisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnM6CisK
IDIwMDgtMTEtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgICog
U2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzOiBGaXggZmFpbHVyZXMgc2Vl
biBvbiB0aGUKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1k
ZXN0cnVjdG9ycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1l
eGl0LXRpbWUtZGVzdHJ1Y3RvcnMJKHJldmlzaW9uIDM4MTEyKQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05
MywxMTEgKzkzLDM1IEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICAkc2hvcnRO
YW1lID1+IHMvLipcLy8vOwogCiAgICAgaWYgKCR0YXJnZXQgZXEgIldlYkNvcmUiKSB7CisgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKICAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFwcGx5U3R5bGVDb21tYW5kLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFyY2hpdmVGYWN0b3J5Lm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkNTU1ByaW1pdGl2ZVZhbHVlLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkNTU1NlbGVjdG9yLm8iOwotICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkNTU1N0eWxlU2VsZWN0b3IubyI7CiAgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiQ2FjaGVkSW1hZ2UubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQ29sb3JNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRE9NSW1w
bGVtZW50YXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRG9jdW1lbnQu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVyLm8iOwogICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkV2ZW50SGFuZGxlck1hYy5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJGVFBEaXJlY3RvcnlEb2N1bWVudC5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGUubyI7CiAgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiRm9udENhY2hlTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkZvcm1EYXRhU3RyZWFtTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkZyYW1lLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZyYW1lTG9hZGVyLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZyYW1lTWFjLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdDQ29udHJvbGxlci5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJHcmFwaGljc0NvbnRleHRNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSFRNTEJ1dHRvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiSFRNTEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SFRNTEZpZWxkU2V0RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJI
VE1MSW5wdXRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxJ
bnRlcmNoYW5nZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MS2V5Z2Vu
RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MTGVnZW5kRWxl
bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MT3B0R3JvdXBFbGVt
ZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxPcHRpb25FbGVtZW50
Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxQYXJzZXIubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFNlbGVjdEVsZW1lbnQubyI7CiAgICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFRhYmxlRWxlbWVudC5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGV4dEFyZWFFbGVtZW50Lm8iOwogICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkljb25EYXRhYmFzZS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJJbWFnZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJJbmRl
bnRPdXRkZW50Q29tbWFuZC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJJbnNw
ZWN0b3JDb250cm9sbGVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTRE9N
QmluZGluZy5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNJbnNw
ZWN0ZWRPYmplY3RXcmFwcGVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpT
SW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkpTU1ZHQW5pbWF0ZWRMZW5ndGgubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiSlNTVkdBbmltYXRlZFJlY3QubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiSlNTVkdMZW5ndGgubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNT
VkdSZWN0Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkphdmFTY3JpcHREZWJ1
Z1NlcnZlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKYXZhU2NyaXB0UHJv
ZmlsZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKYXZhU2NyaXB0UHJvZmls
ZU5vZGUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiS1VSTC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJMb2NhbFN0b3JhZ2UubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiTmV0d29ya1N0YXRlTm90aWZpZXIubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUGFnZS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJQYXN0ZWJvYXJkTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRl
ckJsb2NrLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlckNvdW50ZXIu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyRmxleGlibGVCb3gubyI7
CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyTGF5ZXIubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyTGlzdEl0ZW0ubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyU2Nyb2xsYmFyVGhlbWUubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyU3R5bGUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiUmVuZGVyVGhlbWVNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiUmVzb3VyY2VSZXNwb25zZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJTVkdBbmltYXRlTW90aW9uRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJTVkdBbmltYXRpb25FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNWR0xhbmdTcGFjZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJT
VkdSZXNvdXJjZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTVkdSZXNvdXJj
ZU1hcmtlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTVkdTTUlMRWxlbWVu
dC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTVkdTVkdFbGVtZW50Lm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1N0eWxlRWxlbWVudC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTVkdUZXh0Q29udGVudEVsZW1lbnQubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2NyaXB0RWxlbWVudC5vIjsKICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJTY3JvbGxWaWV3Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlNjcm9sbGJhclRoZW1lTWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNlY3VyaXR5T3JpZ2luLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IlNpbXBsZUZvbnREYXRhTWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlN0
eWxlVHJhbnNmb3JtRGF0YS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJUZXh0
RW5jb2RpbmcubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiVGhlbWVNYWMubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiVGhyZWFkQ2hlY2subyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiWE1MSHR0cFJlcXVlc3QubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiWFBhdGhFeHByZXNzaW9uTm9kZS5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJYUGF0aFBhcnNlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJYUGF0aFZhbHVlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgImJp
ZGkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiaHRtbGVkaXRpbmcubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAibWFya3VwLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgInJ1bnRpbWVfcm9vdC5vIjsKICAgICB9CiAKICAgICBpZiAoJHRhcmdl
dCBlcSAiV2ViS2l0IikgewotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vzc2li
aWxpdHlPYmplY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViQmFja0Zv
cndhcmRMaXN0Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYkJhc2VOZXRz
Y2FwZVBsdWdpblN0cmVhbS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJI
VE1MUmVwcmVzZW50YXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2Vi
SGlzdG9yeUl0ZW0ubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYlBhc3Rl
Ym9hcmRIZWxwZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViU3RyaW5n
VHJ1bmNhdG9yLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYlZpZXcubyI7
CiAgICAgfQogCiAgICAgJHNhd0Vycm9yID0gMSBpZiBwcmludEZ1bmN0aW9ucygkc2hvcnROYW1l
LCAkZmlsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24917</attachid>
            <date>2008-11-05 14:08:17 -0800</date>
            <delta_ts>2008-11-05 14:49:11 -0800</delta_ts>
            <desc>Updated patch to get more objects</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>104487</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAzIEBACisyMDA4LTExLTA1ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisJUmVtb3ZlIHVzZSBvZiBz
dGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1
Y3RvcnMpCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2NDb250cm9sbGVyKTogQ2hhbmdlZCB0byBsZWFrIGFuIG9iamVjdCB0byBh
dm9pZCBhbiBleGl0LXRpbWUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlclNldCk6IGRpdHRvCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndyYXBwZXJzKTogZGl0dG8KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVycyk6IGRp
dHRvCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpyb290T2JqZWN0U2V0KTogZGl0dG8KKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogZGl0dG8KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1Rl
eHQpOiBkaXR0bworICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOiBkaXR0bworICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkV2YWwpOiBk
aXR0bworICAgICAgICAoV2ViQ29yZTo6cHJpbnRFdmFsKTogZGl0dG8KKyAgICAgICAgKiBkb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkcxMEZlYXR1cmUp
OiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNTVkcxMUZlYXR1cmUpOiBkaXR0bworICAgICAg
ICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUpOiBkaXR0bworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFz
UHJlZml4TmFtZXNwYWNlTWlzbWF0Y2gpOiBkaXR0bworICAgICAgICAqIGRvbS9TY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdl
KTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN0eWxlU3BhbkNsYXNzU3RyaW5nKTogZGl0dG8KKyAgICAgICAgKiBlZGl0
aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOiBkaXR0bworICAg
ICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aW5kZW50QmxvY2txdW90ZVN0cmluZyk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdl
TmV3bGluZU5vZGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZl
cnRlZFNwYWNlU3Bhbik6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UpOiBkaXR0
bworICAgICAgICAoV2ViQ29yZTo6bm9uQnJlYWtpbmdTcGFjZVN0cmluZyk6IGRpdHRvCisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQXR0cmli
dXRlVmFsdWUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRXNjYXBlZENvbnRlbnQp
OiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cik6IGRpdHRv
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmROYW1lc3BhY2UpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kU3RhcnRNYXJrdXApOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TWFya3VwKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpp
c1JlY29nbml6ZWRUYWdOYW1lKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmlubGluZVRhZ0xp
c3QpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6YmxvY2tUYWdMaXN0KTogZGl0dG8KKyAgICAg
ICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZpZWxkU2V0RWxlbWVudDo6dHlwZSk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGUpOiBk
aXR0bworICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OnR5cGUpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRN
TExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6
OnR5cGUpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
cHRpb25FbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6Z2V0Tm9kZSk6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGFyc2VyOjppc0hlYWRlclRhZyk6IGRpdHRvCisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5bGVUYWcpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZSk6IGRpdHRvCisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6dHlwZSk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENl
bGxCb3JkZXJzRGVjbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnR5cGUpOiBkaXR0
bworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtKTogZGl0dG8KKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKTogZGl0dG8KKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUNhY2hlKTogZGl0dG8KKyAgICAgICAgKiBp
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBy
b2ZpbGVOb2RlQ2FjaGUpOiBkaXR0bworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsb2NhbFNjaGVtZXMpOiBkaXR0bworICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZVN0b3JhZ2UpOiBkaXR0bworICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVNSU1FVHlwZXMpOiBkaXR0bwor
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKTogZGl0dG8KKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmRyYWdTdGF0ZSk6IGRpdHRvCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6
a2VlcEFsaXZlU2V0KTogZGl0dG8KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6Z3JvdXBOYW1lKTogZGl0dG8KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlm
aWVyKTogZGl0dG8KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnJlZ0V4cEZvckxhYmVscyk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpibGFua1VSTCk6IGRpdHRvCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsdGVybmF0ZUZh
bWlseU5hbWUpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOiBkaXR0bworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKTogZGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IGRpdHRvCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hcik6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2ViRmFsbGJhY2tGb250RmFtaWx5KTogZGl0
dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRhYmxlVHlwZXNGb3JVUkwpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6d3Jp
dGFibGVUeXBlc0ZvckltYWdlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwQXR0YWNo
bWVudENoYXJhY3RlcnMpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Ro
cmVhZENoZWNrLm1tOgorICAgICAgICAoV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbik6IGRp
dHRvCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcik6IGRpdHRvCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpnZXRTdHJlYW1Gb3JtRGF0YU1hcCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpn
ZXRTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6
aXNKYXBhbmVzZSk6IGRpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6IGRpdHRvCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291
bnRlck1hcHMpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxC
b3gpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dCk6IGRpdHRvCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSk6IGRpdHRvCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnN5c3RlbUZvbnQpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9iaWRp
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92
ZXJmbG93KTogZGl0dG8KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25z
KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVn
aW9ucyk6IGRpdHRvCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxTdG9yYWdlTWFwKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OnJvdGF0ZU1vZGUpOiBkaXR0bworICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNN
b2RlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmF0dHJp
YnV0ZVR5cGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBZGRpdGl2ZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
Ojppc0FjY3VtdWxhdGVkKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UpOiBkaXR0bworICAgICAg
ICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmNvbnRlbnRTY3JpcHRUeXBlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUpOiBkaXR0bworICAgICAgICAqIHN2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOiBkaXR0bworICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IGRpdHRvCisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogZGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NNSUxFbGVtZW50OjpmaWxsKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpyZXBlYXRDb3VudCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZCk6IGRpdHRvCisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaWVudE1hcCk6
IGRpdHRvCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KTogZGl0dG8KKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmxpZ2h0UmVz
dWx0Q2FjaGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNTYWZlUmVxdWVzdEhlYWRlcik6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjppc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVy
V2hpdGVsaXN0KTogZGl0dG8KKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQp
OiBkaXR0bworICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6aXNBeGlzTmFtZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNO
b2RlVHlwZU5hbWUpOiBkaXR0bworICAgICAgICAqIHhtbC9YUGF0aFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoOjpWYWx1ZTo6dG9Ob2RlU2V0KTogZGl0dG8KKwogMjAwOC0xMS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkKiBjb2xsZWN0KHZvaWQq
KQogCiBHQ0NvbnRyb2xsZXImIGdjQ29udHJvbGxlcigpCiB7Ci0gICAgc3RhdGljIEdDQ29udHJv
bGxlciBzdGF0aWNHQ0NvbnRyb2xsZXI7CisgICAgc3RhdGljIEdDQ29udHJvbGxlciYgc3RhdGlj
R0NDb250cm9sbGVyID0gKm5ldyBHQ0NvbnRyb2xsZXI7CiAgICAgcmV0dXJuIHN0YXRpY0dDQ29u
dHJvbGxlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
V3JhcHBlcnMoY29uc3QgCiBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiYgd3JhcHBlclNldCgp
CiB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgc3RhdGljIFRocmVhZFNwZWNpZmljPEhhc2hT
ZXQ8RE9NT2JqZWN0Kj4gPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpYzxIYXNoU2V0PERPTU9iamVjdCo+ID4mIHN0YXRpY1dyYXBwZXJTZXQgPSAqbmV3IFRocmVh
ZFNwZWNpZmljPEhhc2hTZXQ8RE9NT2JqZWN0Kj4gPjsKICAgICByZXR1cm4gKnN0YXRpY1dyYXBw
ZXJTZXQ7CiAjZWxzZQotICAgIHN0YXRpYyBIYXNoU2V0PERPTU9iamVjdCo+IHN0YXRpY1dyYXBw
ZXJTZXQ7CisgICAgc3RhdGljIEhhc2hTZXQ8RE9NT2JqZWN0Kj4mIHN0YXRpY1dyYXBwZXJTZXQg
PSAqbmV3IEhhc2hTZXQ8RE9NT2JqZWN0Kj47CiAgICAgcmV0dXJuIHN0YXRpY1dyYXBwZXJTZXQ7
CiAjZW5kaWYKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RX
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVk
T2JqZWN0V3JhcHBlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHR5cGVkZWYgSGFzaE1hcDxKU0dsb2JhbE9iamVjdCosIFdyYXBwZXIKIAogc3RhdGlj
IEdsb2JhbE9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgR2xvYmFs
T2JqZWN0V3JhcHBlck1hcCBtYXA7CisgICAgc3RhdGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAm
IG1hcCA9ICpuZXcgR2xvYmFsT2JqZWN0V3JhcHBlck1hcDsKICAgICByZXR1cm4gbWFwOwogfQog
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5z
cGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCBKU0luc3BlY3RvckNhCiAKIHN0YXRpYyBXcmFw
cGVyTWFwJiB3cmFwcGVycygpCiB7Ci0gICAgc3RhdGljIFdyYXBwZXJNYXAgbWFwOworICAgIHN0
YXRpYyBXcmFwcGVyTWFwJiBtYXAgPSAqbmV3IFdyYXBwZXJNYXA7CiAgICAgcmV0dXJuIG1hcDsK
IH0KIApJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgdHlwZWRlZiBIYXNoU2V0PFJvb3RPYmplY3QqPiBSb290T2JqZWN0UwogCiBzdGF0aWMg
Um9vdE9iamVjdFNldCogcm9vdE9iamVjdFNldCgpCiB7Ci0gICAgc3RhdGljIFJvb3RPYmplY3RT
ZXQgc3RhdGljUm9vdE9iamVjdFNldDsKKyAgICBzdGF0aWMgUm9vdE9iamVjdFNldCYgc3RhdGlj
Um9vdE9iamVjdFNldCA9ICpuZXcgUm9vdE9iamVjdFNldDsKICAgICByZXR1cm4gJnN0YXRpY1Jv
b3RPYmplY3RTZXQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcgQEAgU3Ry
aW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdgogewogICAgIGVjID0gMDsKIAot
ICAgIHN0YXRpYyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD4gc2hvcnRoYW5kTWFwOwor
ICAgIHN0YXRpYyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD4mIHNob3J0aGFuZE1hcCA9
ICpuZXcgSGFzaE1hcDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+OwogICAgIGlmIChzaG9ydGhhbmRN
YXAuaXNFbXB0eSgpKQogICAgICAgICBpbml0U2hvcnRoYW5kTWFwKHNob3J0aGFuZE1hcCk7CiAK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyAr
Njg2LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBsaXN0LXN0eWxlIGFuZCBzZXBhcmF0b3IKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRUNUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIHJlY3RQYXJlbigicmVjdCgiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHJlY3RQYXJlbiA9ICpuZXcgU3RyaW5nKCJyZWN0KCIpOwogCiAgICAgICAgICAgICBS
ZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7CiAgICAgICAgICAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdDsKQEAgLTcwOSw5ICs3MDksOSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAg
ICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyBjb21tYVNwYWNlKCIsICIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyByZ2JQYXJlbigicmdiKCIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyByZ2Jh
UGFyZW4oInJnYmEoIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBjb21tYVNw
YWNlID0gKm5ldyBTdHJpbmcoIiwgIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiByZ2JQYXJlbiA9ICpuZXcgU3RyaW5nKCJyZ2IoIik7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiByZ2JhUGFyZW4gPSAqbmV3IFN0cmluZygicmdiYSgiKTsKIAogICAgICAgICAg
ICAgUkdCQTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgICAgIGlmICht
X3R5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3NSArNjIsNzUgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUo
KSBjbwogICAgIGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRv
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhY3Rp
dmUoImFjdGl2ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYWZ0ZXIoImFmdGVyIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBhbnlMaW5rKCItd2Via2l0LWFueS1saW5rIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBhdXRvZmlsbCgiLXdlYmtpdC1hdXRvZmlsbCIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgYmVmb3JlKCJiZWZvcmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGNoZWNrZWQoImNoZWNrZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZpbGVVcGxv
YWRCdXR0b24oIi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBkaXNhYmxlZCgiZGlzYWJsZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJl
YWRPbmx5KCJyZWFkLW9ubHkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJlYWRXcml0ZSgi
cmVhZC13cml0ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZHJhZygiLXdlYmtpdC1kcmFn
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFnQWxpYXMoIi1raHRtbC1kcmFnIik7IC8v
IHdhcyBkb2N1bWVudGVkIHdpdGggdGhpcyBuYW1lIGluIEFwcGxlIGRvY3VtZW50YXRpb24sIHNv
IGtlZXAgYW4gYWxpYXMKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVtcHR5KCJlbXB0eSIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW5hYmxlZCgiZW5hYmxlZCIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZmlyc3RDaGlsZCgiZmlyc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGZpcnN0TGV0dGVyKCJmaXJzdC1sZXR0ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGZpcnN0TGluZSgiZmlyc3QtbGluZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmly
c3RPZlR5cGUoImZpcnN0LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZ1bGxQ
YWdlTWVkaWEoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBudGhDaGlsZCgibnRoLWNoaWxkKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRo
T2ZUeXBlKCJudGgtb2YtdHlwZSgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50aExhc3RD
aGlsZCgibnRoLWxhc3QtY2hpbGQoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBudGhMYXN0
T2ZUeXBlKCJudGgtbGFzdC1vZi10eXBlKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZm9j
dXMoImZvY3VzIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBob3ZlcigiaG92ZXIiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGluZGV0ZXJtaW5hdGUoImluZGV0ZXJtaW5hdGUiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGlucHV0UGxhY2Vob2xkZXIoIi13ZWJraXQtaW5wdXQtcGxh
Y2Vob2xkZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxhc3RDaGlsZCgibGFzdC1jaGls
ZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdE9mVHlwZSgibGFzdC1vZi10eXBlIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsaW5rKCJsaW5rIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBsYW5nKCJsYW5nKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250
cm9sc1BhbmVsKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzTXV0ZUJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1tdXRlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1Bs
YXlCdXR0b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSgiLXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lLWRpc3BsYXkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29u
dHJvbHNUaW1lbGluZSgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1NlZWtCYWNrQnV0dG9uKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1z
ZWVrLWZvcndhcmQtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRy
b2xzRnVsbHNjcmVlbkJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm90U3RyKCJub3QoIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBvbmx5Q2hpbGQoIm9ubHktY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIG9ubHlPZlR5cGUoIm9ubHktb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgcmVzaXplcigiLXdlYmtpdC1yZXNpemVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyByb290KCJyb290Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXIoIi13ZWJr
aXQtc2Nyb2xsYmFyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJCdXR0b24o
Ii13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Ny
b2xsYmFyQ29ybmVyKCItd2Via2l0LXNjcm9sbGJhci1jb3JuZXIiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHNjcm9sbGJhclRodW1iKCItd2Via2l0LXNjcm9sbGJhci10aHVtYiIpOwotICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyVHJhY2soIi13ZWJraXQtc2Nyb2xsYmFyLXRy
YWNrIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJUcmFja1BpZWNlKCItd2Vi
a2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Vh
cmNoQ2FuY2VsQnV0dG9uKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBzZWFyY2hEZWNvcmF0aW9uKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0
aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbigi
LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBzZWFyY2hSZXN1bHRzQnV0dG9uKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VsZWN0aW9uKCJzZWxlY3Rpb24iKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIHNsaWRlclRodW1iKCItd2Via2l0LXNsaWRlci10aHVtYiIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGFyZ2V0KCJ0YXJnZXQiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHZpc2l0ZWQoInZpc2l0ZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHdp
bmRvd0luYWN0aXZlKCJ3aW5kb3ctaW5hY3RpdmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGRlY3JlbWVudCgiZGVjcmVtZW50Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBpbmNyZW1l
bnQoImluY3JlbWVudCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc3RhcnQoInN0YXJ0Iik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBlbmQoImVuZCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgaG9yaXpvbnRhbCgiaG9yaXpvbnRhbCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
dmVydGljYWwoInZlcnRpY2FsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkb3VibGVCdXR0
b24oImRvdWJsZS1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNpbmdsZUJ1dHRv
bigic2luZ2xlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm9CdXR0b24oIm5v
LWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY29ybmVyUHJlc2VudCgiY29ybmVy
LXByZXNlbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBhY3RpdmUgPSAqbmV3IEF0b21p
Y1N0cmluZygiYWN0aXZlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYWZ0ZXIgPSAqbmV3
IEF0b21pY1N0cmluZygiYWZ0ZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBhbnlMaW5r
ID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtYW55LWxpbmsiKTsKKyAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBhdXRvZmlsbCA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWF1dG9maWxs
Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYmVmb3JlID0gKm5ldyBBdG9taWNTdHJpbmco
ImJlZm9yZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNoZWNrZWQgPSAqbmV3IEF0b21p
Y1N0cmluZygiY2hlY2tlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpbGVVcGxvYWRC
dXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKTsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBkaXNhYmxlZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJk
aXNhYmxlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHJlYWRPbmx5ID0gKm5ldyBBdG9t
aWNTdHJpbmcoInJlYWQtb25seSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHJlYWRXcml0
ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJyZWFkLXdyaXRlIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgZHJhZyA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWRyYWciKTsKKyAgICBzdGF0
aWMgQXRvbWljU3RyaW5nJiBkcmFnQWxpYXMgPSAqbmV3IEF0b21pY1N0cmluZygiLWtodG1sLWRy
YWciKTsgLy8gd2FzIGRvY3VtZW50ZWQgd2l0aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1lbnRh
dGlvbiwgc28ga2VlcCBhbiBhbGlhcworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVtcHR5ID0g
Km5ldyBBdG9taWNTdHJpbmcoImVtcHR5Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZW5h
YmxlZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJlbmFibGVkIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgZmlyc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJmaXJzdC1jaGlsZCIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0TGV0dGVyID0gKm5ldyBBdG9taWNTdHJpbmcoImZp
cnN0LWxldHRlciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0TGluZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCJmaXJzdC1saW5lIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZmly
c3RPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygiZmlyc3Qtb2YtdHlwZSIpOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcmIGZ1bGxQYWdlTWVkaWEgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtp
dC1mdWxsLXBhZ2UtbWVkaWEiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBudGhDaGlsZCA9
ICpuZXcgQXRvbWljU3RyaW5nKCJudGgtY2hpbGQoIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgbnRoT2ZUeXBlID0gKm5ldyBBdG9taWNTdHJpbmcoIm50aC1vZi10eXBlKCIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIG50aExhc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJudGgt
bGFzdC1jaGlsZCgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBudGhMYXN0T2ZUeXBlID0g
Km5ldyBBdG9taWNTdHJpbmcoIm50aC1sYXN0LW9mLXR5cGUoIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgZm9jdXMgPSAqbmV3IEF0b21pY1N0cmluZygiZm9jdXMiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiBob3ZlciA9ICpuZXcgQXRvbWljU3RyaW5nKCJob3ZlciIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIGluZGV0ZXJtaW5hdGUgPSAqbmV3IEF0b21pY1N0cmluZygiaW5k
ZXRlcm1pbmF0ZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGlucHV0UGxhY2Vob2xkZXIg
PSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIGxhc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJsYXN0LWNo
aWxkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbGFzdE9mVHlwZSA9ICpuZXcgQXRvbWlj
U3RyaW5nKCJsYXN0LW9mLXR5cGUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsaW5rID0g
Km5ldyBBdG9taWNTdHJpbmcoImxpbmsiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsYW5n
ID0gKm5ldyBBdG9taWNTdHJpbmcoImxhbmcoIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYg
bWVkaWFDb250cm9sc1BhbmVsID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGFuZWwiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzTXV0
ZUJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1BsYXlCdXR0
b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRv
biIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSA9
ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNUaW1lbGluZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1NlZWtCYWNrQnV0dG9uID0gKm5ldyBBdG9t
aWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbiA9ICpu
ZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0
b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzRnVsbHNjcmVlbkJ1
dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbm90U3RyID0gKm5ldyBBdG9t
aWNTdHJpbmcoIm5vdCgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBvbmx5Q2hpbGQgPSAq
bmV3IEF0b21pY1N0cmluZygib25seS1jaGlsZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IG9ubHlPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygib25seS1vZi10eXBlIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgcmVzaXplciA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXJl
c2l6ZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiByb290ID0gKm5ldyBBdG9taWNTdHJp
bmcoInJvb3QiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXIgPSAqbmV3IEF0
b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBzY3JvbGxiYXJCdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXIt
YnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyQ29ybmVyID0gKm5l
dyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIpOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcmIHNjcm9sbGJhclRodW1iID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQt
c2Nyb2xsYmFyLXRodW1iIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyVHJh
Y2sgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2siKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXJUcmFja1BpZWNlID0gKm5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgc2VhcmNoQ2FuY2VsQnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Vh
cmNoLWNhbmNlbC1idXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hEZWNv
cmF0aW9uID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iKTsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbiA9ICpuZXcg
QXRvbWljU3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hSZXN1bHRzQnV0dG9uID0gKm5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgc2VsZWN0aW9uID0gKm5ldyBBdG9taWNTdHJpbmcoInNlbGVjdGlvbiIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIHNsaWRlclRodW1iID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJr
aXQtc2xpZGVyLXRodW1iIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgdGFyZ2V0ID0gKm5l
dyBBdG9taWNTdHJpbmcoInRhcmdldCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHZpc2l0
ZWQgPSAqbmV3IEF0b21pY1N0cmluZygidmlzaXRlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcmIHdpbmRvd0luYWN0aXZlID0gKm5ldyBBdG9taWNTdHJpbmcoIndpbmRvdy1pbmFjdGl2ZSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGRlY3JlbWVudCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJkZWNyZW1lbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBpbmNyZW1lbnQgPSAqbmV3
IEF0b21pY1N0cmluZygiaW5jcmVtZW50Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc3Rh
cnQgPSAqbmV3IEF0b21pY1N0cmluZygic3RhcnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBlbmQgPSAqbmV3IEF0b21pY1N0cmluZygiZW5kIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgaG9yaXpvbnRhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJob3Jpem9udGFsIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgdmVydGljYWwgPSAqbmV3IEF0b21pY1N0cmluZygidmVydGljYWwi
KTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBkb3VibGVCdXR0b24gPSAqbmV3IEF0b21pY1N0
cmluZygiZG91YmxlLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNpbmdsZUJ1
dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJzaW5nbGUtYnV0dG9uIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgbm9CdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygibm8tYnV0dG9uIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgY29ybmVyUHJlc2VudCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJjb3JuZXItcHJlc2VudCIpOwogCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVk
by1lbGVtZW50CiAgICAgYm9vbCBjb21wYXQgPSBmYWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBh
dGJpbGl0eSBtb2RlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcyLDEzICszNzIsMTMgQEAgc3RhdGljIGJvb2wgZWxlbWVudENhblVzZVNpbXBsZURlZmF1
bHRTdAogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Igc3RhdGljU2NyZWVuRXZhbCgi
c2NyZWVuIik7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHN0YXRpY1Nj
cmVlbkV2YWwgPSAqbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiIpOwogICAgIHJldHVy
biBzdGF0aWNTY3JlZW5FdmFsOwogfQogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgcHJpbnRFdmFsKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBz
dGF0aWNQcmludEV2YWwoInByaW50Iik7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIHN0YXRpY1ByaW50RXZhbCA9ICpuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigicHJpbnQi
KTsKICAgICByZXR1cm4gc3RhdGljUHJpbnRFdmFsOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRTdHJpbmcoSGFzaFNldDxTdHJpbmcsIENhCiBzdGF0aWMgYm9vbCBpc1NWRzEwRmVhdHVyZShj
b25zdCBTdHJpbmcgJmZlYXR1cmUpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gc3ZnRmVh
dHVyZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBzdmdG
ZWF0dXJlcyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAgICAgaWYg
KCFpbml0aWFsaXplZCkgewogI2lmIEVOQUJMRShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJ
R05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUikgJiYgRU5BQkxFKFNWR19GT05UUykKICAg
ICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC04OSw3ICs4OSw3IEBAIHN0
YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyAKIHN0YXRpYyBib29sIGlzU1ZH
MTFGZWF0dXJlKGNvbnN0IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBzdmdGZWF0dXJlczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5n
SGFzaD4mIHN2Z0ZlYXR1cmVzID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PjsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3Qg
Y2xhaW0gdG8gaW1wbGVtZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0
cwogICAgICAgICAvLyBsYWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMjc0LDcg
KzI3NCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUoY28KICAgICBp
ZiAobWltZVR5cGUgPT0gInRleHQveG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veG1s
IiB8fCBtaW1lVHlwZSA9PSAidGV4dC94c2wiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogdmFsaWRDaGFycyA9ICJbMC05YS16QS1aX1xcLSt+ISRcXF57fXwu
JSdgIyYqXSI7IC8vIHBlciBSRkNzOiAzMDIzLCAyMDQ1Ci0gICAgc3RhdGljIFJlZ3VsYXJFeHBy
ZXNzaW9uIHhtbFR5cGVSZWdFeHAoU3RyaW5nKCJeIikgKyB2YWxpZENoYXJzICsgIisvIiArIHZh
bGlkQ2hhcnMgKyAiK1xcK3htbCQiKTsKKyAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24mIHht
bFR5cGVSZWdFeHAgPSAqbmV3IFJlZ3VsYXJFeHByZXNzaW9uKFN0cmluZygiXiIpICsgdmFsaWRD
aGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIik7CiAgICAgcmV0dXJuIHhtbFR5
cGVSZWdFeHAubWF0Y2gobWltZVR5cGUpID4gLTE7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MTMsOSArNzEzLDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBh
cwogCiBib29sIERvY3VtZW50OjpoYXNQcmVmaXhOYW1lc3BhY2VNaXNtYXRjaChjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5z
TmFtZXNwYWNlVVJJKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnMoInhtbG5zIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyB4bWwoInhtbCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHht
bG5zTmFtZXNwYWNlVVJJID0gKm5ldyBBdG9taWNTdHJpbmcoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAveG1sbnMvIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbnMgPSAqbmV3
IEF0b21pY1N0cmluZygieG1sbnMiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB4
bWwgPSAqbmV3IEF0b21pY1N0cmluZygieG1sIik7CiAKICAgICAvLyBUaGVzZSBjaGVja3MgYXJl
IGZyb20gRE9NIENvcmUgTGV2ZWwgMiwgY3JlYXRlRWxlbWVudE5TCiAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCkluZGV4
OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFNjcmlw
dEVsZW1lbnQ6OmhhbmRsZVNvdXJjZUF0dHJpYnV0CiAvLyBIZWxwZXIgZnVuY3Rpb24KIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IGxhbmd1
YWdlczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxhbmd1
YWdlcyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAgICAgaWYgKGxh
bmd1YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdCIp
OwogICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3
IEBAIGJvb2wgU3R5bGVDaGFuZ2U6OmN1cnJlbnRseUhhc1N0eWxlKGNvbnMKIAogc3RhdGljIFN0
cmluZyAmc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVT
cGFuQ2xhc3NTdHJpbmcgPSBBcHBsZVN0eWxlU3BhbkNsYXNzOworICAgIHN0YXRpYyBTdHJpbmcm
IHN0eWxlU3BhbkNsYXNzU3RyaW5nID0gKm5ldyBTdHJpbmcoQXBwbGVTdHlsZVNwYW5DbGFzcyk7
CiAgICAgcmV0dXJuIHN0eWxlU3BhbkNsYXNzU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgewogCiBTdHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmcoKQogewotICAgIHN0YXRpYyBT
dHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgY29udmVydGVk
U3BhY2VTdHJpbmcgPSAqbmV3IFN0cmluZzsKICAgICBpZiAoY29udmVydGVkU3BhY2VTdHJpbmcu
aXNOdWxsKCkpIHsKICAgICAgICAgY29udmVydGVkU3BhY2VTdHJpbmcgPSAiPHNwYW4gY2xhc3M9
XCIiOwogICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyArPSBBcHBsZUNvbnZlcnRlZFNwYWNl
OwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogc3RhdGljIFN0cmluZyBpbmRlbnRCbG9ja3F1b3RlU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMg
U3RyaW5nIHN0cmluZyA9ICJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiOworICAgIHN0YXRpYyBT
dHJpbmcmIHN0cmluZyA9ICpuZXcgU3RyaW5nKCJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiKTsK
ICAgICByZXR1cm4gc3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTQgKzg5
LDE0IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZShj
b25zdCBOb2RlICpub2RlKQogewotICAgIHN0YXRpYyBTdHJpbmcgaW50ZXJjaGFuZ2VOZXdsaW5l
Q2xhc3NTdHJpbmcoQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgIHN0YXRpYyBTdHJpbmcm
IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nID0gKm5ldyBTdHJpbmcoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpOwogICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcp
ICYmIAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KG5vZGUpLT5nZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZzsKIH0K
IAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbihjb25zdCBOb2Rl
ICpub2RlKQogewotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJp
bmcoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CisgICAgc3RhdGljIFN0cmluZyYgY29udmVydGVkU3Bh
Y2VTcGFuQ2xhc3NTdHJpbmcgPSAqbmV3IFN0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsKICAg
ICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIAogICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0g
Y29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDkgKzM2NCw5IEBAIGludCBtYXhEZWVwT2Zmc2V0KGNv
bnN0IE5vZGUgKm5vZGUpCiAKIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RhcnRJc1N0YXJ0T2ZQYXJhZ3JhcGgsIGJvb2wg
ZW5kSXNFbmRPZlBhcmFncmFwaCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHR3b1NwYWNlcygiICAi
KTsKLSAgICBzdGF0aWMgU3RyaW5nIG5ic3AoIlx4YTAiKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBh
dHRlcm4oIiBceGEwIik7CisgICAgc3RhdGljIFN0cmluZyYgdHdvU3BhY2VzID0gKm5ldyBTdHJp
bmcoIiAgIik7CisgICAgc3RhdGljIFN0cmluZyYgbmJzcCA9ICpuZXcgU3RyaW5nKCJceGEwIik7
CisgICAgc3RhdGljIFN0cmluZyYgcGF0dGVybiA9ICpuZXcgU3RyaW5nKCIgXHhhMCIpOwogCiAg
ICAgU3RyaW5nIHJlYmFsYW5jZWRTdHJpbmcgPSBzdHJpbmc7CiAKQEAgLTM5Myw3ICszOTMsNyBA
QCBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUgKm5vCiAKIGNvbnN0IFN0cmlu
ZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBub25CcmVh
a2luZ1NwYWNlU3RyaW5nID0gU3RyaW5nKCZub0JyZWFrU3BhY2UsIDEpOworICAgIHN0YXRpYyBT
dHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSAqbmV3IFN0cmluZygmbm9CcmVha1NwYWNl
LCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZzsKIH0KIApJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBdHRy
aWJ1dGVWYWx1ZShWZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0gYXR0ci5sZW5ndGgoKTsKICAg
ICB1bnNpZ25lZCBsYXN0Q29waWVkRnJvbSA9IDA7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGFtcEVudGl0eSgiJmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCIm
Z3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgcXVvdEVudGl0eSgiJnF1b3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyBuYnNwRW50aXR5KCImbmJzcDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBh
bXBFbnRpdHkgPSAqbmV3IFN0cmluZygiJmFtcDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBndEVudGl0eSA9ICpuZXcgU3RyaW5nKCImZ3Q7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgbHRFbnRpdHkgPSAqbmV3IFN0cmluZygiJmx0OyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcmIHF1b3RFbnRpdHkgPSAqbmV3IFN0cmluZygiJnF1b3Q7Iik7CisgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgbmJzcEVudGl0eSA9ICpuZXcgU3RyaW5nKCImbmJzcDsiKTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVj
aGFyc1tpXTsKQEAgLTE0MiwxMCArMTQyLDEwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRD
b250ZW50KFZlY3RvcjwKICAgICB1bnNpZ25lZCBsZW4gPSByYW5nZS5zZWNvbmQ7CiAgICAgdW5z
aWduZWQgbGFzdENvcGllZEZyb20gPSAwOwogICAgIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
YW1wRW50aXR5KCImYW1wOyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZ3RFbnRpdHkoIiZn
dDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGx0RW50aXR5KCImbHQ7Iik7Ci0gICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBuYnNwRW50aXR5KCImbmJzcDsiKTsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBhbXBFbnRpdHkgPSAqbmV3IFN0cmluZygiJmFtcDsiKTsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBndEVudGl0eSA9ICpuZXcgU3RyaW5nKCImZ3Q7Iik7CisgICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgbHRFbnRpdHkgPSAqbmV3IFN0cmluZygiJmx0OyIpOworICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcmIG5ic3BFbnRpdHkgPSAqbmV3IFN0cmluZygiJm5ic3A7Iik7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVj
aGFyc1tpXTsKQEAgLTMxNiw4ICszMTYsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3Bh
Y2VFbGVtKGNvbnN0CiBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VBdHRyKGNvbnN0IEF0
dHJpYnV0ZSogYXR0ciwgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1w
bCo+JiBuYW1lc3BhY2VzKQogewogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0cmlidXRl
cyB0d2ljZQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNVUkkgPSAiaHR0cDov
L3d3dy53My5vcmcvMjAwMC94bWxucy8iOwotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
IHhtbG5zQXR0cihudWxsQXRvbSwgInhtbG5zIiwgeG1sbnNVUkkpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHhtbG5zVVJJID0gKm5ldyBBdG9taWNTdHJpbmcoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAveG1sbnMvIik7CisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHht
bG5zQXR0ciA9ICpuZXcgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgInhtbG5zIiwgeG1sbnNVUkkp
OwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0geG1sbnNBdHRyKSB7CiAgICAgICAgIG5hbWVzcGFj
ZXMuc2V0KGVtcHR5QXRvbS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVz
cGFjZShWZWN0b3I8VUNoYXIKICAgICBBdG9taWNTdHJpbmdJbXBsKiBmb3VuZE5TID0gbmFtZXNw
YWNlcy5nZXQocHJlKTsKICAgICBpZiAoZm91bmROUyAhPSBucy5pbXBsKCkpIHsKICAgICAgICAg
bmFtZXNwYWNlcy5zZXQocHJlLCBucy5pbXBsKCkpOwotICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIHhtbG5zKCJ4bWxucyIpOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB4bWxucyA9
ICpuZXcgU3RyaW5nKCJ4bWxucyIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIHhtbG5zKTsKICAgICAgICAgaWYgKCFwcmVmaXguaXNFbXB0eSgp
KSB7CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVj
dG9yPFVDaAogICAgICAgICAgICAgICAgIGlmIChjb252ZXJ0KQogICAgICAgICAgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLT5sZW5ndGgoKSA+IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVByZWZpeCgiIHN0eWxlPVwi
Iik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHN0eWxlUHJlZml4
ID0gKm5ldyBTdHJpbmcoIiBzdHlsZT1cIiIpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBzdHlsZVByZWZpeCk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0
ZVZhbHVlKHJlc3VsdCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIFN0
cmluZyBqb2luTWFya3Vwcyhjb25zdCBWZWN0b3I8U3RyaW5nPiAKIC8vIEZJWE1FOiBBdCBsZWFz
dCwgYW5ub3RhdGlvbiBhbmQgc3R5bGUgaW5mbyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGluY2x1
ZGVkIGluIHJhbmdlLm1hcmt1cFN0cmluZygpCiBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJh
bmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdl
IGFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcgPSBTdHJpbmcoIjxiciBjbGFzcz1c
IiIpICsgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgKyAiXCI+IjsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcgPSAqbmV3IFN0cmluZygiPGJyIGNsYXNz
PVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+Iik7CiAKICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm4gIiI7CkBAIC05MDUsMTQgKzkwNSwxNCBAQCBTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKHN0eWxlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VUNo
YXI+IG9wZW5UYWc7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZGl2
U3R5bGUoIjxkaXYgc3R5bGU9XCIiKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgZGl2U3R5bGUgPSAqbmV3IFN0cmluZygiPGRpdiBzdHlsZT1cIiIpOwogICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQob3BlblRhZywgZGl2U3R5bGUpOwogICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvcGVuVGFnLCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1
bWVudElzSFRNTCk7CiAgICAgICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCdcIicpOwog
ICAgICAgICAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwogICAgICAgICAgICAgICAg
ICAgICBwcmVNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKIAotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRpdkNsb3NlVGFnKCI8L2Rpdj4iKTsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGl2Q2xvc2VUYWcgPSAq
bmV3IFN0cmluZygiPC9kaXY+Iik7CiAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMuYXBwZW5k
KGRpdkNsb3NlVGFnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtOTI5LDggKzkyOSw4IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdl
LCAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxl
U3Bhbk9wZW4gPSBTdHJpbmcoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJc
IiBzdHlsZT1cIiIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVTcGFuQ2xvc2UoIjwv
c3Bhbj4iKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdHlsZVNwYW5PcGVuID0gKm5ldyBT
dHJpbmcoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIp
OworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHN0eWxlU3BhbkNsb3NlID0gKm5ldyBTdHJpbmco
Ijwvc3Bhbj4iKTsKICAgICAKICAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5
bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCiAgICAgTm9k
ZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5v
ZGUoKSA6IDA7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4
MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsMTUgKzU3LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1l
bnQ6OnQKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIFNVQk1JVDogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0ID0gKm5ldyBBdG9t
aWNTdHJpbmcoInN1Ym1pdCIpOwogICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEJVVFRPTjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBidXR0b24oImJ1dHRvbiIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgYnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJlc2V0KCJyZXNldCIpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQgPSAqbmV3IEF0b21pY1N0cmlu
ZygicmVzZXQiKTsKICAgICAgICAgICAgIHJldHVybiByZXNldDsKICAgICAgICAgfQogICAgIH0K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDgsNyArODA4LDcgQEAgYm9vbCBI
VE1MRWxlbWVudDo6Y2hpbGRBbGxvd2VkKE5vZGUgKm5ldwogLy8gVGhpcyB1bmZvcnR1bmF0ZSBm
dW5jdGlvbiBpcyBvbmx5IG5lZWRlZCB3aGVuIGNoZWNraW5nIGFnYWluc3QgdGhlIERURC4gIE90
aGVyIGxhbmd1YWdlcyAobGlrZSBTVkcpIHdvbid0IG5lZWQgdGhpcy4KIGJvb2wgSFRNTEVsZW1l
bnQ6OmlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsK
LSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlzdDsKKyAgICBzdGF0
aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3IEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+OwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBz
aXplX3QgdGFnQ291bnQgPSAwOwogICAgICAgICBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogdGFn
cyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoJnRhZ0NvdW50KTsKQEAgLTgyMiw3ICs4MjIsNyBA
QCBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKGNvCiAvLyBuZWVkIHRvIGJl
IGluIHRoZXNlIHR3byBsaXN0cy4KIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBpbmxpbmVU
YWdMaXN0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlz
dDsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICB0YWdMaXN0LmFkZCh0dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICB0YWdMaXN0LmFkZChpVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC04ODEsNyArODgxLDcg
QEAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGlubGluZVRhZ0xpcwogCiBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiogYmxvY2tUYWdMaXN0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4gdGFnTGlzdDsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAg
IGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICB0YWdMaXN0LmFkZChhZGRyZXNzVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGJsb2NrcXVvdGVUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGJvb2wgSFRNTEZpZWxkU2V0RWxl
bWVudDo6aXNGb2N1c2FibGUoKSAKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRF
bGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGZp
ZWxkc2V0KCJmaWVsZHNldCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZpZWxk
c2V0ID0gKm5ldyBBdG9taWNTdHJpbmcoImZpZWxkc2V0Iik7CiAgICAgcmV0dXJuIGZpZWxkc2V0
OwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzczLDUzICszNzMsNTMgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50Ojp0
eQogICAgIC8vIG5lZWRzIHRvIGJlIGxvd2VyY2FzZSBhY2NvcmRpbmcgdG8gRE9NIHNwZWMKICAg
ICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQlVUVE9OOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGJ1dHRvbigiYnV0dG9uIik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24gPSAqbmV3IEF0b21pY1N0cmlu
ZygiYnV0dG9uIik7CiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ0hFQ0tCT1g6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgY2hlY2tib3goImNoZWNrYm94Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGVja2JveCA9ICpuZXcgQXRvbWljU3RyaW5nKCJjaGVja2JveCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrYm94OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRklMRTogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWxlKCJmaWxlIik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWxlID0gKm5ldyBBdG9taWNTdHJp
bmcoImZpbGUiKTsKICAgICAgICAgICAgIHJldHVybiBmaWxlOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgSElEREVOOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGhp
ZGRlbigiaGlkZGVuIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBo
aWRkZW4gPSAqbmV3IEF0b21pY1N0cmluZygiaGlkZGVuIik7CiAgICAgICAgICAgICByZXR1cm4g
aGlkZGVuOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSU1BR0U6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaW1hZ2UoImltYWdlIik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJpbWFnZSIp
OwogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSVNJ
TkRFWDoKICAgICAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgICAgIGNhc2UgUEFTU1dP
UkQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcGFzc3dvcmQoInBh
c3N3b3JkIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwYXNzd29y
ZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJwYXNzd29yZCIpOwogICAgICAgICAgICAgcmV0dXJuIHBh
c3N3b3JkOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUkFESU86IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcmFkaW8oInJhZGlvIik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpbyA9ICpuZXcgQXRvbWljU3RyaW5nKCJyYWRpbyIp
OwogICAgICAgICAgICAgcmV0dXJuIHJhZGlvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUkFO
R0U6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcmFuZ2UoInJhbmdl
Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCJyYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgcmVzZXQoInJlc2V0Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiByZXNldCA9ICpuZXcgQXRvbWljU3RyaW5nKCJyZXNldCIpOwogICAgICAgICAgICAg
cmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU0VBUkNIOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlYXJjaCgic2VhcmNoIik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzZWFyY2ggPSAqbmV3IEF0b21pY1N0cmlu
Zygic2VhcmNoIik7CiAgICAgICAgICAgICByZXR1cm4gc2VhcmNoOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IHN1Ym1pdCgic3VibWl0Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBzdWJtaXQgPSAqbmV3IEF0b21pY1N0cmluZygic3VibWl0Iik7CiAgICAgICAgICAgICByZXR1
cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVEVYVDogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB0ZXh0KCJ0ZXh0Iik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0ID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQiKTsK
ICAgICAgICAgICAgIHJldHVybiB0ZXh0OwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgSFRN
TEtleWdlbkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KERvYwogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxLZXlnZW5FbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nIGtleWdlbigia2V5Z2VuIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYga2V5Z2VuID0gKm5ldyBBdG9taWNTdHJpbmcoImtleWdlbiIpOwogICAgIHJldHVybiBr
ZXlnZW47CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkocmV2aXNpb24g
MzgxMzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIFJlbmRlck9iamVjdCogSFRNTExlZ2VuZEVsZW1lbnQ6OmNy
ZWF0ZVIKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MTGVnZW5kRWxlbWVudDo6dHlwZSgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBsZWdlbmQoImxlZ2VuZCIpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGxlZ2VuZCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJsZWdlbmQiKTsKICAgICByZXR1cm4gbGVnZW5kOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBib29s
IEhUTUxPcHRHcm91cEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyBvcHRncm91cCgib3B0Z3JvdXAiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBvcHRncm91cCA9ICpuZXcgQXRvbWljU3RyaW5nKCJvcHRncm91cCIpOwogICAg
IHJldHVybiBvcHRncm91cDsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6
aXNGb2N1c2FibGUoKSBjbwogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRpb25FbGVtZW50
Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIG9wdGlvbigi
b3B0aW9uIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3B0aW9uID0gKm5ldyBB
dG9taWNTdHJpbmcoIm9wdGlvbiIpOwogICAgIHJldHVybiBvcHRpb247CiB9CiAKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzIsNyArODMyLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjpt
YXBDcmVhdGVFcnJvckNoZWNrKFRvawogUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpnZXRO
b2RlKFRva2VuKiB0KQogewogICAgIC8vIEluaXQgb3VyIGVycm9yIGhhbmRsaW5nIHRhYmxlLgot
ICAgIHN0YXRpYyBGdW5jdGlvbk1hcCBnRnVuY3Rpb25NYXA7CisgICAgc3RhdGljIEZ1bmN0aW9u
TWFwJiBnRnVuY3Rpb25NYXAgPSAqbmV3IEZ1bmN0aW9uTWFwOwogICAgIGlmIChnRnVuY3Rpb25N
YXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoYVRhZy5sb2NhbE5hbWUo
KS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAg
Z0Z1bmN0aW9uTWFwLnNldChhZGRyZXNzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJz
ZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIEhU
TUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiogCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNI
ZWFkZXJUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiBoZWFkZXJUYWdzOworICAgIHN0YXRpYyBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiYgaGVhZGVyVGFncyA9ICpuZXcgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj47CiAgICAgaWYgKGhlYWRlclRhZ3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIGhlYWRlclRh
Z3MuYWRkKGgxVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIGhlYWRlclRhZ3MuYWRk
KGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC05ODYsNyArOTg2LDcgQEAgYm9vbCBIVE1M
UGFyc2VyOjppc0lubGluZShOb2RlKiBub2RlKSBjbwogCiBib29sIEhUTUxQYXJzZXI6OmlzUmVz
aWR1YWxTdHlsZVRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGlj
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHJlc2lkdWFsU3R5bGVUYWdzOworICAgIHN0YXRp
YyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgcmVzaWR1YWxTdHlsZVRhZ3MgPSAqbmV3IEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAgIGlmIChyZXNpZHVhbFN0eWxlVGFncy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKGFUYWcubG9jYWxOYW1lKCku
aW1wbCgpKTsKICAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKGZvbnRUYWcubG9jYWxOYW1l
KCkuaW1wbCgpKTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNSZXNp
ZHVhbFN0eWxlVGFnKGNvbnMKIAogYm9vbCBIVE1MUGFyc2VyOjppc0FmZmVjdGVkQnlSZXNpZHVh
bFN0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4gdW5hZmZlY3RlZFRhZ3M7CisgICAgc3RhdGljIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+JiB1bmFmZmVjdGVkVGFncyA9ICpuZXcgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj47CiAgICAgaWYgKHVuYWZmZWN0ZWRUYWdzLmlzRW1wdHkoKSkgewogICAgICAg
ICB1bmFmZmVjdGVkVGFncy5hZGQoYm9keVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICB1bmFmZmVjdGVkVGFncy5hZGQodGFibGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0
LDggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUoIFN0eQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlbGVjdE9uZSgic2VsZWN0LW9uZSIpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdE11bHRpcGxlID0gKm5ldyBBdG9t
aWNTdHJpbmcoInNlbGVjdC1tdWx0aXBsZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHNlbGVjdE9uZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJzZWxlY3Qtb25lIik7CiAgICAgcmV0
dXJuIG1fbXVsdGlwbGUgPyBzZWxlY3RNdWx0aXBsZSA6IHNlbGVjdE9uZTsKIH0KIApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1MjAsOCBA
QCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkCiB7CiAgICAgQ2VsbEJv
cmRlcnMgYm9yZGVycyA9IGNlbGxCb3JkZXJzKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIGNlbGxCb3JkZXJOYW1lc1tdID0geyAibm9uZSIsICJzb2xpZCIsICJpbnNldCIsICJz
b2xpZC1jb2xzIiwgInNvbGlkLXJvd3MiIH07Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjZWxs
Ym9yZGVyVmFsdWUgPSBjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyogY2VsbEJvcmRlck5hbWVzW10gPSB7IG5ldyBBdG9taWNTdHJpbmcoIm5v
bmUiKSwgbmV3IEF0b21pY1N0cmluZygic29saWQiKSwgbmV3IEF0b21pY1N0cmluZygiaW5zZXQi
KSwgbmV3IEF0b21pY1N0cmluZygic29saWQtY29scyIpLCBuZXcgQXRvbWljU3RyaW5nKCJzb2xp
ZC1yb3dzIikgfTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNlbGxib3JkZXJWYWx1ZSA9ICpj
ZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVy
QXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKICAgICBpZiAoIWRlY2wpIHsKICAgICAgICAgZGVjbCA9
IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8v
IFRoaXMgc2luZ2xlIHJlZiBwaW5zIHVzIGluIHRoZSB0YWJsZSB1bnRpbCB0aGUgZG9jdW1lbnQg
ZGllcy4KQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJl
ZENlbGxCb3JkCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBz
ZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbEJv
cmRlck5hbWVzW2JvcmRlcnNdLCBkZWNsKTsKKyAgICAgICAgc2V0TWFwcGVkQXR0cmlidXRlRGVj
bChlUGVyc2lzdGVudCwgY2VsbGJvcmRlckF0dHIsICpjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc10s
IGRlY2wpOwogICAgICAgICBkZWNsLT5zZXRQYXJlbnQoMCk7CiAgICAgICAgIGRlY2wtPnNldE5v
ZGUoMCk7CiAgICAgICAgIGRlY2wtPnNldE1hcHBlZFN0YXRlKGVQZXJzaXN0ZW50LCBjZWxsYm9y
ZGVyQXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGV4
dEFyZWFFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIHRleHRhcmVhKCJ0ZXh0YXJlYSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHRleHRhcmVhID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHRhcmVhIik7CiAgICAgcmV0dXJuIHRl
eHRhcmVhOwogfQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYyLDIwICs4NjIsMjAgQEAgc3RhdGljIEpT
VmFsdWVSZWYgcGxhdGZvcm0oSlNDb250ZXh0UmVmIAogewogI2lmIFBMQVRGT1JNKE1BQykKICNp
ZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0g
PSAibWFjLXRpZ2VyIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9ICpuZXcg
U3RyaW5nKCJtYWMtdGlnZXIiKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0
Zm9ybSA9ICJtYWMtbGVvcGFyZCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0g
PSAqbmV3IFN0cmluZygibWFjLWxlb3BhcmQiKTsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oV0lO
X09TKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAid2luZG93cyI7CisgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygid2luZG93cyIpOwog
I2VsaWYgUExBVEZPUk0oUVQpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJx
dCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygicXQi
KTsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3Jt
ID0gImd0ayI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmlu
ZygiZ3RrIik7CiAjZWxpZiBQTEFURk9STShXWCkKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBs
YXRmb3JtID0gInd4IjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9ICpuZXcg
U3RyaW5nKCJ3eCIpOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtID0g
InVua25vd24iOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKm5ldyBTdHJp
bmcoInVua25vd24iKTsKICNlbmRpZgogCiAgICAgSlNWYWx1ZVJlZiBwbGF0Zm9ybVZhbHVlID0g
SlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBqc1N0cmluZ1JlZihwbGF0Zm9ybSkuZ2V0KCkpOwpJbmRl
eDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWRlZiBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6Okxpc3RlbmVyUwogCiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXImIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6c2hhcmVkKCkKIHsKLSAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2VydmVyIHNl
cnZlcjsKKyAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2VydmVyJiBzZXJ2ZXIgPSAqbmV3IEph
dmFTY3JpcHREZWJ1Z1NlcnZlcjsKICAgICByZXR1cm4gc2VydmVyOwogfQogCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UHJvZmlsZSosIEpTT2JqZWN0Kj4gUHJvCiAK
IHN0YXRpYyBQcm9maWxlTWFwJiBwcm9maWxlQ2FjaGUoKQogeyAKLSAgICBzdGF0aWMgUHJvZmls
ZU1hcCBzdGF0aWNQcm9maWxlczsKKyAgICBzdGF0aWMgUHJvZmlsZU1hcCYgc3RhdGljUHJvZmls
ZXMgPSAqbmV3IFByb2ZpbGVNYXA7CiAgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOwogfQogCklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UHJvZmls
ZU5vZGUqLCBKU09iamVjdCo+CiAKIHN0YXRpYyBQcm9maWxlTm9kZU1hcCYgcHJvZmlsZU5vZGVD
YWNoZSgpCiB7IAotICAgIHN0YXRpYyBQcm9maWxlTm9kZU1hcCBzdGF0aWNQcm9maWxlTm9kZXM7
CisgICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwJiBzdGF0aWNQcm9maWxlTm9kZXMgPSAqbmV3IFBy
b2ZpbGVOb2RlTWFwOwogICAgIHJldHVybiBzdGF0aWNQcm9maWxlTm9kZXM7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjCiAKIHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzKCkKIHsKLSAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbG9jYWxTY2hlbWVzOworICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzID0gKm5ldyBIYXNo
U2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKIAogICAgIGlmIChsb2NhbFNjaGVtZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJ
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5TwogICAgIAogQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UmIGNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlIHN0b3JhZ2U7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9y
YWdlID0gKm5ldyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKICAgICAKICAgICByZXR1cm4gc3Rv
cmFnZTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rv
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyAKIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRh
Q3JlYXRpb25GdW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4mIGFyY2hpdmVNSU1FVHlwZXMoKQog
ewotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBD
YXNlRm9sZGluZ0hhc2g+IG1pbWVUeXBlczsKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJh
d0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiYgbWltZVR5cGVzID0gKm5l
dyBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hh
c2g+OwogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAgaWYg
KGluaXRpYWxpemVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1MCw3ICs4NTAsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjpkYXRh
YmFzZVBhdGgoKSBjb25zCiAKIFN0cmluZyBJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZp
bGVuYW1lKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lID0g
IldlYnBhZ2VJY29ucy5kYiI7CisgICAgc3RhdGljIFN0cmluZyYgZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUgPSAqbmV3IFN0cmluZygiV2VicGFnZUljb25zLmRiIik7CiAgICAgcmV0dXJuIGRlZmF1
bHREYXRhYmFzZUZpbGVuYW1lLmNvcHkoKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIo
KQogICAgIAogRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXJEcmFnU3RhdGUmIEV2ZW50SGFuZGxl
cjo6ZHJhZ1N0YXRlKCkKIHsKLSAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlIHN0YXRl
OworICAgIHN0YXRpYyBFdmVudEhhbmRsZXJEcmFnU3RhdGUmIHN0YXRlID0gKm5ldyBFdmVudEhh
bmRsZXJEcmFnU3RhdGU7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogICAgIApJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIGNyZWF0ZVJlZ0V4
cEZvCiAgICAgLy8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFtZU1hYy5tbSBj
YWNoZXMgYmFzZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRoZSBzYW1lIGFj
cm9zcyBjYWxscy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBzdGF0aWMgUmVndWxhckV4cHJl
c3Npb24gd29yZFJlZ0V4cCA9IFJlZ3VsYXJFeHByZXNzaW9uKCJcXHciKTsKKyAgICBzdGF0aWMg
UmVndWxhckV4cHJlc3Npb24mIHdvcmRSZWdFeHAgPSAqbmV3IFJlZ3VsYXJFeHByZXNzaW9uKCJc
XHciKTsKICAgICBTdHJpbmcgcGF0dGVybigiKCIpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJl
bHMgPSBsYWJlbHMuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtMTAxMSw3ICsxMDEx
LDcgQEAgdm9pZCBGcmFtZTo6cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUVsZW1lbgogI2lmbmRlZiBO
REVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4mIGtlZXBBbGl2ZVNldCgpCiB7Ci0gICAgc3Rh
dGljIEhhc2hTZXQ8RnJhbWUqPiBzdGF0aWNLZWVwQWxpdmVTZXQ7CisgICAgc3RhdGljIEhhc2hT
ZXQ8RnJhbWUqPiYgc3RhdGljS2VlcEFsaXZlU2V0ID0gKm5ldyBIYXNoU2V0PEZyYW1lKj47CiAg
ICAgcmV0dXJuIHN0YXRpY0tlZXBBbGl2ZVNldDsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gMzgxMzUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIFBhZ2U6OnNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcmIG5hCiAK
IGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBOYW1lKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bGxTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgbnVsbFN0cmluZyA9ICpuZXcgU3Ry
aW5nOwogICAgIHJldHVybiBtX2dyb3VwID8gbV9ncm91cC0+bmFtZSgpIDogbnVsbFN0cmluZzsK
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgc3RhdGljIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVucwogICAgIGlmIChw
cm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKKyAgICBzdGF0aWMgSGFzaE1h
cDxTdHJpbmcsIHVuc2lnbmVkPiYgZGVmYXVsdFBvcnRzID0gKm5ldyBIYXNoTWFwPFN0cmluZywg
dW5zaWduZWQ+OwogICAgIGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGRl
ZmF1bHRQb3J0cy5zZXQoImh0dHAiLCA4MCk7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0
dHBzIiwgNDQzKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpCiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlm
aWVyKCkgY29uc3QgCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJp
bmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CisgICAgc3RhdGljIFN0cmluZyYgc2VwYXJhdG9y
U3RyaW5nID0gKm5ldyBTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CiAgICAgcmV0dXJu
IG1fcHJvdG9jb2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2hvc3QgKyBzZXBhcmF0b3JTdHJpbmcg
KyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOyAKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9G
cmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCShy
ZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDggKzg4LDggQEAgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVs
cyhOU0FycgogICAgIC8vIHRoYXQgdGhlIGFwcCB3aWxsIHVzZSBpcyBlcXVhbCB0byB0aGUgbnVt
YmVyIG9mIGxvY2FsZXMgaXMgdXNlZCBpbiBzZWFyY2hpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCByZWdFeHBDYWNoZVNpemUgPSA0OwogICAgIHN0YXRpYyBOU011dGFibGVBcnJh
eSogcmVnRXhwTGFiZWxzID0gbmlsOwotICAgIHN0YXRpYyBWZWN0b3I8UmVndWxhckV4cHJlc3Np
b24qPiByZWdFeHBzOwotICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0g
UmVndWxhckV4cHJlc3Npb24oIlxcdyIpOworICAgIHN0YXRpYyBWZWN0b3I8UmVndWxhckV4cHJl
c3Npb24qPiYgcmVnRXhwcyA9ICpuZXcgVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj47CisgICAg
c3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uJiB3b3JkUmVnRXhwID0gKm5ldyBSZWd1bGFyRXhwcmVz
c2lvbigiXFx3Iik7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICgh
cmVnRXhwTGFiZWxzKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjMsNyArMTU2Myw3IEBA
IFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYKIAogY29uc3QgS1VSTCYg
YmxhbmtVUkwoKQogewotICAgIHN0YXRpYyBLVVJMIHN0YXRpY0JsYW5rVVJMKCJhYm91dDpibGFu
ayIpOworICAgIHN0YXRpYyBLVVJMJiBzdGF0aWNCbGFua1VSTCA9ICpuZXcgS1VSTCgiYWJvdXQ6
YmxhbmsiKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
MjEgKzEyNCwyNCBAQCBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlKiBnRm9udFBsYXRmCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICAvLyBBbGlhcyBDb3VyaWVyIDwtPiBDb3VyaWVy
IE5ldwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY291cmllcigiQ291cmllciIpLCBjb3VyaWVy
TmV3KCJDb3VyaWVyIE5ldyIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNvdXJpZXIgPSAq
bmV3IEF0b21pY1N0cmluZygiQ291cmllciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNv
dXJpZXJOZXcgPSAqbmV3IEF0b21pY1N0cmluZygiQ291cmllciBOZXciKTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgY291cmllcikpCiAgICAgICAgIHJldHVybiBjb3Vy
aWVyTmV3OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBjb3VyaWVyTmV3
KSkKICAgICAgICAgcmV0dXJuIGNvdXJpZXI7CiAKICAgICAvLyBBbGlhcyBUaW1lcyBhbmQgVGlt
ZXMgTmV3IFJvbWFuLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXMoIlRpbWVzIiksIHRp
bWVzTmV3Um9tYW4oIlRpbWVzIE5ldyBSb21hbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IHRpbWVzID0gKm5ldyBBdG9taWNTdHJpbmcoIlRpbWVzIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgdGltZXNOZXdSb21hbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJUaW1lcyBOZXcgUm9tYW4i
KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgdGltZXMpKQogICAgICAg
ICByZXR1cm4gdGltZXNOZXdSb21hbjsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5
TmFtZSwgdGltZXNOZXdSb21hbikpCiAgICAgICAgIHJldHVybiB0aW1lczsKICAgICAKICAgICAv
LyBBbGlhcyBBcmlhbCBhbmQgSGVsdmV0aWNhCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhcmlh
bCgiQXJpYWwiKSwgaGVsdmV0aWNhKCJIZWx2ZXRpY2EiKTsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nJiBhcmlhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJBcmlhbCIpOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcmIGhlbHZldGljYSA9ICpuZXcgQXRvbWljU3RyaW5nKCJIZWx2ZXRpY2EiKTsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgYXJpYWwpKQogICAgICAgICByZXR1
cm4gaGVsdmV0aWNhOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBoZWx2
ZXRpY2EpKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0J
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDI1ICs1OSwyNSBAQCBOU0NvbG9yKiBuc0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAwOiB7
CiAgICAgICAgICAgICAvLyBOZWVkIHRoaXMgdG8gYXZvaWQgcmV0dXJuaW5nIG5pbCBiZWNhdXNl
IGNhY2hlZFJHQkFWYWx1ZXMgd2lsbCBkZWZhdWx0IHRvIDAuCi0gICAgICAgICAgICBzdGF0aWMg
UmV0YWluUHRyPE5TQ29sb3I+IGNsZWFyQ29sb3IgPSBbTlNDb2xvciBjbGVhckNvbG9yXTsKLSAg
ICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpOworICAgICAgICAgICAgc3RhdGljIE5T
Q29sb3IgKmNsZWFyQ29sb3IgPSBbTlNDb2xvciBjbGVhckNvbG9yXTsKKyAgICAgICAgICAgIHJl
dHVybiBjbGVhckNvbG9yOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGJsYWNrQ29sb3IgPSBbTlND
b2xvciBibGFja0NvbG9yXTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yLmdldCgpOwor
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbTlNDb2xvciBibGFja0Nv
bG9yXTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29s
b3I+IHdoaXRlQ29sb3IgPSBbTlNDb2xvciB3aGl0ZUNvbG9yXTsKLSAgICAgICAgICAgIHJldHVy
biB3aGl0ZUNvbG9yLmdldCgpOworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKndoaXRlQ29s
b3IgPSBbTlNDb2xvciB3aGl0ZUNvbG9yXTsKKyAgICAgICAgICAgIHJldHVybiB3aGl0ZUNvbG9y
OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBj
YWNoZVNpemUgPSAzMjsKICAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjYWNoZWRSR0JBVmFs
dWVzW2NhY2hlU2l6ZV07Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGNh
Y2hlZENvbG9yc1tjYWNoZVNpemVdOworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IqIGNhY2hl
ZENvbG9yc1tjYWNoZVNpemVdOwogCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBj
YWNoZVNpemU7ICsraSkKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUkdCQVZhbHVlc1tpXSA9
PSBjKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ldLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ldOwogCiAjaWZkZWYgQ09M
T1JNQVRDSF9FVkVSWVRISU5HCiAgICAgICAgICAgICBOU0NvbG9yKiByZXN1bHQgPSBbTlNDb2xv
ciBjb2xvcldpdGhDYWxpYnJhdGVkUmVkOmNvbG9yLnJlZCgpIC8gMjU1LjBmCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCShyZXZpc2lvbiAz
ODEzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Z2V0U2ltaWxhckYKICAgICB3aGlsZSAoY3VyckZhbWlseSAmJiAhcGxhdGZvcm1EYXRh
KSB7CiAgICAgICAgIGlmIChjdXJyRmFtaWx5LT5mYW1pbHkoKS5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgc3RhdGljIFN0cmluZyBtYXRjaFdvcmRzWzNdID0geyBTdHJpbmcoIkFyYWJpYyIpLCBT
dHJpbmcoIlBhc2h0byIpLCBTdHJpbmcoIlVyZHUiKSB9OwotICAgICAgICAgICAgc3RhdGljIEF0
b21pY1N0cmluZyBnZWV6YVN0cigiR2VlemEgUHJvIik7CisgICAgICAgICAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBnZWV6YVN0ciA9ICpuZXcgQXRvbWljU3RyaW5nKCJHZWV6YSBQcm8iKTsKICAg
ICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMyAmJiAhcGxhdGZvcm1EYXRhOyArK2opCiAg
ICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmNvbnRhaW5zKG1hdGNoV29y
ZHNbal0sIGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1EYXRhID0gZ2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBnZWV6YVN0cik7CkBA
IC0xNTMsOCArMTUzLDggQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFy
RgogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiB7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGx1Y2lkYUdyYW5kZVN0cigiTHVjaWRhIEdyYW5kZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcmIHRpbWVzU3RyID0gKm5ldyBBdG9taWNTdHJpbmcoIlRpbWVzIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgbHVjaWRhR3JhbmRlU3RyID0gKm5ldyBBdG9taWNTdHJpbmcoIkx1Y2lkYSBH
cmFuZGUiKTsKIAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93
IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCiAg
ICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2lu
ZyBhbnkgcHJlZnMuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0NvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtODcsMTEgKzg3LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3Nw
ZWwKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAvLyBDb25zdGFudHMgZm9yIHNwZWxs
aW5nIHBhdHRlcm4gY29sb3IKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IHNwZWxsaW5n
UGF0dGVybkNvbG9yID0gbmlsOworICAgIHN0YXRpYyBOU0NvbG9yICpzcGVsbGluZ1BhdHRlcm5D
b2xvciA9IG5pbDsKICAgICBzdGF0aWMgYm9vbCB1c2luZ0RvdEZvclNwZWxsaW5nID0gZmFsc2U7
CiAKICAgICAvLyBDb25zdGFudHMgZm9yIGdyYW1tYXIgcGF0dGVybiBjb2xvcgotICAgIHN0YXRp
YyBSZXRhaW5QdHI8TlNDb2xvcj4gZ3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKKyAgICBzdGF0
aWMgTlNDb2xvciAqZ3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKICAgICBzdGF0aWMgYm9vbCB1
c2luZ0RvdEZvckdyYW1tYXIgPSBmYWxzZTsKICAgICAKICAgICAvLyBUaGVzZSBhcmUgdGhlIHNh
bWUgZm9yIG1pc3NwZWxsaW5nIG9yIGJhZCBncmFtbWFyCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsCiAgICAgTlNDb2xvciAqcGF0
dGVybkNvbG9yOwogICAgIGlmIChncmFtbWFyKSB7CiAgICAgICAgIHVzaW5nRG90ID0gdXNpbmdE
b3RGb3JHcmFtbWFyOwotICAgICAgICBwYXR0ZXJuQ29sb3IgPSBncmFtbWFyUGF0dGVybkNvbG9y
LmdldCgpOworICAgICAgICBwYXR0ZXJuQ29sb3IgPSBncmFtbWFyUGF0dGVybkNvbG9yOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHVzaW5nRG90ID0gdXNpbmdEb3RGb3JTcGVsbGluZzsKLSAgICAg
ICAgcGF0dGVybkNvbG9yID0gc3BlbGxpbmdQYXR0ZXJuQ29sb3IuZ2V0KCk7CisgICAgICAgIHBh
dHRlcm5Db2xvciA9IHNwZWxsaW5nUGF0dGVybkNvbG9yOwogICAgIH0KIAogICAgIC8vIE1ha2Ug
c3VyZSB0byBkcmF3IG9ubHkgY29tcGxldGUgZG90cy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCShyZXZpc2lvbiAzODEz
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsMTAgQEAgYm9vbCBpbml0Rm9udERhdGEoU2lt
cGxlRm9udERhdGEqIGZvbnREYQogCiBzdGF0aWMgTlNTdHJpbmcgKndlYkZhbGxiYWNrRm9udEZh
bWlseSh2b2lkKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHdlYkZhbGxiYWNr
Rm9udEZhbWlseSA9IG5pbDsKKyAgICBzdGF0aWMgTlNTdHJpbmcqIHdlYkZhbGxiYWNrRm9udEZh
bWlseSA9IG5pbDsKICAgICBpZiAoIXdlYkZhbGxiYWNrRm9udEZhbWlseSkKICAgICAgICAgd2Vi
RmFsbGJhY2tGb250RmFtaWx5ID0gW1tOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxNi4wZl0gZmFt
aWx5TmFtZV07Ci0gICAgcmV0dXJuIHdlYkZhbGxiYWNrRm9udEZhbWlseS5nZXQoKTsKKyAgICBy
ZXR1cm4gd2ViRmFsbGJhY2tGb250RmFtaWx5OwogfQogCiAjaWYgIUVSUk9SX0RJU0FCTEVECklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDM4MTM1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTlNBcnJheSogc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVz
CiAKIHN0YXRpYyBOU0FycmF5KiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKLSAgICBzdGF0aWMg
UmV0YWluUHRyPE5TQXJyYXk+IHR5cGVzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBl
cyA9IG5pbDsKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5cGVzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6CiAgICAgICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2Fy
ZFR5cGUsCkBAIC04OCwxOCArODgsMTggQEAgc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNG
b3JVUkwoKQogICAgICAgICAgICAgTlNTdHJpbmdQYm9hcmRUeXBlLAogICAgICAgICAgICAgbmls
XTsKICAgICB9Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAgIHJldHVybiB0eXBlczsKIH0K
IAogc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7Ci0gICAgc3RhdGlj
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBuaWw7CisgICAgc3RhdGljIE5TTXV0
YWJsZUFycmF5ICp0eXBlcyA9IG5pbDsKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5cGVz
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TVElGRlBib2FyZFR5
cGUsIG5pbF07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRh
YmxlVHlwZXNGb3JVUkwoKV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNSVEZE
UGJvYXJkVHlwZV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRhYmxl
VHlwZXNGb3JVUkwoKV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6TlNSVEZEUGJvYXJkVHlw
ZV07CiAgICAgfQotICAgIHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9
CiAKIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkgCkBAIC0xMjEs
MTIgKzEyMSwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHN0YXRpYyBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cmlwQXR0YWNobWVudENoYXJhY3RlcnMoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcpCiB7CiAgICAgY29uc3QgdW5pY2hhciBhdHRhY2htZW50Q2hhcmFjdGVyID0gTlNBdHRh
Y2htZW50Q2hhcmFjdGVyOwotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGF0dGFjaG1l
bnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFj
aG1lbnRDaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVu
dENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNo
bWVudENoYXJhY3RlciBsZW5ndGg6MV07CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAq
cmVzdWx0ID0gW1tzdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBOU1Jhbmdl
IGF0dGFjaG1lbnRSYW5nZSA9IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2ht
ZW50Q2hhcmFjdGVyU3RyaW5nLmdldCgpXTsKKyAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZSA9
IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5n
XTsKICAgICB3aGlsZSAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsK
ICAgICAgICAgW3Jlc3VsdCByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6YXR0YWNobWVudFJhbmdl
IHdpdGhTdHJpbmc6QCIiXTsKLSAgICAgICAgYXR0YWNobWVudFJhbmdlID0gW1tyZXN1bHQgc3Ry
aW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyYWN0ZXJTdHJpbmcuZ2V0KCldOworICAg
ICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW3Jlc3VsdCBzdHJpbmddIHJhbmdlT2ZTdHJpbmc6YXR0
YWNobWVudENoYXJhY3RlclN0cmluZ107CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
MzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9s
bGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAgIHN0YXRpYyBT
Y3JvbGxiYXJUaGVtZU1hYyB0aGVtZTsKKyAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVNYWMmIHRo
ZW1lID0gKm5ldyBTY3JvbGxiYXJUaGVtZU1hYzsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBlbnVtIHsKIAogVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQogewotICAgIHN0YXRpYyBUaGVtZU1h
YyB0aGVtZU1hYzsKKyAgICBzdGF0aWMgVGhlbWVNYWMmIHRoZW1lTWFjID0gKm5ldyBUaGVtZU1h
YzsKICAgICByZXR1cm4gJnRoZW1lTWFjOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaHJlYWRDaGVjay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJl
YWRDaGVjay5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJl
YWRDaGVjay5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCB2b2lkIHJlcG9ydFRo
cmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmCiB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9s
YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb24pCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBsb2dnZWRGdW5jdGlvbnM7CisgICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nPiYgbG9nZ2VkRnVuY3Rpb25zID0gKm5ldyBIYXNoU2V0PFN0cmlu
Zz47CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcikgewogICAgICAgICBjYXNl
IE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TmV0d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0
aWMgTmV0d29ya1N0YXRlTm90aWZpZXIgbmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgc3RhdGlj
IE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmllciA9ICpuZXcgTmV0d29y
a1N0YXRlTm90aWZpZXI7CiAgICAgCiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyOwog
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBS
ZWZQdHI8Rm9ybURhdGE+ID4gU3RyZWFtRm9ybURhdGFNYXA7CiBzdGF0aWMgU3RyZWFtRm9ybURh
dGFNYXAmIGdldFN0cmVhbUZvcm1EYXRhTWFwKCkKIHsKLSAgICBzdGF0aWMgU3RyZWFtRm9ybURh
dGFNYXAgc3RyZWFtRm9ybURhdGFNYXA7CisgICAgc3RhdGljIFN0cmVhbUZvcm1EYXRhTWFwJiBz
dHJlYW1Gb3JtRGF0YU1hcCA9ICpuZXcgU3RyZWFtRm9ybURhdGFNYXA7CiAgICAgcmV0dXJuIHN0
cmVhbUZvcm1EYXRhTWFwOwogfQogCiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+ID4gU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiBzdGF0aWMg
U3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAmIGdldFN0cmVhbVJlc291cmNlSGFuZGxlTWFwKCkKIHsK
LSAgICBzdGF0aWMgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAgc3RyZWFtUmVzb3VyY2VIYW5kbGVN
YXA7CisgICAgc3RhdGljIFN0cmVhbVJlc291cmNlSGFuZGxlTWFwJiBzdHJlYW1SZXNvdXJjZUhh
bmRsZU1hcCA9ICpuZXcgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiAgICAgcmV0dXJuIHN0cmVh
bVJlc291cmNlSGFuZGxlTWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoCiAgICAgICAgIC8vIGlzIHJldHVybmluZyBpbmNvcnJlY3QgTUlNRSB0eXBl
IGZvciBsb2NhbCAueGh0bWwgZmlsZXMpIHdoaWNoIGlzIG9ubHkgcmVxdWlyZWQgaW4gTGVvcGFy
ZC4KICAgICAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkgJiYgbV9taW1lVHlwZSA9PSAidGV4
dC9odG1sIikgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbV91cmwucGF0aCgp
OwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyB4aHRtbEV4dCgiLnhodG1sIik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB4aHRtbEV4dCA9ICpuZXcgU3RyaW5nKCIu
eGh0bWwiKTsKICAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKHhodG1sRXh0LCBmYWxzZSkp
CiAgICAgICAgICAgICAgICAgbV9taW1lVHlwZSA9ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwog
ICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgVGV4dEVuY29kaW5nOjppc0ph
cGFuZXNlKCkgY29uc3QKICAgICBpZiAobm9FeHRlbmRlZFRleHRFbmNvZGluZ05hbWVVc2VkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PGNvbnN0IGNoYXIq
PiBzZXQ7CisgICAgc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+JiBzZXQgPSAqbmV3IEhhc2hT
ZXQ8Y29uc3QgY2hhcio+OwogICAgIGlmIChzZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFkZEVu
Y29kaW5nTmFtZShzZXQsICJ4LW1hYy1qYXBhbmVzZSIpOwogICAgICAgICBhZGRFbmNvZGluZ05h
bWUoc2V0LCAiY3A5MzIiKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzk4LDcgKzE3OTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludEVsbGlw
c2lzQm94ZXMoUGFpCiAKIEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2Vk
U2V0Kj4qIGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8
UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4gdGFibGU7CisgICAgc3RhdGlj
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4mIHRhYmxlID0g
Km5ldyBIYXNoTWFwPFJlbmRlckJsb2NrKiwgUmVuZGVyRmxvd1NlcXVlbmNlZFNldCo+OwogICAg
IHJldHVybiAmdGFibGU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogY291
bnRlcihSZW5kZXJPYmplY3QKIAogc3RhdGljIENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7
Ci0gICAgc3RhdGljIENvdW50ZXJNYXBzIHN0YXRpY0NvdW50ZXJNYXBzOworICAgIHN0YXRpYyBD
b3VudGVyTWFwcyYgc3RhdGljQ291bnRlck1hcHMgPSAqbmV3IENvdW50ZXJNYXBzOwogICAgIHJl
dHVybiBzdGF0aWNDb3VudGVyTWFwczsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJvCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgZWxsaXBzaXNBbmRT
cGFjZVsyXSA9IHsgaG9yaXpvbnRhbEVsbGlwc2lzLCAnICcgfTsKLSAgICAgICAgICAgICAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGVsbGlwc2lzQW5kU3BhY2VTdHIoZWxsaXBzaXNBbmRTcGFjZSwg
Mik7CisgICAgICAgICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZWxsaXBzaXNBbmRTcGFj
ZVN0ciA9ICpuZXcgQXRvbWljU3RyaW5nKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwogCiAgICAgICAg
ICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVMaW5lcyA9PSAxKS0+
Zm9udCgpOwogICAgICAgICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNwYWNlV2lkdGggPSBmb250
LndpZHRoKFRleHRSdW4oZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBj
b25zdCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7CiAgICAgaWYgKG1fbWFy
a2VyKQogICAgICAgICByZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAgICBzdGF0aWMgU3RyaW5n
IHN0YXRpY051bGxTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgc3RhdGljTnVsbFN0cmluZyA9
ICpuZXcgU3RyaW5nOwogICAgIHJldHVybiBzdGF0aWNOdWxsU3RyaW5nOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCShyZXZpc2lvbiAzODEz
NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNj
cm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUo
KQogewotICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSB0aGVtZTsKKyAgICBzdGF0aWMg
UmVuZGVyU2Nyb2xsYmFyVGhlbWUmIHRoZW1lID0gKm5ldyBSZW5kZXJTY3JvbGxiYXJUaGVtZTsK
ICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEzICsxNjgsMTMgQEAgc3RhdGljIEZvbnRXZWln
aHQgdG9Gb250V2VpZ2h0KE5TSW50ZWdlcgogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1G
b250KGludCBjc3NWYWx1ZUlkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29u
c3QKIHsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHN5c3RlbUZvbnQ7Ci0gICAgc3RhdGlj
IEZvbnREZXNjcmlwdGlvbiBzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlw
dGlvbiBtZW51Rm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGxhYmVsRm9udDsKLSAg
ICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1pbmlDb250cm9sRm9udDsKLSAgICBzdGF0aWMgRm9u
dERlc2NyaXB0aW9uIHNtYWxsQ29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlv
biBjb250cm9sRm9udDsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzeXN0ZW1Gb250ID0g
Km5ldyBGb250RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgc21hbGxT
eXN0ZW1Gb250ID0gKm5ldyBGb250RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlw
dGlvbiYgbWVudUZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uJiBsYWJlbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMg
Rm9udERlc2NyaXB0aW9uJiBtaW5pQ29udHJvbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsK
KyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzbWFsbENvbnRyb2xGb250ID0gKm5ldyBGb250
RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgY29udHJvbEZvbnQgPSAq
bmV3IEZvbnREZXNjcmlwdGlvbjsKIAogICAgIEZvbnREZXNjcmlwdGlvbiogY2FjaGVkRGVzYzsK
ICAgICBOU0ZvbnQqIGZvbnQgPSBuaWw7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
Miw3ICsyMTkyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZgog
ICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggb2YgdGhlIGVsbGlwc2lzIHVzaW5nIHRoZSBjdXJy
ZW50IGZvbnQuCiAgICAgLy8gRklYTUU6IENTUzMgc2F5cyB0aGlzIGlzIGNvbmZpZ3VyYWJsZSwg
YWxzbyBuZWVkIHRvIHVzZSAweDAwMkUgKEZVTEwgU1RPUCkgaWYgaG9yaXpvbnRhbCBlbGxpcHNp
cyBpcyAibm90IHJlbmRlcmFibGUiCiAgICAgVGV4dFJ1biBlbGxpcHNpc1J1bigmaG9yaXpvbnRh
bEVsbGlwc2lzLCAxKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVsbGlwc2lzU3RyKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3Ry
ID0gKm5ldyBBdG9taWNTdHJpbmcoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgY29uc3Qg
Rm9udCYgZmlyc3RMaW5lRm9udCA9IGZpcnN0TGluZVN0eWxlKCktPmZvbnQoKTsKICAgICBjb25z
dCBGb250JiBmb250ID0gc3R5bGUoKS0+Zm9udCgpOwogICAgIGludCBmaXJzdExpbmVFbGxpcHNp
c1dpZHRoID0gZmlyc3RMaW5lRm9udC53aWR0aChlbGxpcHNpc1J1bik7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIw
LDEzICs3MjAsMTMgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzcwog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAg
c3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZW1wdHlMaXN0OworICAgIHN0YXRp
YyBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBlbXB0eUxpc3QgPSAqbmV3IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj47CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3Qg
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRS
ZWdpb25zKCkKIHsKLSAgICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBub25l
TGlzdDsKKyAgICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZUxpc3Qg
PSAqbmV3IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj47CiAgICAgc3RhdGljIGJvb2wgbm9u
ZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVk
KSB7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBMb2NhbFN0b3JhZ2UqPiBMCiAKIHN0YXRp
YyBMb2NhbFN0b3JhZ2VNYXAmIGxvY2FsU3RvcmFnZU1hcCgpCiB7Ci0gICAgc3RhdGljIExvY2Fs
U3RvcmFnZU1hcCBsb2NhbFN0b3JhZ2VNYXA7CisgICAgc3RhdGljIExvY2FsU3RvcmFnZU1hcCYg
bG9jYWxTdG9yYWdlTWFwID0gKm5ldyBMb2NhbFN0b3JhZ2VNYXA7CiAgICAgcmV0dXJuIGxvY2Fs
U3RvcmFnZU1hcDsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZQogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAog
ewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0b1ZhbCgiYXV0byIpOwotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9WYWwgPSAqbmV3IEF0b21pY1N0cmluZygi
YXV0byIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9SZXZlcnNlID0gKm5l
dyBBdG9taWNTdHJpbmcoImF1dG8tcmV2ZXJzZSIpOwogICAgIFN0cmluZyByb3RhdGUgPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1Zh
bCkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDEwICsxOTYsMTAgQEAgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6QW5pbWF0aW9uTW9kZSBTVkdBbgogCiBTVkdBbmltYXRpb25FbGVtZW50OjpD
YWxjTW9kZSBTVkdBbmltYXRpb25FbGVtZW50OjpjYWxjTW9kZSgpIGNvbnN0CiB7ICAgIAotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGlzY3JldGUoImRpc2NyZXRlIik7Ci0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyBsaW5lYXIoImxpbmVhciIpOwotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcgcGFjZWQoInBhY2VkIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyBzcGxpbmUoInNwbGluZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRp
c2NyZXRlID0gKm5ldyBBdG9taWNTdHJpbmcoImRpc2NyZXRlIik7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbGluZWFyID0gKm5ldyBBdG9taWNTdHJpbmcoImxpbmVhciIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBhY2VkID0gKm5ldyBBdG9taWNTdHJpbmcoInBh
Y2VkIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3BsaW5lID0gKm5ldyBBdG9t
aWNTdHJpbmcoInNwbGluZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmNhbGNNb2RlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGRpc2Ny
ZXRlKQogICAgICAgICByZXR1cm4gQ2FsY01vZGVEaXNjcmV0ZTsKQEAgLTIxNCw4ICsyMTQsOCBA
QCBTVkdBbmltYXRpb25FbGVtZW50OjpDYWxjTW9kZSBTVkdBbmltYXRpCiAKIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OkF0dHJpYnV0ZVR5cGUgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmlidXRlVHlw
ZSgpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgY3NzKCJDU1Mi
KTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCgiWE1MIik7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgY3NzID0gKm5ldyBBdG9taWNTdHJpbmcoIkNTUyIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHhtbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJYTUwi
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjphdHRyaWJ1dGVUeXBlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGNzcykKICAgICAgICAgcmV0
dXJuIEF0dHJpYnV0ZVR5cGVDU1M7CkBAIC0yNDEsMTQgKzI0MSwxNCBAQCBTdHJpbmcgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgCiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW0o
InN1bSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bSA9ICpuZXcgQXRvbWlj
U3RyaW5nKCJzdW0iKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmli
dXRlKFNWR05hbWVzOjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwg
YW5pbWF0aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWNjdW11bGF0ZWQoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgc3VtKCJzdW0iKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdW0gPSAq
bmV3IEF0b21pY1N0cmluZygic3VtIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1
ZSA9PSBzdW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdM
YW5nU3BhY2UuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTVkdMYW5nU3BhY2U6
OnNldFhtbGxhbmcoY29uc3QgQXRvbQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6
OnhtbHNwYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0Iik7CisgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRTdHJpbmcgPSAqbmV3IEF0b21pY1N0cmlu
ZygiZGVmYXVsdCIpOwogICAgICAgICByZXR1cm4gZGVmYXVsdFN0cmluZzsKICAgICB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFNWR1NWR0Vs
ZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVt
ZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBkZWZhdWx0VmFsdWUoInRleHQvZWNtYXNjcmlwdCIpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRlZmF1bHRWYWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2Vj
bWFzY3JpcHQiKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoY29u
dGVudFNjcmlwdFR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1
ZSA6IG47CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDb250
ZW50U2NyaXB0VHlwZQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRl
bnRTdHlsZVR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGVm
YXVsdFZhbHVlKCJ0ZXh0L2NzcyIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2NzcyIpOwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShjb250ZW50U3R5bGVUeXBlQXR0cik7CiAgICAg
cmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUgOiBuOwogfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdTdHlsZUVs
ZW1lbnQ6OnNldFhtbHNwYWNlKGNvbnN0IAogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxl
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBk
ZWZhdWx0VmFsdWUoInRleHQvY3NzIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGVmYXVsdFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQvY3NzIik7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5p
c051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU1ZH
U3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b20KIAogY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdTdHlsZUVsZW1lbnQ6Om1lZGlhKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIGRlZmF1bHRWYWx1ZSgiYWxsIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGVmYXVsdFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoImFsbCIpOwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogICAgIHJldHVybiBuLmlz
TnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgewog
ICAgICAgICAgICAgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIp
KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBwcmVzZXJ2ZVN0
cmluZygicHJlc2VydmUiKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVzZXJ2ZVN0cmluZyA9ICpuZXcgQXRvbWljU3RyaW5nKCJwcmVzZXJ2ZSIpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJpbmcpCiAgICAg
ICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSwgQ1NTVmFsdWVQcmUpOwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBTTUlMVGltZSBT
VkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlCiAgICAgCiAgICAgU3RyaW5nIHBhcnNlID0g
ZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcg
aW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgaW5kZWZpbml0ZVZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoImluZGVmaW5pdGUiKTsK
ICAgICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRp
bWU6OmluZGVmaW5pdGUoKTsKIApAQCAtNDU3LDggKzQ1Nyw4IEBAIGJvb2wgU1ZHU01JTEVsZW1l
bnQ6OmlzRnJvemVuKCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NN
SUxFbGVtZW50OjpyZXN0YXJ0KCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBuZXZlcigibmV2ZXIiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHdo
ZW5Ob3RBY3RpdmUoIndoZW5Ob3RBY3RpdmUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXZlciA9ICpuZXcgQXRvbWljU3RyaW5nKCJuZXZlciIpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHdoZW5Ob3RBY3RpdmUgPSAqbmV3IEF0b21pY1N0cmluZygid2hlbk5v
dEFjdGl2ZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OnJlc3RhcnRBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gbmV2ZXIpCiAgICAgICAg
IHJldHVybiBSZXN0YXJ0TmV2ZXI7CkBAIC00NjksNyArNDY5LDcgQEAgU1ZHU01JTEVsZW1lbnQ6
OlJlc3RhcnQgU1ZHU01JTEVsZW1lbnQ6OgogICAgIAogU1ZHU01JTEVsZW1lbnQ6OkZpbGxNb2Rl
IFNWR1NNSUxFbGVtZW50OjpmaWxsKCkgY29uc3QKIHsgICAKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIGZyZWV6ZSgiZnJlZXplIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZnJlZXplID0gKm5ldyBBdG9taWNTdHJpbmcoImZyZWV6ZSIpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbGxBdHRyKTsKICAgICBy
ZXR1cm4gdmFsdWUgPT0gZnJlZXplID8gRmlsbEZyZWV6ZSA6IEZpbGxSZW1vdmU7CiB9CkBAIC01
MDYsNyArNTA2LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KCkgYwog
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29s
dmVkKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGluZGVmaW5pdGVWYWx1ZSgi
aW5kZWZpbml0ZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluZGVmaW5pdGVW
YWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJpbmRlZmluaXRlIik7CiAgICAgaWYgKHZhbHVlID09
IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7
CiAgICAgYm9vbCBvazsKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpw
cm9ncmVzcyhTTUlMVGltZSBlCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRz
SW50ZXJ2YWxDaGFuZ2VkKE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewog
ICAgIEFTU0VSVChtX2ludGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8U1ZHU01JTEVsZW1lbnQqPiBsb29wQnJlYWtlcjsKKyAgICBzdGF0aWMgSGFzaFNldDxTVkdT
TUlMRWxlbWVudCo+JiBsb29wQnJlYWtlciA9ICpuZXcgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+
OwogICAgIGlmIChsb29wQnJlYWtlci5jb250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBSZXNvdXJj
ZVNldCB7IAogfTsKIAogc3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNl
U2V0Kj4mIGNsaWVudE1hcCgpIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50
KiwgUmVzb3VyY2VTZXQqPiBtYXA7CisgICAgc3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVu
dCosIFJlc291cmNlU2V0Kj4mIG1hcCA9ICpuZXcgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50Kiwg
UmVzb3VyY2VTZXQqPjsKICAgICByZXR1cm4gbWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCB2b2lkIFNWR1Jlc291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAg
ICAgaWYgKCFtX21hcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8
U1ZHUmVzb3VyY2VNYXJrZXIqPiBjdXJyZW50bHlEcmF3aW5nTWFya2VyczsKKyAgICBzdGF0aWMg
SGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+JiBjdXJyZW50bHlEcmF3aW5nTWFya2VycyA9ICpu
ZXcgSGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+OwogCiAgICAgLy8gYXZvaWQgZHJhd2luZyBj
aXJjdWxhciBtYXJrZXIgcmVmZXJlbmNlcwogICAgIGlmIChjdXJyZW50bHlEcmF3aW5nTWFya2Vy
cy5jb250YWlucyh0aGlzKSkKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM4
MTM1KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwK
IAogc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlJiBwcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiB7
Ci0gICAgc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlIGNhY2hlOworICAgIHN0YXRpYyBQcmVm
bGlnaHRSZXN1bHRDYWNoZSYgY2FjaGUgPSAqbmV3IFByZWZsaWdodFJlc3VsdENhY2hlOwogICAg
IHJldHVybiBjYWNoZTsKIH0KIApAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQ
cmVmbGlnaHRSZXN1bHRDYWNoZUVuCiAKIHN0YXRpYyBib29sIGlzU2FmZVJlcXVlc3RIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPiBmb3JiaWRkZW5IZWFkZXJzOwotICAgIHN0YXRpYyBTdHJpbmcgcHJveHlTdHJp
bmcoInByb3h5LSIpOwotICAgIHN0YXRpYyBTdHJpbmcgc2VjU3RyaW5nKCJzZWMtIik7CisgICAg
c3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBmb3JiaWRkZW5IZWFkZXJz
ID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBzdGF0aWMgU3Ry
aW5nJiBwcm94eVN0cmluZyA9ICpuZXcgU3RyaW5nKCJwcm94eS0iKTsKKyAgICBzdGF0aWMgU3Ry
aW5nJiBzZWNTdHJpbmcgPSAqbmV3IFN0cmluZygic2VjLSIpOwogICAgIAogICAgIGlmIChmb3Ji
aWRkZW5IZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgi
YWNjZXB0LWNoYXJzZXQiKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBpc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlCiAKIHN0YXRpYyBib29sIGlzT25BY2Nlc3NDb250cm9sUmVz
cG9uc2VIZWFkZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBhbGxvd2VkSGVhZGVyczsKKyAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGFsbG93ZWRIZWFkZXJzID0gKm5l
dyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBpZiAoYWxsb3dlZEhlYWRl
cnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFsbG93ZWRIZWFkZXJzLmFkZCgiY2FjaGUtY29udHJv
bCIpOwogICAgICAgICBhbGxvd2VkSGVhZGVycy5hZGQoImNvbnRlbnQtbGFuZ3VhZ2UiKTsKSW5k
ZXg6IFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBYUGF0aCB7CiAgICAgCiBFdmFsdWF0aW9uQ29udGV4dCYgRXhw
cmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKQogewotICAgIHN0YXRpYyBFdmFsdWF0aW9uQ29u
dGV4dCBldmFsdWF0aW9uQ29udGV4dDsKKyAgICBzdGF0aWMgRXZhbHVhdGlvbkNvbnRleHQmIGV2
YWx1YXRpb25Db250ZXh0ID0gKm5ldyBFdmFsdWF0aW9uQ29udGV4dDsKICAgICByZXR1cm4gZXZh
bHVhdGlvbkNvbnRleHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MTM1
KQorKysgV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3
ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNldFVwQXhpc05hbWVzTWFwKEhhc2hNYXA8U3QKIAogc3Rh
dGljIGJvb2wgaXNBeGlzTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0ZXA6OkF4aXMmIHR5cGUp
CiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBheGlzTmFtZXM7Cisg
ICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiYgYXhpc05hbWVzID0gKm5ldyBI
YXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz47CiAKICAgICBpZiAoYXhpc05hbWVzLmlzRW1wdHko
KSkKICAgICAgICAgc2V0VXBBeGlzTmFtZXNNYXAoYXhpc05hbWVzKTsKQEAgLTExMSw3ICsxMTEs
NyBAQCBzdGF0aWMgYm9vbCBpc0F4aXNOYW1lKGNvbnN0IFN0cmluZyYgbmFtCiAKIHN0YXRpYyBi
b29sIGlzTm9kZVR5cGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmc+IG5vZGVUeXBlTmFtZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYg
bm9kZVR5cGVOYW1lcyA9ICpuZXcgSGFzaFNldDxTdHJpbmc+OwogICAgIGlmIChub2RlVHlwZU5h
bWVzLmlzRW1wdHkoKSkgewogICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgiY29tbWVudCIpOwog
ICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgidGV4dCIpOwpJbmRleDogV2ViQ29yZS94bWwvWFBh
dGhWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHJl
dmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgVmFsdWU6OkFkb3B0VGFnIFZhbHVlOjphZG9wdCA9
IHt9OwogY29uc3QgTm9kZVNldCYgVmFsdWU6OnRvTm9kZVNldCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2RhdGEpIHsKLSAgICAgICAgc3RhdGljIE5vZGVTZXQgZW1wdHlOb2RlU2V0OworICAgICAg
ICBzdGF0aWMgTm9kZVNldCYgZW1wdHlOb2RlU2V0ID0gKm5ldyBOb2RlU2V0OwogICAgICAgICBy
ZXR1cm4gZW1wdHlOb2RlU2V0OwogICAgIH0KIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MTM1KQorKysg
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAw
OC0xMS0wNSAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgxMAorCVJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRo
YXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgICog
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3Rz
KTogQ2hhbmdlZCB0byBsZWFrIGFuIG9iamVjdCB0byBhdm9pZCBhbiBleGl0LXRpbWUgZGVzdHJ1
Y3Rvci4KKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlz
dG9yeUl0ZW1XcmFwcGVycyk6IGRpdHRvCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW06CisgICAgICAgICgrW05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JV
UkxdKTogZGl0dG8KKyAgICAgICAgKF93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2
ZSk6IGRpdHRvCisgICAgICAgIChfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUpOiBk
aXR0bworICAgICAgICAqIE1pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm06CisgICAgICAgIChmb250
RnJvbU5TRm9udCk6IGRpdHRvCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW06CisgICAgICAgIChzdHJlYW1zKTogZGl0dG8KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVscGVyLm1tOgorICAgICAgICAoV2ViUGFzdGVib2FyZEhl
bHBlcjo6aW5zZXJ0YWJsZVBhc3RlYm9hcmRUeXBlcyk6IGRpdHRvCisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOiBkaXR0bworICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTogZGl0dG8KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChhZURlc2NGcm9tSlNWYWx1ZSk6IGRp
dHRvCisKIDIwMDgtMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCkluZGV4OiBXZWJLaXQvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvSGlz
dG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0L21h
Yy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIEhhc2hNYXA8QmFja0Zv
cndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIGJhY2tGb3J3YXJkTGlzdHMoKQogewot
ICAgIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+
IHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CisgICAgc3RhdGljIEhhc2hNYXA8QmFja0ZvcndhcmRM
aXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHMgPSAqbmV3
IEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj47CiAgICAgcmV0
dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0JKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViQ29yZUhpc3RvcnlJdGVtKiBjb3JlKFcKIAogSGFzaE1hcDxIaXN0b3J5SXRlbSos
IFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBI
YXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiBoaXN0b3J5SXRlbVdyYXBwZXJz
OworICAgIHN0YXRpYyBIYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiYgaGlz
dG9yeUl0ZW1XcmFwcGVycyA9ICpuZXcgSGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJ
dGVtKj47CiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtV3JhcHBlcnM7CiB9CiAKSW5kZXg6IFdlYktp
dC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBX
ZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCw3IEBAIE5TU3RyaW5nICpXZWJVUkxOYW1lUGJvYXJkVHlwZSA9IEAicHVibGkK
IAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTAogewotICAgIHN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheT4gdHlwZXM7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzOwogICAg
IGlmICghdHlwZXMpIHsKICAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czoKICAgICAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwKQEAgLTY4
LDI4ICs2OCwyOCBAQCBOU1N0cmluZyAqV2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpCiAg
ICAgICAgICAgICBOU1N0cmluZ1Bib2FyZFR5cGUsCiAgICAgICAgICAgICBuaWxdOwogICAgIH0K
LSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBzdGF0aWMg
TlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlICh2b2lkKQogewot
ICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzOworICAgIHN0YXRpYyBO
U011dGFibGVBcnJheSAqdHlwZXM7CiAgICAgaWYgKHR5cGVzID09IG5pbCkgewogICAgICAgICB0
eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU1RJRkZQYm9h
cmRUeXBlLCBuaWxdOwotICAgICAgICBbdHlwZXMuZ2V0KCkgYWRkT2JqZWN0c0Zyb21BcnJheTpb
TlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF1dOworICAgICAgICBbdHlwZXMg
YWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVS
TF1dOwogICAgIH0KLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwog
fQogCiBzdGF0aWMgTlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlICh2
b2lkKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzOworICAg
IHN0YXRpYyBOU011dGFibGVBcnJheSAqdHlwZXM7CiAgICAgaWYgKHR5cGVzID09IG5pbCkgewog
ICAgICAgICB0eXBlcyA9IFtfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUoKSBt
dXRhYmxlQ29weV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNSVEZEUGJvYXJk
VHlwZV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5
cGVdOworICAgICAgICBbdHlwZXMgYWRkT2JqZWN0Ok5TUlRGRFBib2FyZFR5cGVdOworICAgICAg
ICBbdHlwZXMgYWRkT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICB9Ci0gICAgcmV0
dXJuIHR5cGVzLmdldCgpOworICAgIHJldHVybiB0eXBlczsKIH0KIAogKyAoTlNBcnJheSAqKV93
ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZl
CkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tCShyZXZpc2lvbiAzODEzNSkK
KysrIFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubQkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgTlNGb250ICpkZWZhdWx0TWVudUZvbnQoKQogc3RhdGlj
IEZvbnQmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAgICBzdGF0aWMgTlNGb250
ICpjdXJyZW50Rm9udDsKLSAgICBzdGF0aWMgRm9udCBjdXJyZW50UmVuZGVyZXI7CisgICAgc3Rh
dGljIEZvbnQmIGN1cnJlbnRSZW5kZXJlciA9ICpuZXcgRm9udDsKIAogICAgIGlmIChbZm9udCBp
c0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKSW5k
ZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVh
bS5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqQ2FyYm9uUGF0aEZyb21QT1NJWFBhdGgKIHR5cGVkZWYgSGFzaE1hcDxOUFN0
cmVhbSosIE5QUD4gU3RyZWFtTWFwOwogc3RhdGljIFN0cmVhbU1hcCYgc3RyZWFtcygpCiB7Ci0g
ICAgc3RhdGljIFN0cmVhbU1hcCBzdGF0aWNTdHJlYW1zOworICAgIHN0YXRpYyBTdHJlYW1NYXAm
IHN0YXRpY1N0cmVhbXMgPSAqbmV3IFN0cmVhbU1hcDsKICAgICByZXR1cm4gc3RhdGljU3RyZWFt
czsKIH0KIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVs
cGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZEhlbHBlci5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBhc3RlYm9hcmRIZWxwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDkg
QEAgRE9NRG9jdW1lbnRGcmFnbWVudCAqV2ViUGFzdGVib2FyZEhlbHBlcgogCiBOU0FycmF5ICpX
ZWJQYXN0ZWJvYXJkSGVscGVyOjppbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzKCkgY29uc3QKIHsg
ICAgCi0gICAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0eXBlcyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBl
LAorICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBlLAogICAgICAgICAg
ICBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIE5TVElGRlBib2FyZFR5cGUsIE5TUElDVFBib2FyZFR5
cGUsIE5TVVJMUGJvYXJkVHlwZSwgCiAgICAgICAgICAgIE5TUlRGRFBib2FyZFR5cGUsIE5TUlRG
UGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0NvbG9yUGJvYXJkVHlwZSwgbmlsXTsK
ICAgICAKLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQpJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTk5LDE2ICs5OSwxNiBAQCBzdGF0aWMgTlNBcnJheSAqY29uY2F0
ZW5hdGVBcnJheXMoTlNBcnJhCiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMgPQorICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcyA9CiAgICAgICAgIHN0cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpOwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMgPQorICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcyA9CiAgICAgICAgIHN0cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKCkpOwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcy5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9
CiAKIC0gaW5pdApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM4MTM1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2MDAsNyAr
MzYwMCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZK
U0FycmF5OjppbmZvKSkgewotICAgICAgICAgICAgc3RhdGljIEhhc2hTZXQ8SlNPYmplY3QqPiB2
aXNpdGVkRWxlbXM7CisgICAgICAgICAgICBzdGF0aWMgSGFzaFNldDxKU09iamVjdCo+JiB2aXNp
dGVkRWxlbXMgPSAqbmV3IEhhc2hTZXQ8SlNPYmplY3QqPjsKICAgICAgICAgICAgIGlmICghdmlz
aXRlZEVsZW1zLmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgICAgICAgICB2aXNpdGVkRWxl
bXMuYWRkKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODEz
NSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDA4LTExLTA1ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisJUmVtb3ZlIHVzZSBvZiBzdGF0aWMgQysrIG9i
amVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1Y3RvcnMpCisKKwlS
ZW1vdmUgLm8gZmlsZXMgZnJvbSB0aGUgZXhjbHVkZSBsaXN0IHRoYXQgaGF2ZSBoYWQgdGhlaXIg
ZXhpdC10aW1lIGRlc3RydWN0b3JzIHJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy9jaGVjay1m
b3ItZXhpdC10aW1lLWRlc3RydWN0b3JzOiBEb24ndCBkZW1hbmdsZSBzeW1ib2xzIHRoYXQgZG9u
J3QgZXhpc3QuCisKIDIwMDgtMTEtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIEFjY2Vzc2liaWxpdHlPYmplY3QubyB0byB0aGUgZXhjbHVk
ZSBsaXN0IGZvciB0aGUKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQt
dGltZS1kZXN0cnVjdG9ycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNr
LWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkp
CkBAIC05NSwxMTAgKzk1LDIzIEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBp
ZiAoJHRhcmdldCBlcSAiV2ViQ29yZSIpIHsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiQXBwbHlTdHlsZUNvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQXJjaGl2ZUZhY3RvcnkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiQ1NTU2VsZWN0b3IubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU3R5
bGVTZWxlY3Rvci5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRJbWFn
ZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDb2xvck1hYy5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbi5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJEb2N1bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJFdmVudEhhbmRsZXIubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiRXZlbnRIYW5kbGVyTWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZU
UERpcmVjdG9yeURvY3VtZW50Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZv
bnRDYWNoZS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRm9ybURhdGFTdHJlYW1NYWMubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiRnJhbWVMb2FkZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiRnJhbWVNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiR0ND
b250cm9sbGVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29u
dGV4dE1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MQnV0dG9uRWxl
bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRWxlbWVudC5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRmllbGRTZXRFbGVtZW50Lm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxJbnB1dEVsZW1lbnQubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTEludGVyY2hhbmdlLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxLZXlnZW5FbGVtZW50Lm8iOwotICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxMZWdlbmRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkhUTUxPcHRHcm91cEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiSFRNTE9wdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSFRNTFBhcnNlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJIVE1MU2VsZWN0RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJI
VE1MVGFibGVFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxU
ZXh0QXJlYUVsZW1lbnQubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSWNvbkRh
dGFiYXNlLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluZGVudE91dGRlbnRDb21tYW5kLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluc3BlY3RvckNvbnRyb2xsZXIubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNET01CaW5kaW5nLm8iOwogICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIu
byI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5v
IjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9y
eS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKICAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLm8iOwotICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkphdmFTY3JpcHRQcm9maWxlLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJLVVJMLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkxvY2FsU3RvcmFnZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3Jr
U3RhdGVOb3RpZmllci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyQmxvY2subyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyQ291bnRlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJSZW5kZXJGbGV4aWJsZUJveC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJSZW5kZXJMYXllci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJS
ZW5kZXJMaXN0SXRlbS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJT
Y3JvbGxiYXJUaGVtZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJT
dHlsZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFj
Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1l
bnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlTWFya2VyLm8iOwotICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIlNWR1NNSUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlNWR1NWR0VsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiU1ZHU3R5bGVFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IlNWR1RleHRDb250ZW50RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJTY3JpcHRFbGVtZW50Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9s
bFZpZXcubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVN
YWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CiAg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlRleHRFbmNvZGluZy5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJUaHJlYWRDaGVjay5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJY
TUxIdHRwUmVxdWVzdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYUGF0aEV4
cHJlc3Npb25Ob2RlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoUGFy
c2VyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoVmFsdWUubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiYmlkaS5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJodG1sZWRpdGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJtYXJrdXAubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAicnVudGltZV9y
b290Lm8iOwotICAgIH0KLQotICAgIGlmICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJCYWNrRm9yd2FyZExpc3QubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJIaXN0b3J5SXRlbS5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViUGFzdGVib2FyZEhlbHBlci5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJTdHJpbmdUcnVuY2F0b3IubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViVmlldy5vIjsKICAgICB9CiAKICAgICAkc2F3RXJyb3Ig
PSAxIGlmIHByaW50RnVuY3Rpb25zKCRzaG9ydE5hbWUsICRmaWxlKTsKQEAgLTI0Myw2ICsxNTYs
NyBAQCBzdWIgcHJpbnRGdW5jdGlvbnMoJCQpCiAgICAgbXkgJGN1cnJlbnRTeW1ib2wgPSAiIjsK
ICAgICB3aGlsZSAoPE9UT09MPikgewogICAgICAgICAkY3VycmVudFN5bWJvbCA9ICQxIGlmIC9e
KFx3Kyk6JC87CisgICAgICAgIG5leHQgaWYgKCFkZWZpbmVkKCRjdXJyZW50U3ltYm9sKSB8fCAh
bGVuZ3RoKCRjdXJyZW50U3ltYm9sKSk7CiAgICAgICAgICRmdW5jdGlvbnN7ZGVtYW5nbGUoJGN1
cnJlbnRTeW1ib2wpfSA9IDEgaWYgL19fX2N4YV9hdGV4aXQvOwogICAgIH0KICAgICBjbG9zZSBP
VE9PTDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24920</attachid>
            <date>2008-11-05 14:49:11 -0800</date>
            <delta_ts>2008-11-06 14:23:00 -0800</delta_ts>
            <desc>Missed one in WebHTMLRepresentation.mm</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>104811</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAzIEBACisyMDA4LTExLTA1ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisJUmVtb3ZlIHVzZSBvZiBz
dGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1
Y3RvcnMpCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2NDb250cm9sbGVyKTogQ2hhbmdlZCB0byBsZWFrIGFuIG9iamVjdCB0byBh
dm9pZCBhbiBleGl0LXRpbWUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlclNldCk6IGRpdHRvCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OndyYXBwZXJzKTogZGl0dG8KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVycyk6IGRp
dHRvCisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpyb290T2JqZWN0U2V0KTogZGl0dG8KKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogZGl0dG8KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1Rl
eHQpOiBkaXR0bworICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOiBkaXR0bworICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkV2YWwpOiBk
aXR0bworICAgICAgICAoV2ViQ29yZTo6cHJpbnRFdmFsKTogZGl0dG8KKyAgICAgICAgKiBkb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkcxMEZlYXR1cmUp
OiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNTVkcxMUZlYXR1cmUpOiBkaXR0bworICAgICAg
ICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUpOiBkaXR0bworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFz
UHJlZml4TmFtZXNwYWNlTWlzbWF0Y2gpOiBkaXR0bworICAgICAgICAqIGRvbS9TY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdl
KTogZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN0eWxlU3BhbkNsYXNzU3RyaW5nKTogZGl0dG8KKyAgICAgICAgKiBlZGl0
aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOiBkaXR0bworICAg
ICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aW5kZW50QmxvY2txdW90ZVN0cmluZyk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdl
TmV3bGluZU5vZGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZl
cnRlZFNwYWNlU3Bhbik6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UpOiBkaXR0
bworICAgICAgICAoV2ViQ29yZTo6bm9uQnJlYWtpbmdTcGFjZVN0cmluZyk6IGRpdHRvCisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQXR0cmli
dXRlVmFsdWUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6YXBwZW5kRXNjYXBlZENvbnRlbnQp
OiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0cik6IGRpdHRv
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmROYW1lc3BhY2UpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kU3RhcnRNYXJrdXApOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TWFya3VwKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpp
c1JlY29nbml6ZWRUYWdOYW1lKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmlubGluZVRhZ0xp
c3QpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6YmxvY2tUYWdMaXN0KTogZGl0dG8KKyAgICAg
ICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZpZWxkU2V0RWxlbWVudDo6dHlwZSk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGUpOiBk
aXR0bworICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OnR5cGUpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRN
TExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6
OnR5cGUpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAg
ICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
cHRpb25FbGVtZW50Ojp0eXBlKTogZGl0dG8KKyAgICAgICAgKiBodG1sL0hUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6Z2V0Tm9kZSk6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGFyc2VyOjppc0hlYWRlclRhZyk6IGRpdHRvCisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5bGVUYWcpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHlsZSk6IGRpdHRvCisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6dHlwZSk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENl
bGxCb3JkZXJzRGVjbCk6IGRpdHRvCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnR5cGUpOiBkaXR0
bworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtKTogZGl0dG8KKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlw
dERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKTogZGl0dG8KKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUNhY2hlKTogZGl0dG8KKyAgICAgICAgKiBp
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBy
b2ZpbGVOb2RlQ2FjaGUpOiBkaXR0bworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpsb2NhbFNjaGVtZXMpOiBkaXR0bworICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZVN0b3JhZ2UpOiBkaXR0bworICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVNSU1FVHlwZXMpOiBkaXR0bwor
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKTogZGl0dG8KKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OmRyYWdTdGF0ZSk6IGRpdHRvCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6
a2VlcEFsaXZlU2V0KTogZGl0dG8KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6Z3JvdXBOYW1lKTogZGl0dG8KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlm
aWVyKTogZGl0dG8KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnJlZ0V4cEZvckxhYmVscyk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpibGFua1VSTCk6IGRpdHRvCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsdGVybmF0ZUZh
bWlseU5hbWUpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOiBkaXR0bworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKTogZGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IGRpdHRvCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hcik6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2ViRmFsbGJhY2tGb250RmFtaWx5KTogZGl0
dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRhYmxlVHlwZXNGb3JVUkwpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6d3Jp
dGFibGVUeXBlc0ZvckltYWdlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwQXR0YWNo
bWVudENoYXJhY3RlcnMpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Ro
cmVhZENoZWNrLm1tOgorICAgICAgICAoV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbik6IGRp
dHRvCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcik6IGRpdHRvCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpnZXRTdHJlYW1Gb3JtRGF0YU1hcCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpn
ZXRTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCk6IGRpdHRvCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6
aXNKYXBhbmVzZSk6IGRpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6IGRpdHRvCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291
bnRlck1hcHMpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxC
b3gpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dCk6IGRpdHRvCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSk6IGRpdHRvCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnN5c3RlbUZvbnQpOiBkaXR0bworICAgICAgICAqIHJlbmRlcmluZy9iaWRp
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92
ZXJmbG93KTogZGl0dG8KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25z
KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVn
aW9ucyk6IGRpdHRvCisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxTdG9yYWdlTWFwKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OnJvdGF0ZU1vZGUpOiBkaXR0bworICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNN
b2RlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmF0dHJp
YnV0ZVR5cGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBZGRpdGl2ZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
Ojppc0FjY3VtdWxhdGVkKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UpOiBkaXR0bworICAgICAg
ICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmNvbnRlbnRTY3JpcHRUeXBlKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUpOiBkaXR0bworICAgICAgICAqIHN2Zy9TVkdTdHlsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOiBkaXR0bworICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IGRpdHRvCisgICAg
ICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogZGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NNSUxFbGVtZW50OjpmaWxsKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVt
ZW50OjpyZXBlYXRDb3VudCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZCk6IGRpdHRvCisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaWVudE1hcCk6
IGRpdHRvCisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KTogZGl0dG8KKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmxpZ2h0UmVz
dWx0Q2FjaGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aXNTYWZlUmVxdWVzdEhlYWRlcik6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjppc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVy
V2hpdGVsaXN0KTogZGl0dG8KKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQp
OiBkaXR0bworICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6aXNBeGlzTmFtZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNO
b2RlVHlwZU5hbWUpOiBkaXR0bworICAgICAgICAqIHhtbC9YUGF0aFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoOjpWYWx1ZTo6dG9Ob2RlU2V0KTogZGl0dG8KKwogMjAwOC0xMS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkKiBjb2xsZWN0KHZvaWQq
KQogCiBHQ0NvbnRyb2xsZXImIGdjQ29udHJvbGxlcigpCiB7Ci0gICAgc3RhdGljIEdDQ29udHJv
bGxlciBzdGF0aWNHQ0NvbnRyb2xsZXI7CisgICAgc3RhdGljIEdDQ29udHJvbGxlciYgc3RhdGlj
R0NDb250cm9sbGVyID0gKm5ldyBHQ0NvbnRyb2xsZXI7CiAgICAgcmV0dXJuIHN0YXRpY0dDQ29u
dHJvbGxlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
V3JhcHBlcnMoY29uc3QgCiBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiYgd3JhcHBlclNldCgp
CiB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgc3RhdGljIFRocmVhZFNwZWNpZmljPEhhc2hT
ZXQ8RE9NT2JqZWN0Kj4gPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpYzxIYXNoU2V0PERPTU9iamVjdCo+ID4mIHN0YXRpY1dyYXBwZXJTZXQgPSAqbmV3IFRocmVh
ZFNwZWNpZmljPEhhc2hTZXQ8RE9NT2JqZWN0Kj4gPjsKICAgICByZXR1cm4gKnN0YXRpY1dyYXBw
ZXJTZXQ7CiAjZWxzZQotICAgIHN0YXRpYyBIYXNoU2V0PERPTU9iamVjdCo+IHN0YXRpY1dyYXBw
ZXJTZXQ7CisgICAgc3RhdGljIEhhc2hTZXQ8RE9NT2JqZWN0Kj4mIHN0YXRpY1dyYXBwZXJTZXQg
PSAqbmV3IEhhc2hTZXQ8RE9NT2JqZWN0Kj47CiAgICAgcmV0dXJuIHN0YXRpY1dyYXBwZXJTZXQ7
CiAjZW5kaWYKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RX
cmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVk
T2JqZWN0V3JhcHBlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHR5cGVkZWYgSGFzaE1hcDxKU0dsb2JhbE9iamVjdCosIFdyYXBwZXIKIAogc3RhdGlj
IEdsb2JhbE9iamVjdFdyYXBwZXJNYXAmIHdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgR2xvYmFs
T2JqZWN0V3JhcHBlck1hcCBtYXA7CisgICAgc3RhdGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAm
IG1hcCA9ICpuZXcgR2xvYmFsT2JqZWN0V3JhcHBlck1hcDsKICAgICByZXR1cm4gbWFwOwogfQog
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tX
cmFwcGVyLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5z
cGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCBKU0luc3BlY3RvckNhCiAKIHN0YXRpYyBXcmFw
cGVyTWFwJiB3cmFwcGVycygpCiB7Ci0gICAgc3RhdGljIFdyYXBwZXJNYXAgbWFwOworICAgIHN0
YXRpYyBXcmFwcGVyTWFwJiBtYXAgPSAqbmV3IFdyYXBwZXJNYXA7CiAgICAgcmV0dXJuIG1hcDsK
IH0KIApJbmRleDogV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgdHlwZWRlZiBIYXNoU2V0PFJvb3RPYmplY3QqPiBSb290T2JqZWN0UwogCiBzdGF0aWMg
Um9vdE9iamVjdFNldCogcm9vdE9iamVjdFNldCgpCiB7Ci0gICAgc3RhdGljIFJvb3RPYmplY3RT
ZXQgc3RhdGljUm9vdE9iamVjdFNldDsKKyAgICBzdGF0aWMgUm9vdE9iamVjdFNldCYgc3RhdGlj
Um9vdE9iamVjdFNldCA9ICpuZXcgUm9vdE9iamVjdFNldDsKICAgICByZXR1cm4gJnN0YXRpY1Jv
b3RPYmplY3RTZXQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcgQEAgU3Ry
aW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdgogewogICAgIGVjID0gMDsKIAot
ICAgIHN0YXRpYyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD4gc2hvcnRoYW5kTWFwOwor
ICAgIHN0YXRpYyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD4mIHNob3J0aGFuZE1hcCA9
ICpuZXcgSGFzaE1hcDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+OwogICAgIGlmIChzaG9ydGhhbmRN
YXAuaXNFbXB0eSgpKQogICAgICAgICBpbml0U2hvcnRoYW5kTWFwKHNob3J0aGFuZE1hcCk7CiAK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsNyAr
Njg2LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAg
ICAgICAgLy8gRklYTUU6IEFkZCBsaXN0LXN0eWxlIGFuZCBzZXBhcmF0b3IKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19SRUNUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIHJlY3RQYXJlbigicmVjdCgiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHJlY3RQYXJlbiA9ICpuZXcgU3RyaW5nKCJyZWN0KCIpOwogCiAgICAgICAgICAgICBS
ZWN0KiByZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7CiAgICAgICAgICAgICBWZWN0b3I8VUNoYXI+
IHJlc3VsdDsKQEAgLTcwOSw5ICs3MDksOSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAg
ICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyBjb21tYVNwYWNlKCIsICIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyByZ2JQYXJlbigicmdiKCIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyByZ2Jh
UGFyZW4oInJnYmEoIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBjb21tYVNw
YWNlID0gKm5ldyBTdHJpbmcoIiwgIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiByZ2JQYXJlbiA9ICpuZXcgU3RyaW5nKCJyZ2IoIik7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiByZ2JhUGFyZW4gPSAqbmV3IFN0cmluZygicmdiYSgiKTsKIAogICAgICAgICAg
ICAgUkdCQTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgICAgIGlmICht
X3R5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3NSArNjIsNzUgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUo
KSBjbwogICAgIGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRv
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhY3Rp
dmUoImFjdGl2ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYWZ0ZXIoImFmdGVyIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBhbnlMaW5rKCItd2Via2l0LWFueS1saW5rIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBhdXRvZmlsbCgiLXdlYmtpdC1hdXRvZmlsbCIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgYmVmb3JlKCJiZWZvcmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGNoZWNrZWQoImNoZWNrZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZpbGVVcGxv
YWRCdXR0b24oIi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBkaXNhYmxlZCgiZGlzYWJsZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJl
YWRPbmx5KCJyZWFkLW9ubHkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJlYWRXcml0ZSgi
cmVhZC13cml0ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZHJhZygiLXdlYmtpdC1kcmFn
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFnQWxpYXMoIi1raHRtbC1kcmFnIik7IC8v
IHdhcyBkb2N1bWVudGVkIHdpdGggdGhpcyBuYW1lIGluIEFwcGxlIGRvY3VtZW50YXRpb24sIHNv
IGtlZXAgYW4gYWxpYXMKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVtcHR5KCJlbXB0eSIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW5hYmxlZCgiZW5hYmxlZCIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgZmlyc3RDaGlsZCgiZmlyc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGZpcnN0TGV0dGVyKCJmaXJzdC1sZXR0ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGZpcnN0TGluZSgiZmlyc3QtbGluZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmly
c3RPZlR5cGUoImZpcnN0LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZ1bGxQ
YWdlTWVkaWEoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBudGhDaGlsZCgibnRoLWNoaWxkKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRo
T2ZUeXBlKCJudGgtb2YtdHlwZSgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50aExhc3RD
aGlsZCgibnRoLWxhc3QtY2hpbGQoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBudGhMYXN0
T2ZUeXBlKCJudGgtbGFzdC1vZi10eXBlKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZm9j
dXMoImZvY3VzIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBob3ZlcigiaG92ZXIiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGluZGV0ZXJtaW5hdGUoImluZGV0ZXJtaW5hdGUiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGlucHV0UGxhY2Vob2xkZXIoIi13ZWJraXQtaW5wdXQtcGxh
Y2Vob2xkZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxhc3RDaGlsZCgibGFzdC1jaGls
ZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdE9mVHlwZSgibGFzdC1vZi10eXBlIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsaW5rKCJsaW5rIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBsYW5nKCJsYW5nKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250
cm9sc1BhbmVsKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzTXV0ZUJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1tdXRlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1Bs
YXlCdXR0b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSgiLXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lLWRpc3BsYXkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29u
dHJvbHNUaW1lbGluZSgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1NlZWtCYWNrQnV0dG9uKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1z
ZWVrLWZvcndhcmQtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRy
b2xzRnVsbHNjcmVlbkJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm90U3RyKCJub3QoIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBvbmx5Q2hpbGQoIm9ubHktY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIG9ubHlPZlR5cGUoIm9ubHktb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgcmVzaXplcigiLXdlYmtpdC1yZXNpemVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyByb290KCJyb290Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXIoIi13ZWJr
aXQtc2Nyb2xsYmFyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJCdXR0b24o
Ii13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Ny
b2xsYmFyQ29ybmVyKCItd2Via2l0LXNjcm9sbGJhci1jb3JuZXIiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHNjcm9sbGJhclRodW1iKCItd2Via2l0LXNjcm9sbGJhci10aHVtYiIpOwotICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyVHJhY2soIi13ZWJraXQtc2Nyb2xsYmFyLXRy
YWNrIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJUcmFja1BpZWNlKCItd2Vi
a2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Vh
cmNoQ2FuY2VsQnV0dG9uKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBzZWFyY2hEZWNvcmF0aW9uKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0
aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbigi
LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBzZWFyY2hSZXN1bHRzQnV0dG9uKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VsZWN0aW9uKCJzZWxlY3Rpb24iKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIHNsaWRlclRodW1iKCItd2Via2l0LXNsaWRlci10aHVtYiIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGFyZ2V0KCJ0YXJnZXQiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHZpc2l0ZWQoInZpc2l0ZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHdp
bmRvd0luYWN0aXZlKCJ3aW5kb3ctaW5hY3RpdmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGRlY3JlbWVudCgiZGVjcmVtZW50Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBpbmNyZW1l
bnQoImluY3JlbWVudCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc3RhcnQoInN0YXJ0Iik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBlbmQoImVuZCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgaG9yaXpvbnRhbCgiaG9yaXpvbnRhbCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
dmVydGljYWwoInZlcnRpY2FsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkb3VibGVCdXR0
b24oImRvdWJsZS1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNpbmdsZUJ1dHRv
bigic2luZ2xlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm9CdXR0b24oIm5v
LWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY29ybmVyUHJlc2VudCgiY29ybmVy
LXByZXNlbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBhY3RpdmUgPSAqbmV3IEF0b21p
Y1N0cmluZygiYWN0aXZlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYWZ0ZXIgPSAqbmV3
IEF0b21pY1N0cmluZygiYWZ0ZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBhbnlMaW5r
ID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtYW55LWxpbmsiKTsKKyAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBhdXRvZmlsbCA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWF1dG9maWxs
Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgYmVmb3JlID0gKm5ldyBBdG9taWNTdHJpbmco
ImJlZm9yZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNoZWNrZWQgPSAqbmV3IEF0b21p
Y1N0cmluZygiY2hlY2tlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpbGVVcGxvYWRC
dXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKTsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBkaXNhYmxlZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJk
aXNhYmxlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHJlYWRPbmx5ID0gKm5ldyBBdG9t
aWNTdHJpbmcoInJlYWQtb25seSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHJlYWRXcml0
ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJyZWFkLXdyaXRlIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgZHJhZyA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWRyYWciKTsKKyAgICBzdGF0
aWMgQXRvbWljU3RyaW5nJiBkcmFnQWxpYXMgPSAqbmV3IEF0b21pY1N0cmluZygiLWtodG1sLWRy
YWciKTsgLy8gd2FzIGRvY3VtZW50ZWQgd2l0aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1lbnRh
dGlvbiwgc28ga2VlcCBhbiBhbGlhcworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVtcHR5ID0g
Km5ldyBBdG9taWNTdHJpbmcoImVtcHR5Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZW5h
YmxlZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJlbmFibGVkIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgZmlyc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJmaXJzdC1jaGlsZCIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0TGV0dGVyID0gKm5ldyBBdG9taWNTdHJpbmcoImZp
cnN0LWxldHRlciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGZpcnN0TGluZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCJmaXJzdC1saW5lIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZmly
c3RPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygiZmlyc3Qtb2YtdHlwZSIpOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcmIGZ1bGxQYWdlTWVkaWEgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtp
dC1mdWxsLXBhZ2UtbWVkaWEiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBudGhDaGlsZCA9
ICpuZXcgQXRvbWljU3RyaW5nKCJudGgtY2hpbGQoIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgbnRoT2ZUeXBlID0gKm5ldyBBdG9taWNTdHJpbmcoIm50aC1vZi10eXBlKCIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIG50aExhc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJudGgt
bGFzdC1jaGlsZCgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBudGhMYXN0T2ZUeXBlID0g
Km5ldyBBdG9taWNTdHJpbmcoIm50aC1sYXN0LW9mLXR5cGUoIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgZm9jdXMgPSAqbmV3IEF0b21pY1N0cmluZygiZm9jdXMiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiBob3ZlciA9ICpuZXcgQXRvbWljU3RyaW5nKCJob3ZlciIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIGluZGV0ZXJtaW5hdGUgPSAqbmV3IEF0b21pY1N0cmluZygiaW5k
ZXRlcm1pbmF0ZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGlucHV0UGxhY2Vob2xkZXIg
PSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIGxhc3RDaGlsZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJsYXN0LWNo
aWxkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbGFzdE9mVHlwZSA9ICpuZXcgQXRvbWlj
U3RyaW5nKCJsYXN0LW9mLXR5cGUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsaW5rID0g
Km5ldyBBdG9taWNTdHJpbmcoImxpbmsiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsYW5n
ID0gKm5ldyBBdG9taWNTdHJpbmcoImxhbmcoIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYg
bWVkaWFDb250cm9sc1BhbmVsID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGFuZWwiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzTXV0
ZUJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1BsYXlCdXR0
b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRv
biIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSA9
ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNUaW1lbGluZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1NlZWtCYWNrQnV0dG9uID0gKm5ldyBBdG9t
aWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbiA9ICpu
ZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0
b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzRnVsbHNjcmVlbkJ1
dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbm90U3RyID0gKm5ldyBBdG9t
aWNTdHJpbmcoIm5vdCgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBvbmx5Q2hpbGQgPSAq
bmV3IEF0b21pY1N0cmluZygib25seS1jaGlsZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IG9ubHlPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygib25seS1vZi10eXBlIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgcmVzaXplciA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXJl
c2l6ZXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiByb290ID0gKm5ldyBBdG9taWNTdHJp
bmcoInJvb3QiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXIgPSAqbmV3IEF0
b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBzY3JvbGxiYXJCdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXIt
YnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyQ29ybmVyID0gKm5l
dyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIpOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcmIHNjcm9sbGJhclRodW1iID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQt
c2Nyb2xsYmFyLXRodW1iIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyVHJh
Y2sgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2siKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXJUcmFja1BpZWNlID0gKm5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgc2VhcmNoQ2FuY2VsQnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2Vh
cmNoLWNhbmNlbC1idXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hEZWNv
cmF0aW9uID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iKTsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbiA9ICpuZXcg
QXRvbWljU3RyaW5nKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBzZWFyY2hSZXN1bHRzQnV0dG9uID0gKm5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgc2VsZWN0aW9uID0gKm5ldyBBdG9taWNTdHJpbmcoInNlbGVjdGlvbiIpOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcmIHNsaWRlclRodW1iID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJr
aXQtc2xpZGVyLXRodW1iIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgdGFyZ2V0ID0gKm5l
dyBBdG9taWNTdHJpbmcoInRhcmdldCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHZpc2l0
ZWQgPSAqbmV3IEF0b21pY1N0cmluZygidmlzaXRlZCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcmIHdpbmRvd0luYWN0aXZlID0gKm5ldyBBdG9taWNTdHJpbmcoIndpbmRvdy1pbmFjdGl2ZSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGRlY3JlbWVudCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJkZWNyZW1lbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBpbmNyZW1lbnQgPSAqbmV3
IEF0b21pY1N0cmluZygiaW5jcmVtZW50Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc3Rh
cnQgPSAqbmV3IEF0b21pY1N0cmluZygic3RhcnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBlbmQgPSAqbmV3IEF0b21pY1N0cmluZygiZW5kIik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyYgaG9yaXpvbnRhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJob3Jpem9udGFsIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgdmVydGljYWwgPSAqbmV3IEF0b21pY1N0cmluZygidmVydGljYWwi
KTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBkb3VibGVCdXR0b24gPSAqbmV3IEF0b21pY1N0
cmluZygiZG91YmxlLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNpbmdsZUJ1
dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJzaW5nbGUtYnV0dG9uIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgbm9CdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygibm8tYnV0dG9uIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgY29ybmVyUHJlc2VudCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJjb3JuZXItcHJlc2VudCIpOwogCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVk
by1lbGVtZW50CiAgICAgYm9vbCBjb21wYXQgPSBmYWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBh
dGJpbGl0eSBtb2RlCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcyLDEzICszNzIsMTMgQEAgc3RhdGljIGJvb2wgZWxlbWVudENhblVzZVNpbXBsZURlZmF1
bHRTdAogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Igc3RhdGljU2NyZWVuRXZhbCgi
c2NyZWVuIik7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHN0YXRpY1Nj
cmVlbkV2YWwgPSAqbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiIpOwogICAgIHJldHVy
biBzdGF0aWNTY3JlZW5FdmFsOwogfQogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgcHJpbnRFdmFsKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBz
dGF0aWNQcmludEV2YWwoInByaW50Iik7CisgICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFs
dWF0b3ImIHN0YXRpY1ByaW50RXZhbCA9ICpuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigicHJpbnQi
KTsKICAgICByZXR1cm4gc3RhdGljUHJpbnRFdmFsOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9E
T01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRTdHJpbmcoSGFzaFNldDxTdHJpbmcsIENhCiBzdGF0aWMgYm9vbCBpc1NWRzEwRmVhdHVyZShj
b25zdCBTdHJpbmcgJmZlYXR1cmUpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gc3ZnRmVh
dHVyZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBzdmdG
ZWF0dXJlcyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAgICAgaWYg
KCFpbml0aWFsaXplZCkgewogI2lmIEVOQUJMRShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJ
R05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUikgJiYgRU5BQkxFKFNWR19GT05UUykKICAg
ICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC04OSw3ICs4OSw3IEBAIHN0
YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyAKIHN0YXRpYyBib29sIGlzU1ZH
MTFGZWF0dXJlKGNvbnN0IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdI
YXNoPiBzdmdGZWF0dXJlczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5n
SGFzaD4mIHN2Z0ZlYXR1cmVzID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PjsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3Qg
Y2xhaW0gdG8gaW1wbGVtZW50IGFueSBvZiB0aGUgU1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0
cwogICAgICAgICAvLyBsYWNrIG9mIEZvbnQgYW5kIEZpbHRlciBzdXBwb3J0LgpAQCAtMjc0LDcg
KzI3NCw3IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246OmlzWE1MTUlNRVR5cGUoY28KICAgICBp
ZiAobWltZVR5cGUgPT0gInRleHQveG1sIiB8fCBtaW1lVHlwZSA9PSAiYXBwbGljYXRpb24veG1s
IiB8fCBtaW1lVHlwZSA9PSAidGV4dC94c2wiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogdmFsaWRDaGFycyA9ICJbMC05YS16QS1aX1xcLSt+ISRcXF57fXwu
JSdgIyYqXSI7IC8vIHBlciBSRkNzOiAzMDIzLCAyMDQ1Ci0gICAgc3RhdGljIFJlZ3VsYXJFeHBy
ZXNzaW9uIHhtbFR5cGVSZWdFeHAoU3RyaW5nKCJeIikgKyB2YWxpZENoYXJzICsgIisvIiArIHZh
bGlkQ2hhcnMgKyAiK1xcK3htbCQiKTsKKyAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24mIHht
bFR5cGVSZWdFeHAgPSAqbmV3IFJlZ3VsYXJFeHByZXNzaW9uKFN0cmluZygiXiIpICsgdmFsaWRD
aGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIik7CiAgICAgcmV0dXJuIHhtbFR5
cGVSZWdFeHAubWF0Y2gobWltZVR5cGUpID4gLTE7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MTMsOSArNzEzLDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBh
cwogCiBib29sIERvY3VtZW50OjpoYXNQcmVmaXhOYW1lc3BhY2VNaXNtYXRjaChjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5z
TmFtZXNwYWNlVVJJKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnMoInhtbG5zIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyB4bWwoInhtbCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHht
bG5zTmFtZXNwYWNlVVJJID0gKm5ldyBBdG9taWNTdHJpbmcoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAveG1sbnMvIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbnMgPSAqbmV3
IEF0b21pY1N0cmluZygieG1sbnMiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB4
bWwgPSAqbmV3IEF0b21pY1N0cmluZygieG1sIik7CiAKICAgICAvLyBUaGVzZSBjaGVja3MgYXJl
IGZyb20gRE9NIENvcmUgTGV2ZWwgMiwgY3JlYXRlRWxlbWVudE5TCiAgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JFbE5TCkluZGV4
OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFNjcmlw
dEVsZW1lbnQ6OmhhbmRsZVNvdXJjZUF0dHJpYnV0CiAvLyBIZWxwZXIgZnVuY3Rpb24KIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IGxhbmd1
YWdlczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxhbmd1
YWdlcyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAgICAgaWYgKGxh
bmd1YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdCIp
OwogICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3
IEBAIGJvb2wgU3R5bGVDaGFuZ2U6OmN1cnJlbnRseUhhc1N0eWxlKGNvbnMKIAogc3RhdGljIFN0
cmluZyAmc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVT
cGFuQ2xhc3NTdHJpbmcgPSBBcHBsZVN0eWxlU3BhbkNsYXNzOworICAgIHN0YXRpYyBTdHJpbmcm
IHN0eWxlU3BhbkNsYXNzU3RyaW5nID0gKm5ldyBTdHJpbmcoQXBwbGVTdHlsZVNwYW5DbGFzcyk7
CiAgICAgcmV0dXJuIHN0eWxlU3BhbkNsYXNzU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgewogCiBTdHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmcoKQogewotICAgIHN0YXRpYyBT
dHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgY29udmVydGVk
U3BhY2VTdHJpbmcgPSAqbmV3IFN0cmluZzsKICAgICBpZiAoY29udmVydGVkU3BhY2VTdHJpbmcu
aXNOdWxsKCkpIHsKICAgICAgICAgY29udmVydGVkU3BhY2VTdHJpbmcgPSAiPHNwYW4gY2xhc3M9
XCIiOwogICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyArPSBBcHBsZUNvbnZlcnRlZFNwYWNl
OwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogc3RhdGljIFN0cmluZyBpbmRlbnRCbG9ja3F1b3RlU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMg
U3RyaW5nIHN0cmluZyA9ICJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiOworICAgIHN0YXRpYyBT
dHJpbmcmIHN0cmluZyA9ICpuZXcgU3RyaW5nKCJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiKTsK
ICAgICByZXR1cm4gc3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTQgKzg5
LDE0IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZShj
b25zdCBOb2RlICpub2RlKQogewotICAgIHN0YXRpYyBTdHJpbmcgaW50ZXJjaGFuZ2VOZXdsaW5l
Q2xhc3NTdHJpbmcoQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgIHN0YXRpYyBTdHJpbmcm
IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nID0gKm5ldyBTdHJpbmcoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpOwogICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcp
ICYmIAogICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KG5vZGUpLT5nZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZzsKIH0K
IAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbihjb25zdCBOb2Rl
ICpub2RlKQogewotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJp
bmcoQXBwbGVDb252ZXJ0ZWRTcGFjZSk7CisgICAgc3RhdGljIFN0cmluZyYgY29udmVydGVkU3Bh
Y2VTcGFuQ2xhc3NTdHJpbmcgPSAqbmV3IFN0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsKICAg
ICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIAogICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0g
Y29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDkgKzM2NCw5IEBAIGludCBtYXhEZWVwT2Zmc2V0KGNv
bnN0IE5vZGUgKm5vZGUpCiAKIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc3RhcnRJc1N0YXJ0T2ZQYXJhZ3JhcGgsIGJvb2wg
ZW5kSXNFbmRPZlBhcmFncmFwaCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHR3b1NwYWNlcygiICAi
KTsKLSAgICBzdGF0aWMgU3RyaW5nIG5ic3AoIlx4YTAiKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBh
dHRlcm4oIiBceGEwIik7CisgICAgc3RhdGljIFN0cmluZyYgdHdvU3BhY2VzID0gKm5ldyBTdHJp
bmcoIiAgIik7CisgICAgc3RhdGljIFN0cmluZyYgbmJzcCA9ICpuZXcgU3RyaW5nKCJceGEwIik7
CisgICAgc3RhdGljIFN0cmluZyYgcGF0dGVybiA9ICpuZXcgU3RyaW5nKCIgXHhhMCIpOwogCiAg
ICAgU3RyaW5nIHJlYmFsYW5jZWRTdHJpbmcgPSBzdHJpbmc7CiAKQEAgLTM5Myw3ICszOTMsNyBA
QCBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUgKm5vCiAKIGNvbnN0IFN0cmlu
ZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBub25CcmVh
a2luZ1NwYWNlU3RyaW5nID0gU3RyaW5nKCZub0JyZWFrU3BhY2UsIDEpOworICAgIHN0YXRpYyBT
dHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcgPSAqbmV3IFN0cmluZygmbm9CcmVha1NwYWNl
LCAxKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZzsKIH0KIApJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBdHRy
aWJ1dGVWYWx1ZShWZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0gYXR0ci5sZW5ndGgoKTsKICAg
ICB1bnNpZ25lZCBsYXN0Q29waWVkRnJvbSA9IDA7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGFtcEVudGl0eSgiJmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCIm
Z3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgcXVvdEVudGl0eSgiJnF1b3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyBuYnNwRW50aXR5KCImbmJzcDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBh
bXBFbnRpdHkgPSAqbmV3IFN0cmluZygiJmFtcDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBndEVudGl0eSA9ICpuZXcgU3RyaW5nKCImZ3Q7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgbHRFbnRpdHkgPSAqbmV3IFN0cmluZygiJmx0OyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcmIHF1b3RFbnRpdHkgPSAqbmV3IFN0cmluZygiJnF1b3Q7Iik7CisgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgbmJzcEVudGl0eSA9ICpuZXcgU3RyaW5nKCImbmJzcDsiKTsKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVj
aGFyc1tpXTsKQEAgLTE0MiwxMCArMTQyLDEwIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRD
b250ZW50KFZlY3RvcjwKICAgICB1bnNpZ25lZCBsZW4gPSByYW5nZS5zZWNvbmQ7CiAgICAgdW5z
aWduZWQgbGFzdENvcGllZEZyb20gPSAwOwogICAgIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
YW1wRW50aXR5KCImYW1wOyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZ3RFbnRpdHkoIiZn
dDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGx0RW50aXR5KCImbHQ7Iik7Ci0gICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBuYnNwRW50aXR5KCImbmJzcDsiKTsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBhbXBFbnRpdHkgPSAqbmV3IFN0cmluZygiJmFtcDsiKTsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBndEVudGl0eSA9ICpuZXcgU3RyaW5nKCImZ3Q7Iik7CisgICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgbHRFbnRpdHkgPSAqbmV3IFN0cmluZygiJmx0OyIpOworICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcmIG5ic3BFbnRpdHkgPSAqbmV3IFN0cmluZygiJm5ic3A7Iik7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVj
aGFyc1tpXTsKQEAgLTMxNiw4ICszMTYsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3Bh
Y2VFbGVtKGNvbnN0CiBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VBdHRyKGNvbnN0IEF0
dHJpYnV0ZSogYXR0ciwgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1w
bCo+JiBuYW1lc3BhY2VzKQogewogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0cmlidXRl
cyB0d2ljZQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNVUkkgPSAiaHR0cDov
L3d3dy53My5vcmcvMjAwMC94bWxucy8iOwotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1l
IHhtbG5zQXR0cihudWxsQXRvbSwgInhtbG5zIiwgeG1sbnNVUkkpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHhtbG5zVVJJID0gKm5ldyBBdG9taWNTdHJpbmcoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAveG1sbnMvIik7CisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHht
bG5zQXR0ciA9ICpuZXcgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgInhtbG5zIiwgeG1sbnNVUkkp
OwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0geG1sbnNBdHRyKSB7CiAgICAgICAgIG5hbWVzcGFj
ZXMuc2V0KGVtcHR5QXRvbS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVz
cGFjZShWZWN0b3I8VUNoYXIKICAgICBBdG9taWNTdHJpbmdJbXBsKiBmb3VuZE5TID0gbmFtZXNw
YWNlcy5nZXQocHJlKTsKICAgICBpZiAoZm91bmROUyAhPSBucy5pbXBsKCkpIHsKICAgICAgICAg
bmFtZXNwYWNlcy5zZXQocHJlLCBucy5pbXBsKCkpOwotICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIHhtbG5zKCJ4bWxucyIpOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB4bWxucyA9
ICpuZXcgU3RyaW5nKCJ4bWxucyIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIHhtbG5zKTsKICAgICAgICAgaWYgKCFwcmVmaXguaXNFbXB0eSgp
KSB7CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RhcnRNYXJrdXAoVmVj
dG9yPFVDaAogICAgICAgICAgICAgICAgIGlmIChjb252ZXJ0KQogICAgICAgICAgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwg
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLT5sZW5ndGgoKSA+IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVByZWZpeCgiIHN0eWxlPVwi
Iik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHN0eWxlUHJlZml4
ID0gKm5ldyBTdHJpbmcoIiBzdHlsZT1cIiIpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBzdHlsZVByZWZpeCk7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0
ZVZhbHVlKHJlc3VsdCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcIicpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIFN0
cmluZyBqb2luTWFya3Vwcyhjb25zdCBWZWN0b3I8U3RyaW5nPiAKIC8vIEZJWE1FOiBBdCBsZWFz
dCwgYW5ub3RhdGlvbiBhbmQgc3R5bGUgaW5mbyBzaG91bGQgcHJvYmFibHkgbm90IGJlIGluY2x1
ZGVkIGluIHJhbmdlLm1hcmt1cFN0cmluZygpCiBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJh
bmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdl
IGFubm90YXRlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcgPSBTdHJpbmcoIjxiciBjbGFzcz1c
IiIpICsgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgKyAiXCI+IjsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcgPSAqbmV3IFN0cmluZygiPGJyIGNsYXNz
PVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+Iik7CiAKICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm4gIiI7CkBAIC05MDUsMTQgKzkwNSwxNCBAQCBTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKHN0eWxlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8VUNo
YXI+IG9wZW5UYWc7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZGl2
U3R5bGUoIjxkaXYgc3R5bGU9XCIiKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgZGl2U3R5bGUgPSAqbmV3IFN0cmluZygiPGRpdiBzdHlsZT1cIiIpOwogICAgICAg
ICAgICAgICAgICAgICBhcHBlbmQob3BlblRhZywgZGl2U3R5bGUpOwogICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvcGVuVGFnLCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1
bWVudElzSFRNTCk7CiAgICAgICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCdcIicpOwog
ICAgICAgICAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwogICAgICAgICAgICAgICAg
ICAgICBwcmVNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKIAotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRpdkNsb3NlVGFnKCI8L2Rpdj4iKTsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGl2Q2xvc2VUYWcgPSAq
bmV3IFN0cmluZygiPC9kaXY+Iik7CiAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMuYXBwZW5k
KGRpdkNsb3NlVGFnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtOTI5LDggKzkyOSw4IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdl
LCAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxl
U3Bhbk9wZW4gPSBTdHJpbmcoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJc
IiBzdHlsZT1cIiIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVTcGFuQ2xvc2UoIjwv
c3Bhbj4iKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdHlsZVNwYW5PcGVuID0gKm5ldyBT
dHJpbmcoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIp
OworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHN0eWxlU3BhbkNsb3NlID0gKm5ldyBTdHJpbmco
Ijwvc3Bhbj4iKTsKICAgICAKICAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5
bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCiAgICAgTm9k
ZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5v
ZGUoKSA6IDA7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4
MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsMTUgKzU3LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1l
bnQ6OnQKIHsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIFNVQk1JVDogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0ID0gKm5ldyBBdG9t
aWNTdHJpbmcoInN1Ym1pdCIpOwogICAgICAgICAgICAgcmV0dXJuIHN1Ym1pdDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEJVVFRPTjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBidXR0b24oImJ1dHRvbiIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgYnV0dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOwogICAgICAgICAg
ICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJlc2V0KCJyZXNldCIpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmVzZXQgPSAqbmV3IEF0b21pY1N0cmlu
ZygicmVzZXQiKTsKICAgICAgICAgICAgIHJldHVybiByZXNldDsKICAgICAgICAgfQogICAgIH0K
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDgsNyArODA4LDcgQEAgYm9vbCBI
VE1MRWxlbWVudDo6Y2hpbGRBbGxvd2VkKE5vZGUgKm5ldwogLy8gVGhpcyB1bmZvcnR1bmF0ZSBm
dW5jdGlvbiBpcyBvbmx5IG5lZWRlZCB3aGVuIGNoZWNraW5nIGFnYWluc3QgdGhlIERURC4gIE90
aGVyIGxhbmd1YWdlcyAobGlrZSBTVkcpIHdvbid0IG5lZWQgdGhpcy4KIGJvb2wgSFRNTEVsZW1l
bnQ6OmlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKIHsK
LSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlzdDsKKyAgICBzdGF0
aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3IEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+OwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBz
aXplX3QgdGFnQ291bnQgPSAwOwogICAgICAgICBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogdGFn
cyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoJnRhZ0NvdW50KTsKQEAgLTgyMiw3ICs4MjIsNyBA
QCBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKGNvCiAvLyBuZWVkIHRvIGJl
IGluIHRoZXNlIHR3byBsaXN0cy4KIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBpbmxpbmVU
YWdMaXN0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlz
dDsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICB0YWdMaXN0LmFkZCh0dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICB0YWdMaXN0LmFkZChpVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC04ODEsNyArODgxLDcg
QEAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGlubGluZVRhZ0xpcwogCiBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiogYmxvY2tUYWdMaXN0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4gdGFnTGlzdDsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4mIHRhZ0xpc3QgPSAqbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAg
IGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICB0YWdMaXN0LmFkZChhZGRyZXNzVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGJsb2NrcXVvdGVUYWcu
bG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGJvb2wgSFRNTEZpZWxkU2V0RWxl
bWVudDo6aXNGb2N1c2FibGUoKSAKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRF
bGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGZp
ZWxkc2V0KCJmaWVsZHNldCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZpZWxk
c2V0ID0gKm5ldyBBdG9taWNTdHJpbmcoImZpZWxkc2V0Iik7CiAgICAgcmV0dXJuIGZpZWxkc2V0
OwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzczLDUzICszNzMsNTMgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50Ojp0
eQogICAgIC8vIG5lZWRzIHRvIGJlIGxvd2VyY2FzZSBhY2NvcmRpbmcgdG8gRE9NIHNwZWMKICAg
ICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQlVUVE9OOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGJ1dHRvbigiYnV0dG9uIik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBidXR0b24gPSAqbmV3IEF0b21pY1N0cmlu
ZygiYnV0dG9uIik7CiAgICAgICAgICAgICByZXR1cm4gYnV0dG9uOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ0hFQ0tCT1g6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgY2hlY2tib3goImNoZWNrYm94Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBjaGVja2JveCA9ICpuZXcgQXRvbWljU3RyaW5nKCJjaGVja2JveCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrYm94OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRklMRTogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWxlKCJmaWxlIik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWxlID0gKm5ldyBBdG9taWNTdHJp
bmcoImZpbGUiKTsKICAgICAgICAgICAgIHJldHVybiBmaWxlOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgSElEREVOOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGhp
ZGRlbigiaGlkZGVuIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBo
aWRkZW4gPSAqbmV3IEF0b21pY1N0cmluZygiaGlkZGVuIik7CiAgICAgICAgICAgICByZXR1cm4g
aGlkZGVuOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSU1BR0U6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaW1hZ2UoImltYWdlIik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJpbWFnZSIp
OwogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSVNJ
TkRFWDoKICAgICAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgICAgIGNhc2UgUEFTU1dP
UkQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcGFzc3dvcmQoInBh
c3N3b3JkIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwYXNzd29y
ZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJwYXNzd29yZCIpOwogICAgICAgICAgICAgcmV0dXJuIHBh
c3N3b3JkOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUkFESU86IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcmFkaW8oInJhZGlvIik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpbyA9ICpuZXcgQXRvbWljU3RyaW5nKCJyYWRpbyIp
OwogICAgICAgICAgICAgcmV0dXJuIHJhZGlvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUkFO
R0U6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcmFuZ2UoInJhbmdl
Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYW5nZSA9ICpuZXcg
QXRvbWljU3RyaW5nKCJyYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgcmVzZXQoInJlc2V0Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiByZXNldCA9ICpuZXcgQXRvbWljU3RyaW5nKCJyZXNldCIpOwogICAgICAgICAgICAg
cmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU0VBUkNIOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlYXJjaCgic2VhcmNoIik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzZWFyY2ggPSAqbmV3IEF0b21pY1N0cmlu
Zygic2VhcmNoIik7CiAgICAgICAgICAgICByZXR1cm4gc2VhcmNoOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IHN1Ym1pdCgic3VibWl0Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBzdWJtaXQgPSAqbmV3IEF0b21pY1N0cmluZygic3VibWl0Iik7CiAgICAgICAgICAgICByZXR1
cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVEVYVDogewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB0ZXh0KCJ0ZXh0Iik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0ID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQiKTsK
ICAgICAgICAgICAgIHJldHVybiB0ZXh0OwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgSFRN
TEtleWdlbkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KERvYwogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxLZXlnZW5FbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nIGtleWdlbigia2V5Z2VuIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYga2V5Z2VuID0gKm5ldyBBdG9taWNTdHJpbmcoImtleWdlbiIpOwogICAgIHJldHVybiBr
ZXlnZW47CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkocmV2aXNpb24g
MzgxMzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw3ICs1OCw3IEBAIFJlbmRlck9iamVjdCogSFRNTExlZ2VuZEVsZW1lbnQ6OmNy
ZWF0ZVIKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MTGVnZW5kRWxlbWVudDo6dHlwZSgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBsZWdlbmQoImxlZ2VuZCIpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGxlZ2VuZCA9ICpuZXcgQXRvbWljU3RyaW5n
KCJsZWdlbmQiKTsKICAgICByZXR1cm4gbGVnZW5kOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxP
cHRHcm91cEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBib29s
IEhUTUxPcHRHcm91cEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTE9wdEdyb3VwRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyBvcHRncm91cCgib3B0Z3JvdXAiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBvcHRncm91cCA9ICpuZXcgQXRvbWljU3RyaW5nKCJvcHRncm91cCIpOwogICAg
IHJldHVybiBvcHRncm91cDsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6
aXNGb2N1c2FibGUoKSBjbwogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRpb25FbGVtZW50
Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIG9wdGlvbigi
b3B0aW9uIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3B0aW9uID0gKm5ldyBB
dG9taWNTdHJpbmcoIm9wdGlvbiIpOwogICAgIHJldHVybiBvcHRpb247CiB9CiAKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzIsNyArODMyLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjpt
YXBDcmVhdGVFcnJvckNoZWNrKFRvawogUGFzc1JlZlB0cjxOb2RlPiBIVE1MUGFyc2VyOjpnZXRO
b2RlKFRva2VuKiB0KQogewogICAgIC8vIEluaXQgb3VyIGVycm9yIGhhbmRsaW5nIHRhYmxlLgot
ICAgIHN0YXRpYyBGdW5jdGlvbk1hcCBnRnVuY3Rpb25NYXA7CisgICAgc3RhdGljIEZ1bmN0aW9u
TWFwJiBnRnVuY3Rpb25NYXAgPSAqbmV3IEZ1bmN0aW9uTWFwOwogICAgIGlmIChnRnVuY3Rpb25N
YXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoYVRhZy5sb2NhbE5hbWUo
KS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRDcmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAg
Z0Z1bmN0aW9uTWFwLnNldChhZGRyZXNzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJz
ZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIEhU
TUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiogCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNI
ZWFkZXJUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiBoZWFkZXJUYWdzOworICAgIHN0YXRpYyBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiYgaGVhZGVyVGFncyA9ICpuZXcgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj47CiAgICAgaWYgKGhlYWRlclRhZ3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIGhlYWRlclRh
Z3MuYWRkKGgxVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIGhlYWRlclRhZ3MuYWRk
KGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC05ODYsNyArOTg2LDcgQEAgYm9vbCBIVE1M
UGFyc2VyOjppc0lubGluZShOb2RlKiBub2RlKSBjbwogCiBib29sIEhUTUxQYXJzZXI6OmlzUmVz
aWR1YWxTdHlsZVRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGlj
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHJlc2lkdWFsU3R5bGVUYWdzOworICAgIHN0YXRp
YyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgcmVzaWR1YWxTdHlsZVRhZ3MgPSAqbmV3IEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwogICAgIGlmIChyZXNpZHVhbFN0eWxlVGFncy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKGFUYWcubG9jYWxOYW1lKCku
aW1wbCgpKTsKICAgICAgICAgcmVzaWR1YWxTdHlsZVRhZ3MuYWRkKGZvbnRUYWcubG9jYWxOYW1l
KCkuaW1wbCgpKTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNSZXNp
ZHVhbFN0eWxlVGFnKGNvbnMKIAogYm9vbCBIVE1MUGFyc2VyOjppc0FmZmVjdGVkQnlSZXNpZHVh
bFN0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4gdW5hZmZlY3RlZFRhZ3M7CisgICAgc3RhdGljIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+JiB1bmFmZmVjdGVkVGFncyA9ICpuZXcgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj47CiAgICAgaWYgKHVuYWZmZWN0ZWRUYWdzLmlzRW1wdHkoKSkgewogICAgICAg
ICB1bmFmZmVjdGVkVGFncy5hZGQoYm9keVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICB1bmFmZmVjdGVkVGFncy5hZGQodGFibGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0
LDggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUoIFN0eQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxTZWxlY3RFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHNlbGVjdE9uZSgic2VsZWN0LW9uZSIpOwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdE11bHRpcGxlID0gKm5ldyBBdG9t
aWNTdHJpbmcoInNlbGVjdC1tdWx0aXBsZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHNlbGVjdE9uZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJzZWxlY3Qtb25lIik7CiAgICAgcmV0
dXJuIG1fbXVsdGlwbGUgPyBzZWxlY3RNdWx0aXBsZSA6IHNlbGVjdE9uZTsKIH0KIApJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1MjAsOCBA
QCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkCiB7CiAgICAgQ2VsbEJv
cmRlcnMgYm9yZGVycyA9IGNlbGxCb3JkZXJzKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIGNlbGxCb3JkZXJOYW1lc1tdID0geyAibm9uZSIsICJzb2xpZCIsICJpbnNldCIsICJz
b2xpZC1jb2xzIiwgInNvbGlkLXJvd3MiIH07Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjZWxs
Ym9yZGVyVmFsdWUgPSBjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyogY2VsbEJvcmRlck5hbWVzW10gPSB7IG5ldyBBdG9taWNTdHJpbmcoIm5v
bmUiKSwgbmV3IEF0b21pY1N0cmluZygic29saWQiKSwgbmV3IEF0b21pY1N0cmluZygiaW5zZXQi
KSwgbmV3IEF0b21pY1N0cmluZygic29saWQtY29scyIpLCBuZXcgQXRvbWljU3RyaW5nKCJzb2xp
ZC1yb3dzIikgfTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNlbGxib3JkZXJWYWx1ZSA9ICpj
ZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVy
QXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKICAgICBpZiAoIWRlY2wpIHsKICAgICAgICAgZGVjbCA9
IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8v
IFRoaXMgc2luZ2xlIHJlZiBwaW5zIHVzIGluIHRoZSB0YWJsZSB1bnRpbCB0aGUgZG9jdW1lbnQg
ZGllcy4KQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJl
ZENlbGxCb3JkCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBz
ZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbEJv
cmRlck5hbWVzW2JvcmRlcnNdLCBkZWNsKTsKKyAgICAgICAgc2V0TWFwcGVkQXR0cmlidXRlRGVj
bChlUGVyc2lzdGVudCwgY2VsbGJvcmRlckF0dHIsICpjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc10s
IGRlY2wpOwogICAgICAgICBkZWNsLT5zZXRQYXJlbnQoMCk7CiAgICAgICAgIGRlY2wtPnNldE5v
ZGUoMCk7CiAgICAgICAgIGRlY2wtPnNldE1hcHBlZFN0YXRlKGVQZXJzaXN0ZW50LCBjZWxsYm9y
ZGVyQXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGV4
dEFyZWFFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIHRleHRhcmVhKCJ0ZXh0YXJlYSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHRleHRhcmVhID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHRhcmVhIik7CiAgICAgcmV0dXJuIHRl
eHRhcmVhOwogfQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYyLDIwICs4NjIsMjAgQEAgc3RhdGljIEpT
VmFsdWVSZWYgcGxhdGZvcm0oSlNDb250ZXh0UmVmIAogewogI2lmIFBMQVRGT1JNKE1BQykKICNp
ZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0g
PSAibWFjLXRpZ2VyIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9ICpuZXcg
U3RyaW5nKCJtYWMtdGlnZXIiKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0
Zm9ybSA9ICJtYWMtbGVvcGFyZCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0g
PSAqbmV3IFN0cmluZygibWFjLWxlb3BhcmQiKTsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oV0lO
X09TKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAid2luZG93cyI7CisgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygid2luZG93cyIpOwog
I2VsaWYgUExBVEZPUk0oUVQpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJx
dCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygicXQi
KTsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3Jt
ID0gImd0ayI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmlu
ZygiZ3RrIik7CiAjZWxpZiBQTEFURk9STShXWCkKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBs
YXRmb3JtID0gInd4IjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9ICpuZXcg
U3RyaW5nKCJ3eCIpOwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtID0g
InVua25vd24iOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKm5ldyBTdHJp
bmcoInVua25vd24iKTsKICNlbmRpZgogCiAgICAgSlNWYWx1ZVJlZiBwbGF0Zm9ybVZhbHVlID0g
SlNWYWx1ZU1ha2VTdHJpbmcoY3R4LCBqc1N0cmluZ1JlZihwbGF0Zm9ybSkuZ2V0KCkpOwpJbmRl
eDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWRlZiBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6Okxpc3RlbmVyUwogCiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXImIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6c2hhcmVkKCkKIHsKLSAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2VydmVyIHNl
cnZlcjsKKyAgICBzdGF0aWMgSmF2YVNjcmlwdERlYnVnU2VydmVyJiBzZXJ2ZXIgPSAqbmV3IEph
dmFTY3JpcHREZWJ1Z1NlcnZlcjsKICAgICByZXR1cm4gc2VydmVyOwogfQogCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UHJvZmlsZSosIEpTT2JqZWN0Kj4gUHJvCiAK
IHN0YXRpYyBQcm9maWxlTWFwJiBwcm9maWxlQ2FjaGUoKQogeyAKLSAgICBzdGF0aWMgUHJvZmls
ZU1hcCBzdGF0aWNQcm9maWxlczsKKyAgICBzdGF0aWMgUHJvZmlsZU1hcCYgc3RhdGljUHJvZmls
ZXMgPSAqbmV3IFByb2ZpbGVNYXA7CiAgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOwogfQogCklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB0eXBlZGVmIEhhc2hNYXA8UHJvZmls
ZU5vZGUqLCBKU09iamVjdCo+CiAKIHN0YXRpYyBQcm9maWxlTm9kZU1hcCYgcHJvZmlsZU5vZGVD
YWNoZSgpCiB7IAotICAgIHN0YXRpYyBQcm9maWxlTm9kZU1hcCBzdGF0aWNQcm9maWxlTm9kZXM7
CisgICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwJiBzdGF0aWNQcm9maWxlTm9kZXMgPSAqbmV3IFBy
b2ZpbGVOb2RlTWFwOwogICAgIHJldHVybiBzdGF0aWNQcm9maWxlTm9kZXM7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjCiAKIHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzKCkKIHsKLSAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbG9jYWxTY2hlbWVzOworICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzID0gKm5ldyBIYXNo
U2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKIAogICAgIGlmIChsb2NhbFNjaGVtZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJ
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5TwogICAgIAogQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UmIGNhY2hlU3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlIHN0b3JhZ2U7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9y
YWdlID0gKm5ldyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKICAgICAKICAgICByZXR1cm4gc3Rv
cmFnZTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rv
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyAKIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRh
Q3JlYXRpb25GdW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4mIGFyY2hpdmVNSU1FVHlwZXMoKQog
ewotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBD
YXNlRm9sZGluZ0hhc2g+IG1pbWVUeXBlczsKKyAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJh
d0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiYgbWltZVR5cGVzID0gKm5l
dyBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hh
c2g+OwogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAgaWYg
KGluaXRpYWxpemVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg1MCw3ICs4NTAsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjpkYXRh
YmFzZVBhdGgoKSBjb25zCiAKIFN0cmluZyBJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZp
bGVuYW1lKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lID0g
IldlYnBhZ2VJY29ucy5kYiI7CisgICAgc3RhdGljIFN0cmluZyYgZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUgPSAqbmV3IFN0cmluZygiV2VicGFnZUljb25zLmRiIik7CiAgICAgcmV0dXJuIGRlZmF1
bHREYXRhYmFzZUZpbGVuYW1lLmNvcHkoKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIo
KQogICAgIAogRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXJEcmFnU3RhdGUmIEV2ZW50SGFuZGxl
cjo6ZHJhZ1N0YXRlKCkKIHsKLSAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlIHN0YXRl
OworICAgIHN0YXRpYyBFdmVudEhhbmRsZXJEcmFnU3RhdGUmIHN0YXRlID0gKm5ldyBFdmVudEhh
bmRsZXJEcmFnU3RhdGU7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogICAgIApJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIGNyZWF0ZVJlZ0V4
cEZvCiAgICAgLy8gUkVWSUVXLSB2ZXJzaW9uIG9mIHRoaXMgY2FsbCBpbiBGcmFtZU1hYy5tbSBj
YWNoZXMgYmFzZWQgb24gdGhlIE5TQXJyYXkgcHRycyBiZWluZwogICAgIC8vIHRoZSBzYW1lIGFj
cm9zcyBjYWxscy4gIFdlIGNhbid0IGRvIHRoYXQuCiAKLSAgICBzdGF0aWMgUmVndWxhckV4cHJl
c3Npb24gd29yZFJlZ0V4cCA9IFJlZ3VsYXJFeHByZXNzaW9uKCJcXHciKTsKKyAgICBzdGF0aWMg
UmVndWxhckV4cHJlc3Npb24mIHdvcmRSZWdFeHAgPSAqbmV3IFJlZ3VsYXJFeHByZXNzaW9uKCJc
XHciKTsKICAgICBTdHJpbmcgcGF0dGVybigiKCIpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJl
bHMgPSBsYWJlbHMuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGludCBpOwpAQCAtMTAxMSw3ICsxMDEx
LDcgQEAgdm9pZCBGcmFtZTo6cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUVsZW1lbgogI2lmbmRlZiBO
REVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4mIGtlZXBBbGl2ZVNldCgpCiB7Ci0gICAgc3Rh
dGljIEhhc2hTZXQ8RnJhbWUqPiBzdGF0aWNLZWVwQWxpdmVTZXQ7CisgICAgc3RhdGljIEhhc2hT
ZXQ8RnJhbWUqPiYgc3RhdGljS2VlcEFsaXZlU2V0ID0gKm5ldyBIYXNoU2V0PEZyYW1lKj47CiAg
ICAgcmV0dXJuIHN0YXRpY0tlZXBBbGl2ZVNldDsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gMzgxMzUpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIFBhZ2U6OnNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcmIG5hCiAK
IGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBOYW1lKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgU3Ry
aW5nIG51bGxTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgbnVsbFN0cmluZyA9ICpuZXcgU3Ry
aW5nOwogICAgIHJldHVybiBtX2dyb3VwID8gbV9ncm91cC0+bmFtZSgpIDogbnVsbFN0cmluZzsK
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgc3RhdGljIGJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVucwogICAgIGlmIChw
cm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IGRlZmF1bHRQb3J0czsKKyAgICBzdGF0aWMgSGFzaE1h
cDxTdHJpbmcsIHVuc2lnbmVkPiYgZGVmYXVsdFBvcnRzID0gKm5ldyBIYXNoTWFwPFN0cmluZywg
dW5zaWduZWQ+OwogICAgIGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGRl
ZmF1bHRQb3J0cy5zZXQoImh0dHAiLCA4MCk7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0
dHBzIiwgNDQzKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBTZWN1cml0eU9yaWdpCiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlm
aWVyKCkgY29uc3QgCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJp
bmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CisgICAgc3RhdGljIFN0cmluZyYgc2VwYXJhdG9y
U3RyaW5nID0gKm5ldyBTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CiAgICAgcmV0dXJu
IG1fcHJvdG9jb2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2hvc3QgKyBzZXBhcmF0b3JTdHJpbmcg
KyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOyAKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9G
cmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCShy
ZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDggKzg4LDggQEAgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVs
cyhOU0FycgogICAgIC8vIHRoYXQgdGhlIGFwcCB3aWxsIHVzZSBpcyBlcXVhbCB0byB0aGUgbnVt
YmVyIG9mIGxvY2FsZXMgaXMgdXNlZCBpbiBzZWFyY2hpbmcuCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCByZWdFeHBDYWNoZVNpemUgPSA0OwogICAgIHN0YXRpYyBOU011dGFibGVBcnJh
eSogcmVnRXhwTGFiZWxzID0gbmlsOwotICAgIHN0YXRpYyBWZWN0b3I8UmVndWxhckV4cHJlc3Np
b24qPiByZWdFeHBzOwotICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0g
UmVndWxhckV4cHJlc3Npb24oIlxcdyIpOworICAgIHN0YXRpYyBWZWN0b3I8UmVndWxhckV4cHJl
c3Npb24qPiYgcmVnRXhwcyA9ICpuZXcgVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj47CisgICAg
c3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uJiB3b3JkUmVnRXhwID0gKm5ldyBSZWd1bGFyRXhwcmVz
c2lvbigiXFx3Iik7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICgh
cmVnRXhwTGFiZWxzKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjMsNyArMTU2Myw3IEBA
IFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYKIAogY29uc3QgS1VSTCYg
YmxhbmtVUkwoKQogewotICAgIHN0YXRpYyBLVVJMIHN0YXRpY0JsYW5rVVJMKCJhYm91dDpibGFu
ayIpOworICAgIHN0YXRpYyBLVVJMJiBzdGF0aWNCbGFua1VSTCA9ICpuZXcgS1VSTCgiYWJvdXQ6
YmxhbmsiKTsKICAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
MjEgKzEyNCwyNCBAQCBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlKiBnRm9udFBsYXRmCiBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICAvLyBBbGlhcyBDb3VyaWVyIDwtPiBDb3VyaWVy
IE5ldwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY291cmllcigiQ291cmllciIpLCBjb3VyaWVy
TmV3KCJDb3VyaWVyIE5ldyIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNvdXJpZXIgPSAq
bmV3IEF0b21pY1N0cmluZygiQ291cmllciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGNv
dXJpZXJOZXcgPSAqbmV3IEF0b21pY1N0cmluZygiQ291cmllciBOZXciKTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgY291cmllcikpCiAgICAgICAgIHJldHVybiBjb3Vy
aWVyTmV3OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBjb3VyaWVyTmV3
KSkKICAgICAgICAgcmV0dXJuIGNvdXJpZXI7CiAKICAgICAvLyBBbGlhcyBUaW1lcyBhbmQgVGlt
ZXMgTmV3IFJvbWFuLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXMoIlRpbWVzIiksIHRp
bWVzTmV3Um9tYW4oIlRpbWVzIE5ldyBSb21hbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcm
IHRpbWVzID0gKm5ldyBBdG9taWNTdHJpbmcoIlRpbWVzIik7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyYgdGltZXNOZXdSb21hbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJUaW1lcyBOZXcgUm9tYW4i
KTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgdGltZXMpKQogICAgICAg
ICByZXR1cm4gdGltZXNOZXdSb21hbjsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5
TmFtZSwgdGltZXNOZXdSb21hbikpCiAgICAgICAgIHJldHVybiB0aW1lczsKICAgICAKICAgICAv
LyBBbGlhcyBBcmlhbCBhbmQgSGVsdmV0aWNhCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhcmlh
bCgiQXJpYWwiKSwgaGVsdmV0aWNhKCJIZWx2ZXRpY2EiKTsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nJiBhcmlhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJBcmlhbCIpOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcmIGhlbHZldGljYSA9ICpuZXcgQXRvbWljU3RyaW5nKCJIZWx2ZXRpY2EiKTsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgYXJpYWwpKQogICAgICAgICByZXR1
cm4gaGVsdmV0aWNhOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBoZWx2
ZXRpY2EpKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0J
KHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDI1ICs1OSwyNSBAQCBOU0NvbG9yKiBuc0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgY2FzZSAwOiB7
CiAgICAgICAgICAgICAvLyBOZWVkIHRoaXMgdG8gYXZvaWQgcmV0dXJuaW5nIG5pbCBiZWNhdXNl
IGNhY2hlZFJHQkFWYWx1ZXMgd2lsbCBkZWZhdWx0IHRvIDAuCi0gICAgICAgICAgICBzdGF0aWMg
UmV0YWluUHRyPE5TQ29sb3I+IGNsZWFyQ29sb3IgPSBbTlNDb2xvciBjbGVhckNvbG9yXTsKLSAg
ICAgICAgICAgIHJldHVybiBjbGVhckNvbG9yLmdldCgpOworICAgICAgICAgICAgc3RhdGljIE5T
Q29sb3IgKmNsZWFyQ29sb3IgPSBbTlNDb2xvciBjbGVhckNvbG9yXTsKKyAgICAgICAgICAgIHJl
dHVybiBjbGVhckNvbG9yOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGJsYWNrQ29sb3IgPSBbTlND
b2xvciBibGFja0NvbG9yXTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yLmdldCgpOwor
ICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSBbTlNDb2xvciBibGFja0Nv
bG9yXTsKKyAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ29sb3I6OndoaXRlOiB7Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29s
b3I+IHdoaXRlQ29sb3IgPSBbTlNDb2xvciB3aGl0ZUNvbG9yXTsKLSAgICAgICAgICAgIHJldHVy
biB3aGl0ZUNvbG9yLmdldCgpOworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IgKndoaXRlQ29s
b3IgPSBbTlNDb2xvciB3aGl0ZUNvbG9yXTsKKyAgICAgICAgICAgIHJldHVybiB3aGl0ZUNvbG9y
OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgIGNvbnN0IGludCBj
YWNoZVNpemUgPSAzMjsKICAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBjYWNoZWRSR0JBVmFs
dWVzW2NhY2hlU2l6ZV07Ci0gICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGNh
Y2hlZENvbG9yc1tjYWNoZVNpemVdOworICAgICAgICAgICAgc3RhdGljIE5TQ29sb3IqIGNhY2hl
ZENvbG9yc1tjYWNoZVNpemVdOwogCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBj
YWNoZVNpemU7ICsraSkKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUkdCQVZhbHVlc1tpXSA9
PSBjKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ldLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkQ29sb3JzW2ldOwogCiAjaWZkZWYgQ09M
T1JNQVRDSF9FVkVSWVRISU5HCiAgICAgICAgICAgICBOU0NvbG9yKiByZXN1bHQgPSBbTlNDb2xv
ciBjb2xvcldpdGhDYWxpYnJhdGVkUmVkOmNvbG9yLnJlZCgpIC8gMjU1LjBmCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCShyZXZpc2lvbiAz
ODEzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Z2V0U2ltaWxhckYKICAgICB3aGlsZSAoY3VyckZhbWlseSAmJiAhcGxhdGZvcm1EYXRh
KSB7CiAgICAgICAgIGlmIChjdXJyRmFtaWx5LT5mYW1pbHkoKS5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgc3RhdGljIFN0cmluZyBtYXRjaFdvcmRzWzNdID0geyBTdHJpbmcoIkFyYWJpYyIpLCBT
dHJpbmcoIlBhc2h0byIpLCBTdHJpbmcoIlVyZHUiKSB9OwotICAgICAgICAgICAgc3RhdGljIEF0
b21pY1N0cmluZyBnZWV6YVN0cigiR2VlemEgUHJvIik7CisgICAgICAgICAgICBzdGF0aWMgQXRv
bWljU3RyaW5nJiBnZWV6YVN0ciA9ICpuZXcgQXRvbWljU3RyaW5nKCJHZWV6YSBQcm8iKTsKICAg
ICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMyAmJiAhcGxhdGZvcm1EYXRhOyArK2opCiAg
ICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmNvbnRhaW5zKG1hdGNoV29y
ZHNbal0sIGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1EYXRhID0gZ2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBnZWV6YVN0cik7CkBA
IC0xNTMsOCArMTUzLDggQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFy
RgogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiB7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGx1Y2lkYUdyYW5kZVN0cigiTHVjaWRhIEdyYW5kZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcmIHRpbWVzU3RyID0gKm5ldyBBdG9taWNTdHJpbmcoIlRpbWVzIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgbHVjaWRhR3JhbmRlU3RyID0gKm5ldyBBdG9taWNTdHJpbmcoIkx1Y2lkYSBH
cmFuZGUiKTsKIAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93
IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCiAg
ICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2lu
ZyBhbnkgcHJlZnMuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0NvbnRleHRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtODcsMTEgKzg3LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3Nw
ZWwKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAvLyBDb25zdGFudHMgZm9yIHNwZWxs
aW5nIHBhdHRlcm4gY29sb3IKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IHNwZWxsaW5n
UGF0dGVybkNvbG9yID0gbmlsOworICAgIHN0YXRpYyBOU0NvbG9yICpzcGVsbGluZ1BhdHRlcm5D
b2xvciA9IG5pbDsKICAgICBzdGF0aWMgYm9vbCB1c2luZ0RvdEZvclNwZWxsaW5nID0gZmFsc2U7
CiAKICAgICAvLyBDb25zdGFudHMgZm9yIGdyYW1tYXIgcGF0dGVybiBjb2xvcgotICAgIHN0YXRp
YyBSZXRhaW5QdHI8TlNDb2xvcj4gZ3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKKyAgICBzdGF0
aWMgTlNDb2xvciAqZ3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKICAgICBzdGF0aWMgYm9vbCB1
c2luZ0RvdEZvckdyYW1tYXIgPSBmYWxzZTsKICAgICAKICAgICAvLyBUaGVzZSBhcmUgdGhlIHNh
bWUgZm9yIG1pc3NwZWxsaW5nIG9yIGJhZCBncmFtbWFyCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsCiAgICAgTlNDb2xvciAqcGF0
dGVybkNvbG9yOwogICAgIGlmIChncmFtbWFyKSB7CiAgICAgICAgIHVzaW5nRG90ID0gdXNpbmdE
b3RGb3JHcmFtbWFyOwotICAgICAgICBwYXR0ZXJuQ29sb3IgPSBncmFtbWFyUGF0dGVybkNvbG9y
LmdldCgpOworICAgICAgICBwYXR0ZXJuQ29sb3IgPSBncmFtbWFyUGF0dGVybkNvbG9yOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHVzaW5nRG90ID0gdXNpbmdEb3RGb3JTcGVsbGluZzsKLSAgICAg
ICAgcGF0dGVybkNvbG9yID0gc3BlbGxpbmdQYXR0ZXJuQ29sb3IuZ2V0KCk7CisgICAgICAgIHBh
dHRlcm5Db2xvciA9IHNwZWxsaW5nUGF0dGVybkNvbG9yOwogICAgIH0KIAogICAgIC8vIE1ha2Ug
c3VyZSB0byBkcmF3IG9ubHkgY29tcGxldGUgZG90cy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCShyZXZpc2lvbiAzODEz
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMCArOTIsMTAgQEAgYm9vbCBpbml0Rm9udERhdGEoU2lt
cGxlRm9udERhdGEqIGZvbnREYQogCiBzdGF0aWMgTlNTdHJpbmcgKndlYkZhbGxiYWNrRm9udEZh
bWlseSh2b2lkKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHdlYkZhbGxiYWNr
Rm9udEZhbWlseSA9IG5pbDsKKyAgICBzdGF0aWMgTlNTdHJpbmcqIHdlYkZhbGxiYWNrRm9udEZh
bWlseSA9IG5pbDsKICAgICBpZiAoIXdlYkZhbGxiYWNrRm9udEZhbWlseSkKICAgICAgICAgd2Vi
RmFsbGJhY2tGb250RmFtaWx5ID0gW1tOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxNi4wZl0gZmFt
aWx5TmFtZV07Ci0gICAgcmV0dXJuIHdlYkZhbGxiYWNrRm9udEZhbWlseS5nZXQoKTsKKyAgICBy
ZXR1cm4gd2ViRmFsbGJhY2tGb250RmFtaWx5OwogfQogCiAjaWYgIUVSUk9SX0RJU0FCTEVECklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDM4MTM1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTlNBcnJheSogc2VsZWN0aW9uUGFzdGVib2FyZFR5cGVz
CiAKIHN0YXRpYyBOU0FycmF5KiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKLSAgICBzdGF0aWMg
UmV0YWluUHRyPE5TQXJyYXk+IHR5cGVzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5ICp0eXBl
cyA9IG5pbDsKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5cGVzID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6CiAgICAgICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2Fy
ZFR5cGUsCkBAIC04OCwxOCArODgsMTggQEAgc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNG
b3JVUkwoKQogICAgICAgICAgICAgTlNTdHJpbmdQYm9hcmRUeXBlLAogICAgICAgICAgICAgbmls
XTsKICAgICB9Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAgIHJldHVybiB0eXBlczsKIH0K
IAogc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7Ci0gICAgc3RhdGlj
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBuaWw7CisgICAgc3RhdGljIE5TTXV0
YWJsZUFycmF5ICp0eXBlcyA9IG5pbDsKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5cGVz
ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TVElGRlBib2FyZFR5
cGUsIG5pbF07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRh
YmxlVHlwZXNGb3JVUkwoKV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNSVEZE
UGJvYXJkVHlwZV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRhYmxl
VHlwZXNGb3JVUkwoKV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6TlNSVEZEUGJvYXJkVHlw
ZV07CiAgICAgfQotICAgIHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9
CiAKIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkgCkBAIC0xMjEs
MTIgKzEyMSwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHN0YXRpYyBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnN0cmlwQXR0YWNobWVudENoYXJhY3RlcnMoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcpCiB7CiAgICAgY29uc3QgdW5pY2hhciBhdHRhY2htZW50Q2hhcmFjdGVyID0gTlNBdHRh
Y2htZW50Q2hhcmFjdGVyOwotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGF0dGFjaG1l
bnRDaGFyYWN0ZXJTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFj
aG1lbnRDaGFyYWN0ZXIgbGVuZ3RoOjFdOworICAgIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVu
dENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNo
bWVudENoYXJhY3RlciBsZW5ndGg6MV07CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAq
cmVzdWx0ID0gW1tzdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBOU1Jhbmdl
IGF0dGFjaG1lbnRSYW5nZSA9IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2ht
ZW50Q2hhcmFjdGVyU3RyaW5nLmdldCgpXTsKKyAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZSA9
IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5n
XTsKICAgICB3aGlsZSAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsK
ICAgICAgICAgW3Jlc3VsdCByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6YXR0YWNobWVudFJhbmdl
IHdpdGhTdHJpbmc6QCIiXTsKLSAgICAgICAgYXR0YWNobWVudFJhbmdlID0gW1tyZXN1bHQgc3Ry
aW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyYWN0ZXJTdHJpbmcuZ2V0KCldOworICAg
ICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW3Jlc3VsdCBzdHJpbmddIHJhbmdlT2ZTdHJpbmc6YXR0
YWNobWVudENoYXJhY3RlclN0cmluZ107CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
MzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9s
bGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAgIHN0YXRpYyBT
Y3JvbGxiYXJUaGVtZU1hYyB0aGVtZTsKKyAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVNYWMmIHRo
ZW1lID0gKm5ldyBTY3JvbGxiYXJUaGVtZU1hYzsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBlbnVtIHsKIAogVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQogewotICAgIHN0YXRpYyBUaGVtZU1h
YyB0aGVtZU1hYzsKKyAgICBzdGF0aWMgVGhlbWVNYWMmIHRoZW1lTWFjID0gKm5ldyBUaGVtZU1h
YzsKICAgICByZXR1cm4gJnRoZW1lTWFjOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaHJlYWRDaGVjay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJl
YWRDaGVjay5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJl
YWRDaGVjay5tbQkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCB2b2lkIHJlcG9ydFRo
cmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmCiB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9s
YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb24pCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBsb2dnZWRGdW5jdGlvbnM7CisgICAgc3Rh
dGljIEhhc2hTZXQ8U3RyaW5nPiYgbG9nZ2VkRnVuY3Rpb25zID0gKm5ldyBIYXNoU2V0PFN0cmlu
Zz47CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcikgewogICAgICAgICBjYXNl
IE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TmV0d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0
aWMgTmV0d29ya1N0YXRlTm90aWZpZXIgbmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgc3RhdGlj
IE5ldHdvcmtTdGF0ZU5vdGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmllciA9ICpuZXcgTmV0d29y
a1N0YXRlTm90aWZpZXI7CiAgICAgCiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyOwog
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3Ry
ZWFtTWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBS
ZWZQdHI8Rm9ybURhdGE+ID4gU3RyZWFtRm9ybURhdGFNYXA7CiBzdGF0aWMgU3RyZWFtRm9ybURh
dGFNYXAmIGdldFN0cmVhbUZvcm1EYXRhTWFwKCkKIHsKLSAgICBzdGF0aWMgU3RyZWFtRm9ybURh
dGFNYXAgc3RyZWFtRm9ybURhdGFNYXA7CisgICAgc3RhdGljIFN0cmVhbUZvcm1EYXRhTWFwJiBz
dHJlYW1Gb3JtRGF0YU1hcCA9ICpuZXcgU3RyZWFtRm9ybURhdGFNYXA7CiAgICAgcmV0dXJuIHN0
cmVhbUZvcm1EYXRhTWFwOwogfQogCiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+ID4gU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiBzdGF0aWMg
U3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAmIGdldFN0cmVhbVJlc291cmNlSGFuZGxlTWFwKCkKIHsK
LSAgICBzdGF0aWMgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAgc3RyZWFtUmVzb3VyY2VIYW5kbGVN
YXA7CisgICAgc3RhdGljIFN0cmVhbVJlc291cmNlSGFuZGxlTWFwJiBzdHJlYW1SZXNvdXJjZUhh
bmRsZU1hcCA9ICpuZXcgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiAgICAgcmV0dXJuIHN0cmVh
bVJlc291cmNlSGFuZGxlTWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAzODEzNSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoCiAgICAgICAgIC8vIGlzIHJldHVybmluZyBpbmNvcnJlY3QgTUlNRSB0eXBl
IGZvciBsb2NhbCAueGh0bWwgZmlsZXMpIHdoaWNoIGlzIG9ubHkgcmVxdWlyZWQgaW4gTGVvcGFy
ZC4KICAgICAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkgJiYgbV9taW1lVHlwZSA9PSAidGV4
dC9odG1sIikgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbV91cmwucGF0aCgp
OwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyB4aHRtbEV4dCgiLnhodG1sIik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB4aHRtbEV4dCA9ICpuZXcgU3RyaW5nKCIu
eGh0bWwiKTsKICAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKHhodG1sRXh0LCBmYWxzZSkp
CiAgICAgICAgICAgICAgICAgbV9taW1lVHlwZSA9ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwog
ICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkocmV2
aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgVGV4dEVuY29kaW5nOjppc0ph
cGFuZXNlKCkgY29uc3QKICAgICBpZiAobm9FeHRlbmRlZFRleHRFbmNvZGluZ05hbWVVc2VkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PGNvbnN0IGNoYXIq
PiBzZXQ7CisgICAgc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+JiBzZXQgPSAqbmV3IEhhc2hT
ZXQ8Y29uc3QgY2hhcio+OwogICAgIGlmIChzZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFkZEVu
Y29kaW5nTmFtZShzZXQsICJ4LW1hYy1qYXBhbmVzZSIpOwogICAgICAgICBhZGRFbmNvZGluZ05h
bWUoc2V0LCAiY3A5MzIiKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlz
aW9uIDM4MTM1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzk4LDcgKzE3OTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludEVsbGlw
c2lzQm94ZXMoUGFpCiAKIEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2Vk
U2V0Kj4qIGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8
UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4gdGFibGU7CisgICAgc3RhdGlj
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4mIHRhYmxlID0g
Km5ldyBIYXNoTWFwPFJlbmRlckJsb2NrKiwgUmVuZGVyRmxvd1NlcXVlbmNlZFNldCo+OwogICAg
IHJldHVybiAmdGFibGU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogY291
bnRlcihSZW5kZXJPYmplY3QKIAogc3RhdGljIENvdW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7
Ci0gICAgc3RhdGljIENvdW50ZXJNYXBzIHN0YXRpY0NvdW50ZXJNYXBzOworICAgIHN0YXRpYyBD
b3VudGVyTWFwcyYgc3RhdGljQ291bnRlck1hcHMgPSAqbmV3IENvdW50ZXJNYXBzOwogICAgIHJl
dHVybiBzdGF0aWNDb3VudGVyTWFwczsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2
b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJvCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgZWxsaXBzaXNBbmRT
cGFjZVsyXSA9IHsgaG9yaXpvbnRhbEVsbGlwc2lzLCAnICcgfTsKLSAgICAgICAgICAgICAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGVsbGlwc2lzQW5kU3BhY2VTdHIoZWxsaXBzaXNBbmRTcGFjZSwg
Mik7CisgICAgICAgICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZWxsaXBzaXNBbmRTcGFj
ZVN0ciA9ICpuZXcgQXRvbWljU3RyaW5nKGVsbGlwc2lzQW5kU3BhY2UsIDIpOwogCiAgICAgICAg
ICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVMaW5lcyA9PSAxKS0+
Zm9udCgpOwogICAgICAgICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNwYWNlV2lkdGggPSBmb250
LndpZHRoKFRleHRSdW4oZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBj
b25zdCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7CiAgICAgaWYgKG1fbWFy
a2VyKQogICAgICAgICByZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAgICBzdGF0aWMgU3RyaW5n
IHN0YXRpY051bGxTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyYgc3RhdGljTnVsbFN0cmluZyA9
ICpuZXcgU3RyaW5nOwogICAgIHJldHVybiBzdGF0aWNOdWxsU3RyaW5nOwogfQogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCShyZXZpc2lvbiAzODEz
NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNj
cm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUo
KQogewotICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSB0aGVtZTsKKyAgICBzdGF0aWMg
UmVuZGVyU2Nyb2xsYmFyVGhlbWUmIHRoZW1lID0gKm5ldyBSZW5kZXJTY3JvbGxiYXJUaGVtZTsK
ICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEzICsxNjgsMTMgQEAgc3RhdGljIEZvbnRXZWln
aHQgdG9Gb250V2VpZ2h0KE5TSW50ZWdlcgogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1G
b250KGludCBjc3NWYWx1ZUlkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29u
c3QKIHsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHN5c3RlbUZvbnQ7Ci0gICAgc3RhdGlj
IEZvbnREZXNjcmlwdGlvbiBzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlw
dGlvbiBtZW51Rm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGxhYmVsRm9udDsKLSAg
ICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1pbmlDb250cm9sRm9udDsKLSAgICBzdGF0aWMgRm9u
dERlc2NyaXB0aW9uIHNtYWxsQ29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlv
biBjb250cm9sRm9udDsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzeXN0ZW1Gb250ID0g
Km5ldyBGb250RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgc21hbGxT
eXN0ZW1Gb250ID0gKm5ldyBGb250RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlw
dGlvbiYgbWVudUZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uJiBsYWJlbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMg
Rm9udERlc2NyaXB0aW9uJiBtaW5pQ29udHJvbEZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsK
KyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzbWFsbENvbnRyb2xGb250ID0gKm5ldyBGb250
RGVzY3JpcHRpb247CisgICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiYgY29udHJvbEZvbnQgPSAq
bmV3IEZvbnREZXNjcmlwdGlvbjsKIAogICAgIEZvbnREZXNjcmlwdGlvbiogY2FjaGVkRGVzYzsK
ICAgICBOU0ZvbnQqIGZvbnQgPSBuaWw7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAkocmV2aXNpb24gMzgx
MzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9iaWRpLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5
Miw3ICsyMTkyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZgog
ICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggb2YgdGhlIGVsbGlwc2lzIHVzaW5nIHRoZSBjdXJy
ZW50IGZvbnQuCiAgICAgLy8gRklYTUU6IENTUzMgc2F5cyB0aGlzIGlzIGNvbmZpZ3VyYWJsZSwg
YWxzbyBuZWVkIHRvIHVzZSAweDAwMkUgKEZVTEwgU1RPUCkgaWYgaG9yaXpvbnRhbCBlbGxpcHNp
cyBpcyAibm90IHJlbmRlcmFibGUiCiAgICAgVGV4dFJ1biBlbGxpcHNpc1J1bigmaG9yaXpvbnRh
bEVsbGlwc2lzLCAxKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVsbGlwc2lzU3RyKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3Ry
ID0gKm5ldyBBdG9taWNTdHJpbmcoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgY29uc3Qg
Rm9udCYgZmlyc3RMaW5lRm9udCA9IGZpcnN0TGluZVN0eWxlKCktPmZvbnQoKTsKICAgICBjb25z
dCBGb250JiBmb250ID0gc3R5bGUoKS0+Zm9udCgpOwogICAgIGludCBmaXJzdExpbmVFbGxpcHNp
c1dpZHRoID0gZmlyc3RMaW5lRm9udC53aWR0aChlbGxpcHNpc1J1bik7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIw
LDEzICs3MjAsMTMgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzcwog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAg
c3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZW1wdHlMaXN0OworICAgIHN0YXRp
YyBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBlbXB0eUxpc3QgPSAqbmV3IFZlY3RvcjxT
dHlsZURhc2hib2FyZFJlZ2lvbj47CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAogY29uc3Qg
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRS
ZWdpb25zKCkKIHsKLSAgICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBub25l
TGlzdDsKKyAgICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZUxpc3Qg
PSAqbmV3IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj47CiAgICAgc3RhdGljIGJvb2wgbm9u
ZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVk
KSB7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBMb2NhbFN0b3JhZ2UqPiBMCiAKIHN0YXRp
YyBMb2NhbFN0b3JhZ2VNYXAmIGxvY2FsU3RvcmFnZU1hcCgpCiB7Ci0gICAgc3RhdGljIExvY2Fs
U3RvcmFnZU1hcCBsb2NhbFN0b3JhZ2VNYXA7CisgICAgc3RhdGljIExvY2FsU3RvcmFnZU1hcCYg
bG9jYWxTdG9yYWdlTWFwID0gKm5ldyBMb2NhbFN0b3JhZ2VNYXA7CiAgICAgcmV0dXJuIGxvY2Fs
U3RvcmFnZU1hcDsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZQogICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdAog
ewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0b1ZhbCgiYXV0byIpOwotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0b1JldmVyc2UoImF1dG8tcmV2ZXJzZSIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9WYWwgPSAqbmV3IEF0b21pY1N0cmluZygi
YXV0byIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9SZXZlcnNlID0gKm5l
dyBBdG9taWNTdHJpbmcoImF1dG8tcmV2ZXJzZSIpOwogICAgIFN0cmluZyByb3RhdGUgPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1Zh
bCkKICAgICAgICAgcmV0dXJuIFJvdGF0ZUF1dG87CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDEwICsxOTYsMTAgQEAgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6QW5pbWF0aW9uTW9kZSBTVkdBbgogCiBTVkdBbmltYXRpb25FbGVtZW50OjpD
YWxjTW9kZSBTVkdBbmltYXRpb25FbGVtZW50OjpjYWxjTW9kZSgpIGNvbnN0CiB7ICAgIAotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGlzY3JldGUoImRpc2NyZXRlIik7Ci0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyBsaW5lYXIoImxpbmVhciIpOwotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcgcGFjZWQoInBhY2VkIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyBzcGxpbmUoInNwbGluZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRp
c2NyZXRlID0gKm5ldyBBdG9taWNTdHJpbmcoImRpc2NyZXRlIik7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbGluZWFyID0gKm5ldyBBdG9taWNTdHJpbmcoImxpbmVhciIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBhY2VkID0gKm5ldyBBdG9taWNTdHJpbmcoInBh
Y2VkIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3BsaW5lID0gKm5ldyBBdG9t
aWNTdHJpbmcoInNwbGluZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmNhbGNNb2RlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGRpc2Ny
ZXRlKQogICAgICAgICByZXR1cm4gQ2FsY01vZGVEaXNjcmV0ZTsKQEAgLTIxNCw4ICsyMTQsOCBA
QCBTVkdBbmltYXRpb25FbGVtZW50OjpDYWxjTW9kZSBTVkdBbmltYXRpCiAKIFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OkF0dHJpYnV0ZVR5cGUgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXR0cmlidXRlVHlw
ZSgpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgY3NzKCJDU1Mi
KTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCgiWE1MIik7CisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgY3NzID0gKm5ldyBBdG9taWNTdHJpbmcoIkNTUyIpOworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHhtbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJYTUwi
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjphdHRyaWJ1dGVUeXBlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGNzcykKICAgICAgICAgcmV0
dXJuIEF0dHJpYnV0ZVR5cGVDU1M7CkBAIC0yNDEsMTQgKzI0MSwxNCBAQCBTdHJpbmcgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgCiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW0o
InN1bSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bSA9ICpuZXcgQXRvbWlj
U3RyaW5nKCJzdW0iKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmli
dXRlKFNWR05hbWVzOjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwg
YW5pbWF0aW9uTW9kZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmlzQWNjdW11bGF0ZWQoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgc3VtKCJzdW0iKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdW0gPSAq
bmV3IEF0b21pY1N0cmluZygic3VtIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6YWNjdW11bGF0ZUF0dHIpOwogICAgIHJldHVybiB2YWx1
ZSA9PSBzdW0gJiYgYW5pbWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0aW9uOwogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdM
YW5nU3BhY2UuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTVkdMYW5nU3BhY2U6
OnNldFhtbGxhbmcoY29uc3QgQXRvbQogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdMYW5nU3BhY2U6
OnhtbHNwYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc3BhY2UpIHsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0Iik7CisgICAgICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1bHRTdHJpbmcgPSAqbmV3IEF0b21pY1N0cmlu
ZygiZGVmYXVsdCIpOwogICAgICAgICByZXR1cm4gZGVmYXVsdFN0cmluZzsKICAgICB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFNWR1NWR0Vs
ZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVt
ZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBkZWZhdWx0VmFsdWUoInRleHQvZWNtYXNjcmlwdCIpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGRlZmF1bHRWYWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2Vj
bWFzY3JpcHQiKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUoY29u
dGVudFNjcmlwdFR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1
ZSA6IG47CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDb250
ZW50U2NyaXB0VHlwZQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRl
bnRTdHlsZVR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGVm
YXVsdFZhbHVlKCJ0ZXh0L2NzcyIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2NzcyIpOwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShjb250ZW50U3R5bGVUeXBlQXR0cik7CiAgICAg
cmV0dXJuIG4uaXNOdWxsKCkgPyBkZWZhdWx0VmFsdWUgOiBuOwogfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHls
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdTdHlsZUVs
ZW1lbnQ6OnNldFhtbHNwYWNlKGNvbnN0IAogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxl
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBk
ZWZhdWx0VmFsdWUoInRleHQvY3NzIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGVmYXVsdFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQvY3NzIik7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5p
c051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU1ZH
U3R5bGVFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b20KIAogY29uc3QgQXRvbWljU3RyaW5nJiBT
VkdTdHlsZUVsZW1lbnQ6Om1lZGlhKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIGRlZmF1bHRWYWx1ZSgiYWxsIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZGVmYXVsdFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoImFsbCIpOwogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogICAgIHJldHVybiBuLmlz
TnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgewog
ICAgICAgICAgICAgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIp
KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBwcmVzZXJ2ZVN0
cmluZygicHJlc2VydmUiKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVzZXJ2ZVN0cmluZyA9ICpuZXcgQXRvbWljU3RyaW5nKCJwcmVzZXJ2ZSIpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJpbmcpCiAgICAg
ICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSwgQ1NTVmFsdWVQcmUpOwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsNyBAQCBTTUlMVGltZSBT
VkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlCiAgICAgCiAgICAgU3RyaW5nIHBhcnNlID0g
ZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcg
aW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgaW5kZWZpbml0ZVZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoImluZGVmaW5pdGUiKTsK
ICAgICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRp
bWU6OmluZGVmaW5pdGUoKTsKIApAQCAtNDU3LDggKzQ1Nyw4IEBAIGJvb2wgU1ZHU01JTEVsZW1l
bnQ6OmlzRnJvemVuKCkgY29uc3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NN
SUxFbGVtZW50OjpyZXN0YXJ0KCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBuZXZlcigibmV2ZXIiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHdo
ZW5Ob3RBY3RpdmUoIndoZW5Ob3RBY3RpdmUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXZlciA9ICpuZXcgQXRvbWljU3RyaW5nKCJuZXZlciIpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIHdoZW5Ob3RBY3RpdmUgPSAqbmV3IEF0b21pY1N0cmluZygid2hlbk5v
dEFjdGl2ZSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OnJlc3RhcnRBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gbmV2ZXIpCiAgICAgICAg
IHJldHVybiBSZXN0YXJ0TmV2ZXI7CkBAIC00NjksNyArNDY5LDcgQEAgU1ZHU01JTEVsZW1lbnQ6
OlJlc3RhcnQgU1ZHU01JTEVsZW1lbnQ6OgogICAgIAogU1ZHU01JTEVsZW1lbnQ6OkZpbGxNb2Rl
IFNWR1NNSUxFbGVtZW50OjpmaWxsKCkgY29uc3QKIHsgICAKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIGZyZWV6ZSgiZnJlZXplIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZnJlZXplID0gKm5ldyBBdG9taWNTdHJpbmcoImZyZWV6ZSIpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbGxBdHRyKTsKICAgICBy
ZXR1cm4gdmFsdWUgPT0gZnJlZXplID8gRmlsbEZyZWV6ZSA6IEZpbGxSZW1vdmU7CiB9CkBAIC01
MDYsNyArNTA2LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnJlcGVhdENvdW50KCkgYwog
ICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29s
dmVkKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGluZGVmaW5pdGVWYWx1ZSgi
aW5kZWZpbml0ZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluZGVmaW5pdGVW
YWx1ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJpbmRlZmluaXRlIik7CiAgICAgaWYgKHZhbHVlID09
IGluZGVmaW5pdGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7
CiAgICAgYm9vbCBvazsKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpw
cm9ncmVzcyhTTUlMVGltZSBlCiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRz
SW50ZXJ2YWxDaGFuZ2VkKE5ld09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewog
ICAgIEFTU0VSVChtX2ludGVydmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8U1ZHU01JTEVsZW1lbnQqPiBsb29wQnJlYWtlcjsKKyAgICBzdGF0aWMgSGFzaFNldDxTVkdT
TUlMRWxlbWVudCo+JiBsb29wQnJlYWtlciA9ICpuZXcgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+
OwogICAgIGlmIChsb29wQnJlYWtlci5jb250YWlucyh0aGlzKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZS5jcHAJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBSZXNvdXJj
ZVNldCB7IAogfTsKIAogc3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNl
U2V0Kj4mIGNsaWVudE1hcCgpIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50
KiwgUmVzb3VyY2VTZXQqPiBtYXA7CisgICAgc3RhdGljIEhhc2hNYXA8U1ZHU3R5bGVkRWxlbWVu
dCosIFJlc291cmNlU2V0Kj4mIG1hcCA9ICpuZXcgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50Kiwg
UmVzb3VyY2VTZXQqPjsKICAgICByZXR1cm4gbWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCB2b2lkIFNWR1Jlc291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAg
ICAgaWYgKCFtX21hcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8
U1ZHUmVzb3VyY2VNYXJrZXIqPiBjdXJyZW50bHlEcmF3aW5nTWFya2VyczsKKyAgICBzdGF0aWMg
SGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+JiBjdXJyZW50bHlEcmF3aW5nTWFya2VycyA9ICpu
ZXcgSGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+OwogCiAgICAgLy8gYXZvaWQgZHJhd2luZyBj
aXJjdWxhciBtYXJrZXIgcmVmZXJlbmNlcwogICAgIGlmIChjdXJyZW50bHlEcmF3aW5nTWFya2Vy
cy5jb250YWlucyh0aGlzKSkKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM4
MTM1KQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwK
IAogc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlJiBwcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiB7
Ci0gICAgc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlIGNhY2hlOworICAgIHN0YXRpYyBQcmVm
bGlnaHRSZXN1bHRDYWNoZSYgY2FjaGUgPSAqbmV3IFByZWZsaWdodFJlc3VsdENhY2hlOwogICAg
IHJldHVybiBjYWNoZTsKIH0KIApAQCAtODgsOSArODgsOSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRQ
cmVmbGlnaHRSZXN1bHRDYWNoZUVuCiAKIHN0YXRpYyBib29sIGlzU2FmZVJlcXVlc3RIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPiBmb3JiaWRkZW5IZWFkZXJzOwotICAgIHN0YXRpYyBTdHJpbmcgcHJveHlTdHJp
bmcoInByb3h5LSIpOwotICAgIHN0YXRpYyBTdHJpbmcgc2VjU3RyaW5nKCJzZWMtIik7CisgICAg
c3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBmb3JiaWRkZW5IZWFkZXJz
ID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBzdGF0aWMgU3Ry
aW5nJiBwcm94eVN0cmluZyA9ICpuZXcgU3RyaW5nKCJwcm94eS0iKTsKKyAgICBzdGF0aWMgU3Ry
aW5nJiBzZWNTdHJpbmcgPSAqbmV3IFN0cmluZygic2VjLSIpOwogICAgIAogICAgIGlmIChmb3Ji
aWRkZW5IZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgi
YWNjZXB0LWNoYXJzZXQiKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgYm9vbCBpc09uQWNj
ZXNzQ29udHJvbFNpbXBsZVJlcXVlCiAKIHN0YXRpYyBib29sIGlzT25BY2Nlc3NDb250cm9sUmVz
cG9uc2VIZWFkZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBhbGxvd2VkSGVhZGVyczsKKyAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGFsbG93ZWRIZWFkZXJzID0gKm5l
dyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBpZiAoYWxsb3dlZEhlYWRl
cnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGFsbG93ZWRIZWFkZXJzLmFkZCgiY2FjaGUtY29udHJv
bCIpOwogICAgICAgICBhbGxvd2VkSGVhZGVycy5hZGQoImNvbnRlbnQtbGFuZ3VhZ2UiKTsKSW5k
ZXg6IFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCShyZXZpc2lvbiAzODEzNSkKKysrIFdl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBYUGF0aCB7CiAgICAgCiBFdmFsdWF0aW9uQ29udGV4dCYgRXhw
cmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQoKQogewotICAgIHN0YXRpYyBFdmFsdWF0aW9uQ29u
dGV4dCBldmFsdWF0aW9uQ29udGV4dDsKKyAgICBzdGF0aWMgRXZhbHVhdGlvbkNvbnRleHQmIGV2
YWx1YXRpb25Db250ZXh0ID0gKm5ldyBFdmFsdWF0aW9uQ29udGV4dDsKICAgICByZXR1cm4gZXZh
bHVhdGlvbkNvbnRleHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDM4MTM1
KQorKysgV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3
ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHNldFVwQXhpc05hbWVzTWFwKEhhc2hNYXA8U3QKIAogc3Rh
dGljIGJvb2wgaXNBeGlzTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0ZXA6OkF4aXMmIHR5cGUp
CiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBheGlzTmFtZXM7Cisg
ICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiYgYXhpc05hbWVzID0gKm5ldyBI
YXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz47CiAKICAgICBpZiAoYXhpc05hbWVzLmlzRW1wdHko
KSkKICAgICAgICAgc2V0VXBBeGlzTmFtZXNNYXAoYXhpc05hbWVzKTsKQEAgLTExMSw3ICsxMTEs
NyBAQCBzdGF0aWMgYm9vbCBpc0F4aXNOYW1lKGNvbnN0IFN0cmluZyYgbmFtCiAKIHN0YXRpYyBi
b29sIGlzTm9kZVR5cGVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmc+IG5vZGVUeXBlTmFtZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiYg
bm9kZVR5cGVOYW1lcyA9ICpuZXcgSGFzaFNldDxTdHJpbmc+OwogICAgIGlmIChub2RlVHlwZU5h
bWVzLmlzRW1wdHkoKSkgewogICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgiY29tbWVudCIpOwog
ICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgidGV4dCIpOwpJbmRleDogV2ViQ29yZS94bWwvWFBh
dGhWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHJl
dmlzaW9uIDM4MTM1KQorKysgV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgVmFsdWU6OkFkb3B0VGFnIFZhbHVlOjphZG9wdCA9
IHt9OwogY29uc3QgTm9kZVNldCYgVmFsdWU6OnRvTm9kZVNldCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2RhdGEpIHsKLSAgICAgICAgc3RhdGljIE5vZGVTZXQgZW1wdHlOb2RlU2V0OworICAgICAg
ICBzdGF0aWMgTm9kZVNldCYgZW1wdHlOb2RlU2V0ID0gKm5ldyBOb2RlU2V0OwogICAgICAgICBy
ZXR1cm4gZW1wdHlOb2RlU2V0OwogICAgIH0KIApJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MTM1KQorKysg
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAw
OC0xMS0wNSAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgxMAorCVJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRo
YXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgICog
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3Rz
KTogQ2hhbmdlZCB0byBsZWFrIGFuIG9iamVjdCB0byBhdm9pZCBhbiBleGl0LXRpbWUgZGVzdHJ1
Y3Rvci4KKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlz
dG9yeUl0ZW1XcmFwcGVycyk6IGRpdHRvCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW06CisgICAgICAgICgrW05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JV
UkxdKTogZGl0dG8KKyAgICAgICAgKF93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2
ZSk6IGRpdHRvCisgICAgICAgIChfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUpOiBk
aXR0bworICAgICAgICAqIE1pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm06CisgICAgICAgIChmb250
RnJvbU5TRm9udCk6IGRpdHRvCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW06CisgICAgICAgIChzdHJlYW1zKTogZGl0dG8KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVscGVyLm1tOgorICAgICAgICAoV2ViUGFzdGVib2FyZEhl
bHBlcjo6aW5zZXJ0YWJsZVBhc3RlYm9hcmRUeXBlcyk6IGRpdHRvCisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOiBkaXR0bworICAgICAgICAoK1tXZWJI
VE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTogZGl0dG8KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChhZURlc2NGcm9tSlNWYWx1ZSk6IGRp
dHRvCisKIDIwMDgtMTEtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCkluZGV4OiBXZWJLaXQvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvSGlz
dG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0L21h
Yy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIEhhc2hNYXA8QmFja0Zv
cndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIGJhY2tGb3J3YXJkTGlzdHMoKQogewot
ICAgIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+
IHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CisgICAgc3RhdGljIEhhc2hNYXA8QmFja0ZvcndhcmRM
aXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHMgPSAqbmV3
IEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj47CiAgICAgcmV0
dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0JKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViQ29yZUhpc3RvcnlJdGVtKiBjb3JlKFcKIAogSGFzaE1hcDxIaXN0b3J5SXRlbSos
IFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBI
YXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiBoaXN0b3J5SXRlbVdyYXBwZXJz
OworICAgIHN0YXRpYyBIYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiYgaGlz
dG9yeUl0ZW1XcmFwcGVycyA9ICpuZXcgSGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJ
dGVtKj47CiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtV3JhcHBlcnM7CiB9CiAKSW5kZXg6IFdlYktp
dC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBX
ZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCw3IEBAIE5TU3RyaW5nICpXZWJVUkxOYW1lUGJvYXJkVHlwZSA9IEAicHVibGkK
IAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTAogewotICAgIHN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheT4gdHlwZXM7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzOwogICAg
IGlmICghdHlwZXMpIHsKICAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czoKICAgICAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwKQEAgLTY4
LDI4ICs2OCwyOCBAQCBOU1N0cmluZyAqV2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpCiAg
ICAgICAgICAgICBOU1N0cmluZ1Bib2FyZFR5cGUsCiAgICAgICAgICAgICBuaWxdOwogICAgIH0K
LSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBzdGF0aWMg
TlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlICh2b2lkKQogewot
ICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzOworICAgIHN0YXRpYyBO
U011dGFibGVBcnJheSAqdHlwZXM7CiAgICAgaWYgKHR5cGVzID09IG5pbCkgewogICAgICAgICB0
eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU1RJRkZQYm9h
cmRUeXBlLCBuaWxdOwotICAgICAgICBbdHlwZXMuZ2V0KCkgYWRkT2JqZWN0c0Zyb21BcnJheTpb
TlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF1dOworICAgICAgICBbdHlwZXMg
YWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVS
TF1dOwogICAgIH0KLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwog
fQogCiBzdGF0aWMgTlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlICh2
b2lkKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzOworICAg
IHN0YXRpYyBOU011dGFibGVBcnJheSAqdHlwZXM7CiAgICAgaWYgKHR5cGVzID09IG5pbCkgewog
ICAgICAgICB0eXBlcyA9IFtfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUoKSBt
dXRhYmxlQ29weV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNSVEZEUGJvYXJk
VHlwZV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5
cGVdOworICAgICAgICBbdHlwZXMgYWRkT2JqZWN0Ok5TUlRGRFBib2FyZFR5cGVdOworICAgICAg
ICBbdHlwZXMgYWRkT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICB9Ci0gICAgcmV0
dXJuIHR5cGVzLmdldCgpOworICAgIHJldHVybiB0eXBlczsKIH0KIAogKyAoTlNBcnJheSAqKV93
ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZl
CkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tCShyZXZpc2lvbiAzODEzNSkK
KysrIFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubQkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBzdGF0aWMgTlNGb250ICpkZWZhdWx0TWVudUZvbnQoKQogc3RhdGlj
IEZvbnQmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAgICBzdGF0aWMgTlNGb250
ICpjdXJyZW50Rm9udDsKLSAgICBzdGF0aWMgRm9udCBjdXJyZW50UmVuZGVyZXI7CisgICAgc3Rh
dGljIEZvbnQmIGN1cnJlbnRSZW5kZXJlciA9ICpuZXcgRm9udDsKIAogICAgIGlmIChbZm9udCBp
c0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKSW5k
ZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVh
bS5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqQ2FyYm9uUGF0aEZyb21QT1NJWFBhdGgKIHR5cGVkZWYgSGFzaE1hcDxOUFN0
cmVhbSosIE5QUD4gU3RyZWFtTWFwOwogc3RhdGljIFN0cmVhbU1hcCYgc3RyZWFtcygpCiB7Ci0g
ICAgc3RhdGljIFN0cmVhbU1hcCBzdGF0aWNTdHJlYW1zOworICAgIHN0YXRpYyBTdHJlYW1NYXAm
IHN0YXRpY1N0cmVhbXMgPSAqbmV3IFN0cmVhbU1hcDsKICAgICByZXR1cm4gc3RhdGljU3RyZWFt
czsKIH0KIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVs
cGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZEhlbHBlci5tbQkocmV2aXNpb24gMzgxMzUpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBhc3RlYm9hcmRIZWxwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDkg
QEAgRE9NRG9jdW1lbnRGcmFnbWVudCAqV2ViUGFzdGVib2FyZEhlbHBlcgogCiBOU0FycmF5ICpX
ZWJQYXN0ZWJvYXJkSGVscGVyOjppbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzKCkgY29uc3QKIHsg
ICAgCi0gICAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0eXBlcyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBl
LAorICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBlLAogICAgICAgICAg
ICBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIE5TVElGRlBib2FyZFR5cGUsIE5TUElDVFBib2FyZFR5
cGUsIE5TVVJMUGJvYXJkVHlwZSwgCiAgICAgICAgICAgIE5TUlRGRFBib2FyZFR5cGUsIE5TUlRG
UGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0NvbG9yUGJvYXJkVHlwZSwgbmlsXTsK
ICAgICAKLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQpJbmRl
eDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZpc2lv
biAzODEzNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTkyLDIzICs5MiwyMyBAQCBzdGF0aWMgTlNBcnJheSAqY29uY2F0
ZW5hdGVBcnJheXMoTlNBcnJhCiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNSU1FVHlwZXMKIHsK
LSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9
CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9CiAgICAgICAg
IGNvbmNhdGVuYXRlQXJyYXlzKFtzZWxmIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSwgW3Nl
bGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKLSAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVk
TUlNRVR5cGVzLmdldCgpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXM7CiB9
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRp
YyBSZXRhaW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPQor
ICAgIHN0YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9CiAg
ICAgICAgIHN0cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkpOwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cy5nZXQoKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7CiB9
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPQorICAgIHN0
YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9CiAgICAgICAgIHN0
cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkp
OwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy5nZXQoKTsKKyAgICBy
ZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAKIC0gaW5pdApJbmRleDog
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHN0YXRpYyBO
U0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm8KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBlbHNlIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjppbmZvKSkgewot
ICAgICAgICAgICAgc3RhdGljIEhhc2hTZXQ8SlNPYmplY3QqPiB2aXNpdGVkRWxlbXM7CisgICAg
ICAgICAgICBzdGF0aWMgSGFzaFNldDxKU09iamVjdCo+JiB2aXNpdGVkRWxlbXMgPSAqbmV3IEhh
c2hTZXQ8SlNPYmplY3QqPjsKICAgICAgICAgICAgIGlmICghdmlzaXRlZEVsZW1zLmNvbnRhaW5z
KG9iamVjdCkpIHsKICAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7CiAg
ICAgICAgICAgICAgICAgCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODEzNSkKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA4LTExLTA1ICBH
cmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODEwCisJUmVtb3ZlIHVzZSBvZiBzdGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVz
dHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1Y3RvcnMpCisKKwlSZW1vdmUgLm8gZmlsZXMgZnJv
bSB0aGUgZXhjbHVkZSBsaXN0IHRoYXQgaGF2ZSBoYWQgdGhlaXIgZXhpdC10aW1lIGRlc3RydWN0
b3JzIHJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3Ry
dWN0b3JzOiBEb24ndCBkZW1hbmdsZSBzeW1ib2xzIHRoYXQgZG9uJ3QgZXhpc3QuCisKIDIwMDgt
MTEtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIEFjY2Vzc2liaWxpdHlPYmplY3QubyB0byB0aGUgZXhjbHVkZSBsaXN0IGZvciB0aGUKSW5k
ZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVz
dHJ1Y3RvcnMJKHJldmlzaW9uIDM4MTM1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMTAgKzk1LDIz
IEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBpZiAoJHRhcmdldCBlcSAiV2Vi
Q29yZSIpIHsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbHlTdHls
ZUNvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXJjaGl2ZUZhY3Rv
cnkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTUHJpbWl0aXZl
VmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU2VsZWN0b3IubyI7
CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU3R5bGVTZWxlY3Rvci5vIjsKICAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRJbWFnZS5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJDb2xvck1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJET01JbXBsZW1lbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJEb2N1bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJFdmVudEhh
bmRsZXIubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVyTWFj
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZUUERpcmVjdG9yeURvY3VtZW50
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKICAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiRm9ybURhdGFTdHJlYW1NYWMubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
RnJhbWVMb2FkZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVNYWMu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiR0NDb250cm9sbGVyLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29udGV4dE1hYy5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MQnV0dG9uRWxlbWVudC5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJIVE1MRmllbGRTZXRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkhUTUxJbnB1dEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiSFRNTEludGVyY2hhbmdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkhUTUxLZXlnZW5FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkhUTUxMZWdlbmRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhU
TUxPcHRHcm91cEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRN
TE9wdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFBh
cnNlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MU2VsZWN0RWxlbWVu
dC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGFibGVFbGVtZW50Lm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxUZXh0QXJlYUVsZW1lbnQubyI7
CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSWNvbkRhdGFiYXNlLm8iOwogICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkluZGVudE91dGRlbnRDb21tYW5kLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkluc3BlY3RvckNvbnRyb2xsZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiSlNET01CaW5kaW5nLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIubyI7CiAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5vIjsKICAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SmF2YVNjcmlwdERlYnVnU2VydmVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkphdmFTY3JpcHRQcm9maWxlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkph
dmFTY3JpcHRQcm9maWxlTm9kZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJL
VVJMLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkxvY2FsU3RvcmFnZS5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3JrU3RhdGVOb3RpZmllci5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiUmVuZGVyQmxvY2subyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
UmVuZGVyQ291bnRlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJG
bGV4aWJsZUJveC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMYXll
ci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMaXN0SXRlbS5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTdHlsZS5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFjLm8iOwotICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIlNWR1Jlc291cmNlTWFya2VyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IlNWR1NNSUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1NW
R0VsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU3R5bGVFbGVt
ZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1RleHRDb250ZW50RWxl
bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3JpcHRFbGVtZW50Lm8i
OwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9sbFZpZXcubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVNYWMubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CiAgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlRleHRFbmNvZGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJUaHJlYWRDaGVj
ay5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYTUxIdHRwUmVxdWVzdC5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYUGF0aEV4cHJlc3Npb25Ob2RlLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoUGFyc2VyLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiYmlkaS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJodG1s
ZWRpdGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJtYXJrdXAubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAicnVudGltZV9yb290Lm8iOwotICAgIH0KLQot
ICAgIGlmICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJXZWJCYWNrRm9yd2FyZExpc3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJXZWJIaXN0b3J5SXRlbS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiV2ViUGFzdGVib2FyZEhlbHBlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJXZWJTdHJpbmdUcnVuY2F0b3IubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiV2ViVmlldy5vIjsKICAgICB9CiAKICAgICAkc2F3RXJyb3IgPSAxIGlmIHByaW50RnVuY3Rp
b25zKCRzaG9ydE5hbWUsICRmaWxlKTsKQEAgLTI0Myw2ICsxNTYsNyBAQCBzdWIgcHJpbnRGdW5j
dGlvbnMoJCQpCiAgICAgbXkgJGN1cnJlbnRTeW1ib2wgPSAiIjsKICAgICB3aGlsZSAoPE9UT09M
PikgewogICAgICAgICAkY3VycmVudFN5bWJvbCA9ICQxIGlmIC9eKFx3Kyk6JC87CisgICAgICAg
IG5leHQgaWYgKCFkZWZpbmVkKCRjdXJyZW50U3ltYm9sKSB8fCAhbGVuZ3RoKCRjdXJyZW50U3lt
Ym9sKSk7CiAgICAgICAgICRmdW5jdGlvbnN7ZGVtYW5nbGUoJGN1cnJlbnRTeW1ib2wpfSA9IDEg
aWYgL19fX2N4YV9hdGV4aXQvOwogICAgIH0KICAgICBjbG9zZSBPVE9PTDsK
</data>
<flag name="review"
          id="11432"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24956</attachid>
            <date>2008-11-06 14:23:00 -0800</date>
            <delta_ts>2008-11-16 15:09:39 -0800</delta_ts>
            <desc>Incremental patch addressing Retain &amp; GC and PassRefPtr&lt;T&gt;</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>25283</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODE5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDgtMTEtMDYgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW9yZSBmb3I6CisgICAgICAgIEJ1ZyAyMTgxMDogUmVtb3ZlIHVzZSBvZiBzdGF0aWMgQysrIG9i
amVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1Y3RvcnMpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxMAorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkZXJzRGVjbCk6IENoYW5nZWQgdG8gbGVhayBh
biBvYmplY3QgdG8gYXZvaWQgYW4gZXhpdC10aW1lIGRlc3RydWN0b3IuCisgICAgICAgICogbG9h
ZGVyL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJyb2tlbkltYWdlKTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6Om51bGxJbWFnZSk6IGRpdHRvCisgICAgICAgICogbG9hZGVy
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9y
eVRva2VuaXplcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOiBkaXR0bworICAgICAgICAqIGxvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRGVmYXVsdElj
b25SZWNvcmQpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOiBkaXR0bworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpudWxsSW1h
Z2UpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOiBkaXR0bworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKTogZGl0dG8KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKTogZGl0dG8K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjp3ZWJGYWxsYmFja0ZvbnRGYW1pbHkpOiBkaXR0bworICAgICAgICAq
IHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGFi
bGVUeXBlc0ZvclVSTCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjp3cml0YWJsZVR5cGVzRm9y
SW1hZ2UpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6c3RyaXBBdHRhY2htZW50Q2hhcmFjdGVy
cyk6IGRpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOiBkaXR0bworCiAyMDA4LTExLTA2
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxp
Y2UgTGl1LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzgxOTAp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyMCw4ICs1MjAsOCBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3Jk
CiB7CiAgICAgQ2VsbEJvcmRlcnMgYm9yZGVycyA9IGNlbGxCb3JkZXJzKCk7CiAKLSAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIGNlbGxCb3JkZXJOYW1lc1tdID0geyAibm9uZSIsICJzb2xp
ZCIsICJpbnNldCIsICJzb2xpZC1jb2xzIiwgInNvbGlkLXJvd3MiIH07Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBjZWxsYm9yZGVyVmFsdWUgPSBjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogY2VsbEJvcmRlck5hbWVzW10gPSB7IG5ldyBB
dG9taWNTdHJpbmcoIm5vbmUiKSwgbmV3IEF0b21pY1N0cmluZygic29saWQiKSwgbmV3IEF0b21p
Y1N0cmluZygiaW5zZXQiKSwgbmV3IEF0b21pY1N0cmluZygic29saWQtY29scyIpLCBuZXcgQXRv
bWljU3RyaW5nKCJzb2xpZC1yb3dzIikgfTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNlbGxi
b3JkZXJWYWx1ZSA9ICpjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CiAgICAgQ1NTTWFwcGVkQXR0
cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0
ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKICAgICBpZiAoIWRlY2wpIHsK
ICAgICAgICAgZGVjbCA9IENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uOjpjcmVhdGUoKS5y
ZWxlYXNlUmVmKCk7IC8vIFRoaXMgc2luZ2xlIHJlZiBwaW5zIHVzIGluIHRoZSB0YWJsZSB1bnRp
bCB0aGUgZG9jdW1lbnQgZGllcy4KQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIEhUTUxUYWJsZUVs
ZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9y
ZGVyQXR0ciwgY2VsbEJvcmRlck5hbWVzW2JvcmRlcnNdLCBkZWNsKTsKKyAgICAgICAgc2V0TWFw
cGVkQXR0cmlidXRlRGVjbChlUGVyc2lzdGVudCwgY2VsbGJvcmRlckF0dHIsICpjZWxsQm9yZGVy
TmFtZXNbYm9yZGVyc10sIGRlY2wpOwogICAgICAgICBkZWNsLT5zZXRQYXJlbnQoMCk7CiAgICAg
ICAgIGRlY2wtPnNldE5vZGUoMCk7CiAgICAgICAgIGRlY2wtPnNldE1hcHBlZFN0YXRlKGVQZXJz
aXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbGJvcmRlclZhbHVlKTsKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNo
ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDM4MTkwKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTYgKzEwNywxNiBAQCB2b2lkIENhY2hlZElt
YWdlOjphbGxDbGllbnRzUmVtb3ZlZCgpCiAKIHN0YXRpYyBJbWFnZSogYnJva2VuSW1hZ2UoKQog
ewotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGJyb2tlbkltYWdlOworICAgIHN0YXRpYyBJbWFn
ZSogYnJva2VuSW1hZ2UgPSAwOwogICAgIGlmICghYnJva2VuSW1hZ2UpCi0gICAgICAgIGJyb2tl
bkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKTsKLSAg
ICByZXR1cm4gYnJva2VuSW1hZ2UuZ2V0KCk7CisgICAgICAgIGJyb2tlbkltYWdlID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKS5yZWxlYXNlUmVmKCk7CisgICAg
cmV0dXJuIGJyb2tlbkltYWdlOwogfQogCiBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSgpCiB7Ci0g
ICAgc3RhdGljIFJlZlB0cjxCaXRtYXBJbWFnZT4gbnVsbEltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZSgpOwotICAgIHJldHVybiBudWxsSW1hZ2UuZ2V0KCk7CisgICAgc3RhdGljIEJpdG1hcElt
YWdlKiBudWxsSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOworICAg
IHJldHVybiBudWxsSW1hZ2U7CiB9CiAKIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKSBjb25z
dApJbmRleDogV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAkocmV2aXNpb24g
MzgxOTApCisrKyBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIEZUUERpcmVjdG9yeVRva2VuaXplcjo6
cGFyc2VBbmRBcHBlCiAKIGJvb2wgRlRQRGlyZWN0b3J5VG9rZW5pemVyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRlbXBsYXRlRG9j
dW1lbnREYXRhOworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gMDsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCB3ZSdkIHJh
dGhlciBhY3R1YWxseSBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZSB0ZW1wbGF0ZSBE
b2N1bWVudCBvbmNlLAogICAgIC8vIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0
IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuICBUaGVyZSBhcmUgY29t
cGxleGl0aWVzIHdpdGggdGhpcyAKICAgICAvLyBhcHByb2FjaCB0aGF0IG1ha2UgaXQgd29ydGgg
cHV0dGluZyB0aGlzIG9mZi4KQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIEZUUERpcmVjdG9yeVRv
a2VuaXplcjo6bG9hZERvY3VtZW50CiAgICAgaWYgKCF0ZW1wbGF0ZURvY3VtZW50RGF0YSkgewog
ICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2RvYy0+c2V0dGluZ3MoKTsKICAgICAgICAg
aWYgKHNldHRpbmdzKQotICAgICAgICAgICAgdGVtcGxhdGVEb2N1bWVudERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy0+ZnRwRGlyZWN0b3J5VGVt
cGxhdGVQYXRoKCkpOworICAgICAgICAgICAgdGVtcGxhdGVEb2N1bWVudERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy0+ZnRwRGlyZWN0b3J5VGVt
cGxhdGVQYXRoKCkpLnJlbGVhc2VSZWYoKTsKICAgICAgICAgaWYgKHRlbXBsYXRlRG9jdW1lbnRE
YXRhKQogICAgICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBv
ZiBsZW5ndGggJWlcbiIsIHRlbXBsYXRlRG9jdW1lbnREYXRhLT5zaXplKCkpOwogICAgIH0KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4MTkwKQorKysg
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODAsNyArMzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGxvYWREZWZhdWx0SWNvblJlY29yZAog
ICAgICAgICAweDAwLCAweDAwLCAweDAxLCAweDUyLCAweDAwLCAweDAzLCAweDAwLCAweDAwLCAw
eDAwLCAweDAxLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDA4LCAweDAwLCAweDA4LCAweDAwLCAweDA4LCAweDAwLCAweDA4LCAweDAwLCAw
eDBBLCAKICAgICAgICAgMHhGQywgMHg4MCwgMHgwMCwgMHgwMCwgMHgyNywgMHgxMCwgMHgwMCwg
MHgwQSwgMHhGQywgMHg4MCwgMHgwMCwgMHgwMCwgMHgyNywgMHgxMCB9OwogICAgICAgICAKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGVmYXVsdEljb25CdWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGVmYXVsdEljb25EYXRhLCBzaXplb2YoZGVmYXVsdEljb25EYXRhKSkpOwor
ICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIGRlZmF1bHRJY29uQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGVmYXVsdEljb25EYXRhLCBzaXplb2YoZGVmYXVsdEljb25EYXRhKSkucmVsZWFz
ZVJlZigpOwogICAgIGRlZmF1bHRJY29uUmVjb3JkLT5zZXRJbWFnZURhdGEoZGVmYXVsdEljb25C
dWZmZXIpOwogfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9u
IDM4MTkwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjY4LDExICs2NjgsMTEgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0Nv
bnRleHQqIAogICAgIH0KIAogICAgIC8vIFBhaW50IHRoZSBwYW5TY3JvbGwgSWNvbgotICAgIHN0
YXRpYyBSZWZQdHI8SW1hZ2U+IHBhblNjcm9sbEljb247CisgICAgc3RhdGljIEltYWdlKiBwYW5T
Y3JvbGxJY29uID0gMDsKICAgICBpZiAobV9kcmF3UGFuU2Nyb2xsSWNvbikgewogICAgICAgICBp
ZiAoIXBhblNjcm9sbEljb24pCi0gICAgICAgICAgICBwYW5TY3JvbGxJY29uID0gSW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKCJwYW5JY29uIik7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShwYW5TY3JvbGxJY29uLmdldCgpLCBtX3BhblNjcm9sbEljb25Qb2ludCk7CisgICAgICAgICAg
ICBwYW5TY3JvbGxJY29uID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJwYW5JY29uIiku
cmVsZWFzZVJlZigpOworICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwg
bV9wYW5TY3JvbGxJY29uUG9pbnQpOwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDM4MTkwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgSW1hZ2U6On5J
bWFnZSgpCiAKIEltYWdlKiBJbWFnZTo6bnVsbEltYWdlKCkKIHsKLSAgICBzdGF0aWMgUmVmUHRy
PEltYWdlPiBudWxsSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuIG51
bGxJbWFnZS5nZXQoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIG51bGxJbWFnZSA9IEJpdG1hcEltYWdl
OjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIG51bGxJbWFnZTsKIH0KIAogYm9v
bCBJbWFnZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCShyZXZpc2lvbiAzODE5MCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01OSwyMSArNTksMjEgQEAgTlNDb2xvciogbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgLy8gTmVlZCB0
aGlzIHRvIGF2b2lkIHJldHVybmluZyBuaWwgYmVjYXVzZSBjYWNoZWRSR0JBVmFsdWVzIHdpbGwg
ZGVmYXVsdCB0byAwLgotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBjbGVh
ckNvbG9yID0gW05TQ29sb3IgY2xlYXJDb2xvcl07Ci0gICAgICAgICAgICByZXR1cm4gY2xlYXJD
b2xvci5nZXQoKTsKKyAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpjbGVhckNvbG9yID0gKE5T
Q29sb3IqKUNGUmV0YWluKFtOU0NvbG9yIGNsZWFyQ29sb3JdKTsKKyAgICAgICAgICAgIHJldHVy
biBjbGVhckNvbG9yOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29sb3I6OmJsYWNrOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IGJsYWNrQ29sb3IgPSBbTlNDb2xv
ciBibGFja0NvbG9yXTsKLSAgICAgICAgICAgIHJldHVybiBibGFja0NvbG9yLmdldCgpOworICAg
ICAgICAgICAgc3RhdGljIE5TQ29sb3IgKmJsYWNrQ29sb3IgPSAoTlNDb2xvciopQ0ZSZXRhaW4o
W05TQ29sb3IgYmxhY2tDb2xvcl0pOworICAgICAgICAgICAgcmV0dXJuIGJsYWNrQ29sb3I7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDb2xvcjo6d2hpdGU6IHsKLSAgICAgICAgICAgIHN0YXRp
YyBSZXRhaW5QdHI8TlNDb2xvcj4gd2hpdGVDb2xvciA9IFtOU0NvbG9yIHdoaXRlQ29sb3JdOwot
ICAgICAgICAgICAgcmV0dXJuIHdoaXRlQ29sb3IuZ2V0KCk7CisgICAgICAgICAgICBzdGF0aWMg
TlNDb2xvciAqd2hpdGVDb2xvciA9IChOU0NvbG9yKilDRlJldGFpbihbTlNDb2xvciB3aGl0ZUNv
bG9yXSk7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xvcjsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgY2FjaGVTaXplID0gMzI7CiAgICAg
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgY2FjaGVkUkdCQVZhbHVlc1tjYWNoZVNpemVdOwotICAg
ICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBjYWNoZWRDb2xvcnNbY2FjaGVTaXpl
XTsKKyAgICAgICAgICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNDb2xvcj4qIGNhY2hlZENvbG9ycyA9
IG5ldyBSZXRhaW5QdHI8TlNDb2xvcj5bY2FjaGVTaXplXTsKIAogICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgIT0gY2FjaGVTaXplOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGNhY2hl
ZFJHQkFWYWx1ZXNbaV0gPT0gYykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDM4MTkwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTAg
KzEzOSwxMCBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldFNpbWlsYXJGCiAgICAg
Y29uc3QgRm9udEZhbWlseSogY3VyckZhbWlseSA9ICZmb250LmZvbnREZXNjcmlwdGlvbigpLmZh
bWlseSgpOwogICAgIHdoaWxlIChjdXJyRmFtaWx5ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAg
ICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdGF0
aWMgU3RyaW5nIG1hdGNoV29yZHNbM10gPSB7IFN0cmluZygiQXJhYmljIiksIFN0cmluZygiUGFz
aHRvIiksIFN0cmluZygiVXJkdSIpIH07CisgICAgICAgICAgICBzdGF0aWMgU3RyaW5nKiBtYXRj
aFdvcmRzWzNdID0geyBuZXcgU3RyaW5nKCJBcmFiaWMiKSwgbmV3IFN0cmluZygiUGFzaHRvIiks
IG5ldyBTdHJpbmcoIlVyZHUiKSB9OwogICAgICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyYg
Z2VlemFTdHIgPSAqbmV3IEF0b21pY1N0cmluZygiR2VlemEgUHJvIik7CiAgICAgICAgICAgICBm
b3IgKGludCBqID0gMDsgaiA8IDMgJiYgIXBsYXRmb3JtRGF0YTsgKytqKQotICAgICAgICAgICAg
ICAgIGlmIChjdXJyRmFtaWx5LT5mYW1pbHkoKS5jb250YWlucyhtYXRjaFdvcmRzW2pdLCBmYWxz
ZSkpCisgICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmNvbnRhaW5zKCpt
YXRjaFdvcmRzW2pdLCBmYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtRGF0YSA9
IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250RGVzY3JpcHRpb24oKSwgZ2VlemFT
dHIpOwogICAgICAgICB9CiAgICAgICAgIGN1cnJGYW1pbHkgPSBjdXJyRmFtaWx5LT5uZXh0KCk7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3ND
b250ZXh0TWFjLm1tCShyZXZpc2lvbiAzODE5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsMTEgKzg3
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWwKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICAvLyBDb25zdGFudHMgZm9yIHNwZWxsaW5nIHBhdHRlcm4g
Y29sb3IKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQ29sb3I+IHNwZWxsaW5nUGF0dGVybkNvbG9y
ID0gbmlsOworICAgIHN0YXRpYyBOU0NvbG9yICpzcGVsbGluZ1BhdHRlcm5Db2xvciA9IG5pbDsK
ICAgICBzdGF0aWMgYm9vbCB1c2luZ0RvdEZvclNwZWxsaW5nID0gZmFsc2U7CiAKICAgICAvLyBD
b25zdGFudHMgZm9yIGdyYW1tYXIgcGF0dGVybiBjb2xvcgotICAgIHN0YXRpYyBSZXRhaW5QdHI8
TlNDb2xvcj4gZ3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKKyAgICBzdGF0aWMgTlNDb2xvciAq
Z3JhbW1hclBhdHRlcm5Db2xvciA9IG5pbDsKICAgICBzdGF0aWMgYm9vbCB1c2luZ0RvdEZvckdy
YW1tYXIgPSBmYWxzZTsKICAgICAKICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgZm9yIG1pc3Nw
ZWxsaW5nIG9yIGJhZCBncmFtbWFyCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lRm9yTWlzc3BlbAogICAgICAgICAgICAgdXNpbmdEb3RGb3JTcGVsbGlu
ZyA9IHRydWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gW05TQ29sb3IgcmVk
Q29sb3JdOwotICAgICAgICBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IGNvbG9yOworICAgICAgICBz
cGVsbGluZ1BhdHRlcm5Db2xvciA9IChOU0NvbG9yKilDRlJldGFpbihjb2xvcik7CiAgICAgfQog
ICAgIAogICAgIGlmIChncmFtbWFyICYmICFncmFtbWFyUGF0dGVybkNvbG9yKSB7CkBAIC0xMTgs
MTcgKzExOCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsCiAg
ICAgICAgICAgICB1c2luZ0RvdEZvckdyYW1tYXIgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb2xvciA9IFtOU0NvbG9yIGdyZWVuQ29sb3JdOwotICAgICAgICBncmFtbWFyUGF0
dGVybkNvbG9yID0gY29sb3I7CisgICAgICAgIGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSAoTlNDb2xv
ciopQ0ZSZXRhaW4oY29sb3IpOwogICAgIH0KICAgICAKICAgICBib29sIHVzaW5nRG90OwogICAg
IE5TQ29sb3IgKnBhdHRlcm5Db2xvcjsKICAgICBpZiAoZ3JhbW1hcikgewogICAgICAgICB1c2lu
Z0RvdCA9IHVzaW5nRG90Rm9yR3JhbW1hcjsKLSAgICAgICAgcGF0dGVybkNvbG9yID0gZ3JhbW1h
clBhdHRlcm5Db2xvci5nZXQoKTsKKyAgICAgICAgcGF0dGVybkNvbG9yID0gZ3JhbW1hclBhdHRl
cm5Db2xvcjsKICAgICB9IGVsc2UgewogICAgICAgICB1c2luZ0RvdCA9IHVzaW5nRG90Rm9yU3Bl
bGxpbmc7Ci0gICAgICAgIHBhdHRlcm5Db2xvciA9IHNwZWxsaW5nUGF0dGVybkNvbG9yLmdldCgp
OworICAgICAgICBwYXR0ZXJuQ29sb3IgPSBzcGVsbGluZ1BhdHRlcm5Db2xvcjsKICAgICB9CiAK
ICAgICAvLyBNYWtlIHN1cmUgdG8gZHJhdyBvbmx5IGNvbXBsZXRlIGRvdHMuCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQko
cmV2aXNpb24gMzgxOTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVG
b250RGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTIsMTAgKzkyLDEwIEBAIGJvb2wgaW5p
dEZvbnREYXRhKFNpbXBsZUZvbnREYXRhKiBmb250RGEKIAogc3RhdGljIE5TU3RyaW5nICp3ZWJG
YWxsYmFja0ZvbnRGYW1pbHkodm9pZCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5n
PiB3ZWJGYWxsYmFja0ZvbnRGYW1pbHkgPSBuaWw7CisgICAgc3RhdGljIE5TU3RyaW5nKiB3ZWJG
YWxsYmFja0ZvbnRGYW1pbHkgPSBuaWw7CiAgICAgaWYgKCF3ZWJGYWxsYmFja0ZvbnRGYW1pbHkp
Ci0gICAgICAgIHdlYkZhbGxiYWNrRm9udEZhbWlseSA9IFtbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6MTYuMGZdIGZhbWlseU5hbWVdOwotICAgIHJldHVybiB3ZWJGYWxsYmFja0ZvbnRGYW1pbHku
Z2V0KCk7CisgICAgICAgIHdlYkZhbGxiYWNrRm9udEZhbWlseSA9IChOU1N0cmluZyopQ0ZSZXRh
aW4oW1tOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxNi4wZl0gZmFtaWx5TmFtZV0pOworICAgIHJl
dHVybiB3ZWJGYWxsYmFja0ZvbnRGYW1pbHk7CiB9CiAKICNpZiAhRVJST1JfRElTQUJMRUQKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMzgxOTApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIHN0YXRpYyBOU0FycmF5KiBzZWxlY3Rpb25QYXN0ZWJvYXJkVHlwZXMK
IAogc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNGb3JVUkwoKQogewotICAgIHN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheT4gdHlwZXMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkgKnR5cGVz
ID0gbmlsOwogICAgIGlmICghdHlwZXMpIHsKICAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJk
VHlwZSwKQEAgLTg3LDE5ICs4NywyMSBAQCBzdGF0aWMgTlNBcnJheSogd3JpdGFibGVUeXBlc0Zv
clVSTCgpCiAgICAgICAgICAgICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwKICAgICAgICAgICAgIE5T
U3RyaW5nUGJvYXJkVHlwZSwKICAgICAgICAgICAgIG5pbF07CisgICAgICAgIENGUmV0YWluKHR5
cGVzKTsKICAgICB9Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAgIHJldHVybiB0eXBlczsK
IH0KIAogc3RhdGljIE5TQXJyYXkqIHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpCiB7Ci0gICAgc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBuaWw7CisgICAgc3RhdGljIE5T
TXV0YWJsZUFycmF5ICp0eXBlcyA9IG5pbDsKICAgICBpZiAoIXR5cGVzKSB7CiAgICAgICAgIHR5
cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TVElGRlBib2Fy
ZFR5cGUsIG5pbF07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3RzRnJvbUFycmF5Ondy
aXRhYmxlVHlwZXNGb3JVUkwoKV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNS
VEZEUGJvYXJkVHlwZV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRh
YmxlVHlwZXNGb3JVUkwoKV07CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6TlNSVEZEUGJvYXJk
VHlwZV07CisgICAgICAgIENGUmV0YWluKHR5cGVzKTsKICAgICB9Ci0gICAgcmV0dXJuIHR5cGVz
LmdldCgpOworICAgIHJldHVybiB0eXBlczsKIH0KIAogUGFzdGVib2FyZCogUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKSAKQEAgLTEyMSwxMiArMTIzLDEyIEBAIHZvaWQgUGFzdGVib2Fy
ZDo6Y2xlYXIoKQogc3RhdGljIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaXBBdHRhY2htZW50Q2hh
cmFjdGVycyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBjb25zdCB1bmljaGFy
IGF0dGFjaG1lbnRDaGFyYWN0ZXIgPSBOU0F0dGFjaG1lbnRDaGFyYWN0ZXI7Ci0gICAgc3RhdGlj
IFJldGFpblB0cjxOU1N0cmluZz4gYXR0YWNobWVudENoYXJhY3RlclN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNobWVudENoYXJhY3RlciBsZW5ndGg6MV07Cisg
ICAgc3RhdGljIE5TU3RyaW5nICphdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5nID0gKE5TU3RyaW5n
KilDRlJldGFpbihbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFy
YWN0ZXIgbGVuZ3RoOjFdKTsKICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpyZXN1bHQg
PSBbW3N0cmluZyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIE5TUmFuZ2UgYXR0YWNo
bWVudFJhbmdlID0gW1tyZXN1bHQgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFy
YWN0ZXJTdHJpbmcuZ2V0KCldOworICAgIE5TUmFuZ2UgYXR0YWNobWVudFJhbmdlID0gW1tyZXN1
bHQgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyYWN0ZXJTdHJpbmddOwogICAg
IHdoaWxlIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewogICAgICAg
ICBbcmVzdWx0IHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTphdHRhY2htZW50UmFuZ2Ugd2l0aFN0
cmluZzpAIiJdOwotICAgICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW3Jlc3VsdCBzdHJpbmddIHJh
bmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJhY3RlclN0cmluZy5nZXQoKV07CisgICAgICAgIGF0
dGFjaG1lbnRSYW5nZSA9IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2htZW50
Q2hhcmFjdGVyU3RyaW5nXTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDM4MTkwKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE1LDExICsxNTE1LDEx
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICB9CiAKICAg
ICAvLyBQYWludCB0aGUgcmVzaXplciBjb250cm9sLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IHJlc2l6ZUNvcm5lckltYWdlOworICAgIHN0YXRpYyBJbWFnZSogcmVzaXplQ29ybmVySW1hZ2Ug
PSAwOwogICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCi0gICAgICAgIHJlc2l6ZUNvcm5lcklt
YWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIp
OworICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKS5yZWxlYXNlUmVmKCk7CiAgICAgSW50UG9pbnQgaW1h
Z2VQb2ludChhYnNSZWN0LnJpZ2h0KCkgLSByZXNpemVDb3JuZXJJbWFnZS0+d2lkdGgoKSwgYWJz
UmVjdC5ib3R0b20oKSAtIHJlc2l6ZUNvcm5lckltYWdlLT5oZWlnaHQoKSk7Ci0gICAgY29udGV4
dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCBpbWFnZVBvaW50KTsKKyAgICBj
b250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UsIGltYWdlUG9pbnQpOwogCiAgICAg
Ly8gRHJhdyBhIGZyYW1lIGFyb3VuZCB0aGUgcmVzaXplciAoMXB4IGdyZXkgbGluZSkgaWYgdGhl
cmUgYXJlIGFueSBzY3JvbGxiYXJzIHByZXNlbnQuCiAgICAgLy8gQ2xpcHBpbmcgd2lsbCBleGNs
dWRlIHRoZSByaWdodCBhbmQgYm90dG9tIGVkZ2VzIG9mIHRoaXMgZnJhbWUuCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMzgxOTkpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIyIEBACisyMDA4LTExLTA2ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
cmUgZm9yOgorICAgICAgICBCdWcgMjE4MTA6IFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmpl
Y3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTAKKworICAgICAg
ICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAoK1tOU1Bhc3RlYm9h
cmQgX3dlYl93cml0YWJsZVR5cGVzRm9yVVJMXSk6IENoYW5nZWQgdG8gbGVhayBhbiBvYmplY3Qg
dG8gYXZvaWQgYW4gZXhpdC10aW1lIGRlc3RydWN0b3IuCisgICAgICAgIChfd3JpdGFibGVUeXBl
c0ZvckltYWdlV2l0aG91dEFyY2hpdmUpOiBkaXR0bworICAgICAgICAoX3dyaXRhYmxlVHlwZXNG
b3JJbWFnZVdpdGhBcmNoaXZlKTogZGl0dG8KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkSGVscGVyLm1tOgorICAgICAgICAoV2ViUGFzdGVib2FyZEhlbHBlcjo6aW5zZXJ0
YWJsZVBhc3RlYm9hcmRUeXBlcyk6IGRpdHRvCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW06CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0
ZWRNSU1FVHlwZXNdKTogZGl0dG8KKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSk6IGRpdHRvCisgICAgICAgICgrW1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOiBkaXR0bworCiAyMDA4LTExLTA2
ICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIHBy
b2JsZW0gd2l0aCBzd2l0Y2hpbmcgYmV0d2VlbiB0ZXh0LW9ubHkgem9vbSBhbmQgZnVsbC1jb250
ZW50IHpvb20KSW5kZXg6IFdlYktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQko
cmV2aXNpb24gMzgxOTApCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIE5TU3RyaW5nICpXZWJVUkxOYW1l
UGJvYXJkVHlwZSA9IEAicHVibGkKIAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0Zv
clVSTAogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdHlwZXM7CisgICAgc3RhdGlj
IE5TQXJyYXkgKnR5cGVzID0gbmlsOwogICAgIGlmICghdHlwZXMpIHsKICAgICAgICAgdHlwZXMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZSwKQEAgLTY3LDI5ICs2NywzMiBAQCBOU1N0cmluZyAqV2ViVVJM
TmFtZVBib2FyZFR5cGUgPSBAInB1YmxpCiAgICAgICAgICAgICBXZWJVUkxOYW1lUGJvYXJkVHlw
ZSwKICAgICAgICAgICAgIE5TU3RyaW5nUGJvYXJkVHlwZSwKICAgICAgICAgICAgIG5pbF07Cisg
ICAgICAgIENGUmV0YWluKHR5cGVzKTsKICAgICB9Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOwor
ICAgIHJldHVybiB0eXBlczsKIH0KIAogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9y
SW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiB0eXBlczsKKyAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKnR5cGVzID0gbmls
OwogICAgIGlmICh0eXBlcyA9PSBuaWwpIHsKICAgICAgICAgdHlwZXMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNUSUZGUGJvYXJkVHlwZSwgbmlsXTsKLSAgICAg
ICAgW3R5cGVzLmdldCgpIGFkZE9iamVjdHNGcm9tQXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dy
aXRhYmxlVHlwZXNGb3JVUkxdXTsKKyAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6
W05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdXTsKKyAgICAgICAgQ0ZSZXRh
aW4odHlwZXMpOwogICAgIH0KLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0dXJuIHR5
cGVzOwogfQogCiBzdGF0aWMgTlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNo
aXZlICh2b2lkKQogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVz
OworICAgIHN0YXRpYyBOU011dGFibGVBcnJheSAqdHlwZXMgPSBuaWw7CiAgICAgaWYgKHR5cGVz
ID09IG5pbCkgewogICAgICAgICB0eXBlcyA9IFtfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91
dEFyY2hpdmUoKSBtdXRhYmxlQ29weV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6
TlNSVEZEUGJvYXJkVHlwZV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6V2ViQXJj
aGl2ZVBib2FyZFR5cGVdOworICAgICAgICBbdHlwZXMgYWRkT2JqZWN0Ok5TUlRGRFBib2FyZFR5
cGVdOworICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAg
ICAgICAgQ0ZSZXRhaW4odHlwZXMpOwogICAgIH0KLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7Cisg
ICAgcmV0dXJuIHR5cGVzOwogfQogCiArIChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5cGVzRm9y
SW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihCT09MKWhhc0FyY2hpdmUKSW5kZXg6IFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZEhlbHBlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRIZWxwZXIubW0JKHJldmlzaW9uIDM4
MTkwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVscGVyLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5MSw5IEBAIERPTURvY3VtZW50RnJhZ21lbnQgKldl
YlBhc3RlYm9hcmRIZWxwZXIKIAogTlNBcnJheSAqV2ViUGFzdGVib2FyZEhlbHBlcjo6aW5zZXJ0
YWJsZVBhc3RlYm9hcmRUeXBlcygpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBSZXRhaW5QdHI8
TlNBcnJheT4gdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgTlNIVE1MUGJvYXJkVHlwZSwKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlw
ZXMgPSAoTlNBcnJheSopQ0ZSZXRhaW4oW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
V2ViQXJjaGl2ZVBib2FyZFR5cGUsIE5TSFRNTFBib2FyZFR5cGUsCiAgICAgICAgICAgIE5TRmls
ZW5hbWVzUGJvYXJkVHlwZSwgTlNUSUZGUGJvYXJkVHlwZSwgTlNQSUNUUGJvYXJkVHlwZSwgTlNV
UkxQYm9hcmRUeXBlLCAKLSAgICAgICAgICAgTlNSVEZEUGJvYXJkVHlwZSwgTlNSVEZQYm9hcmRU
eXBlLCBOU1N0cmluZ1Bib2FyZFR5cGUsIE5TQ29sb3JQYm9hcmRUeXBlLCBuaWxdOworICAgICAg
ICAgICBOU1JURkRQYm9hcmRUeXBlLCBOU1JURlBib2FyZFR5cGUsIE5TU3RyaW5nUGJvYXJkVHlw
ZSwgTlNDb2xvclBib2FyZFR5cGUsIG5pbF0pOwogICAgIAotICAgIHJldHVybiB0eXBlcy5nZXQo
KTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0JKHJldmlzaW9uIDM4MTkwKQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtOTIsMjMgKzky
LDIwIEBAIHN0YXRpYyBOU0FycmF5ICpjb25jYXRlbmF0ZUFycmF5cyhOU0FycmEKIAogKyAoTlNB
cnJheSAqKXN1cHBvcnRlZE1JTUVUeXBlcwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJh
eT4gc3RhdGljU3VwcG9ydGVkTUlNRVR5cGVzID0KLSAgICAgICAgY29uY2F0ZW5hdGVBcnJheXMo
W3NlbGYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdLCBbc2VsZiBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlc10pOwotICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCk7Cisg
ICAgc3RhdGljIE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcyA9IChOU0FycmF5KilD
RlJldGFpbihjb25jYXRlbmF0ZUFycmF5cyhbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
c10sIFtzZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSkpOworICAgIHJldHVybiBzdGF0aWNT
dXBwb3J0ZWRNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXMgPQotICAgICAgICBzdHJpbmdBcnJheShNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKTsKLSAgICByZXR1cm4gc3RhdGljU3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuZ2V0KCk7CisgICAgc3RhdGljIE5TQXJyYXkgKnN0YXRp
Y1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gKE5TQXJyYXkqKUNGUmV0YWluKHN0cmluZ0Fy
cmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpKTsK
KyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7CiB9CiAKICsgKE5T
QXJyYXkgKilzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8
TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPQotICAgICAgICBzdHJpbmdB
cnJheShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpKTsKLSAg
ICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCk7CisgICAgc3RhdGlj
IE5TQXJyYXkgKnN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gKE5TQXJyYXkqKUNGUmV0
YWluKHN0cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKCkpKTsKKyAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CiB9CiAK
IC0gaW5pdApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMzgxOTkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0xMS0wNiAgR3JlZyBCb2xz
aW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3JlIGZvcjoKKyAgICAgICAgQnVnIDIxODEwOiBSZW1vdmUg
dXNlIG9mIHN0YXRpYyBDKysgb2JqZWN0cyB0aGF0IGFyZSBkZXN0cm95ZWQgYXQgZXhpdCB0aW1l
IChkZXN0cnVjdG9ycykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODEwCisKKyAgICAgICAgUmVtb3ZlIC5vIGZpbGVzIGZyb20gdGhlIGV4Y2x1ZGUg
bGlzdCB0aGF0IGhhdmUgaGFkIHRoZWlyIGV4aXQtdGltZSBkZXN0cnVjdG9ycyByZW1vdmVkLgor
ICAgICAgICBIYW5kbGUgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBzeW1ib2wuIENsZWFuIHVwIG91
dHB1dC4KKyAgICAgICAgCisgICAgICAgICogU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRl
c3RydWN0b3JzOgorCiAyMDA4LTExLTA2ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0VG9v
bHMvU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwkocmV2
aXNpb24gMzgxOTApCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMJKHdvcmtpbmcgY29weSkKQEAgLTk2LDM2ICs5NiwxNyBAQCBmb3IgbXkgJGZp
bGUgKHNvcnQgQGZpbGVzKSB7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWNjZXNz
aWJpbGl0eU9iamVjdC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkNT
U1N0eWxlU2VsZWN0b3IubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ2FjaGVk
SW1hZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ29sb3JNYWMubyI7CiAg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVyTWFjLm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZUUERpcmVjdG9yeURvY3VtZW50Lm8iOwogICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiR3JhcGhpY3NDb250ZXh0TWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkhUTUxUYWJsZUVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SWNvbkRhdGFiYXNlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8i
OwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFj
dG9yeS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkTGVu
Z3RoLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTU1ZHQW5pbWF0ZWRSZWN0
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTU1ZHRWxlbWVudFdyYXBwZXJG
YWN0b3J5Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTU1ZHTGVuZ3RoLm8i
OwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTU1ZHUmVjdC5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYXN0ZWJvYXJkTWFjLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlJlbmRlckxheWVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNjcm9sbFZpZXcubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Vj
dXJpdHlPcmlnaW4ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2ltcGxlRm9u
dERhdGFNYWMubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zv
cm1EYXRhLm8iOwogICAgIH0KIAotICAgIGlmICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViSFRNTFJlcHJlc2VudGF0aW9uLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYk5TUGFzdGVib2FyZEV4dHJhcy5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJQYXN0ZWJvYXJkSGVscGVyLm8iOwotICAg
IH0KLQogICAgICRzYXdFcnJvciA9IDEgaWYgcHJpbnRGdW5jdGlvbnMoJHNob3J0TmFtZSwgJGZp
bGUpOwogfQogCkBAIC0xNjgsMTMgKzE0OSwxNCBAQCBzdWIgcHJpbnRGdW5jdGlvbnMoJCQpCiAg
ICAgbXkgJGN1cnJlbnRTeW1ib2wgPSAiIjsKICAgICB3aGlsZSAoPE9UT09MPikgewogICAgICAg
ICAkY3VycmVudFN5bWJvbCA9ICQxIGlmIC9eKFx3Kyk6JC87CisgICAgICAgIG5leHQgdW5sZXNz
ICRjdXJyZW50U3ltYm9sOwogICAgICAgICAkZnVuY3Rpb25ze2RlbWFuZ2xlKCRjdXJyZW50U3lt
Ym9sKX0gPSAxIGlmIC9fX19jeGFfYXRleGl0LzsKICAgICB9CiAgICAgY2xvc2UgT1RPT0w7CiAg
ICAgbXkgJHJlc3VsdCA9IDA7CiAgICAgZm9yIG15ICRmdW5jdGlvbiAoc29ydCBrZXlzICVmdW5j
dGlvbnMpIHsKICAgICAgICAgaWYgKCEkcmVzdWx0KSB7Ci0gICAgICAgICAgICBwcmludCAiJHNo
b3J0TmFtZSBoYXMgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGluIGl0ISAoJHBhdGgpXG4iOworICAg
ICAgICAgICAgcHJpbnQgIiRzaG9ydE5hbWUgaGFzIGV4aXQgdGltZSBkZXN0cnVjdG9ycyBpbiBp
dCFcbiAgKCRwYXRoKVxuIjsKICAgICAgICAgICAgICRyZXN1bHQgPSAxOwogICAgICAgICB9CiAg
ICAgICAgIHByaW50ICIgICAgJGZ1bmN0aW9uXG4iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>24975</attachid>
            <date>2008-11-07 16:31:26 -0800</date>
            <delta_ts>2008-11-07 16:31:26 -0800</delta_ts>
            <desc>This is the bt of the crash that happens with the first patch applied</desc>
            <filename>crashlog.txt</filename>
            <type>text/plain</type>
            <size>5657</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">KGdkYikgYnQKIzAgIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCAocG9ydD0wLCBwcm90b2NvbD1A
MHgyNWI5MmVjKSBhdCAvVXNlcnMvYm9sc2luZ2EvRG9jdW1lbnRzL2NvZGUvZXh0ZXJuYWwvdHJ1
bmsvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDo0NQojMSAgMHgwMTllZjFiNCBpbiBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4gKHRoaXM9MHgyNWI5MmU4LCB1
cmw9QDB4MjVhNzdhMCkgYXQgL1VzZXJzL2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFs
L3RydW5rL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6NzUKIzIgIDB4MDE5ZWYzOGMg
aW4gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSAodXJsPUAweDI1YjkyZDApIGF0IC9V
c2Vycy9ib2xzaW5nYS9Eb2N1bWVudHMvY29kZS9leHRlcm5hbC90cnVuay9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwOjk3CiMzICAweDAxNDUzOWI2IGluIFdlYkNvcmU6OkRvY3VtZW50
Ojppbml0U2VjdXJpdHlDb250ZXh0ICh0aGlzPTB4MjVhYTAwMCkgYXQgL1VzZXJzL2JvbHNpbmdh
L0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcDo0
MDI3CiM0ICAweDAxNDU3YjdhIGluIFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCAodGhpcz0w
eDI1YWEwMDAsIGZyYW1lPTB4MjViOTJkMCwgaXNYSFRNTD1mYWxzZSkgYXQgL1VzZXJzL2JvbHNp
bmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cDozNTMKIzUgIDB4MDE0ZjcyMGYgaW4gV2ViQ29yZTo6SFRNTERvY3VtZW50OjpIVE1MRG9jdW1l
bnQgKHRoaXM9MHgyNWFhMDAwLCBmcmFtZT0weDI1YjkyZDApIGF0IC9Vc2Vycy9ib2xzaW5nYS9E
b2N1bWVudHMvY29kZS9leHRlcm5hbC90cnVuay9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNw
cDo4NAojNiAgMHgwMTNhODRkZCBpbiBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQgKHR5cGU9QDB4MjVhYTAwMCwgZnJhbWU9MHgyNTliMGM4LCBpblZpZXdTb3VyY2VN
b2RlPWZhbHNlKSBhdCBodG1sL0hUTUxEb2N1bWVudC5oOjM4CiM3ICAweDAxNGM1ZWRlIGluIFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbiAodGhpcz0weDI1YTc2YTQsIHVybD1AMHgyNWFhMDAw
LCBkaXNwYXRjaD1mYWxzZSwgb3JpZ2luPTB4MCkgYXQgL1VzZXJzL2JvbHNpbmdhL0RvY3VtZW50
cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDo5NDAK
IzggIDB4MDE0ZDIwMGEgaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRh
ICh0aGlzPTB4MjVhNzZhNCkgYXQgL1VzZXJzL2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVy
bmFsL3RydW5rL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDo4NzMKIzkgIDB4MDE0ZDIz
OTggaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldEVuY29kaW5nICh0aGlzPTB4MjVhNzZhNCwg
bmFtZT1AMHgyNWI5MmQwLCB1c2VyQ2hvc2VuPWZhbHNlKSBhdCAvVXNlcnMvYm9sc2luZ2EvRG9j
dW1lbnRzL2NvZGUvZXh0ZXJuYWwvdHJ1bmsvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OjE4NzcKIzEwIDB4MDAzZDBjODAgaW4gLVtXZWJGcmFtZShXZWJJbnRlcm5hbCkgX3JlY2VpdmVk
RGF0YTp0ZXh0RW5jb2RpbmdOYW1lOl0gKHNlbGY9MHg2NGQ2ZjAsIF9jbWQ9MHg0NGNmNTgsIGRh
dGE9MHgyNWI5MmQwLCB0ZXh0RW5jb2RpbmdOYW1lPTB4MCkgYXQgL1VzZXJzL2JvbHNpbmdhL0Rv
Y3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bToxMDM1CiMxMSAweDAwM2RmMzA0IGluIC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIHJlY2VpdmVk
RGF0YTp3aXRoRGF0YVNvdXJjZTpdIChzZWxmPTB4NjU1YmEwLCBfY21kPTB4NDVmMjI0LCBkYXRh
PTB4NjVhYjYwLCBkYXRhU291cmNlPTB4NjQwYWQwKSBhdCAvVXNlcnMvYm9sc2luZ2EvRG9jdW1l
bnRzL2NvZGUvZXh0ZXJuYWwvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbToxNjQKIzEyIDB4MDAzYzQ5OGIgaW4gLVtXZWJEYXRhU291cmNlKFdlYkludGVy
bmFsKSBfcmVjZWl2ZWREYXRhOl0gKHNlbGY9MHg2NDBhZDAsIF9jbWQ9MHg0NDNlZmMsIGRhdGE9
MHgyNWI5MmQwKSBhdCAvVXNlcnMvYm9sc2luZ2EvRG9jdW1lbnRzL2NvZGUvZXh0ZXJuYWwvdHJ1
bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06MjE5CiMxMyAweDAwM2Q4M2I5
IGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkICh0aGlzPTB4MjVhNDJiOCwg
bG9hZGVyPTB4MjViYjIwMCwgZGF0YT0weDI4M2Y4MjAgIjxodG1sPlxuPHNjcmlwdD5cbiAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKVxuICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7XG48L3NjcmlwdD5cbjxib2R5PlxuICAgIDxzcGFuIGlkPVwibWVz
c2FnZVwiPlRoaXMgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluPC9zcGFuPlxuICAgIDxp
bnB1dCBpZD1cInRpbWVcIiAiLi4uLCBsZW5ndGg9NjY2MzAwOCkgYXQgL1VzZXJzL2JvbHNpbmdh
L0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW06NzA1CiMxNCAweDAxNDY3ODU2IGluIFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjpjb21taXRMb2FkICh0aGlzPTB4NjVhYjYwLCBkYXRhPTB4MjgzZjgyMCAi
PGh0bWw+XG48c2NyaXB0PlxuICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpXG4g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTtcbjwvc2NyaXB0PlxuPGJv
ZHk+XG4gICAgPHNwYW4gaWQ9XCJtZXNzYWdlXCI+VGhpcyBjb21wdXRlciB3aWxsIHNlbGYtZGVz
dHJ1Y3QgaW48L3NwYW4+XG4gICAgPGlucHV0IGlkPVwidGltZVwiICIuLi4sIGxlbmd0aD00MjIw
MzE2OCkgYXQgL1VzZXJzL2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDozNTUKIzE1IDB4MDE3ZDI1MTUgaW4gV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhICh0aGlzPTB4MjVkYmEwMCwgZGF0
YT0weDI4M2Y4MjAgIjxodG1sPlxuPHNjcmlwdD5cbiAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKVxuICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7XG48
L3NjcmlwdD5cbjxib2R5PlxuICAgIDxzcGFuIGlkPVwibWVzc2FnZVwiPlRoaXMgY29tcHV0ZXIg
d2lsbCBzZWxmLWRlc3RydWN0IGluPC9zcGFuPlxuICAgIDxpbnB1dCBpZD1cInRpbWVcIiAiLi4u
LCBsZW5ndGg9ODM0LCBsZW5ndGhSZWNlaXZlZD04MzQsIGFsbEF0T25jZT1mYWxzZSkgYXQgL1Vz
ZXJzL2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcDoyNTEKIzE2IDB4MDE2ZmM2ZjcgaW4gV2ViQ29yZTo6TWFpblJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSAodGhpcz0weDI1ZGJhMDAsIGRhdGE9MHgyODNm
ODIwICI8aHRtbD5cbjxzY3JpcHQ+XG4gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cilcbiAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpO1xuPC9zY3JpcHQ+
XG48Ym9keT5cbiAgICA8c3BhbiBpZD1cIm1lc3NhZ2VcIj5UaGlzIGNvbXB1dGVyIHdpbGwgc2Vs
Zi1kZXN0cnVjdCBpbjwvc3Bhbj5cbiAgICA8aW5wdXQgaWQ9XCJ0aW1lXCIgIi4uLiwgbGVuZ3Ro
PTgzNCwgbGVuZ3RoUmVjZWl2ZWQ9ODM0LCBhbGxBdE9uY2U9ZmFsc2UpIGF0IC9Vc2Vycy9ib2xz
aW5nYS9Eb2N1bWVudHMvY29kZS9leHRlcm5hbC90cnVuay9XZWJDb3JlL2xvYWRlci9NYWluUmVz
b3VyY2VMb2FkZXIuY3BwOjMxNAojMTcgMHgwMTdkMjBlOCBpbiBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEgKHRoaXM9MHgyNWI5MmQwLCBkYXRhPTB4MjViOTJkMCAiIiwg
bGVuZ3RoPTM5NTU1NzkyLCBsZW5ndGhSZWNlaXZlZD0zOTU1NTc5MikgYXQgL1VzZXJzL2JvbHNp
bmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDozOTMKIzE4IDB4OTZjZjdhYzcgaW4gLVtOU1VSTENvbm5lY3Rpb24oTlNVUkxD
b25uZWN0aW9uUmVhbGx5SW50ZXJuYWwpIHNlbmREaWRSZWNlaXZlRGF0YTpvcmlnaW5hbExlbmd0
aDpdICgpCiMxOSAweDk2Y2Y3YTExIGluIF9OU1VSTENvbm5lY3Rpb25EaWRSZWNlaXZlRGF0YSAo
KQojMjAgMHg5MjcwYWJmZCBpbiBzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAoKQojMjEgMHg5
MjcwN2ZiMiBpbiBfQ0ZVUkxDb25uZWN0aW9uU2VuZENhbGxiYWNrcyAoKQojMjIgMHg5MjcwN2Ey
NSBpbiBtdXhlclNvdXJjZVBlcmZvcm0gKCkKIzIzIDB4OTRjNDM2MTUgaW4gQ0ZSdW5Mb29wUnVu
U3BlY2lmaWMgKCkKIzI0IDB4OTRjNDNjZjggaW4gQ0ZSdW5Mb29wUnVuSW5Nb2RlICgpCiMyNSAw
eDk2Y2M3MTM1IGluIC1bTlNSdW5Mb29wKE5TUnVuTG9vcCkgcnVuTW9kZTpiZWZvcmVEYXRlOl0g
KCkKIzI2IDB4MDAwMDRmZDUgaW4gcnVuVGVzdCAodGVzdFBhdGhPclVSTD1AMHhiZmZmZmE2NCkg
YXQgL1VzZXJzL2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToxMDM2CiMyNyAweDAwMDA1
YmUwIGluIGR1bXBSZW5kZXJUcmVlIChhcmdjPTIsIGFyZ3Y9MHhiZmZmZmFkNCkgYXQgL1VzZXJz
L2JvbHNpbmdhL0RvY3VtZW50cy9jb2RlL2V4dGVybmFsL3RydW5rL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbTo1MDcKIzI4IDB4MDAwMDVlMjMgaW4gbWFp
biAoYXJnYz0zOTU1NTc5MiwgYXJndj0weDI1YjkyZDApIGF0IC9Vc2Vycy9ib2xzaW5nYS9Eb2N1
bWVudHMvY29kZS9leHRlcm5hbC90cnVuay9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW06NTQ0CihnZGIpIHAgZGVmYXVsdCAgCkRpc3BsYXkgYWxsIDIwNyBw
b3NzaWJpbGl0aWVzPyAoeSBvciBuKQooZ2RiKSBwIGRlZmF1bHRQb3J0cyAKJDIgPSAoV1RGOjpI
YXNoTWFwPFdlYkNvcmU6OlN0cmluZyx1bnNpZ25lZCBpbnQsV2ViQ29yZTo6U3RyaW5nSGFzaCxX
VEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U3RyaW5nPixXVEY6Okhhc2hUcmFpdHM8dW5zaWduZWQg
aW50PiA+ICYpIEAweDI1YjkyZDA6IHsKICBtX2ltcGwgPSB7CiAgICBzdGF0aWMgbV9taW5UYWJs
ZVNpemUgPSA2NCwgCiAgICBzdGF0aWMgbV9tYXhMb2FkID0gMiwgCiAgICBzdGF0aWMgbV9taW5M
b2FkID0gNiwgCiAgICBtX3RhYmxlID0gMHgwLCAKICAgIG1fdGFibGVTaXplID0gMCwgCiAgICBt
X3RhYmxlU2l6ZU1hc2sgPSAwLCAKICAgIG1fa2V5Q291bnQgPSAwLCAKICAgIG1fZGVsZXRlZENv
dW50ID0gMAogIH0KfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25008</attachid>
            <date>2008-11-09 14:18:38 -0800</date>
            <delta_ts>2008-11-10 14:57:43 -0800</delta_ts>
            <desc>Updates patch that doesn&apos;t crash running all LayoutTests</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>85518</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MjQ1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIwMDgtMTEtMDkgIEdyZWcgQm9s
c2luZ2EgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAg
ICBCdWcgMjE4MTA6IFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRl
c3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTAKKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWc6IHNldCBHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gWUVTIGZvciA8
cmRhcjovL3Byb2JsZW0vNjM1NDY5Nj4KKwogMjAwOC0xMS0wOCAgS2V2aW4gT2xsaXZpZXIgIDxr
ZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KICAgICAgICAgCiAgICAgICAgIHd4IGJ1aWxkIGZpeGVz
IGFmdGVyIGFkZGl0aW9uIG9mIEpTQ29yZSBwYXJzZXIgYW5kIGJ5Y29tcGlsZXIgZGlycy4gQWxz
byBjbGVhbnVwCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcJKHJldmlzaW9uIDM4MjQ1KQorKysgSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQCBHQ0NfTU9ERUxf
VFVOSU5HID0gRzU7CiBHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgV0VCS0lUX1ZFUlNJT05f
TUlOX1JFUVVJUkVEPVdFQktJVF9WRVJTSU9OX0xBVEVTVCAkKEdDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMpOwogR0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKLUdDQ19USFJFQURTQUZFX1NU
QVRJQ1MgPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBZRVM7CiBHQ0NfVFJFQVRfV0FS
TklOR1NfQVNfRVJST1JTID0gWUVTOwogR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElP
TlMgPSBOTzsKIEdDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAzODI0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
OSBAQAorMjAwOC0xMS0wOSAgR3JlZyBCb2xzaW5nYSAgPHNldCBFTUFJTF9BRERSRVNTIGVudmly
b25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJvbGxpbmcgcjM4MTg5IGJhY2sgaW4uCisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOiBzZXQgR0NDX1RIUkVBRFNBRkVf
U1RBVElDUyA9IFlFUyBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYzNTQ2OTY+CisKIDIwMDgtMTEtMDkg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBCVUlMRCBGSVg6
IFF0IGJ1aWxkIGJyb2tlIGFmdGVyIHIzODIzNS4KSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlv
bnMvQmFzZS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWcJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIEdDQ19FTkFCTEVf
U1lNQk9MX1NFUEFSQVRJT04gPSBOTzsKIEdDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CiBH
Q0NfTU9ERUxfVFVOSU5HID0gRzU7CiBHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVT
OwotR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POworR0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9
IFlFUzsKIEdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CiBHQ0NfV0FSTl9BQk9V
VF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IE5POwogR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdM
SU5FID0gWUVTOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMzgyNDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHZvaWQqIGNvbGxlY3Qodm9pZCopCiAK
IEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCkKIHsKLSAgICBzdGF0aWMgR0NDb250cm9sbGVy
IHN0YXRpY0dDQ29udHJvbGxlcjsKKyAgICBzdGF0aWMgR0NDb250cm9sbGVyJiBzdGF0aWNHQ0Nv
bnRyb2xsZXIgPSAqbmV3IEdDQ29udHJvbGxlcjsKICAgICByZXR1cm4gc3RhdGljR0NDb250cm9s
bGVyOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lv
biAzODI0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsMTAgKzk3LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVXcmFw
cGVycyhjb25zdCAKIHN0YXRpYyBIYXNoU2V0PERPTU9iamVjdCo+JiB3cmFwcGVyU2V0KCkKIHsK
ICNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8SGFzaFNldDxE
T01PYmplY3QqPiA+IHN0YXRpY1dyYXBwZXJTZXQ7CisgICAgc3RhdGljIFRocmVhZFNwZWNpZmlj
PEhhc2hTZXQ8RE9NT2JqZWN0Kj4gPiYgc3RhdGljV3JhcHBlclNldCA9ICpuZXcgVGhyZWFkU3Bl
Y2lmaWM8SGFzaFNldDxET01PYmplY3QqPiA+OwogICAgIHJldHVybiAqc3RhdGljV3JhcHBlclNl
dDsKICNlbHNlCi0gICAgc3RhdGljIEhhc2hTZXQ8RE9NT2JqZWN0Kj4gc3RhdGljV3JhcHBlclNl
dDsKKyAgICBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiYgc3RhdGljV3JhcHBlclNldCA9ICpu
ZXcgSGFzaFNldDxET01PYmplY3QqPjsKICAgICByZXR1cm4gc3RhdGljV3JhcHBlclNldDsKICNl
bmRpZgogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmpl
Y3RXcmFwcGVyLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAgdHlwZWRlZiBIYXNoTWFwPEpTR2xvYmFsT2JqZWN0KiwgV3JhcHBlcgogCiBzdGF0aWMgR2xv
YmFsT2JqZWN0V3JhcHBlck1hcCYgd3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBHbG9iYWxPYmpl
Y3RXcmFwcGVyTWFwIG1hcDsKKyAgICBzdGF0aWMgR2xvYmFsT2JqZWN0V3JhcHBlck1hcCYgbWFw
ID0gKm5ldyBHbG9iYWxPYmplY3RXcmFwcGVyTWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXIuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0
b3JDYWxsYmFja1dyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHR5
cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIEpTSW5zcGVjdG9yQ2EKIAogc3RhdGljIFdyYXBwZXJN
YXAmIHdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgV3JhcHBlck1hcCBtYXA7CisgICAgc3RhdGlj
IFdyYXBwZXJNYXAmIG1hcCA9ICpuZXcgV3JhcHBlck1hcDsKICAgICByZXR1cm4gbWFwOwogfQog
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCB0eXBlZGVmIEhhc2hTZXQ8Um9vdE9iamVjdCo+IFJvb3RPYmplY3RTCiAKIHN0YXRpYyBSb290
T2JqZWN0U2V0KiByb290T2JqZWN0U2V0KCkKIHsKLSAgICBzdGF0aWMgUm9vdE9iamVjdFNldCBz
dGF0aWNSb290T2JqZWN0U2V0OworICAgIHN0YXRpYyBSb290T2JqZWN0U2V0JiBzdGF0aWNSb290
T2JqZWN0U2V0ID0gKm5ldyBSb290T2JqZWN0U2V0OwogICAgIHJldHVybiAmc3RhdGljUm9vdE9i
amVjdFNldDsKIH0KIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBTdHJpbmcg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnJlbW92CiB7CiAgICAgZWMgPSAwOwogCi0gICAg
c3RhdGljIEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiBzaG9ydGhhbmRNYXA7CisgICAg
c3RhdGljIEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiYgc2hvcnRoYW5kTWFwID0gKm5l
dyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD47CiAgICAgaWYgKHNob3J0aGFuZE1hcC5p
c0VtcHR5KCkpCiAgICAgICAgIGluaXRTaG9ydGhhbmRNYXAoc2hvcnRoYW5kTWFwKTsKIApJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw3ICs2ODYs
NyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAg
ICAvLyBGSVhNRTogQWRkIGxpc3Qtc3R5bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgcmVjdFBhcmVuKCJyZWN0KCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgcmVjdFBhcmVuID0gKm5ldyBTdHJpbmcoInJlY3QoIik7CiAKICAgICAgICAgICAgIFJlY3Qq
IHJlY3RWYWwgPSBnZXRSZWN0VmFsdWUoKTsKICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwpAQCAtNzA5LDkgKzcwOSw5IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4
dCgpIGNvbnMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19SR0JDT0xPUjoKICAgICAgICAg
Y2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIGNvbW1hU3BhY2UoIiwgIik7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHJn
YlBhcmVuKCJyZ2IoIik7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHJnYmFQYXJl
bigicmdiYSgiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGNvbW1hU3BhY2Ug
PSAqbmV3IFN0cmluZygiLCAiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHJn
YlBhcmVuID0gKm5ldyBTdHJpbmcoInJnYigiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHJnYmFQYXJlbiA9ICpuZXcgU3RyaW5nKCJyZ2JhKCIpOwogCiAgICAgICAgICAgICBS
R0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwogICAgICAgICAgICAgaWYgKG1fdHlw
ZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24g
MzgyNDUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyLDc1ICs2Miw3NSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNv
CiAgICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9tYXRjaCAhPSBQc2V1ZG9FbGVt
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFjdGl2ZSgi
YWN0aXZlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhZnRlcigiYWZ0ZXIiKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGFueUxpbmsoIi13ZWJraXQtYW55LWxpbmsiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGF1dG9maWxsKCItd2Via2l0LWF1dG9maWxsIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBiZWZvcmUoImJlZm9yZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
Y2hlY2tlZCgiY2hlY2tlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmlsZVVwbG9hZEJ1
dHRvbigiLXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGRpc2FibGVkKCJkaXNhYmxlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgcmVhZE9u
bHkoInJlYWQtb25seSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgcmVhZFdyaXRlKCJyZWFk
LXdyaXRlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFnKCItd2Via2l0LWRyYWciKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGRyYWdBbGlhcygiLWtodG1sLWRyYWciKTsgLy8gd2Fz
IGRvY3VtZW50ZWQgd2l0aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1lbnRhdGlvbiwgc28ga2Vl
cCBhbiBhbGlhcwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW1wdHkoImVtcHR5Iik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBlbmFibGVkKCJlbmFibGVkIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBmaXJzdENoaWxkKCJmaXJzdC1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgZmlyc3RMZXR0ZXIoImZpcnN0LWxldHRlciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
Zmlyc3RMaW5lKCJmaXJzdC1saW5lIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdE9m
VHlwZSgiZmlyc3Qtb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnVsbFBhZ2VN
ZWRpYSgiLXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IG50aENoaWxkKCJudGgtY2hpbGQoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBudGhPZlR5
cGUoIm50aC1vZi10eXBlKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRoTGFzdENoaWxk
KCJudGgtbGFzdC1jaGlsZCgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50aExhc3RPZlR5
cGUoIm50aC1sYXN0LW9mLXR5cGUoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmb2N1cygi
Zm9jdXMiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGhvdmVyKCJob3ZlciIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgaW5kZXRlcm1pbmF0ZSgiaW5kZXRlcm1pbmF0ZSIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgaW5wdXRQbGFjZWhvbGRlcigiLXdlYmtpdC1pbnB1dC1wbGFjZWhv
bGRlciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdENoaWxkKCJsYXN0LWNoaWxkIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsYXN0T2ZUeXBlKCJsYXN0LW9mLXR5cGUiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGxpbmsoImxpbmsiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIGxhbmcoImxhbmcoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xz
UGFuZWwoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIG1lZGlhQ29udHJvbHNNdXRlQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11
dGUtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzUGxheUJ1
dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1RpbWVEaXNwbGF5KCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWUtZGlzcGxheSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9s
c1RpbWVsaW5lKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzU2Vla0JhY2tCdXR0b24oIi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVk
aWFDb250cm9sc1NlZWtGb3J3YXJkQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWst
Zm9yd2FyZC1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNG
dWxsc2NyZWVuQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBub3RTdHIoIm5vdCgiKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIG9ubHlDaGlsZCgib25seS1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgb25seU9mVHlwZSgib25seS1vZi10eXBlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyByZXNpemVyKCItd2Via2l0LXJlc2l6ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJv
b3QoInJvb3QiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhcigiLXdlYmtpdC1z
Y3JvbGxiYXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhckJ1dHRvbigiLXdl
YmtpdC1zY3JvbGxiYXItYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxi
YXJDb3JuZXIoIi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgc2Nyb2xsYmFyVGh1bWIoIi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJUcmFjaygiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2si
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhclRyYWNrUGllY2UoIi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrLXBpZWNlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hD
YW5jZWxCdXR0b24oIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIHNlYXJjaERlY29yYXRpb24oIi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24i
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKCItd2Vi
a2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IHNlYXJjaFJlc3VsdHNCdXR0b24oIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWxlY3Rpb24oInNlbGVjdGlvbiIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgc2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyB0YXJnZXQoInRhcmdldCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgdmlzaXRlZCgidmlzaXRlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgd2luZG93
SW5hY3RpdmUoIndpbmRvdy1pbmFjdGl2ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZGVj
cmVtZW50KCJkZWNyZW1lbnQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGluY3JlbWVudCgi
aW5jcmVtZW50Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzdGFydCgic3RhcnQiKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGVuZCgiZW5kIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBob3Jpem9udGFsKCJob3Jpem9udGFsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB2ZXJ0
aWNhbCgidmVydGljYWwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGRvdWJsZUJ1dHRvbigi
ZG91YmxlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2luZ2xlQnV0dG9uKCJz
aW5nbGUtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBub0J1dHRvbigibm8tYnV0
dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBjb3JuZXJQcmVzZW50KCJjb3JuZXItcHJl
c2VudCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGFjdGl2ZSA9ICpuZXcgQXRvbWljU3Ry
aW5nKCJhY3RpdmUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBhZnRlciA9ICpuZXcgQXRv
bWljU3RyaW5nKCJhZnRlciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGFueUxpbmsgPSAq
bmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1hbnktbGluayIpOworICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcmIGF1dG9maWxsID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtYXV0b2ZpbGwiKTsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBiZWZvcmUgPSAqbmV3IEF0b21pY1N0cmluZygiYmVm
b3JlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgY2hlY2tlZCA9ICpuZXcgQXRvbWljU3Ry
aW5nKCJjaGVja2VkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZmlsZVVwbG9hZEJ1dHRv
biA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIGRpc2FibGVkID0gKm5ldyBBdG9taWNTdHJpbmcoImRpc2Fi
bGVkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgcmVhZE9ubHkgPSAqbmV3IEF0b21pY1N0
cmluZygicmVhZC1vbmx5Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgcmVhZFdyaXRlID0g
Km5ldyBBdG9taWNTdHJpbmcoInJlYWQtd3JpdGUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBkcmFnID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtZHJhZyIpOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcmIGRyYWdBbGlhcyA9ICpuZXcgQXRvbWljU3RyaW5nKCIta2h0bWwtZHJhZyIp
OyAvLyB3YXMgZG9jdW1lbnRlZCB3aXRoIHRoaXMgbmFtZSBpbiBBcHBsZSBkb2N1bWVudGF0aW9u
LCBzbyBrZWVwIGFuIGFsaWFzCisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZW1wdHkgPSAqbmV3
IEF0b21pY1N0cmluZygiZW1wdHkiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBlbmFibGVk
ID0gKm5ldyBBdG9taWNTdHJpbmcoImVuYWJsZWQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBmaXJzdENoaWxkID0gKm5ldyBBdG9taWNTdHJpbmcoImZpcnN0LWNoaWxkIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgZmlyc3RMZXR0ZXIgPSAqbmV3IEF0b21pY1N0cmluZygiZmlyc3Qt
bGV0dGVyIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZmlyc3RMaW5lID0gKm5ldyBBdG9t
aWNTdHJpbmcoImZpcnN0LWxpbmUiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBmaXJzdE9m
VHlwZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJmaXJzdC1vZi10eXBlIik7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyYgZnVsbFBhZ2VNZWRpYSA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG50aENoaWxkID0gKm5l
dyBBdG9taWNTdHJpbmcoIm50aC1jaGlsZCgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBu
dGhPZlR5cGUgPSAqbmV3IEF0b21pY1N0cmluZygibnRoLW9mLXR5cGUoIik7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyYgbnRoTGFzdENoaWxkID0gKm5ldyBBdG9taWNTdHJpbmcoIm50aC1sYXN0
LWNoaWxkKCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG50aExhc3RPZlR5cGUgPSAqbmV3
IEF0b21pY1N0cmluZygibnRoLWxhc3Qtb2YtdHlwZSgiKTsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nJiBmb2N1cyA9ICpuZXcgQXRvbWljU3RyaW5nKCJmb2N1cyIpOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcmIGhvdmVyID0gKm5ldyBBdG9taWNTdHJpbmcoImhvdmVyIik7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyYgaW5kZXRlcm1pbmF0ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJpbmRldGVy
bWluYXRlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgaW5wdXRQbGFjZWhvbGRlciA9ICpu
ZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyYgbGFzdENoaWxkID0gKm5ldyBBdG9taWNTdHJpbmcoImxhc3QtY2hpbGQi
KTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsYXN0T2ZUeXBlID0gKm5ldyBBdG9taWNTdHJp
bmcoImxhc3Qtb2YtdHlwZSIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGxpbmsgPSAqbmV3
IEF0b21pY1N0cmluZygibGluayIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGxhbmcgPSAq
bmV3IEF0b21pY1N0cmluZygibGFuZygiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRp
YUNvbnRyb2xzUGFuZWwgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNNdXRlQnV0
dG9uID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0
b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzUGxheUJ1dHRvbiA9
ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIik7
CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1RpbWVEaXNwbGF5ID0gKm5l
dyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5Iik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1RpbWVsaW5lID0gKm5ldyBBdG9t
aWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzU2Vla0JhY2tCdXR0b24gPSAqbmV3IEF0b21pY1N0
cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIik7CisgICAgc3Rh
dGljIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1NlZWtGb3J3YXJkQnV0dG9uID0gKm5ldyBB
dG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNGdWxsc2NyZWVuQnV0dG9u
ID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1i
dXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBub3RTdHIgPSAqbmV3IEF0b21pY1N0
cmluZygibm90KCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIG9ubHlDaGlsZCA9ICpuZXcg
QXRvbWljU3RyaW5nKCJvbmx5LWNoaWxkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgb25s
eU9mVHlwZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJvbmx5LW9mLXR5cGUiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiByZXNpemVyID0gKm5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtcmVzaXpl
ciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHJvb3QgPSAqbmV3IEF0b21pY1N0cmluZygi
cm9vdCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNjcm9sbGJhciA9ICpuZXcgQXRvbWlj
U3RyaW5nKCItd2Via2l0LXNjcm9sbGJhciIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNj
cm9sbGJhckJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNjcm9sbGJhci1idXR0
b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXJDb3JuZXIgPSAqbmV3IEF0
b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIik7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyYgc2Nyb2xsYmFyVGh1bWIgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXJUcmFjayA9
ICpuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNjcm9sbGJhci10cmFjayIpOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcmIHNjcm9sbGJhclRyYWNrUGllY2UgPSAqbmV3IEF0b21pY1N0cmluZygi
LXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2UiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBzZWFyY2hDYW5jZWxCdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zZWFyY2gt
Y2FuY2VsLWJ1dHRvbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHNlYXJjaERlY29yYXRp
b24gPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIpOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcmIHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uID0gKm5ldyBBdG9t
aWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIpOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcmIHNlYXJjaFJlc3VsdHNCdXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygi
LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
JiBzZWxlY3Rpb24gPSAqbmV3IEF0b21pY1N0cmluZygic2VsZWN0aW9uIik7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyYgc2xpZGVyVGh1bWIgPSAqbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1z
bGlkZXItdGh1bWIiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiB0YXJnZXQgPSAqbmV3IEF0
b21pY1N0cmluZygidGFyZ2V0Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgdmlzaXRlZCA9
ICpuZXcgQXRvbWljU3RyaW5nKCJ2aXNpdGVkIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYg
d2luZG93SW5hY3RpdmUgPSAqbmV3IEF0b21pY1N0cmluZygid2luZG93LWluYWN0aXZlIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgZGVjcmVtZW50ID0gKm5ldyBBdG9taWNTdHJpbmcoImRl
Y3JlbWVudCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGluY3JlbWVudCA9ICpuZXcgQXRv
bWljU3RyaW5nKCJpbmNyZW1lbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBzdGFydCA9
ICpuZXcgQXRvbWljU3RyaW5nKCJzdGFydCIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGVu
ZCA9ICpuZXcgQXRvbWljU3RyaW5nKCJlbmQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBo
b3Jpem9udGFsID0gKm5ldyBBdG9taWNTdHJpbmcoImhvcml6b250YWwiKTsKKyAgICBzdGF0aWMg
QXRvbWljU3RyaW5nJiB2ZXJ0aWNhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJ2ZXJ0aWNhbCIpOwor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGRvdWJsZUJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5n
KCJkb3VibGUtYnV0dG9uIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgc2luZ2xlQnV0dG9u
ID0gKm5ldyBBdG9taWNTdHJpbmcoInNpbmdsZS1idXR0b24iKTsKKyAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nJiBub0J1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJuby1idXR0b24iKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiBjb3JuZXJQcmVzZW50ID0gKm5ldyBBdG9taWNTdHJpbmcoImNv
cm5lci1wcmVzZW50Iik7CiAKICAgICBib29sIGVsZW1lbnQgPSBmYWxzZTsgLy8gcHNldWRvLWVs
ZW1lbnQKICAgICBib29sIGNvbXBhdCA9IGZhbHNlOyAvLyBzaW5nbGUgY29sb24gY29tcGF0Ymls
aXR5IG1vZGUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzODI0NSkK
KysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzIsMTMgKzM3MiwxMyBAQCBzdGF0aWMgYm9vbCBlbGVtZW50Q2FuVXNlU2ltcGxlRGVmYXVsdFN0
CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBzY3JlZW5FdmFsKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciBzdGF0aWNTY3JlZW5FdmFsKCJzY3Jl
ZW4iKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgc3RhdGljU2NyZWVu
RXZhbCA9ICpuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigic2NyZWVuIik7CiAgICAgcmV0dXJuIHN0
YXRpY1NjcmVlbkV2YWw7CiB9CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBw
cmludEV2YWwoKQogewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHN0YXRp
Y1ByaW50RXZhbCgicHJpbnQiKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgc3RhdGljUHJpbnRFdmFsID0gKm5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKCJwcmludCIpOwog
ICAgIHJldHVybiBzdGF0aWNQcmludEV2YWw7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0
cmluZyhIYXNoU2V0PFN0cmluZywgQ2EKIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0
IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBzdmdGZWF0dXJl
czsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIHN2Z0ZlYXR1
cmVzID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CiAjaWYgRU5BQkxFKFNWR19VU0UpICYmIEVOQUJMRShTVkdfRk9SRUlHTl9P
QkpFQ1QpICYmIEVOQUJMRShTVkdfRklMVEVSKSAmJiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAg
ICBhZGRTdHJpbmcoc3ZnRmVhdHVyZXMsICJzdmciKTsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGlj
IGJvb2wgaXNTVkcxMEZlYXR1cmUoY29uc3QgU3RyaW5nIAogc3RhdGljIGJvb2wgaXNTVkcxMUZl
YXR1cmUoY29uc3QgU3RyaW5nICZmZWF0dXJlKQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkID0gZmFsc2U7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+
IHN2Z0ZlYXR1cmVzOworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PiYgc3ZnRmVhdHVyZXMgPSAqbmV3IEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+Owog
ICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgLy8gU2FkbHksIHdlIGNhbm5vdCBjbGFp
bSB0byBpbXBsZW1lbnQgYW55IG9mIHRoZSBTVkcgMS4xIGdlbmVyaWMgZmVhdHVyZSBzZXRzCiAg
ICAgICAgIC8vIGxhY2sgb2YgRm9udCBhbmQgRmlsdGVyIHN1cHBvcnQuCkBAIC0yNzQsNyArMjc0
LDcgQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShjbwogICAgIGlmICht
aW1lVHlwZSA9PSAidGV4dC94bWwiIHx8IG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94bWwiIHx8
IG1pbWVUeXBlID09ICJ0ZXh0L3hzbCIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiB2YWxpZENoYXJzID0gIlswLTlhLXpBLVpfXFwtK34hJFxcXnt9fC4lJ2Aj
JipdIjsgLy8gcGVyIFJGQ3M6IDMwMjMsIDIwNDUKLSAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Np
b24geG1sVHlwZVJlZ0V4cChTdHJpbmcoIl4iKSArIHZhbGlkQ2hhcnMgKyAiKy8iICsgdmFsaWRD
aGFycyArICIrXFwreG1sJCIpOworICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiYgeG1sVHlw
ZVJlZ0V4cCA9ICpuZXcgUmVndWxhckV4cHJlc3Npb24oU3RyaW5nKCJeIikgKyB2YWxpZENoYXJz
ICsgIisvIiArIHZhbGlkQ2hhcnMgKyAiK1xcK3htbCQiKTsKICAgICByZXR1cm4geG1sVHlwZVJl
Z0V4cC5tYXRjaChtaW1lVHlwZSkgPiAtMTsKIH0KIApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MzgyNDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
Myw5ICs3MTMsOSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzCiAK
IGJvb2wgRG9jdW1lbnQ6Omhhc1ByZWZpeE5hbWVzcGFjZU1pc21hdGNoKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHFOYW1lKQogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNOYW1l
c3BhY2VVUkkoImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIik7Ci0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyB4bWxucygieG1sbnMiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nIHhtbCgieG1sIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbnNO
YW1lc3BhY2VVUkkgPSAqbmV3IEF0b21pY1N0cmluZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC94
bWxucy8iKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxucyA9ICpuZXcgQXRv
bWljU3RyaW5nKCJ4bWxucyIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHhtbCA9
ICpuZXcgQXRvbWljU3RyaW5nKCJ4bWwiKTsKIAogICAgIC8vIFRoZXNlIGNoZWNrcyBhcmUgZnJv
bSBET00gQ29yZSBMZXZlbCAyLCBjcmVhdGVFbGVtZW50TlMKICAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMi1Db3JlL2NvcmUuaHRtbCNJRC1Eb2NDckVsTlMKSW5kZXg6IFdl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU2NyaXB0RWxl
bWVudDo6aGFuZGxlU291cmNlQXR0cmlidXQKIC8vIEhlbHBlciBmdW5jdGlvbgogc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkK
IHsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbGFuZ3VhZ2Vz
OworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgbGFuZ3VhZ2Vz
ID0gKm5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewogICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7CiAg
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
Ym9vbCBTdHlsZUNoYW5nZTo6Y3VycmVudGx5SGFzU3R5bGUoY29ucwogCiBzdGF0aWMgU3RyaW5n
ICZzdHlsZVNwYW5DbGFzc1N0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHlsZVNwYW5D
bGFzc1N0cmluZyA9IEFwcGxlU3R5bGVTcGFuQ2xhc3M7CisgICAgc3RhdGljIFN0cmluZyYgc3R5
bGVTcGFuQ2xhc3NTdHJpbmcgPSAqbmV3IFN0cmluZyhBcHBsZVN0eWxlU3BhbkNsYXNzKTsKICAg
ICByZXR1cm4gc3R5bGVTcGFuQ2xhc3NTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9IVE1M
SW50ZXJjaGFuZ2UuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvZWRpdGluZy9IVE1M
SW50ZXJjaGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSB7CiAKIFN0cmluZyBjb252ZXJ0ZWRTcGFjZVN0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmlu
ZyBjb252ZXJ0ZWRTcGFjZVN0cmluZzsKKyAgICBzdGF0aWMgU3RyaW5nJiBjb252ZXJ0ZWRTcGFj
ZVN0cmluZyA9ICpuZXcgU3RyaW5nOwogICAgIGlmIChjb252ZXJ0ZWRTcGFjZVN0cmluZy5pc051
bGwoKSkgewogICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyA9ICI8c3BhbiBjbGFzcz1cIiI7
CiAgICAgICAgIGNvbnZlcnRlZFNwYWNlU3RyaW5nICs9IEFwcGxlQ29udmVydGVkU3BhY2U7Cklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHJldmlzaW9uIDM4
MjQ1KQorKysgV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBz
dGF0aWMgU3RyaW5nIGluZGVudEJsb2NrcXVvdGVTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJp
bmcgc3RyaW5nID0gIndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSI7CisgICAgc3RhdGljIFN0cmlu
ZyYgc3RyaW5nID0gKm5ldyBTdHJpbmcoIndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIpOwogICAg
IHJldHVybiBzdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxNCArODksMTQg
QEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0
IE5vZGUgKm5vZGUpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBpbnRlcmNoYW5nZU5ld2xpbmVDbGFz
c1N0cmluZyhBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CisgICAgc3RhdGljIFN0cmluZyYgaW50
ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmcgPSAqbmV3IFN0cmluZyhBcHBsZUludGVyY2hhbmdl
TmV3bGluZSk7CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShiclRhZykgJiYg
CiAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJp
YnV0ZShjbGFzc0F0dHIpID09IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nOwogfQogCiBz
dGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUgKm5v
ZGUpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZyhB
cHBsZUNvbnZlcnRlZFNwYWNlKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBjb252ZXJ0ZWRTcGFjZVNw
YW5DbGFzc1N0cmluZyA9ICpuZXcgU3RyaW5nKEFwcGxlQ29udmVydGVkU3BhY2UpOwogICAgIHJl
dHVybiBub2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgCiAgICAgICAgICAgIHN0YXRpY19jYXN0PGNv
bnN0IEhUTUxFbGVtZW50ICo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSA9PSBjb252
ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZzsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjQsOSArMzY0LDkgQEAgaW50IG1heERlZXBPZmZzZXQoY29uc3Qg
Tm9kZSAqbm9kZSkKIAogU3RyaW5nIHN0cmluZ1dpdGhSZWJhbGFuY2VkV2hpdGVzcGFjZShjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdGFydElzU3RhcnRPZlBhcmFncmFwaCwgYm9vbCBlbmRJ
c0VuZE9mUGFyYWdyYXBoKQogewotICAgIHN0YXRpYyBTdHJpbmcgdHdvU3BhY2VzKCIgICIpOwot
ICAgIHN0YXRpYyBTdHJpbmcgbmJzcCgiXHhhMCIpOwotICAgIHN0YXRpYyBTdHJpbmcgcGF0dGVy
bigiIFx4YTAiKTsKKyAgICBzdGF0aWMgU3RyaW5nJiB0d29TcGFjZXMgPSAqbmV3IFN0cmluZygi
ICAiKTsKKyAgICBzdGF0aWMgU3RyaW5nJiBuYnNwID0gKm5ldyBTdHJpbmcoIlx4YTAiKTsKKyAg
ICBzdGF0aWMgU3RyaW5nJiBwYXR0ZXJuID0gKm5ldyBTdHJpbmcoIiBceGEwIik7CiAKICAgICBT
dHJpbmcgcmViYWxhbmNlZFN0cmluZyA9IHN0cmluZzsKIApAQCAtMzkzLDcgKzM5Myw3IEBAIGJv
b2wgaXNUYWJsZVN0cnVjdHVyZU5vZGUoY29uc3QgTm9kZSAqbm8KIAogY29uc3QgU3RyaW5nJiBu
b25CcmVha2luZ1NwYWNlU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIG5vbkJyZWFraW5n
U3BhY2VTdHJpbmcgPSBTdHJpbmcoJm5vQnJlYWtTcGFjZSwgMSk7CisgICAgc3RhdGljIFN0cmlu
ZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZyA9ICpuZXcgU3RyaW5nKCZub0JyZWFrU3BhY2UsIDEp
OwogICAgIHJldHVybiBub25CcmVha2luZ1NwYWNlU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEF0dHJpYnV0
ZVZhbHVlKFZlY3RvcjwKICAgICB1bnNpZ25lZCBsZW4gPSBhdHRyLmxlbmd0aCgpOwogICAgIHVu
c2lnbmVkIGxhc3RDb3BpZWRGcm9tID0gMDsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYW1w
RW50aXR5KCImYW1wOyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZ3RFbnRpdHkoIiZndDsi
KTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGx0RW50aXR5KCImbHQ7Iik7Ci0gICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBxdW90RW50aXR5KCImcXVvdDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIG5ic3BFbnRpdHkoIiZuYnNwOyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGFtcEVu
dGl0eSA9ICpuZXcgU3RyaW5nKCImYW1wOyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGd0
RW50aXR5ID0gKm5ldyBTdHJpbmcoIiZndDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBs
dEVudGl0eSA9ICpuZXcgU3RyaW5nKCImbHQ7Iik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
cXVvdEVudGl0eSA9ICpuZXcgU3RyaW5nKCImcXVvdDsiKTsKKyAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nJiBuYnNwRW50aXR5ID0gKm5ldyBTdHJpbmcoIiZuYnNwOyIpOwogICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJz
W2ldOwpAQCAtMTQyLDEwICsxNDIsMTAgQEAgc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBlZENvbnRl
bnQoVmVjdG9yPAogICAgIHVuc2lnbmVkIGxlbiA9IHJhbmdlLnNlY29uZDsKICAgICB1bnNpZ25l
ZCBsYXN0Q29waWVkRnJvbSA9IDA7CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBhbXBF
bnRpdHkoIiZhbXA7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBndEVudGl0eSgiJmd0OyIp
OwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbHRFbnRpdHkoIiZsdDsiKTsKLSAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIG5ic3BFbnRpdHkoIiZuYnNwOyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcmIGFtcEVudGl0eSA9ICpuZXcgU3RyaW5nKCImYW1wOyIpOworICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGd0RW50aXR5ID0gKm5ldyBTdHJpbmcoIiZndDsiKTsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nJiBsdEVudGl0eSA9ICpuZXcgU3RyaW5nKCImbHQ7Iik7CisgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgbmJzcEVudGl0eSA9ICpuZXcgU3RyaW5nKCImbmJzcDsiKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJz
W2ldOwpAQCAtMzE2LDggKzMxNiw4IEBAIHN0YXRpYyBib29sIHNob3VsZEFkZE5hbWVzcGFjZUVs
ZW0oY29uc3QKIHN0YXRpYyBib29sIHNob3VsZEFkZE5hbWVzcGFjZUF0dHIoY29uc3QgQXR0cmli
dXRlKiBhdHRyLCBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBBdG9taWNTdHJpbmdJbXBsKj4m
IG5hbWVzcGFjZXMpCiB7CiAgICAgLy8gRG9uJ3QgYWRkIG5hbWVzcGFjZSBhdHRyaWJ1dGVzIHR3
aWNlCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxuc1VSSSA9ICJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLyI7Ci0gICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUgeG1s
bnNBdHRyKG51bGxBdG9tLCAieG1sbnMiLCB4bWxuc1VSSSk7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgeG1sbnNVUkkgPSAqbmV3IEF0b21pY1N0cmluZygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC94bWxucy8iKTsKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgeG1sbnNB
dHRyID0gKm5ldyBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAieG1sbnMiLCB4bWxuc1VSSSk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSB4bWxuc0F0dHIpIHsKICAgICAgICAgbmFtZXNwYWNlcy5z
ZXQoZW1wdHlBdG9tLmltcGwoKSwgYXR0ci0+dmFsdWUoKS5pbXBsKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kTmFtZXNwYWNl
KFZlY3RvcjxVQ2hhcgogICAgIEF0b21pY1N0cmluZ0ltcGwqIGZvdW5kTlMgPSBuYW1lc3BhY2Vz
LmdldChwcmUpOwogICAgIGlmIChmb3VuZE5TICE9IG5zLmltcGwoKSkgewogICAgICAgICBuYW1l
c3BhY2VzLnNldChwcmUsIG5zLmltcGwoKSk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
eG1sbnMoInhtbG5zIik7CisgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHhtbG5zID0gKm5l
dyBTdHJpbmcoInhtbG5zIik7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgeG1sbnMpOwogICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkpIHsK
QEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0b3I8
VUNoCiAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnQpCiAgICAgICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVl
KTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPmxlbmd0aCgpID4gMCkgewotICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxlUHJlZml4KCIgc3R5bGU9XCIiKTsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgc3R5bGVQcmVmaXggPSAq
bmV3IFN0cmluZygiIHN0eWxlPVwiIik7CiAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHN0eWxlUHJlZml4KTsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFs
dWUocmVzdWx0LCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CkBAIC03MDIsNyArNzAyLDcgQEAgU3RyaW5n
IGpvaW5NYXJrdXBzKGNvbnN0IFZlY3RvcjxTdHJpbmc+IAogLy8gRklYTUU6IEF0IGxlYXN0LCBh
bm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBub3QgYmUgaW5jbHVkZWQg
aW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2Uq
IHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5u
b3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcykKIHsKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nIGludGVyY2hhbmdlTmV3bGluZVN0cmluZyA9IFN0cmluZygiPGJyIGNsYXNzPVwiIikg
KyBBcHBsZUludGVyY2hhbmdlTmV3bGluZSArICJcIj4iOworICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcmIGludGVyY2hhbmdlTmV3bGluZVN0cmluZyA9ICpuZXcgU3RyaW5nKCI8YnIgY2xhc3M9XCIi
IEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lICJcIj4iKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAg
ICAgIHJldHVybiAiIjsKQEAgLTkwNSwxNCArOTA1LDE0IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAo
Y29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAoc3R5bGUtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4g
b3BlblRhZzsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBkaXZTdHls
ZSgiPGRpdiBzdHlsZT1cIiIpOworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nJiBkaXZTdHlsZSA9ICpuZXcgU3RyaW5nKCI8ZGl2IHN0eWxlPVwiIik7CiAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChvcGVuVGFnLCBkaXZTdHlsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50
SXNIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgb3BlblRhZy5hcHBlbmQoJ1wiJyk7CiAgICAg
ICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7CiAgICAgICAgICAgICAgICAgICAg
IHByZU1hcmt1cHMuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOwogCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZGl2Q2xvc2VUYWcoIjwvZGl2PiIpOworICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkaXZDbG9zZVRhZyA9ICpuZXcg
U3RyaW5nKCI8L2Rpdj4iKTsKICAgICAgICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQoZGl2
Q2xvc2VUYWcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC05
MjksOCArOTI5LDggQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVTcGFu
T3BlbiA9IFN0cmluZygiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0
eWxlPVwiIik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVNwYW5DbG9zZSgiPC9zcGFu
PiIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHN0eWxlU3Bhbk9wZW4gPSAqbmV3IFN0cmlu
ZygiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIik7Cisg
ICAgc3RhdGljIGNvbnN0IFN0cmluZyYgc3R5bGVTcGFuQ2xvc2UgPSAqbmV3IFN0cmluZygiPC9z
cGFuPiIpOwogICAgIAogICAgIC8vIEFkZCBhIHdyYXBwZXIgc3BhbiB3aXRoIHRoZSBzdHlsZXMg
dGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5oZXJpdC4KICAgICBOb2RlKiBw
YXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2VkID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgp
IDogMDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkocmV2aXNpb24gMzgyNDUp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NywxNSArNTcsMTUgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQnV0dG9uRWxlbWVudDo6
dAogewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHN1Ym1pdCgic3VibWl0Iik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdWJtaXQgPSAqbmV3IEF0b21pY1N0
cmluZygic3VibWl0Iik7CiAgICAgICAgICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQlVUVE9OOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIGJ1dHRvbigiYnV0dG9uIik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBidXR0b24gPSAqbmV3IEF0b21pY1N0cmluZygiYnV0dG9uIik7CiAgICAgICAgICAgICBy
ZXR1cm4gYnV0dG9uOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVTRVQ6IHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcmVzZXQoInJlc2V0Iik7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByZXNldCA9ICpuZXcgQXRvbWljU3RyaW5nKCJy
ZXNldCIpOwogICAgICAgICAgICAgcmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwOCw3ICs4MDgsNyBAQCBib29sIEhUTUxF
bGVtZW50OjpjaGlsZEFsbG93ZWQoTm9kZSAqbmV3CiAvLyBUaGlzIHVuZm9ydHVuYXRlIGZ1bmN0
aW9uIGlzIG9ubHkgbmVlZGVkIHdoZW4gY2hlY2tpbmcgYWdhaW5zdCB0aGUgRFRELiAgT3RoZXIg
bGFuZ3VhZ2VzIChsaWtlIFNWRykgd29uJ3QgbmVlZCB0aGlzLgogYm9vbCBIVE1MRWxlbWVudDo6
aXNSZWNvZ25pemVkVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKQogewotICAg
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiB0YWdMaXN0OworICAgIHN0YXRpYyBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgdGFnTGlzdCA9ICpuZXcgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj47CiAgICAgaWYgKHRhZ0xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNpemVf
dCB0YWdDb3VudCA9IDA7CiAgICAgICAgIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiB0YWdzID0g
SFRNTE5hbWVzOjpnZXRIVE1MVGFncygmdGFnQ291bnQpOwpAQCAtODIyLDcgKzgyMiw3IEBAIGJv
b2wgSFRNTEVsZW1lbnQ6OmlzUmVjb2duaXplZFRhZ05hbWUoY28KIC8vIG5lZWQgdG8gYmUgaW4g
dGhlc2UgdHdvIGxpc3RzLgogSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGlubGluZVRhZ0xp
c3QoKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiB0YWdMaXN0Owor
ICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgdGFnTGlzdCA9ICpuZXcgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj47CiAgICAgaWYgKHRhZ0xpc3QuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHRhZ0xpc3QuYWRkKHR0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRh
Z0xpc3QuYWRkKGlUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTg4MSw3ICs4ODEsNyBAQCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogaW5saW5lVGFnTGlzCiAKIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+KiBibG9ja1RhZ0xpc3QoKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiB0YWdMaXN0OworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiYgdGFnTGlzdCA9ICpuZXcgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj47CiAgICAgaWYg
KHRhZ0xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGFkZHJlc3NUYWcubG9j
YWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQoYmxvY2txdW90ZVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAko
cmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50
Ojppc0ZvY3VzYWJsZSgpIAogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxGaWVsZFNldEVsZW1l
bnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZmllbGRz
ZXQoImZpZWxkc2V0Iik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZmllbGRzZXQg
PSAqbmV3IEF0b21pY1N0cmluZygiZmllbGRzZXQiKTsKICAgICByZXR1cm4gZmllbGRzZXQ7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysg
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMs
NTMgKzM3Myw1MyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxJbnB1dEVsZW1lbnQ6OnR5CiAg
ICAgLy8gbmVlZHMgdG8gYmUgbG93ZXJjYXNlIGFjY29yZGluZyB0byBET00gc3BlYwogICAgIHN3
aXRjaCAoaW5wdXRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBCVVRUT046IHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0dG9uKCJidXR0b24iKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJ1dHRvbiA9ICpuZXcgQXRvbWljU3RyaW5nKCJi
dXR0b24iKTsKICAgICAgICAgICAgIHJldHVybiBidXR0b247CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDSEVDS0JPWDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBj
aGVja2JveCgiY2hlY2tib3giKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGNoZWNrYm94ID0gKm5ldyBBdG9taWNTdHJpbmcoImNoZWNrYm94Iik7CiAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tib3g7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGSUxFOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGZpbGUoImZpbGUiKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZpbGUgPSAqbmV3IEF0b21pY1N0cmluZygi
ZmlsZSIpOwogICAgICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBISURERU46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaGlkZGVu
KCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGhpZGRl
biA9ICpuZXcgQXRvbWljU3RyaW5nKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHJldHVybiBoaWRk
ZW47CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBJTUFHRTogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBpbWFnZSgiaW1hZ2UiKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGltYWdlID0gKm5ldyBBdG9taWNTdHJpbmcoImltYWdlIik7CiAg
ICAgICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBJU0lOREVY
OgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICAgICAgY2FzZSBQQVNTV09SRDog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBwYXNzd29yZCgicGFzc3dv
cmQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHBhc3N3b3JkID0g
Km5ldyBBdG9taWNTdHJpbmcoInBhc3N3b3JkIik7CiAgICAgICAgICAgICByZXR1cm4gcGFzc3dv
cmQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBSQURJTzogewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyByYWRpbygicmFkaW8iKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHJhZGlvID0gKm5ldyBBdG9taWNTdHJpbmcoInJhZGlvIik7CiAg
ICAgICAgICAgICByZXR1cm4gcmFkaW87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBSQU5HRTog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyByYW5nZSgicmFuZ2UiKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhbmdlID0gKm5ldyBBdG9t
aWNTdHJpbmcoInJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBSRVNFVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyByZXNldCgicmVzZXQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHJlc2V0ID0gKm5ldyBBdG9taWNTdHJpbmcoInJlc2V0Iik7CiAgICAgICAgICAgICByZXR1
cm4gcmVzZXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTRUFSQ0g6IHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VhcmNoKCJzZWFyY2giKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNlYXJjaCA9ICpuZXcgQXRvbWljU3RyaW5nKCJz
ZWFyY2giKTsKICAgICAgICAgICAgIHJldHVybiBzZWFyY2g7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBTVUJNSVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc3Vi
bWl0KCJzdWJtaXQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1
Ym1pdCA9ICpuZXcgQXRvbWljU3RyaW5nKCJzdWJtaXQiKTsKICAgICAgICAgICAgIHJldHVybiBz
dWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBURVhUOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHRleHQoInRleHQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHRleHQgPSAqbmV3IEF0b21pY1N0cmluZygidGV4dCIpOwogICAg
ICAgICAgICAgcmV0dXJuIHRleHQ7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
S2V5Z2VuRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxL
ZXlnZW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBIVE1MS2V5
Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoRG9jCiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
SFRNTEtleWdlbkVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcga2V5Z2VuKCJrZXlnZW4iKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBrZXlnZW4gPSAqbmV3IEF0b21pY1N0cmluZygia2V5Z2VuIik7CiAgICAgcmV0dXJuIGtleWdl
bjsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0
NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MTGVnZW5kRWxlbWVudDo6Y3JlYXRl
UgogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxMZWdlbmRFbGVtZW50Ojp0eXBlKCkgY29uc3QK
IHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGxlZ2VuZCgibGVnZW5kIik7CisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbGVnZW5kID0gKm5ldyBBdG9taWNTdHJpbmcoImxl
Z2VuZCIpOwogICAgIHJldHVybiBsZWdlbmQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
T3B0R3JvdXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgSFRN
TE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUoKSAKIAogY29uc3QgQXRvbWljU3RyaW5nJiBI
VE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIG9wdGdyb3VwKCJvcHRncm91cCIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIG9wdGdyb3VwID0gKm5ldyBBdG9taWNTdHJpbmcoIm9wdGdyb3VwIik7CiAgICAgcmV0
dXJuIG9wdGdyb3VwOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIEhUTUxPcHRpb25FbGVtZW50Ojppc0Zv
Y3VzYWJsZSgpIGNvCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdGlvbkVsZW1lbnQ6OnR5
cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgb3B0aW9uKCJvcHRp
b24iKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcHRpb24gPSAqbmV3IEF0b21p
Y1N0cmluZygib3B0aW9uIik7CiAgICAgcmV0dXJuIG9wdGlvbjsKIH0KIApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUGFy
c2VyLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzMiw3ICs4MzIsNyBAQCBib29sIEhUTUxQYXJzZXI6Om1hcENy
ZWF0ZUVycm9yQ2hlY2soVG9rCiBQYXNzUmVmUHRyPE5vZGU+IEhUTUxQYXJzZXI6OmdldE5vZGUo
VG9rZW4qIHQpCiB7CiAgICAgLy8gSW5pdCBvdXIgZXJyb3IgaGFuZGxpbmcgdGFibGUuCi0gICAg
c3RhdGljIEZ1bmN0aW9uTWFwIGdGdW5jdGlvbk1hcDsKKyAgICBzdGF0aWMgRnVuY3Rpb25NYXAm
IGdGdW5jdGlvbk1hcCA9ICpuZXcgRnVuY3Rpb25NYXA7CiAgICAgaWYgKGdGdW5jdGlvbk1hcC5p
c0VtcHR5KCkpIHsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChhVGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgJkhUTUxQYXJzZXI6Om5lc3RlZENyZWF0ZUVycm9yQ2hlY2spOwogICAgICAgICBnRnVu
Y3Rpb25NYXAuc2V0KGFkZHJlc3NUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6
cENsb3NlckNyZWF0ZUVycm9yQ2hlY2spOwpAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgSFRNTFBh
cnNlcjo6cHJvY2Vzc0Nsb3NlVGFnKFRva2VuKiAKIAogYm9vbCBIVE1MUGFyc2VyOjppc0hlYWRl
clRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+IGhlYWRlclRhZ3M7CisgICAgc3RhdGljIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+JiBoZWFkZXJUYWdzID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PjsKICAgICBpZiAoaGVhZGVyVGFncy5pc0VtcHR5KCkpIHsKICAgICAgICAgaGVhZGVyVGFncy5h
ZGQoaDFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgaGVhZGVyVGFncy5hZGQoaDJU
YWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTk4Niw3ICs5ODYsNyBAQCBib29sIEhUTUxQYXJz
ZXI6OmlzSW5saW5lKE5vZGUqIG5vZGUpIGNvCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNSZXNpZHVh
bFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj4gcmVzaWR1YWxTdHlsZVRhZ3M7CisgICAgc3RhdGljIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiByZXNpZHVhbFN0eWxlVGFncyA9ICpuZXcgSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj47CiAgICAgaWYgKHJlc2lkdWFsU3R5bGVUYWdzLmlzRW1wdHko
KSkgewogICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoYVRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOwogICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoZm9udFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppc1Jlc2lkdWFs
U3R5bGVUYWcoY29ucwogCiBib29sIEhUTUxQYXJzZXI6OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5
bGUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiB1bmFmZmVjdGVkVGFnczsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4mIHVuYWZmZWN0ZWRUYWdzID0gKm5ldyBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPjsKICAgICBpZiAodW5hZmZlY3RlZFRhZ3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVu
YWZmZWN0ZWRUYWdzLmFkZChib2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHVu
YWZmZWN0ZWRUYWdzLmFkZCh0YWJsZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw4ICsxMTQsOCBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZSggU3R5CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcgc2VsZWN0TXVsdGlwbGUoInNlbGVjdC1tdWx0aXBsZSIpOwotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VsZWN0T25lKCJzZWxlY3Qtb25lIik7CisgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0TXVsdGlwbGUgPSAqbmV3IEF0b21pY1N0
cmluZygic2VsZWN0LW11bHRpcGxlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c2VsZWN0T25lID0gKm5ldyBBdG9taWNTdHJpbmcoInNlbGVjdC1vbmUiKTsKICAgICByZXR1cm4g
bV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxlIDogc2VsZWN0T25lOwogfQogCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTFRleHRBcmVhRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyB0ZXh0YXJlYSgidGV4dGFyZWEiKTsKKyAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0YXJlYSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0YXJl
YSIpOwogICAgIHJldHVybiB0ZXh0YXJlYTsKIH0KIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2MiwyMCAr
ODYyLDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHBsYXRmb3JtKEpTQ29udGV4dFJlZiAKIHsKICNp
ZiBQTEFURk9STShNQUMpCiAjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIHBsYXRmb3JtID0gIm1hYy10aWdlciI7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygibWFjLXRpZ2VyIik7CiAjZWxzZQotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIHBsYXRmb3JtID0gKm5ldyBTdHJpbmcoIm1hYy1sZW9wYXJkIik7CiAjZW5kaWYK
ICNlbGlmIFBMQVRGT1JNKFdJTl9PUykKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3Jt
ID0gIndpbmRvd3MiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKm5ldyBT
dHJpbmcoIndpbmRvd3MiKTsKICNlbGlmIFBMQVRGT1JNKFFUKQotICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgcGxhdGZvcm0gPSAicXQiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBsYXRmb3Jt
ID0gKm5ldyBTdHJpbmcoInF0Iik7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJndGsiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHBs
YXRmb3JtID0gKm5ldyBTdHJpbmcoImd0ayIpOwogI2VsaWYgUExBVEZPUk0oV1gpCi0gICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJ3eCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgcGxhdGZvcm0gPSAqbmV3IFN0cmluZygid3giKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyBwbGF0Zm9ybSA9ICJ1bmtub3duIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBw
bGF0Zm9ybSA9ICpuZXcgU3RyaW5nKCJ1bmtub3duIik7CiAjZW5kaWYKIAogICAgIEpTVmFsdWVS
ZWYgcGxhdGZvcm1WYWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwganNTdHJpbmdSZWYocGxh
dGZvcm0pLmdldCgpKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
U2VydmVyLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHR5cGVk
ZWYgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpMaXN0ZW5lclMKIAogSmF2YVNjcmlwdERlYnVnU2Vy
dmVyJiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCiB7Ci0gICAgc3RhdGljIEphdmFT
Y3JpcHREZWJ1Z1NlcnZlciBzZXJ2ZXI7CisgICAgc3RhdGljIEphdmFTY3JpcHREZWJ1Z1NlcnZl
ciYgc2VydmVyID0gKm5ldyBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgcmV0dXJuIHNlcnZl
cjsKIH0KIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkocmV2
aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFByb2ZpbGUq
LCBKU09iamVjdCo+IFBybwogCiBzdGF0aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKIHsg
Ci0gICAgc3RhdGljIFByb2ZpbGVNYXAgc3RhdGljUHJvZmlsZXM7CisgICAgc3RhdGljIFByb2Zp
bGVNYXAmIHN0YXRpY1Byb2ZpbGVzID0gKm5ldyBQcm9maWxlTWFwOwogICAgIHJldHVybiBzdGF0
aWNQcm9maWxlczsKIH0KIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZU5vZGUuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFT
Y3JpcHRQcm9maWxlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdHlw
ZWRlZiBIYXNoTWFwPFByb2ZpbGVOb2RlKiwgSlNPYmplY3QqPgogCiBzdGF0aWMgUHJvZmlsZU5v
ZGVNYXAmIHByb2ZpbGVOb2RlQ2FjaGUoKQogeyAKLSAgICBzdGF0aWMgUHJvZmlsZU5vZGVNYXAg
c3RhdGljUHJvZmlsZU5vZGVzOworICAgIHN0YXRpYyBQcm9maWxlTm9kZU1hcCYgc3RhdGljUHJv
ZmlsZU5vZGVzID0gKm5ldyBQcm9maWxlTm9kZU1hcDsKICAgICByZXR1cm4gc3RhdGljUHJvZmls
ZU5vZGVzOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAzODI0NSkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3
Miw3ICsxMTcyLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjYwog
CiBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxvY2FsU2NoZW1lcygp
CiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IGxvY2FsU2No
ZW1lczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxvY2Fs
U2NoZW1lcyA9ICpuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CiAKICAgICBp
ZiAobG9jYWxTY2hlbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBsb2NhbFNjaGVtZXMuYWRkKCJm
aWxlIik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUz
LDcgKzY1Myw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU8KICAg
ICAKIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBjYWNoZVN0b3JhZ2UoKQogewotICAgIHN0YXRp
YyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSBzdG9yYWdlOworICAgIHN0YXRpYyBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9ICpuZXcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CiAg
ICAgCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgCiAKIHN0YXRpYyBIYXNo
TWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+JiBh
cmNoaXZlTUlNRVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFD
cmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiBtaW1lVHlwZXM7CisgICAgc3RhdGlj
IEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENhc2VGb2xkaW5nSGFz
aD4mIG1pbWVUeXBlcyA9ICpuZXcgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0
aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPjsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOwogICAgIAogICAgIGlmIChpbml0aWFsaXplZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTAsNyArODUwLDcgQEAgU3RyaW5n
IEljb25EYXRhYmFzZTo6ZGF0YWJhc2VQYXRoKCkgY29ucwogCiBTdHJpbmcgSWNvbkRhdGFiYXNl
OjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0
RGF0YWJhc2VGaWxlbmFtZSA9ICJXZWJwYWdlSWNvbnMuZGIiOworICAgIHN0YXRpYyBTdHJpbmcm
IGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lID0gKm5ldyBTdHJpbmcoIldlYnBhZ2VJY29ucy5kYiIp
OwogICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZS5jb3B5KCk7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgRXZlbnRIYW5k
bGVyOjp+RXZlbnRIYW5kbGVyKCkKICAgICAKIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyRHJh
Z1N0YXRlJiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgc3RhdGljIEV2ZW50SGFu
ZGxlckRyYWdTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlJiBz
dGF0ZSA9ICpuZXcgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlOwogICAgIHJldHVybiBzdGF0ZTsKIH0K
ICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIFJlZ3VsYXJFeHBy
ZXNzaW9uKiBjcmVhdGVSZWdFeHBGbwogICAgIC8vIFJFVklFVy0gdmVyc2lvbiBvZiB0aGlzIGNh
bGwgaW4gRnJhbWVNYWMubW0gY2FjaGVzIGJhc2VkIG9uIHRoZSBOU0FycmF5IHB0cnMgYmVpbmcK
ICAgICAvLyB0aGUgc2FtZSBhY3Jvc3MgY2FsbHMuICBXZSBjYW4ndCBkbyB0aGF0LgogCi0gICAg
c3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uIHdvcmRSZWdFeHAgPSBSZWd1bGFyRXhwcmVzc2lvbigi
XFx3Iik7CisgICAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uJiB3b3JkUmVnRXhwID0gKm5ldyBS
ZWd1bGFyRXhwcmVzc2lvbigiXFx3Iik7CiAgICAgU3RyaW5nIHBhdHRlcm4oIigiKTsKICAgICB1
bnNpZ25lZCBpbnQgbnVtTGFiZWxzID0gbGFiZWxzLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbnQg
aTsKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHZvaWQgRnJhbWU6OnJlbW92ZUVkaXRpbmdTdHlsZUZy
b21FbGVtZW4KICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgSGFzaFNldDxGcmFtZSo+JiBrZWVwQWxp
dmVTZXQoKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4gc3RhdGljS2VlcEFsaXZlU2V0
OworICAgIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4mIHN0YXRpY0tlZXBBbGl2ZVNldCA9ICpuZXcg
SGFzaFNldDxGcmFtZSo+OwogICAgIHJldHVybiBzdGF0aWNLZWVwQWxpdmVTZXQ7CiB9CiAjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBQYWdlOjpzZXRHcm91cE5hbWUo
Y29uc3QgU3RyaW5nJiBuYQogCiBjb25zdCBTdHJpbmcmIFBhZ2U6Omdyb3VwTmFtZSgpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIFN0cmluZyBudWxsU3RyaW5nOworICAgIHN0YXRpYyBTdHJpbmcmIG51
bGxTdHJpbmcgPSAqbmV3IFN0cmluZzsKICAgICByZXR1cm4gbV9ncm91cCA/IG1fZ3JvdXAtPm5h
bWUoKSA6IG51bGxTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2
aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1bnMKICAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBkZWZhdWx0UG9ydHM7
CisgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4mIGRlZmF1bHRQb3J0cyA9ICpu
ZXcgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPjsKICAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1w
dHkoKSkgewogICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwogICAgICAgICBk
ZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7CkBAIC0yNjAsNyArMjYwLDcgQEAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaQogCiBTdHJpbmcgU2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0IAogewotICAgIHN0YXRpYyBTdHJpbmcgc2Vw
YXJhdG9yU3RyaW5nID0gU3RyaW5nKCZTZXBhcmF0b3JDaGFyYWN0ZXIsIDEpOworICAgIHN0YXRp
YyBTdHJpbmcmIHNlcGFyYXRvclN0cmluZyA9ICpuZXcgU3RyaW5nKCZTZXBhcmF0b3JDaGFyYWN0
ZXIsIDEpOwogICAgIHJldHVybiBtX3Byb3RvY29sICsgc2VwYXJhdG9yU3RyaW5nICsgbV9ob3N0
ICsgc2VwYXJhdG9yU3RyaW5nICsgU3RyaW5nOjpudW1iZXIobV9wb3J0KTsgCiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L21hYy9GcmFtZU1hYy5tbQkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCw4IEBAIFJlZ3VsYXJFeHByZXNz
aW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnIKICAgICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1c2Ug
aXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsb2NhbGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5nLgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKICAgICBz
dGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExhYmVscyA9IG5pbDsKLSAgICBzdGF0aWMgVmVj
dG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4gcmVnRXhwczsKLSAgICBzdGF0aWMgUmVndWxhckV4cHJl
c3Npb24gd29yZFJlZ0V4cCA9IFJlZ3VsYXJFeHByZXNzaW9uKCJcXHciKTsKKyAgICBzdGF0aWMg
VmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4mIHJlZ0V4cHMgPSAqbmV3IFZlY3RvcjxSZWd1bGFy
RXhwcmVzc2lvbio+OworICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiYgd29yZFJlZ0V4cCA9
ICpuZXcgUmVndWxhckV4cHJlc3Npb24oIlxcdyIpOwogCiAgICAgUmVndWxhckV4cHJlc3Npb24q
IHJlc3VsdDsKICAgICBpZiAoIXJlZ0V4cExhYmVscykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
S1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkocmV2aXNp
b24gMzgyNDUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYzLDcgKzE1NjMsNyBAQCBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJp
bmcmCiAKIGNvbnN0IEtVUkwmIGJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgS1VSTCBzdGF0aWNC
bGFua1VSTCgiYWJvdXQ6YmxhbmsiKTsKKyAgICBzdGF0aWMgS1VSTCYgc3RhdGljQmxhbmtVUkwg
PSAqbmV3IEtVUkwoImFib3V0OmJsYW5rIik7CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwog
fQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZpc2lv
biAzODI0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDIxICsxMjQsMjQgQEAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGFD
YWNoZSogZ0ZvbnRQbGF0Zgogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ZXJuYXRlRmFt
aWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgLy8gQWxpYXMg
Q291cmllciA8LT4gQ291cmllciBOZXcKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGNvdXJpZXIo
IkNvdXJpZXIiKSwgY291cmllck5ldygiQ291cmllciBOZXciKTsKKyAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nJiBjb3VyaWVyID0gKm5ldyBBdG9taWNTdHJpbmcoIkNvdXJpZXIiKTsKKyAgICBzdGF0
aWMgQXRvbWljU3RyaW5nJiBjb3VyaWVyTmV3ID0gKm5ldyBBdG9taWNTdHJpbmcoIkNvdXJpZXIg
TmV3Iik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGNvdXJpZXIpKQog
ICAgICAgICByZXR1cm4gY291cmllck5ldzsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFt
aWx5TmFtZSwgY291cmllck5ldykpCiAgICAgICAgIHJldHVybiBjb3VyaWVyOwogCiAgICAgLy8g
QWxpYXMgVGltZXMgYW5kIFRpbWVzIE5ldyBSb21hbi4KLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IHRpbWVzKCJUaW1lcyIpLCB0aW1lc05ld1JvbWFuKCJUaW1lcyBOZXcgUm9tYW4iKTsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nJiB0aW1lcyA9ICpuZXcgQXRvbWljU3RyaW5nKCJUaW1lcyIpOwor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIHRpbWVzTmV3Um9tYW4gPSAqbmV3IEF0b21pY1N0cmlu
ZygiVGltZXMgTmV3IFJvbWFuIik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5h
bWUsIHRpbWVzKSkKICAgICAgICAgcmV0dXJuIHRpbWVzTmV3Um9tYW47CiAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIHRpbWVzTmV3Um9tYW4pKQogICAgICAgICByZXR1cm4g
dGltZXM7CiAgICAgCiAgICAgLy8gQWxpYXMgQXJpYWwgYW5kIEhlbHZldGljYQotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgYXJpYWwoIkFyaWFsIiksIGhlbHZldGljYSgiSGVsdmV0aWNhIik7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyYgYXJpYWwgPSAqbmV3IEF0b21pY1N0cmluZygiQXJpYWwi
KTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBoZWx2ZXRpY2EgPSAqbmV3IEF0b21pY1N0cmlu
ZygiSGVsdmV0aWNhIik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGFy
aWFsKSkKICAgICAgICAgcmV0dXJuIGhlbHZldGljYTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoZmFtaWx5TmFtZSwgaGVsdmV0aWNhKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNyArMTQwLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgog
ICAgIHdoaWxlIChjdXJyRmFtaWx5ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1
cnJGYW1pbHktPmZhbWlseSgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgU3RyaW5n
IG1hdGNoV29yZHNbM10gPSB7IFN0cmluZygiQXJhYmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0
cmluZygiVXJkdSIpIH07Ci0gICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGdlZXphU3Ry
KCJHZWV6YSBQcm8iKTsKKyAgICAgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcmIGdlZXphU3Ry
ID0gKm5ldyBBdG9taWNTdHJpbmcoIkdlZXphIFBybyIpOwogICAgICAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCAzICYmICFwbGF0Zm9ybURhdGE7ICsraikKICAgICAgICAgICAgICAgICBpZiAo
Y3VyckZhbWlseS0+ZmFtaWx5KCkuY29udGFpbnMobWF0Y2hXb3Jkc1tqXSwgZmFsc2UpKQogICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGdlZXphU3RyKTsKQEAgLTE1Myw4ICsxNTMsOCBAQCBG
b250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldFNpbWlsYXJGCiAKIEZvbnRQbGF0Zm9ybURh
dGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbikKIHsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRpbWVz
U3RyKCJUaW1lcyIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbHVjaWRhR3JhbmRlU3RyKCJM
dWNpZGEgR3JhbmRlIik7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgdGltZXNTdHIgPSAqbmV3
IEF0b21pY1N0cmluZygiVGltZXMiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBsdWNpZGFH
cmFuZGVTdHIgPSAqbmV3IEF0b21pY1N0cmluZygiTHVjaWRhIEdyYW5kZSIpOwogCiAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3MgZGVm
YXVsdCBmb250IGhlcmUuICBGb3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVsdCB0
aGF0IHRoZSB1c2VyIHdvdWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCShyZXZpc2lvbiAzODI0
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsYmFy
VGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCiB7Ci0gICAgc3RhdGljIFNjcm9s
bGJhclRoZW1lTWFjIHRoZW1lOworICAgIHN0YXRpYyBTY3JvbGxiYXJUaGVtZU1hYyYgdGhlbWUg
PSAqbmV3IFNjcm9sbGJhclRoZW1lTWFjOwogICAgIHJldHVybiAmdGhlbWU7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIGVu
dW0gewogCiBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiB7Ci0gICAgc3RhdGljIFRoZW1lTWFjIHRo
ZW1lTWFjOworICAgIHN0YXRpYyBUaGVtZU1hYyYgdGhlbWVNYWMgPSAqbmV3IFRoZW1lTWFjOwog
ICAgIHJldHVybiAmdGhlbWVNYWM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
cmVhZENoZWNrLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENo
ZWNrLm1tCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENo
ZWNrLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgcmVwb3J0VGhyZWFk
VmlvbGF0aW9uKGNvbnN0IGNoYXIqIGYKIHZvaWQgV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlv
bihjb25zdCBjaGFyKiBmdW5jdGlvbikKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGxvZ2dlZEZ1bmN0aW9uczsKKyAgICBzdGF0aWMg
SGFzaFNldDxTdHJpbmc+JiBsb2dnZWRGdW5jdGlvbnMgPSAqbmV3IEhhc2hTZXQ8U3RyaW5nPjsK
ICAgICBzd2l0Y2ggKHRocmVhZFZpb2xhdGlvbkJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgTm9U
aHJlYWRDaGVjazoKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCShyZXZpc2lvbiAzODI0NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOZXR3
b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90aWZpZXIoKQogewotICAgIHN0YXRpYyBO
ZXR3b3JrU3RhdGVOb3RpZmllciBuZXR3b3JrU3RhdGVOb3RpZmllcjsKKyAgICBzdGF0aWMgTmV0
d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyID0gKm5ldyBOZXR3b3JrU3Rh
dGVOb3RpZmllcjsKICAgICAKICAgICByZXR1cm4gbmV0d29ya1N0YXRlTm90aWZpZXI7CiB9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1N
YWMubW0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9G
b3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksMTQgKzQ5LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFzaE1hcDxDRlJlYWRTdHJlYW1SZWYsIFJlZlB0
cjxGb3JtRGF0YT4gPiBTdHJlYW1Gb3JtRGF0YU1hcDsKIHN0YXRpYyBTdHJlYW1Gb3JtRGF0YU1h
cCYgZ2V0U3RyZWFtRm9ybURhdGFNYXAoKQogewotICAgIHN0YXRpYyBTdHJlYW1Gb3JtRGF0YU1h
cCBzdHJlYW1Gb3JtRGF0YU1hcDsKKyAgICBzdGF0aWMgU3RyZWFtRm9ybURhdGFNYXAmIHN0cmVh
bUZvcm1EYXRhTWFwID0gKm5ldyBTdHJlYW1Gb3JtRGF0YU1hcDsKICAgICByZXR1cm4gc3RyZWFt
Rm9ybURhdGFNYXA7CiB9CiAKIHR5cGVkZWYgSGFzaE1hcDxDRlJlYWRTdHJlYW1SZWYsIFJlZlB0
cjxSZXNvdXJjZUhhbmRsZT4gPiBTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcDsKIHN0YXRpYyBTdHJl
YW1SZXNvdXJjZUhhbmRsZU1hcCYgZ2V0U3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAoKQogewotICAg
IHN0YXRpYyBTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCBzdHJlYW1SZXNvdXJjZUhhbmRsZU1hcDsK
KyAgICBzdGF0aWMgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAmIHN0cmVhbVJlc291cmNlSGFuZGxl
TWFwID0gKm5ldyBTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcDsKICAgICByZXR1cm4gc3RyZWFtUmVz
b3VyY2VIYW5kbGVNYXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1M
YXp5SW5pdCgKICAgICAgICAgLy8gaXMgcmV0dXJuaW5nIGluY29ycmVjdCBNSU1FIHR5cGUgZm9y
IGxvY2FsIC54aHRtbCBmaWxlcykgd2hpY2ggaXMgb25seSByZXF1aXJlZCBpbiBMZW9wYXJkLgog
ICAgICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSAmJiBtX21pbWVUeXBlID09ICJ0ZXh0L2h0
bWwiKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBtX3VybC5wYXRoKCk7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHhodG1sRXh0KCIueGh0bWwiKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHhodG1sRXh0ID0gKm5ldyBTdHJpbmcoIi54aHRt
bCIpOwogICAgICAgICAgICAgaWYgKHBhdGguZW5kc1dpdGgoeGh0bWxFeHQsIGZhbHNlKSkKICAg
ICAgICAgICAgICAgICBtX21pbWVUeXBlID0gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7CiAgICAg
ICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCShyZXZpc2lv
biAzODI0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBUZXh0RW5jb2Rpbmc6OmlzSmFwYW5l
c2UoKSBjb25zdAogICAgIGlmIChub0V4dGVuZGVkVGV4dEVuY29kaW5nTmFtZVVzZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+IHNl
dDsKKyAgICBzdGF0aWMgSGFzaFNldDxjb25zdCBjaGFyKj4mIHNldCA9ICpuZXcgSGFzaFNldDxj
b25zdCBjaGFyKj47CiAgICAgaWYgKHNldC5pc0VtcHR5KCkpIHsKICAgICAgICAgYWRkRW5jb2Rp
bmdOYW1lKHNldCwgIngtbWFjLWphcGFuZXNlIik7CiAgICAgICAgIGFkZEVuY29kaW5nTmFtZShz
ZXQsICJjcDkzMiIpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24g
MzgyNDUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50RWxsaXBzaXNC
b3hlcyhQYWkKIAogSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQq
PiogY29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxSZW5k
ZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiB0YWJsZTsKKyAgICBzdGF0aWMgSGFz
aE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiYgdGFibGUgPSAqbmV3
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj47CiAgICAgcmV0
dXJuICZ0YWJsZTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHJl
dmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBjb3VudGVy
KFJlbmRlck9iamVjdAogCiBzdGF0aWMgQ291bnRlck1hcHMmIGNvdW50ZXJNYXBzKCkKIHsKLSAg
ICBzdGF0aWMgQ291bnRlck1hcHMgc3RhdGljQ291bnRlck1hcHM7CisgICAgc3RhdGljIENvdW50
ZXJNYXBzJiBzdGF0aWNDb3VudGVyTWFwcyA9ICpuZXcgQ291bnRlck1hcHM7CiAgICAgcmV0dXJu
IHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2FsQm8KICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciBlbGxpcHNpc0FuZFNwYWNl
WzJdID0geyBob3Jpem9udGFsRWxsaXBzaXMsICcgJyB9OwotICAgICAgICAgICAgICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgZWxsaXBzaXNBbmRTcGFjZVN0cihlbGxpcHNpc0FuZFNwYWNlLCAyKTsK
KyAgICAgICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nJiBlbGxpcHNpc0FuZFNwYWNlU3Ry
ID0gKm5ldyBBdG9taWNTdHJpbmcoZWxsaXBzaXNBbmRTcGFjZSwgMik7CiAKICAgICAgICAgICAg
ICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUobnVtVmlzaWJsZUxpbmVzID09IDEpLT5mb250
KCk7CiAgICAgICAgICAgICAgICAgaW50IGVsbGlwc2lzQW5kU3BhY2VXaWR0aCA9IGZvbnQud2lk
dGgoVGV4dFJ1bihlbGxpcHNpc0FuZFNwYWNlLCAyKSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIGNvbnN0
IFN0cmluZyYgUmVuZGVyTGlzdEl0ZW06Om1hcmtlclRleHQKIHsKICAgICBpZiAobV9tYXJrZXIp
CiAgICAgICAgIHJldHVybiBtX21hcmtlci0+dGV4dCgpOwotICAgIHN0YXRpYyBTdHJpbmcgc3Rh
dGljTnVsbFN0cmluZzsKKyAgICBzdGF0aWMgU3RyaW5nJiBzdGF0aWNOdWxsU3RyaW5nID0gKm5l
dyBTdHJpbmc7CiAgICAgcmV0dXJuIHN0YXRpY051bGxTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU2Nyb2xs
YmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiB7
Ci0gICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lIHRoZW1lOworICAgIHN0YXRpYyBSZW5k
ZXJTY3JvbGxiYXJUaGVtZSYgdGhlbWUgPSAqbmV3IFJlbmRlclNjcm9sbGJhclRoZW1lOwogICAg
IHJldHVybiAmdGhlbWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBzdGF0aWMgRm9udFdlaWdodCB0
b0ZvbnRXZWlnaHQoTlNJbnRlZ2VyCiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUZvbnQo
aW50IGNzc1ZhbHVlSWQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAog
ewotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc3lzdGVtRm9udDsKLSAgICBzdGF0aWMgRm9u
dERlc2NyaXB0aW9uIHNtYWxsU3lzdGVtRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9u
IG1lbnVGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbGFiZWxGb250OwotICAgIHN0
YXRpYyBGb250RGVzY3JpcHRpb24gbWluaUNvbnRyb2xGb250OwotICAgIHN0YXRpYyBGb250RGVz
Y3JpcHRpb24gc21hbGxDb250cm9sRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGNv
bnRyb2xGb250OworICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24mIHN5c3RlbUZvbnQgPSAqbmV3
IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBzbWFsbFN5c3Rl
bUZvbnQgPSAqbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9u
JiBtZW51Rm9udCA9ICpuZXcgRm9udERlc2NyaXB0aW9uOworICAgIHN0YXRpYyBGb250RGVzY3Jp
cHRpb24mIGxhYmVsRm9udCA9ICpuZXcgRm9udERlc2NyaXB0aW9uOworICAgIHN0YXRpYyBGb250
RGVzY3JpcHRpb24mIG1pbmlDb250cm9sRm9udCA9ICpuZXcgRm9udERlc2NyaXB0aW9uOworICAg
IHN0YXRpYyBGb250RGVzY3JpcHRpb24mIHNtYWxsQ29udHJvbEZvbnQgPSAqbmV3IEZvbnREZXNj
cmlwdGlvbjsKKyAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uJiBjb250cm9sRm9udCA9ICpuZXcg
Rm9udERlc2NyaXB0aW9uOwogCiAgICAgRm9udERlc2NyaXB0aW9uKiBjYWNoZWREZXNjOwogICAg
IE5TRm9udCogZm9udCA9IG5pbDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lvbiAzODI0NSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTkyLDcg
KzIxOTIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmCiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBvZiB0aGUgZWxsaXBzaXMgdXNpbmcgdGhlIGN1cnJlbnQg
Zm9udC4KICAgICAvLyBGSVhNRTogQ1NTMyBzYXlzIHRoaXMgaXMgY29uZmlndXJhYmxlLCBhbHNv
IG5lZWQgdG8gdXNlIDB4MDAyRSAoRlVMTCBTVE9QKSBpZiBob3Jpem9udGFsIGVsbGlwc2lzIGlz
ICJub3QgcmVuZGVyYWJsZSIKICAgICBUZXh0UnVuIGVsbGlwc2lzUnVuKCZob3Jpem9udGFsRWxs
aXBzaXMsIDEpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZWxsaXBzaXNTdHIoJmhvcml6b250
YWxFbGxpcHNpcywgMSk7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIgPSAq
bmV3IEF0b21pY1N0cmluZygmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKICAgICBjb25zdCBGb250
JiBmaXJzdExpbmVGb250ID0gZmlyc3RMaW5lU3R5bGUoKS0+Zm9udCgpOwogICAgIGNvbnN0IEZv
bnQmIGZvbnQgPSBzdHlsZSgpLT5mb250KCk7CiAgICAgaW50IGZpcnN0TGluZUVsbGlwc2lzV2lk
dGggPSBmaXJzdExpbmVGb250LndpZHRoKGVsbGlwc2lzUnVuKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsMTMg
KzcyMCwxMyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzCiAjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVn
aW9uPiYgUmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKLSAgICBzdGF0
aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBlbXB0eUxpc3Q7CisgICAgc3RhdGljIFZl
Y3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGVtcHR5TGlzdCA9ICpuZXcgVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPjsKICAgICByZXR1cm4gZW1wdHlMaXN0OwogfQogCiBjb25zdCBWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lv
bnMoKQogewotICAgIHN0YXRpYyBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IG5vbmVMaXN0
OworICAgIHN0YXRpYyBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lTGlzdCA9ICpu
ZXcgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPjsKICAgICBzdGF0aWMgYm9vbCBub25lTGlz
dEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIW5vbmVMaXN0SW5pdGlhbGl6ZWQpIHsK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNv
cmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIExvY2FsU3RvcmFnZSo+IEwKIAogc3RhdGljIExv
Y2FsU3RvcmFnZU1hcCYgbG9jYWxTdG9yYWdlTWFwKCkKIHsKLSAgICBzdGF0aWMgTG9jYWxTdG9y
YWdlTWFwIGxvY2FsU3RvcmFnZU1hcDsKKyAgICBzdGF0aWMgTG9jYWxTdG9yYWdlTWFwJiBsb2Nh
bFN0b3JhZ2VNYXAgPSAqbmV3IExvY2FsU3RvcmFnZU1hcDsKICAgICByZXR1cm4gbG9jYWxTdG9y
YWdlTWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpwYXJzZU1hcHBlCiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90
YXRlTW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBhdXRvVmFsKCJhdXRvIik7Ci0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBhdXRvUmV2ZXJzZSgiYXV0by1yZXZlcnNlIik7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b1ZhbCA9ICpuZXcgQXRvbWljU3RyaW5nKCJhdXRv
Iik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b1JldmVyc2UgPSAqbmV3IEF0
b21pY1N0cmluZygiYXV0by1yZXZlcnNlIik7CiAgICAgU3RyaW5nIHJvdGF0ZSA9IGdldEF0dHJp
YnV0ZShTVkdOYW1lczo6cm90YXRlQXR0cik7CiAgICAgaWYgKHJvdGF0ZSA9PSBhdXRvVmFsKQog
ICAgICAgICByZXR1cm4gUm90YXRlQXV0bzsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTAgKzE5NiwxMCBAQCBTVkdBbmltYXRpb25F
bGVtZW50OjpBbmltYXRpb25Nb2RlIFNWR0FuCiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkNhbGNN
b2RlIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNNb2RlKCkgY29uc3QKIHsgICAgCi0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyBkaXNjcmV0ZSgiZGlzY3JldGUiKTsKLSAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nIGxpbmVhcigibGluZWFyIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyBwYWNlZCgicGFjZWQiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IHNwbGluZSgic3BsaW5lIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGlzY3Jl
dGUgPSAqbmV3IEF0b21pY1N0cmluZygiZGlzY3JldGUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBsaW5lYXIgPSAqbmV3IEF0b21pY1N0cmluZygibGluZWFyIik7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgcGFjZWQgPSAqbmV3IEF0b21pY1N0cmluZygicGFjZWQi
KTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzcGxpbmUgPSAqbmV3IEF0b21pY1N0
cmluZygic3BsaW5lIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJp
YnV0ZShTVkdOYW1lczo6Y2FsY01vZGVBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gZGlzY3JldGUp
CiAgICAgICAgIHJldHVybiBDYWxjTW9kZURpc2NyZXRlOwpAQCAtMjE0LDggKzIxNCw4IEBAIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OkNhbGNNb2RlIFNWR0FuaW1hdGkKIAogU1ZHQW5pbWF0aW9uRWxl
bWVudDo6QXR0cmlidXRlVHlwZSBTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVUeXBlKCkg
Y29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBjc3MoIkNTUyIpOwot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sKCJYTUwiKTsKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBjc3MgPSAqbmV3IEF0b21pY1N0cmluZygiQ1NTIik7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sID0gKm5ldyBBdG9taWNTdHJpbmcoIlhNTCIpOwog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmF0
dHJpYnV0ZVR5cGVBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gY3NzKQogICAgICAgICByZXR1cm4g
QXR0cmlidXRlVHlwZUNTUzsKQEAgLTI0MSwxNCArMjQxLDE0IEBAIFN0cmluZyBTVkdBbmltYXRp
b25FbGVtZW50Ojpmcm9tVmFsdWUoKSAKIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc0Fk
ZGl0aXZlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHN1bSgic3Vt
Iik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VtID0gKm5ldyBBdG9taWNTdHJp
bmcoInN1bSIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmFkZGl0aXZlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmlt
YXRpb25Nb2RlKCkgPT0gQnlBbmltYXRpb247CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVu
dDo6aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyBzdW0oInN1bSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bSA9ICpuZXcg
QXRvbWljU3RyaW5nKCJzdW0iKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjphY2N1bXVsYXRlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09
IHN1bSAmJiBhbmltYXRpb25Nb2RlKCkgIT0gVG9BbmltYXRpb247CiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdMYW5nU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdT
cGFjZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0
WG1sbGFuZyhjb25zdCBBdG9tCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1s
c3BhY2UoKSBjb25zdAogewogICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nIGRlZmF1bHRTdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVsdFN0cmluZyA9ICpuZXcgQXRvbWljU3RyaW5nKCJk
ZWZhdWx0Iik7CiAgICAgICAgIHJldHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgU1ZHU1ZHRWxlbWVu
dDo6flNWR1NWR0VsZW1lbnQoKQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6
OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIGRlZmF1bHRWYWx1ZSgidGV4dC9lY21hc2NyaXB0Iik7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZGVmYXVsdFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQvZWNtYXNj
cmlwdCIpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShjb250ZW50
U2NyaXB0VHlwZUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDog
bjsKIH0KQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldENvbnRlbnRT
Y3JpcHRUeXBlCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFN0
eWxlVHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0
VmFsdWUoInRleHQvY3NzIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZGVmYXVs
dFZhbHVlID0gKm5ldyBBdG9taWNTdHJpbmcoInRleHQvY3NzIik7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKGNvbnRlbnRTdHlsZVR5cGVBdHRyKTsKICAgICByZXR1
cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR1N0eWxlRWxlbWVu
dDo6c2V0WG1sc3BhY2UoY29uc3QgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVFbGVt
ZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRlZmF1
bHRWYWx1ZSgidGV4dC9jc3MiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZh
dWx0VmFsdWUgPSAqbmV3IEF0b21pY1N0cmluZygidGV4dC9jc3MiKTsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVs
bCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBTVkdTdHls
ZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0
eWxlRWxlbWVudDo6bWVkaWEoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgZGVmYXVsdFZhbHVlKCJhbGwiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBk
ZWZhdWx0VmFsdWUgPSAqbmV3IEF0b21pY1N0cmluZygiYWxsIik7CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKG1lZGlhQXR0cik7CiAgICAgcmV0dXJuIG4uaXNOdWxs
KCkgPyBkZWZhdWx0VmFsdWUgOiBuOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzODI0NSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFNWR1Rl
eHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7CiAgICAg
ICAgICAgICBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHByZXNlcnZlU3RyaW5n
KCJwcmVzZXJ2ZSIpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IHByZXNlcnZlU3RyaW5nID0gKm5ldyBBdG9taWNTdHJpbmcoInByZXNlcnZlIik7CiAKICAgICAg
ICAgICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSBwcmVzZXJ2ZVN0cmluZykKICAgICAgICAg
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBD
U1NWYWx1ZVByZSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIFNNSUxUaW1lIFNWR1NN
SUxFbGVtZW50OjpwYXJzZUNsb2NrVmFsdWUKICAgICAKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRh
LnN0cmlwV2hpdGVTcGFjZSgpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBpbmRl
ZmluaXRlVmFsdWUoImluZGVmaW5pdGUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBpbmRlZmluaXRlVmFsdWUgPSAqbmV3IEF0b21pY1N0cmluZygiaW5kZWZpbml0ZSIpOwogICAg
IGlmIChwYXJzZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6
aW5kZWZpbml0ZSgpOwogCkBAIC00NTcsOCArNDU3LDggQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6
aXNGcm96ZW4oKSBjb25zdAogICAgIAogU1ZHU01JTEVsZW1lbnQ6OlJlc3RhcnQgU1ZHU01JTEVs
ZW1lbnQ6OnJlc3RhcnQoKSBjb25zdAogeyAgICAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIG5ldmVyKCJuZXZlciIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgd2hlbk5v
dEFjdGl2ZSgid2hlbk5vdEFjdGl2ZSIpOworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IG5ldmVyID0gKm5ldyBBdG9taWNTdHJpbmcoIm5ldmVyIik7CisgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgd2hlbk5vdEFjdGl2ZSA9ICpuZXcgQXRvbWljU3RyaW5nKCJ3aGVuTm90QWN0
aXZlIik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0ZShTVkdO
YW1lczo6cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBuZXZlcikKICAgICAgICAgcmV0
dXJuIFJlc3RhcnROZXZlcjsKQEAgLTQ2OSw3ICs0NjksNyBAQCBTVkdTTUlMRWxlbWVudDo6UmVz
dGFydCBTVkdTTUlMRWxlbWVudDo6CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6RmlsbE1vZGUgU1ZH
U01JTEVsZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgZnJlZXplKCJmcmVlemUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBm
cmVlemUgPSAqbmV3IEF0b21pY1N0cmluZygiZnJlZXplIik7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6ZmlsbEF0dHIpOwogICAgIHJldHVy
biB2YWx1ZSA9PSBmcmVlemUgPyBGaWxsRnJlZXplIDogRmlsbFJlbW92ZTsKIH0KQEAgLTUwNiw3
ICs1MDYsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cmVwZWF0Q291bnQoKSBjCiAgICAg
aWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQo
KTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaW5kZWZpbml0ZVZhbHVlKCJpbmRl
ZmluaXRlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5kZWZpbml0ZVZhbHVl
ID0gKm5ldyBBdG9taWNTdHJpbmcoImluZGVmaW5pdGUiKTsKICAgICBpZiAodmFsdWUgPT0gaW5k
ZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKICAg
ICBib29sIG9rOwpAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnByb2dy
ZXNzKFNNSUxUaW1lIGUKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6Om5vdGlmeURlcGVuZGVudHNJbnRl
cnZhbENoYW5nZWQoTmV3T3JFeGlzdGluZ0ludGVydmFsIG5ld09yRXhpc3RpbmcpCiB7CiAgICAg
QVNTRVJUKG1faW50ZXJ2YWxCZWdpbi5pc0Zpbml0ZSgpKTsKLSAgICBzdGF0aWMgSGFzaFNldDxT
VkdTTUlMRWxlbWVudCo+IGxvb3BCcmVha2VyOworICAgIHN0YXRpYyBIYXNoU2V0PFNWR1NNSUxF
bGVtZW50Kj4mIGxvb3BCcmVha2VyID0gKm5ldyBIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj47CiAg
ICAgaWYgKGxvb3BCcmVha2VyLmNvbnRhaW5zKHRoaXMpKQogICAgICAgICByZXR1cm47CiAgICAg
bG9vcEJyZWFrZXIuYWRkKHRoaXMpOwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNl
LmNwcAkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFJlc291cmNlU2V0
IHsgCiB9OwogCiBzdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQq
PiYgY2xpZW50TWFwKCkgewotICAgIHN0YXRpYyBIYXNoTWFwPFNWR1N0eWxlZEVsZW1lbnQqLCBS
ZXNvdXJjZVNldCo+IG1hcDsKKyAgICBzdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50Kiwg
UmVzb3VyY2VTZXQqPiYgbWFwID0gKm5ldyBIYXNoTWFwPFNWR1N0eWxlZEVsZW1lbnQqLCBSZXNv
dXJjZVNldCo+OwogICAgIHJldHVybiBtYXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcoR3JhcGhpY3NDb24KICAgICBp
ZiAoIW1fbWFya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWMgSGFzaFNldDxTVkdS
ZXNvdXJjZU1hcmtlcio+IGN1cnJlbnRseURyYXdpbmdNYXJrZXJzOworICAgIHN0YXRpYyBIYXNo
U2V0PFNWR1Jlc291cmNlTWFya2VyKj4mIGN1cnJlbnRseURyYXdpbmdNYXJrZXJzID0gKm5ldyBI
YXNoU2V0PFNWR1Jlc291cmNlTWFya2VyKj47CiAKICAgICAvLyBhdm9pZCBkcmF3aW5nIGNpcmN1
bGFyIG1hcmtlciByZWZlcmVuY2VzCiAgICAgaWYgKGN1cnJlbnRseURyYXdpbmdNYXJrZXJzLmNv
bnRhaW5zKHRoaXMpKQpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMzgyNDUp
CisrKyBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtVUkw+LAogCiBz
dGF0aWMgUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIHByZWZsaWdodFJlc3VsdENhY2hlKCkKIHsKLSAg
ICBzdGF0aWMgUHJlZmxpZ2h0UmVzdWx0Q2FjaGUgY2FjaGU7CisgICAgc3RhdGljIFByZWZsaWdo
dFJlc3VsdENhY2hlJiBjYWNoZSA9ICpuZXcgUHJlZmxpZ2h0UmVzdWx0Q2FjaGU7CiAgICAgcmV0
dXJuIGNhY2hlOwogfQogCkBAIC04OCw5ICs4OCw5IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFByZWZs
aWdodFJlc3VsdENhY2hlRW4KIAogc3RhdGljIGJvb2wgaXNTYWZlUmVxdWVzdEhlYWRlcihjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+IGZvcmJpZGRlbkhlYWRlcnM7Ci0gICAgc3RhdGljIFN0cmluZyBwcm94eVN0cmluZygi
cHJveHktIik7Ci0gICAgc3RhdGljIFN0cmluZyBzZWNTdHJpbmcoInNlYy0iKTsKKyAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGZvcmJpZGRlbkhlYWRlcnMgPSAq
bmV3IEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OworICAgIHN0YXRpYyBTdHJpbmcm
IHByb3h5U3RyaW5nID0gKm5ldyBTdHJpbmcoInByb3h5LSIpOworICAgIHN0YXRpYyBTdHJpbmcm
IHNlY1N0cmluZyA9ICpuZXcgU3RyaW5nKCJzZWMtIik7CiAgICAgCiAgICAgaWYgKGZvcmJpZGRl
bkhlYWRlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvcmJpZGRlbkhlYWRlcnMuYWRkKCJhY2Nl
cHQtY2hhcnNldCIpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGlzT25BY2Nlc3ND
b250cm9sU2ltcGxlUmVxdWUKIAogc3RhdGljIGJvb2wgaXNPbkFjY2Vzc0NvbnRyb2xSZXNwb25z
ZUhlYWRlcldoaXRlbGlzdChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IGFsbG93ZWRIZWFkZXJzOworICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgYWxsb3dlZEhlYWRlcnMgPSAqbmV3IEhh
c2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OwogICAgIGlmIChhbGxvd2VkSGVhZGVycy5p
c0VtcHR5KCkpIHsKICAgICAgICAgYWxsb3dlZEhlYWRlcnMuYWRkKCJjYWNoZS1jb250cm9sIik7
CiAgICAgICAgIGFsbG93ZWRIZWFkZXJzLmFkZCgiY29udGVudC1sYW5ndWFnZSIpOwpJbmRleDog
V2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViQ29y
ZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDcgQEAgbmFtZXNwYWNlIFhQYXRoIHsKICAgICAKIEV2YWx1YXRpb25Db250ZXh0JiBFeHByZXNz
aW9uOjpldmFsdWF0aW9uQ29udGV4dCgpCiB7Ci0gICAgc3RhdGljIEV2YWx1YXRpb25Db250ZXh0
IGV2YWx1YXRpb25Db250ZXh0OworICAgIHN0YXRpYyBFdmFsdWF0aW9uQ29udGV4dCYgZXZhbHVh
dGlvbkNvbnRleHQgPSAqbmV3IEV2YWx1YXRpb25Db250ZXh0OwogICAgIHJldHVybiBldmFsdWF0
aW9uQ29udGV4dDsKIH0KIApJbmRleDogV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAkocmV2aXNpb24gMzgyNDUpCisr
KyBXZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3
LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBBeGlzTmFtZXNNYXAoSGFzaE1hcDxTdAogCiBzdGF0aWMg
Ym9vbCBpc0F4aXNOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RlcDo6QXhpcyYgdHlwZSkKIHsK
LSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IGF4aXNOYW1lczsKKyAgICBz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+JiBheGlzTmFtZXMgPSAqbmV3IEhhc2hN
YXA8U3RyaW5nLCBTdGVwOjpBeGlzPjsKIAogICAgIGlmIChheGlzTmFtZXMuaXNFbXB0eSgpKQog
ICAgICAgICBzZXRVcEF4aXNOYW1lc01hcChheGlzTmFtZXMpOwpAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBib29sIGlzQXhpc05hbWUoY29uc3QgU3RyaW5nJiBuYW0KIAogc3RhdGljIGJvb2wg
aXNOb2RlVHlwZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0
PFN0cmluZz4gbm9kZVR5cGVOYW1lczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBub2Rl
VHlwZU5hbWVzID0gKm5ldyBIYXNoU2V0PFN0cmluZz47CiAgICAgaWYgKG5vZGVUeXBlTmFtZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUeXBlTmFtZXMuYWRkKCJjb21tZW50Iik7CiAgICAg
ICAgIG5vZGVUeXBlTmFtZXMuYWRkKCJ0ZXh0Iik7CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAkocmV2aXNp
b24gMzgyNDUpCisrKyBXZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNyArNDUsNyBAQCBjb25zdCBWYWx1ZTo6QWRvcHRUYWcgVmFsdWU6OmFkb3B0ID0ge307
CiBjb25zdCBOb2RlU2V0JiBWYWx1ZTo6dG9Ob2RlU2V0KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZGF0YSkgewotICAgICAgICBzdGF0aWMgTm9kZVNldCBlbXB0eU5vZGVTZXQ7CisgICAgICAgIHN0
YXRpYyBOb2RlU2V0JiBlbXB0eU5vZGVTZXQgPSAqbmV3IE5vZGVTZXQ7CiAgICAgICAgIHJldHVy
biBlbXB0eU5vZGVTZXQ7CiAgICAgfQogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkgQEAKKzIwMDgtMTEt
MDkgIEdyZWcgQm9sc2luZ2EgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJs
ZT4KKworICAgICAgICBSb2xsaW5nIHIzODE4OSBiYWNrIGluLgorCisgICAgICAgICogQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZzogc2V0IEdDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBZRVMg
Zm9yIDxyZGFyOi8vcHJvYmxlbS82MzU0Njk2PgorCiAyMDA4LTExLTA5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJ
bmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwkocmV2aXNpb24gMzgy
NDUpCisrKyBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHdvcmtpbmcg
Y29weSkKQEAgLTEyLDcgKzEyLDcgQEAgR0NDX0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlFUzsKIEdD
Q19NT0RFTF9UVU5JTkcgPSBHNTsKIEdDQ19PQkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKIEdD
Q19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7Ci1HQ0NfVEhSRUFEU0FGRV9TVEFUSUNT
ID0gTk87CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gWUVTOwogR0NDX1RSRUFUX1dBUk5JTkdT
X0FTX0VSUk9SUyA9IFlFUzsKIEdDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0g
Tk87CiBHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CkluZGV4OiBXZWJLaXQv
bWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTEsNyArNTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIEhhc2hNYXA8
QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIGJhY2tGb3J3YXJkTGlzdHMo
KQogewotICAgIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tGb3J3YXJk
TGlzdCo+IHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CisgICAgc3RhdGljIEhhc2hNYXA8QmFja0Zv
cndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4mIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHMg
PSAqbmV3IEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj47CiAg
ICAgcmV0dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeUl0ZW0ubW0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0
YXRpYyBpbmxpbmUgV2ViQ29yZUhpc3RvcnlJdGVtKiBjb3JlKFcKIAogSGFzaE1hcDxIaXN0b3J5
SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBlcnMoKQogewotICAgIHN0
YXRpYyBIYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiBoaXN0b3J5SXRlbVdy
YXBwZXJzOworICAgIHN0YXRpYyBIYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0q
PiYgaGlzdG9yeUl0ZW1XcmFwcGVycyA9ICpuZXcgSGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhp
c3RvcnlJdGVtKj47CiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtV3JhcHBlcnM7CiB9CiAKSW5kZXg6
IFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm0JKHJldmlzaW9uIDM4MjQ1KQorKysgV2Vi
S2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3
ICs0OSw3IEBAIHN0YXRpYyBOU0ZvbnQgKmRlZmF1bHRNZW51Rm9udCgpCiBzdGF0aWMgRm9udCYg
Zm9udEZyb21OU0ZvbnQoTlNGb250ICpmb250KQogewogICAgIHN0YXRpYyBOU0ZvbnQgKmN1cnJl
bnRGb250OwotICAgIHN0YXRpYyBGb250IGN1cnJlbnRSZW5kZXJlcjsKKyAgICBzdGF0aWMgRm9u
dCYgY3VycmVudFJlbmRlcmVyID0gKm5ldyBGb250OwogCiAgICAgaWYgKFtmb250IGlzRXF1YWw6
Y3VycmVudEZvbnRdKQogICAgICAgICByZXR1cm4gY3VycmVudFJlbmRlcmVyOwpJbmRleDogV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCShy
ZXZpc2lvbiAzODI0NSkKKysrIFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIE5TU3Ry
aW5nICpDYXJib25QYXRoRnJvbVBPU0lYUGF0aAogdHlwZWRlZiBIYXNoTWFwPE5QU3RyZWFtKiwg
TlBQPiBTdHJlYW1NYXA7CiBzdGF0aWMgU3RyZWFtTWFwJiBzdHJlYW1zKCkKIHsKLSAgICBzdGF0
aWMgU3RyZWFtTWFwIHN0YXRpY1N0cmVhbXM7CisgICAgc3RhdGljIFN0cmVhbU1hcCYgc3RhdGlj
U3RyZWFtcyA9ICpuZXcgU3RyZWFtTWFwOwogICAgIHJldHVybiBzdGF0aWNTdHJlYW1zOwogfQog
CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzgyNDUpCisrKyBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYwOCw3ICszNjA4LDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6Omlu
Zm8pKSB7Ci0gICAgICAgICAgICBzdGF0aWMgSGFzaFNldDxKU09iamVjdCo+IHZpc2l0ZWRFbGVt
czsKKyAgICAgICAgICAgIHN0YXRpYyBIYXNoU2V0PEpTT2JqZWN0Kj4mIHZpc2l0ZWRFbGVtcyA9
ICpuZXcgSGFzaFNldDxKU09iamVjdCo+OwogICAgICAgICAgICAgaWYgKCF2aXNpdGVkRWxlbXMu
Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5hZGQob2Jq
ZWN0KTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MjQ1KQorKysgV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDgt
MTEtMDkgIEdyZWcgQm9sc2luZ2EgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJp
YWJsZT4KKworICAgICAgICBSb2xsaW5nIHIzODE4OSBiYWNrIGluLgorCQkKKyAgICAgICAgVGhl
cmUgaXMgYSBjb21waWxlciBidWcgPHJkYXI6Ly9wcm9ibGVtLzYzNTQ2OTY+IENvZGVnZW4gaXNz
dWUgd2l0aCBDKysgc3RhdGljIHJlZmVyZW5jZSBpbiBnY2MgYnVpbGQgNTQ2NQorCisgICAgICAg
ICogU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzOgorCiAyMDA4LTExLTA2
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgQlVJTEQgRklY
OiBCYWNrZWQgb3V0IHIzODE4OSAoYW5kIHIzODIwMykgZm9yIFhjb2RlIDMuMC4KSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3Rv
cnMJKHJldmlzaW9uIDM4MjQ1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZXhp
dC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMTAgKzk1LDM1IEBAIGZv
ciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBpZiAoJHRhcmdldCBlcSAiV2ViQ29yZSIp
IHsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lm8i
OwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbHlTdHlsZUNvbW1h
bmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXJjaGl2ZUZhY3RvcnkubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU2VsZWN0b3IubyI7CiAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU3R5bGVTZWxlY3Rvci5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRJbWFnZS5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJDb2xvck1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJET01JbXBsZW1lbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJE
b2N1bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJFdmVudEhhbmRsZXIu
byI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVyTWFjLm8iOwog
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZUUERpcmVjdG9yeURvY3VtZW50Lm8iOwog
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiRm9ybURhdGFTdHJlYW1NYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVM
b2FkZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVNYWMubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiR0NDb250cm9sbGVyLm8iOwogICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29udGV4dE1hYy5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MQnV0dG9uRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJIVE1MRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJIVE1MRmllbGRTZXRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIkhUTUxJbnB1dEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiSFRNTEludGVyY2hhbmdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhU
TUxLZXlnZW5FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxM
ZWdlbmRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxPcHRH
cm91cEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTE9wdGlv
bkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFBhcnNlci5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MU2VsZWN0RWxlbWVudC5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGFibGVFbGVtZW50Lm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxUZXh0QXJlYUVsZW1lbnQubyI7CiAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSWNvbkRhdGFiYXNlLm8iOwogICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkluZGVudE91dGRlbnRDb21tYW5kLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkluc3BlY3RvckNvbnRyb2xsZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiSlNET01CaW5kaW5nLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIubyI7CiAgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSmF2YVNj
cmlwdERlYnVnU2VydmVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkphdmFT
Y3JpcHRQcm9maWxlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkphdmFTY3Jp
cHRQcm9maWxlTm9kZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJLVVJMLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkxvY2FsU3RvcmFnZS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3JrU3RhdGVOb3RpZmllci5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiUmVuZGVyQmxvY2subyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVy
Q291bnRlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJGbGV4aWJs
ZUJveC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMYXllci5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMaXN0SXRlbS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTdHlsZS5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNWR1Jlc291cmNlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNW
R1Jlc291cmNlTWFya2VyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1NN
SUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1NWR0VsZW1l
bnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU3R5bGVFbGVtZW50Lm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1RleHRDb250ZW50RWxlbWVudC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3JpcHRFbGVtZW50Lm8iOwogICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9sbFZpZXcubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVNYWMubyI7CiAgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIlRleHRFbmNvZGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJUaGVt
ZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJUaHJlYWRDaGVjay5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYTUxIdHRwUmVxdWVzdC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYUGF0aEV4cHJlc3Npb25Ob2RlLm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoUGFyc2VyLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlhQYXRoVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiYmlkaS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJodG1sZWRpdGlu
Zy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJtYXJrdXAubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAicnVudGltZV9yb290Lm8iOwogICAgIH0KIAogICAgIGlm
ICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
QWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJX
ZWJCYWNrRm9yd2FyZExpc3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2Vi
QmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJXZWJIaXN0b3J5SXRlbS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJX
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
V2ViUGFzdGVib2FyZEhlbHBlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJX
ZWJTdHJpbmdUcnVuY2F0b3IubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2Vi
Vmlldy5vIjsKICAgICB9CiAKICAgICAkc2F3RXJyb3IgPSAxIGlmIHByaW50RnVuY3Rpb25zKCRz
aG9ydE5hbWUsICRmaWxlKTsK
</data>
<flag name="review"
          id="11480"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25029</attachid>
            <date>2008-11-10 14:57:43 -0800</date>
            <delta_ts>2008-11-12 13:14:02 -0800</delta_ts>
            <desc>Remove *new construct</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>125778</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4Mjc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDgtMTEtMTAgIEdyZWcgQm9s
c2luZ2EgIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTAKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBzdGF0
aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1Y3Rv
cnMpCisKKyAgICAgICAgRm9yIGVhY2ggb2YgdGhlc2U6IENoYW5nZWQgdG8gbGVhayBhbiBvYmpl
Y3QgdG8gYXZvaWQgYW4gZXhpdC10aW1lIGRlc3RydWN0b3IuCisgICAgICAgIAorICAgICAgICBJ
biBnZW5lcmFsIGNvZGUgb2YgdGhlIGZvcm06CisgICAgICAgIAorICAgICAgICBzdGF0aWMgVCBt
OworICAgICAgICAKKyAgICAgICAgYmVjYW1lOgorICAgICAgICAKKyAgICAgICAgc3RhdGljIFQq
IG1QdHIgPSBuZXcgVDsKKyAgICAgICAgVCYgbSA9ICptUHRyOworICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyB0byB3b3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vNjM1NDY5Nj4gQ29kZWdlbiBp
c3N1ZSB3aXRoIEMrKyBzdGF0aWMgcmVmZXJlbmNlIGluIGdjYyBidWlsZCA1NDY1CisKKyAgICAg
ICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6Om1haW5UaHJlYWRGdW5jdGlv
blF1ZXVlTXV0ZXgpOgorICAgICAgICAoV1RGOjpmdW5jdGlvblF1ZXVlKToKKyAgICAgICAgKiB3
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjp0aHJlYWRNYXBNdXRleCk6
CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisKIDIwMDgtMTEtMTAgIENhbWVyb24gWndhcmlj
aCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVu
LgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBK
YXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEz
ICs1MywxNSBAQCBzdGF0aWMgYm9vbCBjYWxsYmFja3NQYXVzZWQ7IC8vIFRoaXMgZ2xvCiAKIE11
dGV4JiBtYWluVGhyZWFkRnVuY3Rpb25RdWV1ZU11dGV4KCkKIHsKLSAgICBzdGF0aWMgTXV0ZXgm
IHN0YXRpY011dGV4ID0gKm5ldyBNdXRleDsKKyAgICBzdGF0aWMgTXV0ZXgqIHN0YXRpY011dGV4
UHRyID0gbmV3IE11dGV4OworICAgIE11dGV4JiBzdGF0aWNNdXRleCA9ICpzdGF0aWNNdXRleFB0
cjsKICAgICByZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKIHN0YXRpYyBGdW5jdGlvblF1ZXVlJiBm
dW5jdGlvblF1ZXVlKCkKIHsKLSAgICBzdGF0aWMgRnVuY3Rpb25RdWV1ZSYgc3RhdGljRnVuY3Rp
b25RdWV1ZSA9ICpuZXcgRnVuY3Rpb25RdWV1ZTsKKyAgICBzdGF0aWMgRnVuY3Rpb25RdWV1ZSog
c3RhdGljRnVuY3Rpb25RdWV1ZVB0ciA9IG5ldyBGdW5jdGlvblF1ZXVlOworICAgIEZ1bmN0aW9u
UXVldWUmIHN0YXRpY0Z1bmN0aW9uUXVldWUgPSAqc3RhdGljRnVuY3Rpb25RdWV1ZVB0cjsKICAg
ICByZXR1cm4gc3RhdGljRnVuY3Rpb25RdWV1ZTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4
LDggQEAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgbWFpblRocmVhZElkZW50aQogCiBzdGF0aWMg
TXV0ZXgmIHRocmVhZE1hcE11dGV4KCkKIHsKLSAgICBzdGF0aWMgTXV0ZXgmIG11dGV4ID0gKm5l
dyBNdXRleDsKKyAgICBzdGF0aWMgTXV0ZXgqIG11dGV4UHRyID0gbmV3IE11dGV4OworICAgIE11
dGV4JiBtdXRleCA9ICptdXRleFB0cjsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTc4LDcg
Kzc5LDggQEAgdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdQogCiBzdGF0
aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+JiB0aHJlYWRNYXAoKQogewot
ICAgIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRfdD4mIG1hcCA9ICpu
ZXcgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+OworICAgIHN0YXRpYyBIYXNo
TWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRfdD4qIG1hcFB0ciA9IG5ldyBIYXNoTWFwPFRo
cmVhZElkZW50aWZpZXIsIHB0aHJlYWRfdD47CisgICAgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVy
LCBwdGhyZWFkX3Q+JiBtYXAgPSAqbWFwUHRyOwogICAgIHJldHVybiBtYXA7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAzODI3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjU3IEBACisyMDA4LTExLTEwICBHcmVnIEJvbHNpbmdhICA8c2V0IEVNQUlMX0FERFJFU1Mg
ZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRl
c3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIEZvciBlYWNoIG9m
IHRoZXNlOiBDaGFuZ2VkIHRvIGxlYWsgYW4gb2JqZWN0IHRvIGF2b2lkIGFuIGV4aXQtdGltZSBk
ZXN0cnVjdG9yLgorICAgICAgICAKKyAgICAgICAgSW4gZ2VuZXJhbCBjb2RlIG9mIHRoZSBmb3Jt
OgorICAgICAgICAKKyAgICAgICAgc3RhdGljIFQgbTsKKyAgICAgICAgCisgICAgICAgIGJlY2Ft
ZToKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBUKiBtUHRyID0gbmV3IFQ7CisgICAgICAgIFQm
IG0gPSAqbVB0cjsKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgdG8gd29yayBhcm91bmQgPHJk
YXI6Ly9wcm9ibGVtLzYzNTQ2OTY+IENvZGVnZW4gaXNzdWUgd2l0aCBDKysgc3RhdGljIHJlZmVy
ZW5jZSBpbiBnY2MgYnVpbGQgNTQ2NQorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NDb250cm9sbGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlclNldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFw
cGVycyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmVlZHNZb3VUdWJlUXVpcmspOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6cm9vdE9iamVjdFNldCk6Cisg
ICAgICAgICogY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAg
ICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5F
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50RXZhbCk6CisgICAgICAgICogZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHMTBGZWF0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzU1ZHMTFGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUlt
cGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1ByZWZpeE5hbWVzcGFjZU1pc21hdGNo
KToKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1N1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHlsZVNwYW5DbGFzc1N0cmluZyk6
CisgICAgICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6KToKKyAgICAgICAgKiBlZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmluZGVudEJsb2NrcXVvdGVTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNo
YW5nZU5ld2xpbmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSW50ZXJjaGFuZ2VDb252ZXJ0
ZWRTcGFjZVNwYW4pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6Om5vbkJyZWFraW5nU3BhY2VTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZEVzY2FwZWRDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZEFkZE5hbWVzcGFjZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFN0YXJ0TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6dHlwZSk6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNSZWNv
Z25pemVkVGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjppbmxpbmVUYWdMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmJsb2NrVGFnTGlzdCk6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OnR5cGUp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50Ojp0eXBlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMZWdlbmRFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudDo6dHlwZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT3B0aW9uRWxlbWVudDo6dHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmdldE5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlcjo6aXNIZWFkZXJUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNl
cjo6aXNSZXNpZHVhbFN0eWxlVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6Omlz
QWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybSk6CisgICAgICAgICog
aW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFT
Y3JpcHRQcm9maWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2ZpbGVDYWNoZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcm9maWxlTm9kZUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxTY2hlbWVzKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVTdG9yYWdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBsb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpk
ZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OmtlZXBBbGl2ZVNldCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwTmFtZSk6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9y
UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRl
bnRpZmllcik6CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpyZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YmxhbmtVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbHRlcm5hdGVGYW1pbHlOYW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpsZWFrTmFt
ZWRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRlckN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjcm9zc0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpoYW5kQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1vdmVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxU
ZXh0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNlbGxDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGV4dE1lbnVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6YWxpYXNDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6em9vbUluQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpv
b21PdXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpub25lQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2dyZXNzQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6Om5vRHJvcEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3RB
bGxvd2VkQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmlCZWFtQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OndhaXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGVscEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjplYXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5v
cnRoUmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFJlc2l6ZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6c291dGhSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhFYXN0
UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoV2VzdFJlc2l6ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjp3ZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
Om5vcnRoU291dGhSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFdlc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpjb2x1bW5SZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6cm93UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmdyYWJDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Z3JhYmJpbmdDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpu
YXRpdmVUaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RocmVh
ZENoZWNrLm1tOgorICAgICAgICAoV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJl
YW1Gb3JtRGF0YU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJlYW1SZXNvdXJjZUhhbmRs
ZU1hcCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRFbmNvZGluZzo6aXNKYXBhbmVzZSk6CisgICAgICAgICogcGx1Z2lucy9Q
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y291bnRlck1hcHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6bWFya2VyVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3Rl
bUZvbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9iaWRpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpndWlkTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Z3Vp
ZFRvVmVyc2lvbk1hcCk6CisgICAgICAgIChXZWJDb3JlOjpndWlkVG9EYXRhYmFzZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRhdGFiYXNlVmVyc2lvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZEZvck9yaWdp
bkFuZE5hbWUpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZmljYXRpb25NdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZmljYXRpb25RdWV1
ZSk6CisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9jYWxTdG9yYWdlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0
ZU1vZGUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBZGRpdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25FbGVtZW50Ojppc0FjY3VtdWxhdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTGFu
Z1NwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UpOgor
ICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6bWVkaWEpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VD
bG9ja1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpmaWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
TUlMRWxlbWVudDo6bm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaWVudE1h
cCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmxpZ2h0UmVzdWx0Q2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTYWZlUmVxdWVzdEhlYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjppc09uQWNjZXNzQ29udHJvbFJlc3BvbnNlSGVhZGVyV2hpdGVsaXN0KToKKyAgICAgICAg
KiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
RXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRleHQpOgorICAgICAgICAqIHhtbC9YUGF0aFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6aXNBeGlzTmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6aXNOb2RlVHlwZU5hbWUpOgorICAgICAgICAqIHhtbC9YUGF0aFZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpWYWx1ZTo6dG9Ob2RlU2V0KToKKwogMjAw
OC0xMS0xMCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IEJ1
ZyAyMjE2MTogQXNzZXJ0aW9uIGZhaWx1cmUgaW4gUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9y
IHdoZW4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM4
Mjc1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw4IEBAIHN0YXRpYyB2b2lkKiBjb2xsZWN0KHZvaWQqKQogCiBHQ0Nv
bnRyb2xsZXImIGdjQ29udHJvbGxlcigpCiB7Ci0gICAgc3RhdGljIEdDQ29udHJvbGxlciBzdGF0
aWNHQ0NvbnRyb2xsZXI7CisgICAgc3RhdGljIEdDQ29udHJvbGxlciogc3RhdGljR0NDb250cm9s
bGVyUHRyID0gbmV3IEdDQ29udHJvbGxlcjsKKyAgICBHQ0NvbnRyb2xsZXImIHN0YXRpY0dDQ29u
dHJvbGxlciA9ICpzdGF0aWNHQ0NvbnRyb2xsZXJQdHI7CiAgICAgcmV0dXJuIHN0YXRpY0dDQ29u
dHJvbGxlcjsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2
aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
V3JhcHBlcnMoY29uc3QgCiBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiYgd3JhcHBlclNldCgp
CiB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgc3RhdGljIFRocmVhZFNwZWNpZmljPEhhc2hT
ZXQ8RE9NT2JqZWN0Kj4gPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpYzxIYXNoU2V0PERPTU9iamVjdCo+ID4qIHN0YXRpY1dyYXBwZXJTZXRQdHIgPSBuZXcgVGhy
ZWFkU3BlY2lmaWM8SGFzaFNldDxET01PYmplY3QqPiA+OworICAgIFRocmVhZFNwZWNpZmljPEhh
c2hTZXQ8RE9NT2JqZWN0Kj4gPiYgc3RhdGljV3JhcHBlclNldCA9ICpzdGF0aWNXcmFwcGVyU2V0
UHRyOwogICAgIHJldHVybiAqc3RhdGljV3JhcHBlclNldDsKICNlbHNlCi0gICAgc3RhdGljIEhh
c2hTZXQ8RE9NT2JqZWN0Kj4gc3RhdGljV3JhcHBlclNldDsKKyAgICBzdGF0aWMgSGFzaFNldDxE
T01PYmplY3QqPiogc3RhdGljV3JhcHBlclNldFB0ciA9IG5ldyBIYXNoU2V0PERPTU9iamVjdCo+
OworICAgIEhhc2hTZXQ8RE9NT2JqZWN0Kj4mIHN0YXRpY1dyYXBwZXJTZXQgPSAqc3RhdGljV3Jh
cHBlclNldFB0cjsKICAgICByZXR1cm4gc3RhdGljV3JhcHBlclNldDsKICNlbmRpZgogfQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNw
cAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2Jq
ZWN0V3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDggQEAgdHlwZWRlZiBI
YXNoTWFwPEpTR2xvYmFsT2JqZWN0KiwgV3JhcHBlcgogCiBzdGF0aWMgR2xvYmFsT2JqZWN0V3Jh
cHBlck1hcCYgd3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBHbG9iYWxPYmplY3RXcmFwcGVyTWFw
IG1hcDsKKyAgICBzdGF0aWMgR2xvYmFsT2JqZWN0V3JhcHBlck1hcCogbWFwUHRyID0gbmV3IEds
b2JhbE9iamVjdFdyYXBwZXJNYXA7CisgICAgR2xvYmFsT2JqZWN0V3JhcHBlck1hcCYgbWFwID0g
Km1hcFB0cjsKICAgICByZXR1cm4gbWFwOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkocmV2aXNpb24gMzgyNzUp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsOCBAQCB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3Qq
LCBKU0luc3BlY3RvckNhCiAKIHN0YXRpYyBXcmFwcGVyTWFwJiB3cmFwcGVycygpCiB7Ci0gICAg
c3RhdGljIFdyYXBwZXJNYXAgbWFwOworICAgIHN0YXRpYyBXcmFwcGVyTWFwKiBtYXBQdHIgPSBu
ZXcgV3JhcHBlck1hcDsKKyAgICBXcmFwcGVyTWFwJiBtYXAgPSAqbWFwUHRyOwogICAgIHJldHVy
biBtYXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw4IEBAIHN0YXRpYyBib29sIG5l
ZWRzWW91VHViZVF1aXJrKEV4ZWNTdGF0ZSoKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGV4
ZWMtPmZ1bmN0aW9uKCk7CiAgICAgaWYgKCFmdW5jdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHN0YXRpYyBjb25zdCBJZGVudGlmaWVyJiBpc1dpbmRvd3NGdW5jdGlvbk5hbWUgPSAq
bmV3IElkZW50aWZpZXIoZXhlYywgImlzV2luZG93cyIpOworICAgIHN0YXRpYyBjb25zdCBJZGVu
dGlmaWVyKiBpc1dpbmRvd3NGdW5jdGlvbk5hbWVQdHIgPSBuZXcgSWRlbnRpZmllcihleGVjLCAi
aXNXaW5kb3dzIik7CisgICAgY29uc3QgSWRlbnRpZmllciYgaXNXaW5kb3dzRnVuY3Rpb25OYW1l
ID0gKmlzV2luZG93c0Z1bmN0aW9uTmFtZVB0cjsKICAgICBpZiAoZnVuY3Rpb24tPmZ1bmN0aW9u
TmFtZSgpICE9IGlzV2luZG93c0Z1bmN0aW9uTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC03MCw3ICs3MSw4IEBAIHN0YXRpYyBib29sIG5lZWRzWW91VHViZVF1aXJrKEV4ZWNTdGF0
ZSoKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxpbmdFeGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdGF0aWMg
Y29uc3QgSWRlbnRpZmllciYgaXNTYWZhcmlGdW5jdGlvbk5hbWUgPSAqbmV3IElkZW50aWZpZXIo
ZXhlYywgImlzU2FmYXJpIik7CisgICAgc3RhdGljIGNvbnN0IElkZW50aWZpZXIqIGlzU2FmYXJp
RnVuY3Rpb25OYW1lUHRyID0gbmV3IElkZW50aWZpZXIoZXhlYywgImlzU2FmYXJpIik7CisgICAg
Y29uc3QgSWRlbnRpZmllciYgaXNTYWZhcmlGdW5jdGlvbk5hbWUgPSAqaXNTYWZhcmlGdW5jdGlv
bk5hbWVQdHI7CiAgICAgSlNWYWx1ZSogaXNTYWZhcmlGdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdl
dERpcmVjdChpc1NhZmFyaUZ1bmN0aW9uTmFtZSk7CiAgICAgaWYgKGlzU2FmYXJpRnVuY3Rpb24g
IT0gY2FsbGluZ0Z1bmN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfcm9vdC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9yb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOCBAQCB0eXBlZGVmIEhhc2hT
ZXQ8Um9vdE9iamVjdCo+IFJvb3RPYmplY3RTCiAKIHN0YXRpYyBSb290T2JqZWN0U2V0KiByb290
T2JqZWN0U2V0KCkKIHsKLSAgICBzdGF0aWMgUm9vdE9iamVjdFNldCBzdGF0aWNSb290T2JqZWN0
U2V0OworICAgIHN0YXRpYyBSb290T2JqZWN0U2V0KiBzdGF0aWNSb290T2JqZWN0U2V0UHRyID0g
bmV3IFJvb3RPYmplY3RTZXQ7CisgICAgUm9vdE9iamVjdFNldCYgc3RhdGljUm9vdE9iamVjdFNl
dCA9ICpzdGF0aWNSb290T2JqZWN0U2V0UHRyOwogICAgIHJldHVybiAmc3RhdGljUm9vdE9iamVj
dFNldDsKIH0KIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsOCBAQCBTdHJpbmcgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OnJlbW92CiB7CiAgICAgZWMgPSAwOwogCi0gICAgc3Rh
dGljIEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiBzaG9ydGhhbmRNYXA7CisgICAgc3Rh
dGljIEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiogc2hvcnRoYW5kTWFwUHRyID0gbmV3
IEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPjsKKyAgICBIYXNoTWFwPGludCwgUHJvcGVy
dHlMb25naGFuZD4mIHNob3J0aGFuZE1hcCA9ICpzaG9ydGhhbmRNYXBQdHI7CiAgICAgaWYgKHNo
b3J0aGFuZE1hcC5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRTaG9ydGhhbmRNYXAoc2hvcnRoYW5k
TWFwKTsKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gMzgyNzUp
CisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4Niw3ICs2ODYsOCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25z
CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxpc3Qtc3R5bGUgYW5kIHNlcGFyYXRvcgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgcmVjdFBhcmVuKCJyZWN0KCIpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyogcmVjdFBhcmVuUHRyID0gbmV3IFN0cmluZygicmVjdCgiKTsKKyAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgcmVjdFBhcmVuID0gKnJlY3RQYXJlblB0cjsKIAogICAgICAg
ICAgICAgUmVjdCogcmVjdFZhbCA9IGdldFJlY3RWYWx1ZSgpOwogICAgICAgICAgICAgVmVjdG9y
PFVDaGFyPiByZXN1bHQ7CkBAIC03MDksOSArNzEwLDEyIEBAIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19SR0JDT0xP
UjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIGNvbW1hU3BhY2UoIiwgIik7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIHJnYlBhcmVuKCJyZ2IoIik7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIHJnYmFQYXJlbigicmdiYSgiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcq
IGNvbW1hU3BhY2VQdHIgPSBuZXcgU3RyaW5nKCIsICIpOworICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBjb21tYVNwYWNlID0gKmNvbW1hU3BhY2VQdHI7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nKiByZ2JQYXJlblB0ciA9IG5ldyBTdHJpbmcoInJnYigiKTsKKyAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcmdiUGFyZW4gPSAqcmdiUGFyZW5QdHI7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nKiByZ2JhUGFyZW5QdHIgPSBuZXcgU3RyaW5nKCJyZ2JhKCIpOworICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiByZ2JhUGFyZW4gPSAqcmdiYVBhcmVuUHRyOwogCiAgICAg
ICAgICAgICBSR0JBMzIgcmdiQ29sb3IgPSBtX3ZhbHVlLnJnYmNvbG9yOwogICAgICAgICAgICAg
aWYgKG1fdHlwZSA9PSBDU1NfUEFSU0VSX0hFWENPTE9SKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAko
cmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDc1ICs2MiwxNDQgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVk
b1R5cGUoKSBjbwogICAgIGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0g
UHNldWRvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBhY3RpdmUoImFjdGl2ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYWZ0ZXIoImFmdGVy
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhbnlMaW5rKCItd2Via2l0LWFueS1saW5rIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhdXRvZmlsbCgiLXdlYmtpdC1hdXRvZmlsbCIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYmVmb3JlKCJiZWZvcmUiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIGNoZWNrZWQoImNoZWNrZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZp
bGVVcGxvYWRCdXR0b24oIi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBkaXNhYmxlZCgiZGlzYWJsZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHJlYWRPbmx5KCJyZWFkLW9ubHkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJlYWRX
cml0ZSgicmVhZC13cml0ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZHJhZygiLXdlYmtp
dC1kcmFnIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFnQWxpYXMoIi1raHRtbC1kcmFn
Iik7IC8vIHdhcyBkb2N1bWVudGVkIHdpdGggdGhpcyBuYW1lIGluIEFwcGxlIGRvY3VtZW50YXRp
b24sIHNvIGtlZXAgYW4gYWxpYXMKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVtcHR5KCJlbXB0
eSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW5hYmxlZCgiZW5hYmxlZCIpOwotICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgZmlyc3RDaGlsZCgiZmlyc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGZpcnN0TGV0dGVyKCJmaXJzdC1sZXR0ZXIiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIGZpcnN0TGluZSgiZmlyc3QtbGluZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgZmlyc3RPZlR5cGUoImZpcnN0LW9mLXR5cGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGZ1bGxQYWdlTWVkaWEoIi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBudGhDaGlsZCgibnRoLWNoaWxkKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgbnRoT2ZUeXBlKCJudGgtb2YtdHlwZSgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50
aExhc3RDaGlsZCgibnRoLWxhc3QtY2hpbGQoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBu
dGhMYXN0T2ZUeXBlKCJudGgtbGFzdC1vZi10eXBlKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgZm9jdXMoImZvY3VzIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBob3ZlcigiaG92ZXIi
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGluZGV0ZXJtaW5hdGUoImluZGV0ZXJtaW5hdGUi
KTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGlucHV0UGxhY2Vob2xkZXIoIi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxhc3RDaGlsZCgibGFz
dC1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdE9mVHlwZSgibGFzdC1vZi10
eXBlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsaW5rKCJsaW5rIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBsYW5nKCJsYW5nKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVk
aWFDb250cm9sc1BhbmVsKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzTXV0ZUJ1dHRvbigiLXdlYmtpdC1tZWRpYS1j
b250cm9scy1tdXRlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250
cm9sc1BsYXlCdXR0b24oIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1l
ZGlhQ29udHJvbHNUaW1lbGluZSgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1NlZWtCYWNrQnV0dG9uKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRp
YUNvbnRyb2xzRnVsbHNjcmVlbkJ1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm90U3RyKCJub3QoIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBvbmx5Q2hpbGQoIm9ubHktY2hpbGQiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIG9ubHlPZlR5cGUoIm9ubHktb2YtdHlwZSIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgcmVzaXplcigiLXdlYmtpdC1yZXNpemVyIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyByb290KCJyb290Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXIo
Ii13ZWJraXQtc2Nyb2xsYmFyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJC
dXR0b24oIi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgc2Nyb2xsYmFyQ29ybmVyKCItd2Via2l0LXNjcm9sbGJhci1jb3JuZXIiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhclRodW1iKCItd2Via2l0LXNjcm9sbGJhci10aHVtYiIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xsYmFyVHJhY2soIi13ZWJraXQtc2Nyb2xs
YmFyLXRyYWNrIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJUcmFja1BpZWNl
KCItd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgc2VhcmNoQ2FuY2VsQnV0dG9uKCItd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hEZWNvcmF0aW9uKCItd2Via2l0LXNlYXJjaC1k
ZWNvcmF0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hSZXN1bHRzRGVjb3Jh
dGlvbigiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBzZWFyY2hSZXN1bHRzQnV0dG9uKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1
dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VsZWN0aW9uKCJzZWxlY3Rpb24iKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNsaWRlclRodW1iKCItd2Via2l0LXNsaWRlci10aHVt
YiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGFyZ2V0KCJ0YXJnZXQiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIHZpc2l0ZWQoInZpc2l0ZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHdpbmRvd0luYWN0aXZlKCJ3aW5kb3ctaW5hY3RpdmUiKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGRlY3JlbWVudCgiZGVjcmVtZW50Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBp
bmNyZW1lbnQoImluY3JlbWVudCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc3RhcnQoInN0
YXJ0Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBlbmQoImVuZCIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgaG9yaXpvbnRhbCgiaG9yaXpvbnRhbCIpOwotICAgIHN0YXRpYyBBdG9taWNT
dHJpbmcgdmVydGljYWwoInZlcnRpY2FsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkb3Vi
bGVCdXR0b24oImRvdWJsZS1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNpbmds
ZUJ1dHRvbigic2luZ2xlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbm9CdXR0
b24oIm5vLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY29ybmVyUHJlc2VudCgi
Y29ybmVyLXByZXNlbnQiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBhY3RpdmVQdHIgPSBu
ZXcgQXRvbWljU3RyaW5nKCJhY3RpdmUiKTsKKyAgICBBdG9taWNTdHJpbmcmIGFjdGl2ZSA9ICph
Y3RpdmVQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogYWZ0ZXJQdHIgPSBuZXcgQXRvbWlj
U3RyaW5nKCJhZnRlciIpOworICAgIEF0b21pY1N0cmluZyYgYWZ0ZXIgPSAqYWZ0ZXJQdHI7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyogYW55TGlua1B0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13
ZWJraXQtYW55LWxpbmsiKTsKKyAgICBBdG9taWNTdHJpbmcmIGFueUxpbmsgPSAqYW55TGlua1B0
cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBhdXRvZmlsbFB0ciA9IG5ldyBBdG9taWNTdHJp
bmcoIi13ZWJraXQtYXV0b2ZpbGwiKTsKKyAgICBBdG9taWNTdHJpbmcmIGF1dG9maWxsID0gKmF1
dG9maWxsUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGJlZm9yZVB0ciA9IG5ldyBBdG9t
aWNTdHJpbmcoImJlZm9yZSIpOworICAgIEF0b21pY1N0cmluZyYgYmVmb3JlID0gKmJlZm9yZVB0
cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBjaGVja2VkUHRyID0gbmV3IEF0b21pY1N0cmlu
ZygiY2hlY2tlZCIpOworICAgIEF0b21pY1N0cmluZyYgY2hlY2tlZCA9ICpjaGVja2VkUHRyOwor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGZpbGVVcGxvYWRCdXR0b25QdHIgPSBuZXcgQXRvbWlj
U3RyaW5nKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpOworICAgIEF0b21pY1N0cmluZyYg
ZmlsZVVwbG9hZEJ1dHRvbiA9ICpmaWxlVXBsb2FkQnV0dG9uUHRyOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcqIGRpc2FibGVkUHRyID0gbmV3IEF0b21pY1N0cmluZygiZGlzYWJsZWQiKTsKKyAg
ICBBdG9taWNTdHJpbmcmIGRpc2FibGVkID0gKmRpc2FibGVkUHRyOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcqIHJlYWRPbmx5UHRyID0gbmV3IEF0b21pY1N0cmluZygicmVhZC1vbmx5Iik7Cisg
ICAgQXRvbWljU3RyaW5nJiByZWFkT25seSA9ICpyZWFkT25seVB0cjsKKyAgICBzdGF0aWMgQXRv
bWljU3RyaW5nKiByZWFkV3JpdGVQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJyZWFkLXdyaXRlIik7
CisgICAgQXRvbWljU3RyaW5nJiByZWFkV3JpdGUgPSAqcmVhZFdyaXRlUHRyOworICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcqIGRyYWdQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LWRyYWci
KTsKKyAgICBBdG9taWNTdHJpbmcmIGRyYWcgPSAqZHJhZ1B0cjsKKyAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nKiBkcmFnQWxpYXNQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCIta2h0bWwtZHJhZyIpOyAv
LyB3YXMgZG9jdW1lbnRlZCB3aXRoIHRoaXMgbmFtZSBpbiBBcHBsZSBkb2N1bWVudGF0aW9uLCBz
byBrZWVwIGFuIGFsaWFzCisgICAgQXRvbWljU3RyaW5nJiBkcmFnQWxpYXMgPSAqZHJhZ0FsaWFz
UHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGVtcHR5UHRyID0gbmV3IEF0b21pY1N0cmlu
ZygiZW1wdHkiKTsKKyAgICBBdG9taWNTdHJpbmcmIGVtcHR5ID0gKmVtcHR5UHRyOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcqIGVuYWJsZWRQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJlbmFibGVk
Iik7CisgICAgQXRvbWljU3RyaW5nJiBlbmFibGVkID0gKmVuYWJsZWRQdHI7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyogZmlyc3RDaGlsZFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImZpcnN0LWNo
aWxkIik7CisgICAgQXRvbWljU3RyaW5nJiBmaXJzdENoaWxkID0gKmZpcnN0Q2hpbGRQdHI7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyogZmlyc3RMZXR0ZXJQdHIgPSBuZXcgQXRvbWljU3RyaW5n
KCJmaXJzdC1sZXR0ZXIiKTsKKyAgICBBdG9taWNTdHJpbmcmIGZpcnN0TGV0dGVyID0gKmZpcnN0
TGV0dGVyUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGZpcnN0TGluZVB0ciA9IG5ldyBB
dG9taWNTdHJpbmcoImZpcnN0LWxpbmUiKTsKKyAgICBBdG9taWNTdHJpbmcmIGZpcnN0TGluZSA9
ICpmaXJzdExpbmVQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogZmlyc3RPZlR5cGVQdHIg
PSBuZXcgQXRvbWljU3RyaW5nKCJmaXJzdC1vZi10eXBlIik7CisgICAgQXRvbWljU3RyaW5nJiBm
aXJzdE9mVHlwZSA9ICpmaXJzdE9mVHlwZVB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBm
dWxsUGFnZU1lZGlhUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1mdWxsLXBhZ2UtbWVk
aWEiKTsKKyAgICBBdG9taWNTdHJpbmcmIGZ1bGxQYWdlTWVkaWEgPSAqZnVsbFBhZ2VNZWRpYVB0
cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBudGhDaGlsZFB0ciA9IG5ldyBBdG9taWNTdHJp
bmcoIm50aC1jaGlsZCgiKTsKKyAgICBBdG9taWNTdHJpbmcmIG50aENoaWxkID0gKm50aENoaWxk
UHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIG50aE9mVHlwZVB0ciA9IG5ldyBBdG9taWNT
dHJpbmcoIm50aC1vZi10eXBlKCIpOworICAgIEF0b21pY1N0cmluZyYgbnRoT2ZUeXBlID0gKm50
aE9mVHlwZVB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBudGhMYXN0Q2hpbGRQdHIgPSBu
ZXcgQXRvbWljU3RyaW5nKCJudGgtbGFzdC1jaGlsZCgiKTsKKyAgICBBdG9taWNTdHJpbmcmIG50
aExhc3RDaGlsZCA9ICpudGhMYXN0Q2hpbGRQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyog
bnRoTGFzdE9mVHlwZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIm50aC1sYXN0LW9mLXR5cGUoIik7
CisgICAgQXRvbWljU3RyaW5nJiBudGhMYXN0T2ZUeXBlID0gKm50aExhc3RPZlR5cGVQdHI7Cisg
ICAgc3RhdGljIEF0b21pY1N0cmluZyogZm9jdXNQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJmb2N1
cyIpOworICAgIEF0b21pY1N0cmluZyYgZm9jdXMgPSAqZm9jdXNQdHI7CisgICAgc3RhdGljIEF0
b21pY1N0cmluZyogaG92ZXJQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJob3ZlciIpOworICAgIEF0
b21pY1N0cmluZyYgaG92ZXIgPSAqaG92ZXJQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyog
aW5kZXRlcm1pbmF0ZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImluZGV0ZXJtaW5hdGUiKTsKKyAg
ICBBdG9taWNTdHJpbmcmIGluZGV0ZXJtaW5hdGUgPSAqaW5kZXRlcm1pbmF0ZVB0cjsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nKiBpbnB1dFBsYWNlaG9sZGVyUHRyID0gbmV3IEF0b21pY1N0cmlu
ZygiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOworICAgIEF0b21pY1N0cmluZyYgaW5wdXRQ
bGFjZWhvbGRlciA9ICppbnB1dFBsYWNlaG9sZGVyUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcqIGxhc3RDaGlsZFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImxhc3QtY2hpbGQiKTsKKyAgICBB
dG9taWNTdHJpbmcmIGxhc3RDaGlsZCA9ICpsYXN0Q2hpbGRQdHI7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyogbGFzdE9mVHlwZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImxhc3Qtb2YtdHlwZSIp
OworICAgIEF0b21pY1N0cmluZyYgbGFzdE9mVHlwZSA9ICpsYXN0T2ZUeXBlUHRyOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcqIGxpbmtQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJsaW5rIik7Cisg
ICAgQXRvbWljU3RyaW5nJiBsaW5rID0gKmxpbmtQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyogbGFuZ1B0ciA9IG5ldyBBdG9taWNTdHJpbmcoImxhbmcoIik7CisgICAgQXRvbWljU3RyaW5n
JiBsYW5nID0gKmxhbmdQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogbWVkaWFDb250cm9s
c1BhbmVsUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCIpOworICAgIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1BhbmVsID0gKm1lZGlhQ29udHJv
bHNQYW5lbFB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBtZWRpYUNvbnRyb2xzTXV0ZUJ1
dHRvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1i
dXR0b24iKTsKKyAgICBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNNdXRlQnV0dG9uID0gKm1l
ZGlhQ29udHJvbHNNdXRlQnV0dG9uUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIG1lZGlh
Q29udHJvbHNQbGF5QnV0dG9uUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1j
b250cm9scy1wbGF5LWJ1dHRvbiIpOworICAgIEF0b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1Bs
YXlCdXR0b24gPSAqbWVkaWFDb250cm9sc1BsYXlCdXR0b25QdHI7CisgICAgc3RhdGljIEF0b21p
Y1N0cmluZyogbWVkaWFDb250cm9sc1RpbWVEaXNwbGF5UHRyID0gbmV3IEF0b21pY1N0cmluZygi
LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXkiKTsKKyAgICBBdG9taWNTdHJpbmcm
IG1lZGlhQ29udHJvbHNUaW1lRGlzcGxheSA9ICptZWRpYUNvbnRyb2xzVGltZURpc3BsYXlQdHI7
CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogbWVkaWFDb250cm9sc1RpbWVsaW5lUHRyID0gbmV3
IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSIpOworICAgIEF0
b21pY1N0cmluZyYgbWVkaWFDb250cm9sc1RpbWVsaW5lID0gKm1lZGlhQ29udHJvbHNUaW1lbGlu
ZVB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBtZWRpYUNvbnRyb2xzU2Vla0JhY2tCdXR0
b25QdHIgPSBuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFj
ay1idXR0b24iKTsKKyAgICBBdG9taWNTdHJpbmcmIG1lZGlhQ29udHJvbHNTZWVrQmFja0J1dHRv
biA9ICptZWRpYUNvbnRyb2xzU2Vla0JhY2tCdXR0b25QdHI7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyogbWVkaWFDb250cm9sc1NlZWtGb3J3YXJkQnV0dG9uUHRyID0gbmV3IEF0b21pY1N0cmlu
ZygiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIik7CisgICAgQXRv
bWljU3RyaW5nJiBtZWRpYUNvbnRyb2xzU2Vla0ZvcndhcmRCdXR0b24gPSAqbWVkaWFDb250cm9s
c1NlZWtGb3J3YXJkQnV0dG9uUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIG1lZGlhQ29u
dHJvbHNGdWxsc2NyZWVuQnV0dG9uUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiIpOworICAgIEF0b21pY1N0cmluZyYgbWVkaWFD
b250cm9sc0Z1bGxzY3JlZW5CdXR0b24gPSAqbWVkaWFDb250cm9sc0Z1bGxzY3JlZW5CdXR0b25Q
dHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogbm90U3RyUHRyID0gbmV3IEF0b21pY1N0cmlu
Zygibm90KCIpOworICAgIEF0b21pY1N0cmluZyYgbm90U3RyID0gKm5vdFN0clB0cjsKKyAgICBz
dGF0aWMgQXRvbWljU3RyaW5nKiBvbmx5Q2hpbGRQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJvbmx5
LWNoaWxkIik7CisgICAgQXRvbWljU3RyaW5nJiBvbmx5Q2hpbGQgPSAqb25seUNoaWxkUHRyOwor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIG9ubHlPZlR5cGVQdHIgPSBuZXcgQXRvbWljU3RyaW5n
KCJvbmx5LW9mLXR5cGUiKTsKKyAgICBBdG9taWNTdHJpbmcmIG9ubHlPZlR5cGUgPSAqb25seU9m
VHlwZVB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiByZXNpemVyUHRyID0gbmV3IEF0b21p
Y1N0cmluZygiLXdlYmtpdC1yZXNpemVyIik7CisgICAgQXRvbWljU3RyaW5nJiByZXNpemVyID0g
KnJlc2l6ZXJQdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogcm9vdFB0ciA9IG5ldyBBdG9t
aWNTdHJpbmcoInJvb3QiKTsKKyAgICBBdG9taWNTdHJpbmcmIHJvb3QgPSAqcm9vdFB0cjsKKyAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nKiBzY3JvbGxiYXJQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCIt
d2Via2l0LXNjcm9sbGJhciIpOworICAgIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyID0gKnNjcm9s
bGJhclB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBzY3JvbGxiYXJCdXR0b25QdHIgPSBu
ZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNjcm9sbGJhci1idXR0b24iKTsKKyAgICBBdG9taWNT
dHJpbmcmIHNjcm9sbGJhckJ1dHRvbiA9ICpzY3JvbGxiYXJCdXR0b25QdHI7CisgICAgc3RhdGlj
IEF0b21pY1N0cmluZyogc2Nyb2xsYmFyQ29ybmVyUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdl
YmtpdC1zY3JvbGxiYXItY29ybmVyIik7CisgICAgQXRvbWljU3RyaW5nJiBzY3JvbGxiYXJDb3Ju
ZXIgPSAqc2Nyb2xsYmFyQ29ybmVyUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHNjcm9s
bGJhclRodW1iUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXItdGh1bWIi
KTsKKyAgICBBdG9taWNTdHJpbmcmIHNjcm9sbGJhclRodW1iID0gKnNjcm9sbGJhclRodW1iUHRy
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHNjcm9sbGJhclRyYWNrUHRyID0gbmV3IEF0b21p
Y1N0cmluZygiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2siKTsKKyAgICBBdG9taWNTdHJpbmcmIHNj
cm9sbGJhclRyYWNrID0gKnNjcm9sbGJhclRyYWNrUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcqIHNjcm9sbGJhclRyYWNrUGllY2VQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCItd2Via2l0LXNj
cm9sbGJhci10cmFjay1waWVjZSIpOworICAgIEF0b21pY1N0cmluZyYgc2Nyb2xsYmFyVHJhY2tQ
aWVjZSA9ICpzY3JvbGxiYXJUcmFja1BpZWNlUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcq
IHNlYXJjaENhbmNlbEJ1dHRvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNo
LWNhbmNlbC1idXR0b24iKTsKKyAgICBBdG9taWNTdHJpbmcmIHNlYXJjaENhbmNlbEJ1dHRvbiA9
ICpzZWFyY2hDYW5jZWxCdXR0b25QdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogc2VhcmNo
RGVjb3JhdGlvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLWRlY29yYXRp
b24iKTsKKyAgICBBdG9taWNTdHJpbmcmIHNlYXJjaERlY29yYXRpb24gPSAqc2VhcmNoRGVjb3Jh
dGlvblB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBzZWFyY2hSZXN1bHRzRGVjb3JhdGlv
blB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlv
biIpOworICAgIEF0b21pY1N0cmluZyYgc2VhcmNoUmVzdWx0c0RlY29yYXRpb24gPSAqc2VhcmNo
UmVzdWx0c0RlY29yYXRpb25QdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogc2VhcmNoUmVz
dWx0c0J1dHRvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMt
YnV0dG9uIik7CisgICAgQXRvbWljU3RyaW5nJiBzZWFyY2hSZXN1bHRzQnV0dG9uID0gKnNlYXJj
aFJlc3VsdHNCdXR0b25QdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogc2VsZWN0aW9uUHRy
ID0gbmV3IEF0b21pY1N0cmluZygic2VsZWN0aW9uIik7CisgICAgQXRvbWljU3RyaW5nJiBzZWxl
Y3Rpb24gPSAqc2VsZWN0aW9uUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHNsaWRlclRo
dW1iUHRyID0gbmV3IEF0b21pY1N0cmluZygiLXdlYmtpdC1zbGlkZXItdGh1bWIiKTsKKyAgICBB
dG9taWNTdHJpbmcmIHNsaWRlclRodW1iID0gKnNsaWRlclRodW1iUHRyOworICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcqIHRhcmdldFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoInRhcmdldCIpOworICAg
IEF0b21pY1N0cmluZyYgdGFyZ2V0ID0gKnRhcmdldFB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nKiB2aXNpdGVkUHRyID0gbmV3IEF0b21pY1N0cmluZygidmlzaXRlZCIpOworICAgIEF0b21p
Y1N0cmluZyYgdmlzaXRlZCA9ICp2aXNpdGVkUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcq
IHdpbmRvd0luYWN0aXZlUHRyID0gbmV3IEF0b21pY1N0cmluZygid2luZG93LWluYWN0aXZlIik7
CisgICAgQXRvbWljU3RyaW5nJiB3aW5kb3dJbmFjdGl2ZSA9ICp3aW5kb3dJbmFjdGl2ZVB0cjsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBkZWNyZW1lbnRQdHIgPSBuZXcgQXRvbWljU3RyaW5n
KCJkZWNyZW1lbnQiKTsKKyAgICBBdG9taWNTdHJpbmcmIGRlY3JlbWVudCA9ICpkZWNyZW1lbnRQ
dHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogaW5jcmVtZW50UHRyID0gbmV3IEF0b21pY1N0
cmluZygiaW5jcmVtZW50Iik7CisgICAgQXRvbWljU3RyaW5nJiBpbmNyZW1lbnQgPSAqaW5jcmVt
ZW50UHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHN0YXJ0UHRyID0gbmV3IEF0b21pY1N0
cmluZygic3RhcnQiKTsKKyAgICBBdG9taWNTdHJpbmcmIHN0YXJ0ID0gKnN0YXJ0UHRyOworICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcqIGVuZFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImVuZCIpOwor
ICAgIEF0b21pY1N0cmluZyYgZW5kID0gKmVuZFB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5n
KiBob3Jpem9udGFsUHRyID0gbmV3IEF0b21pY1N0cmluZygiaG9yaXpvbnRhbCIpOworICAgIEF0
b21pY1N0cmluZyYgaG9yaXpvbnRhbCA9ICpob3Jpem9udGFsUHRyOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcqIHZlcnRpY2FsUHRyID0gbmV3IEF0b21pY1N0cmluZygidmVydGljYWwiKTsKKyAg
ICBBdG9taWNTdHJpbmcmIHZlcnRpY2FsID0gKnZlcnRpY2FsUHRyOworICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcqIGRvdWJsZUJ1dHRvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImRvdWJsZS1idXR0
b24iKTsKKyAgICBBdG9taWNTdHJpbmcmIGRvdWJsZUJ1dHRvbiA9ICpkb3VibGVCdXR0b25QdHI7
CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogc2luZ2xlQnV0dG9uUHRyID0gbmV3IEF0b21pY1N0
cmluZygic2luZ2xlLWJ1dHRvbiIpOworICAgIEF0b21pY1N0cmluZyYgc2luZ2xlQnV0dG9uID0g
KnNpbmdsZUJ1dHRvblB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBub0J1dHRvblB0ciA9
IG5ldyBBdG9taWNTdHJpbmcoIm5vLWJ1dHRvbiIpOworICAgIEF0b21pY1N0cmluZyYgbm9CdXR0
b24gPSAqbm9CdXR0b25QdHI7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogY29ybmVyUHJlc2Vu
dFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImNvcm5lci1wcmVzZW50Iik7CisgICAgQXRvbWljU3Ry
aW5nJiBjb3JuZXJQcmVzZW50ID0gKmNvcm5lclByZXNlbnRQdHI7CiAKICAgICBib29sIGVsZW1l
bnQgPSBmYWxzZTsgLy8gcHNldWRvLWVsZW1lbnQKICAgICBib29sIGNvbXBhdCA9IGZhbHNlOyAv
LyBzaW5nbGUgY29sb24gY29tcGF0YmlsaXR5IG1vZGUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzIsMTMgKzM3MiwxNSBAQCBzdGF0aWMgYm9vbCBlbGVt
ZW50Q2FuVXNlU2ltcGxlRGVmYXVsdFN0CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJiBzY3JlZW5FdmFsKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzdGF0aWNTY3JlZW5FdmFsKCJzY3JlZW4iKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciogc3RhdGljU2NyZWVuRXZhbFB0ciA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9y
KCJzY3JlZW4iKTsKKyAgICBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBzdGF0aWNTY3JlZW5F
dmFsID0gKnN0YXRpY1NjcmVlbkV2YWxQdHI7CiAgICAgcmV0dXJuIHN0YXRpY1NjcmVlbkV2YWw7
CiB9CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBwcmludEV2YWwoKQogewot
ICAgIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHN0YXRpY1ByaW50RXZhbCgicHJp
bnQiKTsKKyAgICBzdGF0aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciogc3RhdGljUHJpbnRF
dmFsUHRyID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3IoInByaW50Iik7CisgICAgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYgc3RhdGljUHJpbnRFdmFsID0gKnN0YXRpY1ByaW50RXZhbFB0cjsK
ICAgICByZXR1cm4gc3RhdGljUHJpbnRFdmFsOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsOCBAQCBzdGF0aWMgdm9pZCBhZGRT
dHJpbmcoSGFzaFNldDxTdHJpbmcsIENhCiBzdGF0aWMgYm9vbCBpc1NWRzEwRmVhdHVyZShjb25z
dCBTdHJpbmcgJmZlYXR1cmUpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gc3ZnRmVhdHVy
ZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+KiBzdmdGZWF0
dXJlc1B0ciA9IG5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBIYXNo
U2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiYgc3ZnRmVhdHVyZXMgPSAqc3ZnRmVhdHVyZXNQ
dHI7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogI2lmIEVOQUJMRShTVkdfVVNFKSAmJiBFTkFC
TEUoU1ZHX0ZPUkVJR05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUikgJiYgRU5BQkxFKFNW
R19GT05UUykKICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC04OSw3
ICs5MCw4IEBAIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyAKIHN0YXRp
YyBib29sIGlzU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiBzdmdGZWF0dXJlczsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcs
IENhc2VGb2xkaW5nSGFzaD4qIHN2Z0ZlYXR1cmVzUHRyID0gbmV3IEhhc2hTZXQ8U3RyaW5nLCBD
YXNlRm9sZGluZ0hhc2g+OworICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBz
dmdGZWF0dXJlcyA9ICpzdmdGZWF0dXJlc1B0cjsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAg
ICAgICAgIC8vIFNhZGx5LCB3ZSBjYW5ub3QgY2xhaW0gdG8gaW1wbGVtZW50IGFueSBvZiB0aGUg
U1ZHIDEuMSBnZW5lcmljIGZlYXR1cmUgc2V0cwogICAgICAgICAvLyBsYWNrIG9mIEZvbnQgYW5k
IEZpbHRlciBzdXBwb3J0LgpAQCAtMjc0LDcgKzI3Niw4IEBAIGJvb2wgRE9NSW1wbGVtZW50YXRp
b246OmlzWE1MTUlNRVR5cGUoY28KICAgICBpZiAobWltZVR5cGUgPT0gInRleHQveG1sIiB8fCBt
aW1lVHlwZSA9PSAiYXBwbGljYXRpb24veG1sIiB8fCBtaW1lVHlwZSA9PSAidGV4dC94c2wiKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdmFsaWRDaGFycyA9
ICJbMC05YS16QS1aX1xcLSt+ISRcXF57fXwuJSdgIyYqXSI7IC8vIHBlciBSRkNzOiAzMDIzLCAy
MDQ1Ci0gICAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uIHhtbFR5cGVSZWdFeHAoU3RyaW5nKCJe
IikgKyB2YWxpZENoYXJzICsgIisvIiArIHZhbGlkQ2hhcnMgKyAiK1xcK3htbCQiKTsKKyAgICBz
dGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHhtbFR5cGVSZWdFeHBQdHIgPSBuZXcgUmVndWxhckV4
cHJlc3Npb24oU3RyaW5nKCJeIikgKyB2YWxpZENoYXJzICsgIisvIiArIHZhbGlkQ2hhcnMgKyAi
K1xcK3htbCQiKTsKKyAgICBSZWd1bGFyRXhwcmVzc2lvbiYgeG1sVHlwZVJlZ0V4cCA9ICp4bWxU
eXBlUmVnRXhwUHRyOwogICAgIHJldHVybiB4bWxUeXBlUmVnRXhwLm1hdGNoKG1pbWVUeXBlKSA+
IC0xOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDkgKzcxMywxMiBAQCBQYXNzUmVm
UHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzCiAKIGJvb2wgRG9jdW1lbnQ6Omhhc1By
ZWZpeE5hbWVzcGFjZU1pc21hdGNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogewotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNOYW1lc3BhY2VVUkkoImh0dHA6Ly93d3cu
dzMub3JnLzIwMDAveG1sbnMvIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWxu
cygieG1sbnMiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCgieG1sIik7Cisg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogeG1sbnNOYW1lc3BhY2VVUklQdHIgPSBuZXcg
QXRvbWljU3RyaW5nKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgeG1sbnNOYW1lc3BhY2VVUkkgPSAqeG1sbnNOYW1lc3BhY2VVUklQdHI7
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogeG1sbnNQdHIgPSBuZXcgQXRvbWljU3Ry
aW5nKCJ4bWxucyIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbnMgPSAqeG1sbnNQdHI7
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogeG1sUHRyID0gbmV3IEF0b21pY1N0cmlu
ZygieG1sIik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4bWwgPSAqeG1sUHRyOwogCiAgICAg
Ly8gVGhlc2UgY2hlY2tzIGFyZSBmcm9tIERPTSBDb3JlIExldmVsIDIsIGNyZWF0ZUVsZW1lbnRO
UwogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLUNvcmUvY29yZS5odG1s
I0lELURvY0NyRWxOUwpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mjc1KQor
KysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcg
KzkxLDggQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VBdHRyaWJ1dAogLy8gSGVs
cGVyIGZ1bmN0aW9uCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEphdmFTY3JpcHRMYW5ndWFnZShj
b25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2Fz
ZUZvbGRpbmdIYXNoPiBsYW5ndWFnZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNl
Rm9sZGluZ0hhc2g+KiBsYW5ndWFnZXNQdHIgPSBuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xk
aW5nSGFzaD47CisgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxhbmd1YWdl
cyA9ICpsYW5ndWFnZXNQdHI7CiAgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlwdCIpOwogICAgICAgICBsYW5ndWFnZXMuYWRkKCJq
YXZhc2NyaXB0Iik7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw4IEBAIGJvb2wgU3R5bGVDaGFuZ2U6OmN1cnJl
bnRseUhhc1N0eWxlKGNvbnMKIAogc3RhdGljIFN0cmluZyAmc3R5bGVTcGFuQ2xhc3NTdHJpbmco
KQogewotICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVTcGFuQ2xhc3NTdHJpbmcgPSBBcHBsZVN0eWxl
U3BhbkNsYXNzOworICAgIHN0YXRpYyBTdHJpbmcqIHN0eWxlU3BhbkNsYXNzU3RyaW5nUHRyID0g
bmV3IFN0cmluZyhBcHBsZVN0eWxlU3BhbkNsYXNzKTsKKyAgICBTdHJpbmcmIHN0eWxlU3BhbkNs
YXNzU3RyaW5nID0gKnN0eWxlU3BhbkNsYXNzU3RyaW5nUHRyOwogICAgIHJldHVybiBzdHlsZVNw
YW5DbGFzc1N0cmluZzsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5n
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJ
KHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIHsKIAogU3RyaW5nIGNv
bnZlcnRlZFNwYWNlU3RyaW5nKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRlZFNwYWNl
U3RyaW5nOworICAgIHN0YXRpYyBTdHJpbmcqIGNvbnZlcnRlZFNwYWNlU3RyaW5nUHRyID0gbmV3
IFN0cmluZzsKKyAgICBTdHJpbmcmIGNvbnZlcnRlZFNwYWNlU3RyaW5nID0gKmNvbnZlcnRlZFNw
YWNlU3RyaW5nUHRyOwogICAgIGlmIChjb252ZXJ0ZWRTcGFjZVN0cmluZy5pc051bGwoKSkgewog
ICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyA9ICI8c3BhbiBjbGFzcz1cIiI7CiAgICAgICAg
IGNvbnZlcnRlZFNwYWNlU3RyaW5nICs9IEFwcGxlQ29udmVydGVkU3BhY2U7CkluZGV4OiBXZWJD
b3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysg
V2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgU3Ry
aW5nIGluZGVudEJsb2NrcXVvdGVTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5n
ID0gIndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSI7CisgICAgc3RhdGljIFN0cmluZyogc3RyaW5n
UHRyID0gbmV3IFN0cmluZygid2Via2l0LWluZGVudC1ibG9ja3F1b3RlIik7CisgICAgU3RyaW5n
JiBzdHJpbmcgPSAqc3RyaW5nUHRyOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMzgy
NzUpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MCwxNCArOTAsMTYgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJ
bnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgc3RhdGljIFN0
cmluZyBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZyhBcHBsZUludGVyY2hhbmdlTmV3bGlu
ZSk7CisgICAgc3RhdGljIFN0cmluZyogaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmdQdHIg
PSBuZXcgU3RyaW5nKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKKyAgICBTdHJpbmcmIGludGVy
Y2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nID0gKmludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5n
UHRyOwogICAgIHJldHVybiBub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmIAogICAg
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50ICo+KG5vZGUpLT5nZXRBdHRyaWJ1dGUo
Y2xhc3NBdHRyKSA9PSBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZzsKIH0KIAogc3RhdGlj
IGJvb2wgaXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbihjb25zdCBOb2RlICpub2RlKQog
ewotICAgIHN0YXRpYyBTdHJpbmcgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcoQXBwbGVD
b252ZXJ0ZWRTcGFjZSk7CisgICAgc3RhdGljIFN0cmluZyogY29udmVydGVkU3BhY2VTcGFuQ2xh
c3NTdHJpbmdQdHIgPSBuZXcgU3RyaW5nKEFwcGxlQ29udmVydGVkU3BhY2UpOworICAgIFN0cmlu
ZyYgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcgPSAqY29udmVydGVkU3BhY2VTcGFuQ2xh
c3NTdHJpbmdQdHI7CiAgICAgcmV0dXJuIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiAKICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0
ZShjbGFzc0F0dHIpID09IGNvbnZlcnRlZFNwYWNlU3BhbkNsYXNzU3RyaW5nOwogfQpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw5ICszNjQsMTIgQEAgaW50
IG1heERlZXBPZmZzZXQoY29uc3QgTm9kZSAqbm9kZSkKIAogU3RyaW5nIHN0cmluZ1dpdGhSZWJh
bGFuY2VkV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdGFydElzU3RhcnRP
ZlBhcmFncmFwaCwgYm9vbCBlbmRJc0VuZE9mUGFyYWdyYXBoKQogewotICAgIHN0YXRpYyBTdHJp
bmcgdHdvU3BhY2VzKCIgICIpOwotICAgIHN0YXRpYyBTdHJpbmcgbmJzcCgiXHhhMCIpOwotICAg
IHN0YXRpYyBTdHJpbmcgcGF0dGVybigiIFx4YTAiKTsKKyAgICBzdGF0aWMgU3RyaW5nKiB0d29T
cGFjZXNQdHIgPSBuZXcgU3RyaW5nKCIgICIpOworICAgIFN0cmluZyYgdHdvU3BhY2VzID0gKnR3
b1NwYWNlc1B0cjsKKyAgICBzdGF0aWMgU3RyaW5nKiBuYnNwUHRyID0gbmV3IFN0cmluZygiXHhh
MCIpOworICAgIFN0cmluZyYgbmJzcCA9ICpuYnNwUHRyOworICAgIHN0YXRpYyBTdHJpbmcqIHBh
dHRlcm5QdHIgPSBuZXcgU3RyaW5nKCIgXHhhMCIpOworICAgIFN0cmluZyYgcGF0dGVybiA9ICpw
YXR0ZXJuUHRyOwogCiAgICAgU3RyaW5nIHJlYmFsYW5jZWRTdHJpbmcgPSBzdHJpbmc7CiAKQEAg
LTM5Myw3ICszOTYsOCBAQCBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUgKm5v
CiAKIGNvbnN0IFN0cmluZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpCiB7Ci0gICAgc3RhdGlj
IFN0cmluZyBub25CcmVha2luZ1NwYWNlU3RyaW5nID0gU3RyaW5nKCZub0JyZWFrU3BhY2UsIDEp
OworICAgIHN0YXRpYyBTdHJpbmcqIG5vbkJyZWFraW5nU3BhY2VTdHJpbmdQdHIgPSBuZXcgU3Ry
aW5nKCZub0JyZWFrU3BhY2UsIDEpOworICAgIFN0cmluZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZyA9ICpub25CcmVha2luZ1NwYWNlU3RyaW5nUHRyOwogICAgIHJldHVybiBub25CcmVha2luZ1Nw
YWNlU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTEgKzk0LDE2
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKFZlY3RvcjwKICAgICB1bnNpZ25l
ZCBsZW4gPSBhdHRyLmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIGxhc3RDb3BpZWRGcm9tID0gMDsK
IAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYW1wRW50aXR5KCImYW1wOyIpOwotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgZ3RFbnRpdHkoIiZndDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGx0RW50aXR5KCImbHQ7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBxdW90RW50aXR5KCIm
cXVvdDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIG5ic3BFbnRpdHkoIiZuYnNwOyIpOwor
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcqIGFtcEVudGl0eVB0ciA9IG5ldyBTdHJpbmcoIiZhbXA7
Iik7CisgICAgY29uc3QgU3RyaW5nJiBhbXBFbnRpdHkgPSAqYW1wRW50aXR5UHRyOworICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcqIGd0RW50aXR5UHRyID0gbmV3IFN0cmluZygiJmd0OyIpOworICAg
IGNvbnN0IFN0cmluZyYgZ3RFbnRpdHkgPSAqZ3RFbnRpdHlQdHI7CisgICAgc3RhdGljIGNvbnN0
IFN0cmluZyogbHRFbnRpdHlQdHIgPSBuZXcgU3RyaW5nKCImbHQ7Iik7CisgICAgY29uc3QgU3Ry
aW5nJiBsdEVudGl0eSA9ICpsdEVudGl0eVB0cjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nKiBx
dW90RW50aXR5UHRyID0gbmV3IFN0cmluZygiJnF1b3Q7Iik7CisgICAgY29uc3QgU3RyaW5nJiBx
dW90RW50aXR5ID0gKnF1b3RFbnRpdHlQdHI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyogbmJz
cEVudGl0eVB0ciA9IG5ldyBTdHJpbmcoIiZuYnNwOyIpOworICAgIGNvbnN0IFN0cmluZyYgbmJz
cEVudGl0eSA9ICpuYnNwRW50aXR5UHRyOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW47ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdWNoYXJzW2ldOwpAQCAtMTQyLDEw
ICsxNDcsMTQgQEAgc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBlZENvbnRlbnQoVmVjdG9yPAogICAg
IHVuc2lnbmVkIGxlbiA9IHJhbmdlLnNlY29uZDsKICAgICB1bnNpZ25lZCBsYXN0Q29waWVkRnJv
bSA9IDA7CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBhbXBFbnRpdHkoIiZhbXA7Iik7
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBndEVudGl0eSgiJmd0OyIpOwotICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgbHRFbnRpdHkoIiZsdDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIG5i
c3BFbnRpdHkoIiZuYnNwOyIpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcqIGFtcEVudGl0eVB0
ciA9IG5ldyBTdHJpbmcoIiZhbXA7Iik7CisgICAgY29uc3QgU3RyaW5nJiBhbXBFbnRpdHkgPSAq
YW1wRW50aXR5UHRyOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcqIGd0RW50aXR5UHRyID0gbmV3
IFN0cmluZygiJmd0OyIpOworICAgIGNvbnN0IFN0cmluZyYgZ3RFbnRpdHkgPSAqZ3RFbnRpdHlQ
dHI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyogbHRFbnRpdHlQdHIgPSBuZXcgU3RyaW5nKCIm
bHQ7Iik7CisgICAgY29uc3QgU3RyaW5nJiBsdEVudGl0eSA9ICpsdEVudGl0eVB0cjsKKyAgICBz
dGF0aWMgY29uc3QgU3RyaW5nKiBuYnNwRW50aXR5UHRyID0gbmV3IFN0cmluZygiJm5ic3A7Iik7
CisgICAgY29uc3QgU3RyaW5nJiBuYnNwRW50aXR5ID0gKm5ic3BFbnRpdHlQdHI7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVj
aGFyc1tpXTsKQEAgLTMxNiw4ICszMjUsMTAgQEAgc3RhdGljIGJvb2wgc2hvdWxkQWRkTmFtZXNw
YWNlRWxlbShjb25zdAogc3RhdGljIGJvb2wgc2hvdWxkQWRkTmFtZXNwYWNlQXR0cihjb25zdCBB
dHRyaWJ1dGUqIGF0dHIsIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEF0b21pY1N0cmluZ0lt
cGwqPiYgbmFtZXNwYWNlcykKIHsKICAgICAvLyBEb24ndCBhZGQgbmFtZXNwYWNlIGF0dHJpYnV0
ZXMgdHdpY2UKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zVVJJID0gImh0dHA6
Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIjsKLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSB4bWxuc0F0dHIobnVsbEF0b20sICJ4bWxucyIsIHhtbG5zVVJJKTsKKyAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nKiB4bWxuc1VSSVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImh0dHA6Ly93
d3cudzMub3JnLzIwMDAveG1sbnMvIik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxuc1VS
SSA9ICp4bWxuc1VSSVB0cjsKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogeG1sbnNB
dHRyUHRyID0gbmV3IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICJ4bWxucyIsIHhtbG5zVVJJKTsK
KyAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB4bWxuc0F0dHIgPSAqeG1sbnNBdHRyUHRyOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0geG1sbnNBdHRyKSB7CiAgICAgICAgIG5hbWVzcGFjZXMuc2V0
KGVtcHR5QXRvbS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzQyLDcgKzM1Myw4IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVzcGFjZShW
ZWN0b3I8VUNoYXIKICAgICBBdG9taWNTdHJpbmdJbXBsKiBmb3VuZE5TID0gbmFtZXNwYWNlcy5n
ZXQocHJlKTsKICAgICBpZiAoZm91bmROUyAhPSBucy5pbXBsKCkpIHsKICAgICAgICAgbmFtZXNw
YWNlcy5zZXQocHJlLCBucy5pbXBsKCkpOwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHht
bG5zKCJ4bWxucyIpOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nKiB4bWxuc1B0ciA9IG5l
dyBTdHJpbmcoInhtbG5zIik7CisgICAgICAgIGNvbnN0IFN0cmluZyYgeG1sbnMgPSAqeG1sbnNQ
dHI7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
eG1sbnMpOwogICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkpIHsKQEAgLTUwMSw3ICs1MTMs
OCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0b3I8VUNoCiAgICAgICAgICAg
ICAgICAgaWYgKGNvbnZlcnQpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKICAgICAgICAgICAg
ICAgICBpZiAoc3R5bGUtPmxlbmd0aCgpID4gMCkgewotICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIHN0eWxlUHJlZml4KCIgc3R5bGU9XCIiKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyogc3R5bGVQcmVmaXhQdHIgPSBuZXcgU3RyaW5nKCIg
c3R5bGU9XCIiKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzdHlsZVByZWZp
eCA9ICpzdHlsZVByZWZpeFB0cjsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
c3R5bGVQcmVmaXgpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShy
ZXN1bHQsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsKQEAgLTcwMiw3ICs3MTUsOCBAQCBTdHJpbmcgam9p
bk1hcmt1cHMoY29uc3QgVmVjdG9yPFN0cmluZz4gCiAvLyBGSVhNRTogQXQgbGVhc3QsIGFubm90
YXRpb24gYW5kIHN0eWxlIGluZm8gc2hvdWxkIHByb2JhYmx5IG5vdCBiZSBpbmNsdWRlZCBpbiBy
YW5nZS5tYXJrdXBTdHJpbmcoKQogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFu
Z2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0
ZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzKQogewotICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcgaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nID0gU3RyaW5nKCI8YnIgY2xhc3M9XCIiKSArIEFw
cGxlSW50ZXJjaGFuZ2VOZXdsaW5lICsgIlwiPiI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyog
aW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nUHRyID0gbmV3IFN0cmluZygiPGJyIGNsYXNzPVwiIiBB
cHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+Iik7CisgICAgY29uc3QgU3RyaW5nJiBpbnRlcmNo
YW5nZU5ld2xpbmVTdHJpbmcgPSAqaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nUHRyOwogCiAgICAg
aWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAtOTA1LDE0ICs5MTksMTYgQEAgU3Ry
aW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIGRpdlN0eWxlKCI8ZGl2IHN0eWxlPVwiIik7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcqIGRpdlN0eWxlUHRyID0gbmV3IFN0cmluZygiPGRpdiBzdHls
ZT1cIiIpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpdlN0eWxlID0gKmRp
dlN0eWxlUHRyOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmQob3BlblRhZywgZGl2U3R5bGUp
OwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvcGVuVGFnLCBzdHls
ZS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAgICAgICAgICAgICAgIG9wZW5U
YWcuYXBwZW5kKCdcIicpOwogICAgICAgICAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnPicp
OwogICAgICAgICAgICAgICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9w
ZW5UYWcpKTsKIAotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRpdkNs
b3NlVGFnKCI8L2Rpdj4iKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyogZGl2Q2xvc2VUYWdQdHIgPSBuZXcgU3RyaW5nKCI8L2Rpdj4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBkaXZDbG9zZVRhZyA9ICpkaXZDbG9zZVRhZ1B0cjsKICAgICAg
ICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQoZGl2Q2xvc2VUYWcpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC05MjksOCArOTQ1LDEwIEBAIFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAgfQogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxlU3Bhbk9wZW4gPSBTdHJpbmcoIjxzcGFuIGNs
YXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpOwotICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgc3R5bGVTcGFuQ2xvc2UoIjwvc3Bhbj4iKTsKKyAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nKiBzdHlsZVNwYW5PcGVuUHRyID0gbmV3IFN0cmluZygiPHNwYW4gY2xhc3M9XCIiIEFw
cGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIik7CisgICAgY29uc3QgU3RyaW5nJiBzdHls
ZVNwYW5PcGVuID0gKnN0eWxlU3Bhbk9wZW5QdHI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyog
c3R5bGVTcGFuQ2xvc2VQdHIgPSBuZXcgU3RyaW5nKCI8L3NwYW4+Iik7CisgICAgY29uc3QgU3Ry
aW5nJiBzdHlsZVNwYW5DbG9zZSA9ICpzdHlsZVNwYW5DbG9zZVB0cjsKICAgICAKICAgICAvLyBB
ZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBp
biB0aGUgbWFya3VwIGluaGVyaXQuCiAgICAgTm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFz
dENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTUgKzU3LDE4IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1lbnQ6OnQKIHsKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewogICAgICAgICBjYXNlIFNVQk1JVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyogc3VibWl0UHRyID0gbmV3IEF0b21pY1N0cmluZygic3VibWl0Iik7CisgICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1Ym1pdCA9ICpzdWJtaXRQdHI7CiAgICAgICAg
ICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQlVUVE9OOiB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGJ1dHRvbigiYnV0dG9uIik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBidXR0b25QdHIgPSBuZXcgQXRv
bWljU3RyaW5nKCJidXR0b24iKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYnV0
dG9uID0gKmJ1dHRvblB0cjsKICAgICAgICAgICAgIHJldHVybiBidXR0b247CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBSRVNFVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyByZXNldCgicmVzZXQiKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcqIHJlc2V0UHRyID0gbmV3IEF0b21pY1N0cmluZygicmVzZXQiKTsKKyAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcmVzZXQgPSAqcmVzZXRQdHI7CiAgICAgICAgICAgICByZXR1cm4g
cmVzZXQ7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM4Mjc1KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODA4LDcgKzgwOCw4IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmNoaWxkQWxsb3dlZChOb2RlICpu
ZXcKIC8vIFRoaXMgdW5mb3J0dW5hdGUgZnVuY3Rpb24gaXMgb25seSBuZWVkZWQgd2hlbiBjaGVj
a2luZyBhZ2FpbnN0IHRoZSBEVEQuICBPdGhlciBsYW5ndWFnZXMgKGxpa2UgU1ZHKSB3b24ndCBu
ZWVkIHRoaXMuCiBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+IHRhZ0xpc3Q7CisgICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiB0
YWdMaXN0UHRyID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OworICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+JiB0YWdMaXN0ID0gKnRhZ0xpc3RQdHI7CiAgICAgaWYgKHRhZ0xp
c3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNpemVfdCB0YWdDb3VudCA9IDA7CiAgICAgICAgIFdl
YkNvcmU6OlF1YWxpZmllZE5hbWUqKiB0YWdzID0gSFRNTE5hbWVzOjpnZXRIVE1MVGFncygmdGFn
Q291bnQpOwpAQCAtODIyLDcgKzgyMyw4IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmlzUmVjb2duaXpl
ZFRhZ05hbWUoY28KIC8vIG5lZWQgdG8gYmUgaW4gdGhlc2UgdHdvIGxpc3RzLgogSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4qIGlubGluZVRhZ0xpc3QoKQogewotICAgIHN0YXRpYyBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiB0YWdMaXN0OworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiogdGFnTGlzdFB0ciA9IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjsK
KyAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgdGFnTGlzdCA9ICp0YWdMaXN0UHRyOwog
ICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICB0YWdMaXN0LmFkZCh0dFRhZy5s
b2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB0YWdMaXN0LmFkZChpVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSk7CkBAIC04ODEsNyArODgzLDggQEAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4q
IGlubGluZVRhZ0xpcwogCiBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogYmxvY2tUYWdMaXN0
KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlzdDsKKyAg
ICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHRhZ0xpc3RQdHIgPSBuZXcgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj47CisgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4m
IHRhZ0xpc3QgPSAqdGFnTGlzdFB0cjsKICAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgdGFnTGlzdC5hZGQoYWRkcmVzc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICB0YWdMaXN0LmFkZChibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsOCBAQCBib29sIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWVsZHNldCgiZmllbGRzZXQiKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nKiBmaWVsZHNldFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImZp
ZWxkc2V0Iik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaWVsZHNldCA9ICpmaWVsZHNldFB0
cjsKICAgICByZXR1cm4gZmllbGRzZXQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNTMgKzM3Myw2NSBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxJbnB1dEVsZW1lbnQ6OnR5CiAgICAgLy8gbmVlZHMgdG8gYmUgbG93ZXJjYXNlIGFj
Y29yZGluZyB0byBET00gc3BlYwogICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0
dG9uKCJidXR0b24iKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIGJ1
dHRvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImJ1dHRvbiIpOworICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBidXR0b24gPSAqYnV0dG9uUHRyOwogICAgICAgICAgICAgcmV0dXJuIGJ1
dHRvbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENIRUNLQk9YOiB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGNoZWNrYm94KCJjaGVja2JveCIpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogY2hlY2tib3hQdHIgPSBuZXcgQXRvbWljU3Ry
aW5nKCJjaGVja2JveCIpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjaGVja2Jv
eCA9ICpjaGVja2JveFB0cjsKICAgICAgICAgICAgIHJldHVybiBjaGVja2JveDsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEZJTEU6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgZmlsZSgiZmlsZSIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyogZmlsZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImZpbGUiKTsKKyAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZmlsZSA9ICpmaWxlUHRyOwogICAgICAgICAgICAgcmV0dXJuIGZpbGU7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBISURERU46IHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcgaGlkZGVuKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcqIGhpZGRlblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImhpZGRlbiIp
OworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoaWRkZW4gPSAqaGlkZGVuUHRyOwog
ICAgICAgICAgICAgcmV0dXJuIGhpZGRlbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIElNQUdF
OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGltYWdlKCJpbWFnZSIp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogaW1hZ2VQdHIgPSBuZXcg
QXRvbWljU3RyaW5nKCJpbWFnZSIpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBp
bWFnZSA9ICppbWFnZVB0cjsKICAgICAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIElTSU5ERVg6CiAgICAgICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAg
ICAgICBjYXNlIFBBU1NXT1JEOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIHBhc3N3b3JkKCJwYXNzd29yZCIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyogcGFzc3dvcmRQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJwYXNzd29yZCIpOworICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwYXNzd29yZCA9ICpwYXNzd29yZFB0cjsKICAg
ICAgICAgICAgIHJldHVybiBwYXNzd29yZDsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJBRElP
OiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJhZGlvKCJyYWRpbyIp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogcmFkaW9QdHIgPSBuZXcg
QXRvbWljU3RyaW5nKCJyYWRpbyIpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBy
YWRpbyA9ICpyYWRpb1B0cjsKICAgICAgICAgICAgIHJldHVybiByYWRpbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFJBTkdFOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIHJhbmdlKCJyYW5nZSIpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyogcmFuZ2VQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJyYW5nZSIpOworICAgICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiByYW5nZSA9ICpyYW5nZVB0cjsKICAgICAgICAgICAgIHJldHVybiBy
YW5nZTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIHJlc2V0KCJyZXNldCIpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyogcmVzZXRQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJyZXNldCIp
OworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZXNldCA9ICpyZXNldFB0cjsKICAg
ICAgICAgICAgIHJldHVybiByZXNldDsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNFQVJDSDog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzZWFyY2goInNlYXJjaCIp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogc2VhcmNoUHRyID0gbmV3
IEF0b21pY1N0cmluZygic2VhcmNoIik7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHNlYXJjaCA9ICpzZWFyY2hQdHI7CiAgICAgICAgICAgICByZXR1cm4gc2VhcmNoOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIHN1Ym1pdCgic3VibWl0Iik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nKiBzdWJtaXRQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJzdWJtaXQiKTsKKyAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3VibWl0ID0gKnN1Ym1pdFB0cjsKICAgICAgICAg
ICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBURVhUOiB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHRleHQoInRleHQiKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIHRleHRQdHIgPSBuZXcgQXRvbWljU3RyaW5n
KCJ0ZXh0Iik7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRleHQgPSAqdGV4dFB0
cjsKICAgICAgICAgICAgIHJldHVybiB0ZXh0OwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDggQEAg
SFRNTEtleWdlbkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KERvYwogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nIGtleWdlbigia2V5Z2VuIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyoga2V5Z2VuUHRyID0gbmV3IEF0b21pY1N0cmluZygia2V5Z2VuIik7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBrZXlnZW4gPSAqa2V5Z2VuUHRyOwogICAgIHJldHVybiBrZXlnZW47
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgyNzUp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCw4IEBAIFJlbmRlck9iamVjdCogSFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZVIK
IAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MTGVnZW5kRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBsZWdlbmQoImxlZ2VuZCIpOworICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIGxlZ2VuZFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImxl
Z2VuZCIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGVnZW5kID0gKmxlZ2VuZFB0cjsKICAg
ICByZXR1cm4gbGVnZW5kOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksOCBAQCBib29sIEhUTUxPcHRHcm91cEVs
ZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdEdyb3Vw
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBv
cHRncm91cCgib3B0Z3JvdXAiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBvcHRn
cm91cFB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIm9wdGdyb3VwIik7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBvcHRncm91cCA9ICpvcHRncm91cFB0cjsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMzgyNzUpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw3ICs3Myw4IEBAIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY28KIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT3B0aW9uRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBvcHRpb24oIm9wdGlvbiIpOworICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcqIG9wdGlvblB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIm9wdGlv
biIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb3B0aW9uID0gKm9wdGlvblB0cjsKICAgICBy
ZXR1cm4gb3B0aW9uOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCShyZXZpc2lvbiAzODI3NSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMyLDcg
KzgzMiw4IEBAIGJvb2wgSFRNTFBhcnNlcjo6bWFwQ3JlYXRlRXJyb3JDaGVjayhUb2sKIFBhc3NS
ZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShUb2tlbiogdCkKIHsKICAgICAvLyBJbml0
IG91ciBlcnJvciBoYW5kbGluZyB0YWJsZS4KLSAgICBzdGF0aWMgRnVuY3Rpb25NYXAgZ0Z1bmN0
aW9uTWFwOworICAgIHN0YXRpYyBGdW5jdGlvbk1hcCogZ0Z1bmN0aW9uTWFwUHRyID0gbmV3IEZ1
bmN0aW9uTWFwOworICAgIEZ1bmN0aW9uTWFwJiBnRnVuY3Rpb25NYXAgPSAqZ0Z1bmN0aW9uTWFw
UHRyOwogICAgIGlmIChnRnVuY3Rpb25NYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdGdW5jdGlv
bk1hcC5zZXQoYVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRDcmVh
dGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChhZGRyZXNzVGFnLmxvY2Fs
TmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsKQEAg
LTk0Myw3ICs5NDQsOCBAQCB2b2lkIEhUTUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tlbiog
CiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNIZWFkZXJUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdO
YW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBoZWFkZXJUYWdz
OworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogaGVhZGVyVGFnc1B0ciA9
IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPjsKKyAgICBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiYgaGVhZGVyVGFncyA9ICpoZWFkZXJUYWdzUHRyOwogICAgIGlmIChoZWFkZXJUYWdz
LmlzRW1wdHkoKSkgewogICAgICAgICBoZWFkZXJUYWdzLmFkZChoMVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogICAgICAgICBoZWFkZXJUYWdzLmFkZChoMlRhZy5sb2NhbE5hbWUoKS5pbXBsKCkp
OwpAQCAtOTg2LDcgKzk4OCw4IEBAIGJvb2wgSFRNTFBhcnNlcjo6aXNJbmxpbmUoTm9kZSogbm9k
ZSkgY28KIAogYm9vbCBIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5bGVUYWcoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiByZXNpZHVhbFN0eWxlVGFnczsKKyAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4qIHJlc2lkdWFsU3R5bGVUYWdzUHRyID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
OworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiByZXNpZHVhbFN0eWxlVGFncyA9ICpy
ZXNpZHVhbFN0eWxlVGFnc1B0cjsKICAgICBpZiAocmVzaWR1YWxTdHlsZVRhZ3MuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHJlc2lkdWFsU3R5bGVUYWdzLmFkZChhVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiAgICAgICAgIHJlc2lkdWFsU3R5bGVUYWdzLmFkZChmb250VGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CkBAIC0xMDEzLDcgKzEwMTYsOCBAQCBib29sIEhUTUxQYXJzZXI6OmlzUmVzaWR1YWxT
dHlsZVRhZyhjb25zCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHls
ZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+IHVuYWZmZWN0ZWRUYWdzOworICAgIHN0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiogdW5hZmZlY3RlZFRhZ3NQdHIgPSBuZXcgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj47CisgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIHVuYWZmZWN0ZWRUYWdz
ID0gKnVuYWZmZWN0ZWRUYWdzUHRyOwogICAgIGlmICh1bmFmZmVjdGVkVGFncy5pc0VtcHR5KCkp
IHsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3MuYWRkKGJvZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgp
KTsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3MuYWRkKHRhYmxlVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mjc1KQor
KysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE0LDggKzExNCwxMCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZSggU3R5
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OnR5cGUoKSBjb25zdAog
ewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VsZWN0TXVsdGlwbGUoInNlbGVjdC1t
dWx0aXBsZSIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VsZWN0T25lKCJzZWxl
Y3Qtb25lIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogc2VsZWN0TXVsdGlwbGVQ
dHIgPSBuZXcgQXRvbWljU3RyaW5nKCJzZWxlY3QtbXVsdGlwbGUiKTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHNlbGVjdE11bHRpcGxlID0gKnNlbGVjdE11bHRpcGxlUHRyOworICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcqIHNlbGVjdE9uZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoInNl
bGVjdC1vbmUiKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdE9uZSA9ICpzZWxlY3RP
bmVQdHI7CiAgICAgcmV0dXJuIG1fbXVsdGlwbGUgPyBzZWxlY3RNdWx0aXBsZSA6IHNlbGVjdE9u
ZTsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24g
MzgyNzUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDggQEAgSFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRBcmVh
RWxlbWVudAogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnR5cGUo
KSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgdGV4dGFyZWEoInRleHRh
cmVhIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogdGV4dGFyZWFQdHIgPSBuZXcg
QXRvbWljU3RyaW5nKCJ0ZXh0YXJlYSIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dGFy
ZWEgPSAqdGV4dGFyZWFQdHI7CiAgICAgcmV0dXJuIHRleHRhcmVhOwogfQogCkluZGV4OiBXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzgyNzUpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYyLDIwICs4NjIsMjcgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGxhdGZvcm0oSlNDb250
ZXh0UmVmIAogewogI2lmIFBMQVRGT1JNKE1BQykKICNpZmRlZiBCVUlMRElOR19PTl9USUdFUgot
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAibWFjLXRpZ2VyIjsKKyAgICBzdGF0
aWMgY29uc3QgU3RyaW5nKiBwbGF0Zm9ybVB0ciA9IG5ldyBTdHJpbmcoIm1hYy10aWdlciIpOwor
ICAgIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqcGxhdGZvcm1QdHI7CiAjZWxzZQotICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcqIHBsYXRmb3JtUHRyID0gbmV3IFN0cmluZygibWFjLWxlb3BhcmQiKTsKKyAg
ICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKnBsYXRmb3JtUHRyOwogI2VuZGlmCiAjZWxpZiBQ
TEFURk9STShXSU5fT1MpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJ3aW5k
b3dzIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nKiBwbGF0Zm9ybVB0ciA9IG5ldyBTdHJpbmco
IndpbmRvd3MiKTsKKyAgICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKnBsYXRmb3JtUHRyOwog
I2VsaWYgUExBVEZPUk0oUVQpCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJx
dCI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyogcGxhdGZvcm1QdHIgPSBuZXcgU3RyaW5nKCJx
dCIpOworICAgIGNvbnN0IFN0cmluZyYgcGxhdGZvcm0gPSAqcGxhdGZvcm1QdHI7CiAjZWxpZiBQ
TEFURk9STShHVEspCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJndGsiOwor
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcqIHBsYXRmb3JtUHRyID0gbmV3IFN0cmluZygiZ3RrIik7
CisgICAgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybSA9ICpwbGF0Zm9ybVB0cjsKICNlbGlmIFBMQVRG
T1JNKFdYKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAid3giOworICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcqIHBsYXRmb3JtUHRyID0gbmV3IFN0cmluZygid3giKTsKKyAgICBj
b25zdCBTdHJpbmcmIHBsYXRmb3JtID0gKnBsYXRmb3JtUHRyOwogI2Vsc2UKLSAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIHBsYXRmb3JtID0gInVua25vd24iOworICAgIHN0YXRpYyBjb25zdCBTdHJp
bmcqIHBsYXRmb3JtUHRyID0gbmV3IFN0cmluZygidW5rbm93biIpOworICAgIGNvbnN0IFN0cmlu
ZyYgcGxhdGZvcm0gPSAqcGxhdGZvcm1QdHI7CiAjZW5kaWYKIAogICAgIEpTVmFsdWVSZWYgcGxh
dGZvcm1WYWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwganNTdHJpbmdSZWYocGxhdGZvcm0p
LmdldCgpKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBAIHR5cGVkZWYgSmF2
YVNjcmlwdERlYnVnU2VydmVyOjpMaXN0ZW5lclMKIAogSmF2YVNjcmlwdERlYnVnU2VydmVyJiBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCiB7Ci0gICAgc3RhdGljIEphdmFTY3JpcHRE
ZWJ1Z1NlcnZlciBzZXJ2ZXI7CisgICAgc3RhdGljIEphdmFTY3JpcHREZWJ1Z1NlcnZlciogc2Vy
dmVyUHRyID0gbmV3IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjsKKyAgICBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXImIHNlcnZlciA9ICpzZXJ2ZXJQdHI7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIApJbmRl
eDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkocmV2aXNpb24gMzgyNzUp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDggQEAgdHlwZWRlZiBIYXNoTWFwPFByb2ZpbGUqLCBKU09iamVjdCo+
IFBybwogCiBzdGF0aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKIHsgCi0gICAgc3RhdGlj
IFByb2ZpbGVNYXAgc3RhdGljUHJvZmlsZXM7CisgICAgc3RhdGljIFByb2ZpbGVNYXAqIHN0YXRp
Y1Byb2ZpbGVzUHRyID0gbmV3IFByb2ZpbGVNYXA7CisgICAgUHJvZmlsZU1hcCYgc3RhdGljUHJv
ZmlsZXMgPSAqc3RhdGljUHJvZmlsZXNQdHI7CiAgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVzOwog
fQogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAJ
KHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVO
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOCBAQCB0eXBlZGVmIEhhc2hNYXA8
UHJvZmlsZU5vZGUqLCBKU09iamVjdCo+CiAKIHN0YXRpYyBQcm9maWxlTm9kZU1hcCYgcHJvZmls
ZU5vZGVDYWNoZSgpCiB7IAotICAgIHN0YXRpYyBQcm9maWxlTm9kZU1hcCBzdGF0aWNQcm9maWxl
Tm9kZXM7CisgICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwKiBzdGF0aWNQcm9maWxlTm9kZXNQdHIg
PSBuZXcgUHJvZmlsZU5vZGVNYXA7CisgICAgUHJvZmlsZU5vZGVNYXAmIHN0YXRpY1Byb2ZpbGVO
b2RlcyA9ICpzdGF0aWNQcm9maWxlTm9kZXNQdHI7CiAgICAgcmV0dXJuIHN0YXRpY1Byb2ZpbGVO
b2RlczsKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzgyNzUpCisr
KyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzIs
NyArMTE3Miw4IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmFsbG93U3Vic3RpdHV0ZURhdGFBY2MKIAog
c3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+JiBsb2NhbFNjaGVtZXMoKQog
ewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBsb2NhbFNjaGVt
ZXM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+KiBsb2NhbFNj
aGVtZXNQdHIgPSBuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CisgICAgSGFz
aFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4mIGxvY2FsU2NoZW1lcyA9ICpsb2NhbFNjaGVt
ZXNQdHI7CiAKICAgICBpZiAobG9jYWxTY2hlbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBsb2Nh
bFNjaGVtZXMuYWRkKCJmaWxlIik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUzLDcgKzY1Myw4IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlQ29weU8KICAgICAKIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBjYWNoZVN0b3JhZ2Uo
KQogewotICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSBzdG9yYWdlOworICAgIHN0
YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSogc3RvcmFnZVB0ciA9IG5ldyBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9ICpz
dG9yYWdlUHRyOwogICAgIAogICAgIHJldHVybiBzdG9yYWdlOwogfQpJbmRleDogV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIAog
CiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZv
bGRpbmdIYXNoPiYgYXJjaGl2ZU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3Ry
aW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4gbWltZVR5cGVz
OworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBD
YXNlRm9sZGluZ0hhc2g+KiBtaW1lVHlwZXNQdHIgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+JiBtaW1lVHlwZXMg
PSAqbWltZVR5cGVzUHRyOwogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAg
ICAgCiAgICAgaWYgKGluaXRpYWxpemVkKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MCw3ICs4NTAsOCBAQCBTdHJpbmcgSWNvbkRh
dGFiYXNlOjpkYXRhYmFzZVBhdGgoKSBjb25zCiAKIFN0cmluZyBJY29uRGF0YWJhc2U6OmRlZmF1
bHREYXRhYmFzZUZpbGVuYW1lKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFz
ZUZpbGVuYW1lID0gIldlYnBhZ2VJY29ucy5kYiI7CisgICAgc3RhdGljIFN0cmluZyogZGVmYXVs
dERhdGFiYXNlRmlsZW5hbWVQdHIgPSBuZXcgU3RyaW5nKCJXZWJwYWdlSWNvbnMuZGIiKTsKKyAg
ICBTdHJpbmcmIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lID0gKmRlZmF1bHREYXRhYmFzZUZpbGVu
YW1lUHRyOwogICAgIHJldHVybiBkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZS5jb3B5KCk7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDggQEAgRXZl
bnRIYW5kbGVyOjp+RXZlbnRIYW5kbGVyKCkKICAgICAKIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5k
bGVyRHJhZ1N0YXRlJiBFdmVudEhhbmRsZXI6OmRyYWdTdGF0ZSgpCiB7Ci0gICAgc3RhdGljIEV2
ZW50SGFuZGxlckRyYWdTdGF0ZSBzdGF0ZTsKKyAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0
YXRlKiBzdGF0ZVB0ciA9IG5ldyBFdmVudEhhbmRsZXJEcmFnU3RhdGU7CisgICAgRXZlbnRIYW5k
bGVyRHJhZ1N0YXRlJiBzdGF0ZSA9ICpzdGF0ZVB0cjsKICAgICByZXR1cm4gc3RhdGU7CiB9CiAg
ICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw4IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVz
c2lvbiogY3JlYXRlUmVnRXhwRm8KICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxs
IGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAg
ICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0
YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0gUmVndWxhckV4cHJlc3Npb24oIlxc
dyIpOworICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogd29yZFJlZ0V4cFB0ciA9IG5ldyBS
ZWd1bGFyRXhwcmVzc2lvbigiXFx3Iik7CisgICAgUmVndWxhckV4cHJlc3Npb24mIHdvcmRSZWdF
eHAgPSAqd29yZFJlZ0V4cFB0cjsKICAgICBTdHJpbmcgcGF0dGVybigiKCIpOwogICAgIHVuc2ln
bmVkIGludCBudW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGludCBpOwpA
QCAtMTAxMSw3ICsxMDEyLDggQEAgdm9pZCBGcmFtZTo6cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUVs
ZW1lbgogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4mIGtlZXBBbGl2ZVNl
dCgpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8RnJhbWUqPiBzdGF0aWNLZWVwQWxpdmVTZXQ7Cisg
ICAgc3RhdGljIEhhc2hTZXQ8RnJhbWUqPiogc3RhdGljS2VlcEFsaXZlU2V0UHRyID0gbmV3IEhh
c2hTZXQ8RnJhbWUqPjsKKyAgICBIYXNoU2V0PEZyYW1lKj4mIHN0YXRpY0tlZXBBbGl2ZVNldCA9
ICpzdGF0aWNLZWVwQWxpdmVTZXRQdHI7CiAgICAgcmV0dXJuIHN0YXRpY0tlZXBBbGl2ZVNldDsK
IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsOCBAQCB2b2lkIFBhZ2U6OnNldEdy
b3VwTmFtZShjb25zdCBTdHJpbmcmIG5hCiAKIGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBOYW1l
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgU3RyaW5nIG51bGxTdHJpbmc7CisgICAgc3RhdGljIFN0
cmluZyogbnVsbFN0cmluZ1B0ciA9IG5ldyBTdHJpbmc7CisgICAgU3RyaW5nJiBudWxsU3RyaW5n
ID0gKm51bGxTdHJpbmdQdHI7CiAgICAgcmV0dXJuIG1fZ3JvdXAgPyBtX2dyb3VwLT5uYW1lKCkg
OiBudWxsU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9u
IDM4Mjc1KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsOCBAQCBzdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
dW5zCiAgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gZGVmYXVsdFBvcnRzOworICAg
IHN0YXRpYyBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+KiBkZWZhdWx0UG9ydHNQdHIgPSBuZXcg
SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPjsKKyAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+
JiBkZWZhdWx0UG9ydHMgPSAqZGVmYXVsdFBvcnRzUHRyOwogICAgIGlmIChkZWZhdWx0UG9ydHMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHAiLCA4MCk7CiAgICAg
ICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHBzIiwgNDQzKTsKQEAgLTI2MCw3ICsyNjEsOCBAQCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpCiAKIFN0cmluZyBTZWN1cml0
eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QgCiB7Ci0gICAgc3RhdGljIFN0cmlu
ZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7CisgICAg
c3RhdGljIFN0cmluZyogc2VwYXJhdG9yU3RyaW5nUHRyID0gbmV3IFN0cmluZygmU2VwYXJhdG9y
Q2hhcmFjdGVyLCAxKTsKKyAgICBTdHJpbmcmIHNlcGFyYXRvclN0cmluZyA9ICpzZXBhcmF0b3JT
dHJpbmdQdHI7CiAgICAgcmV0dXJuIG1fcHJvdG9jb2wgKyBzZXBhcmF0b3JTdHJpbmcgKyBtX2hv
c3QgKyBzZXBhcmF0b3JTdHJpbmcgKyBTdHJpbmc6Om51bWJlcihtX3BvcnQpOyAKIH0KIApJbmRl
eDogV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvbWFjL0ZyYW1lTWFjLm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvcGFnZS9tYWMv
RnJhbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDEwIEBAIFJlZ3VsYXJFeHBy
ZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnIKICAgICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1
c2UgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsb2NhbGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5n
LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKICAg
ICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExhYmVscyA9IG5pbDsKLSAgICBzdGF0aWMg
VmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4gcmVnRXhwczsKLSAgICBzdGF0aWMgUmVndWxhckV4
cHJlc3Npb24gd29yZFJlZ0V4cCA9IFJlZ3VsYXJFeHByZXNzaW9uKCJcXHciKTsKKyAgICBzdGF0
aWMgVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4qIHJlZ0V4cHNQdHIgPSBuZXcgVmVjdG9yPFJl
Z3VsYXJFeHByZXNzaW9uKj47CisgICAgVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4mIHJlZ0V4
cHMgPSAqcmVnRXhwc1B0cjsKKyAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHdvcmRSZWdF
eHBQdHIgPSBuZXcgUmVndWxhckV4cHJlc3Npb24oIlxcdyIpOworICAgIFJlZ3VsYXJFeHByZXNz
aW9uJiB3b3JkUmVnRXhwID0gKndvcmRSZWdFeHBQdHI7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lv
biogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZp
c2lvbiAzODI3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NjMsNyArMTU2Myw4IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0
cmluZyYKIAogY29uc3QgS1VSTCYgYmxhbmtVUkwoKQogewotICAgIHN0YXRpYyBLVVJMIHN0YXRp
Y0JsYW5rVVJMKCJhYm91dDpibGFuayIpOworICAgIHN0YXRpYyBLVVJMKiBzdGF0aWNCbGFua1VS
TFB0ciA9IG5ldyBLVVJMKCJhYm91dDpibGFuayIpOworICAgIEtVUkwmIHN0YXRpY0JsYW5rVVJM
ID0gKnN0YXRpY0JsYW5rVVJMUHRyOwogICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKIH0KIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkocmV2aXNpb24gMzgy
NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCwyMSArMTI0LDMwIEBAIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGUq
IGdGb250UGxhdGYKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGFsdGVybmF0ZUZhbWlseU5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIC8vIEFsaWFzIENvdXJp
ZXIgPC0+IENvdXJpZXIgTmV3Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBjb3VyaWVyKCJDb3Vy
aWVyIiksIGNvdXJpZXJOZXcoIkNvdXJpZXIgTmV3Iik7CisgICAgc3RhdGljIEF0b21pY1N0cmlu
ZyogY291cmllclB0ciA9IG5ldyBBdG9taWNTdHJpbmcoIkNvdXJpZXIiKTsKKyAgICBBdG9taWNT
dHJpbmcmIGNvdXJpZXIgPSAqY291cmllclB0cjsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBj
b3VyaWVyTmV3UHRyID0gbmV3IEF0b21pY1N0cmluZygiQ291cmllciBOZXciKTsKKyAgICBBdG9t
aWNTdHJpbmcmIGNvdXJpZXJOZXcgPSAqY291cmllck5ld1B0cjsKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5TmFtZSwgY291cmllcikpCiAgICAgICAgIHJldHVybiBjb3VyaWVyTmV3
OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBjb3VyaWVyTmV3KSkKICAg
ICAgICAgcmV0dXJuIGNvdXJpZXI7CiAKICAgICAvLyBBbGlhcyBUaW1lcyBhbmQgVGltZXMgTmV3
IFJvbWFuLgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXMoIlRpbWVzIiksIHRpbWVzTmV3
Um9tYW4oIlRpbWVzIE5ldyBSb21hbiIpOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHRpbWVz
UHRyID0gbmV3IEF0b21pY1N0cmluZygiVGltZXMiKTsKKyAgICBBdG9taWNTdHJpbmcmIHRpbWVz
ID0gKnRpbWVzUHRyOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHRpbWVzTmV3Um9tYW5QdHIg
PSBuZXcgQXRvbWljU3RyaW5nKCJUaW1lcyBOZXcgUm9tYW4iKTsKKyAgICBBdG9taWNTdHJpbmcm
IHRpbWVzTmV3Um9tYW4gPSAqdGltZXNOZXdSb21hblB0cjsKICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZmFtaWx5TmFtZSwgdGltZXMpKQogICAgICAgICByZXR1cm4gdGltZXNOZXdSb21hbjsK
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgdGltZXNOZXdSb21hbikpCiAg
ICAgICAgIHJldHVybiB0aW1lczsKICAgICAKICAgICAvLyBBbGlhcyBBcmlhbCBhbmQgSGVsdmV0
aWNhCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhcmlhbCgiQXJpYWwiKSwgaGVsdmV0aWNhKCJI
ZWx2ZXRpY2EiKTsKKyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBhcmlhbFB0ciA9IG5ldyBBdG9t
aWNTdHJpbmcoIkFyaWFsIik7CisgICAgQXRvbWljU3RyaW5nJiBhcmlhbCA9ICphcmlhbFB0cjsK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nKiBoZWx2ZXRpY2FQdHIgPSBuZXcgQXRvbWljU3RyaW5n
KCJIZWx2ZXRpY2EiKTsKKyAgICBBdG9taWNTdHJpbmcmIGhlbHZldGljYSA9ICpoZWx2ZXRpY2FQ
dHI7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGFyaWFsKSkKICAgICAg
ICAgcmV0dXJuIGhlbHZldGljYTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFt
ZSwgaGVsdmV0aWNhKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
YWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDgg
QEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgogICAgIHdoaWxlIChj
dXJyRmFtaWx5ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZh
bWlseSgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgU3RyaW5nIG1hdGNoV29yZHNb
M10gPSB7IFN0cmluZygiQXJhYmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0cmluZygiVXJkdSIp
IH07Ci0gICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGdlZXphU3RyKCJHZWV6YSBQcm8i
KTsKKyAgICAgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGdlZXphU3RyUHRyID0gbmV3IEF0
b21pY1N0cmluZygiR2VlemEgUHJvIik7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcmIGdlZXph
U3RyID0gKmdlZXphU3RyUHRyOwogICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAzICYm
ICFwbGF0Zm9ybURhdGE7ICsraikKICAgICAgICAgICAgICAgICBpZiAoY3VyckZhbWlseS0+ZmFt
aWx5KCkuY29udGFpbnMobWF0Y2hXb3Jkc1tqXSwgZmFsc2UpKQogICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2Ny
aXB0aW9uKCksIGdlZXphU3RyKTsKQEAgLTE1Myw4ICsxNTQsMTAgQEAgRm9udFBsYXRmb3JtRGF0
YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgogCiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24pCiB7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMiKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGx1Y2lkYUdyYW5kZVN0cigiTHVjaWRhIEdyYW5kZSIp
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIHRpbWVzU3RyUHRyID0gbmV3IEF0b21pY1N0cmlu
ZygiVGltZXMiKTsKKyAgICBBdG9taWNTdHJpbmcmIHRpbWVzU3RyID0gKnRpbWVzU3RyUHRyOwor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGx1Y2lkYUdyYW5kZVN0clB0ciA9IG5ldyBBdG9taWNT
dHJpbmcoIkx1Y2lkYSBHcmFuZGUiKTsKKyAgICBBdG9taWNTdHJpbmcmIGx1Y2lkYUdyYW5kZVN0
ciA9ICpsdWNpZGFHcmFuZGVTdHJQdHI7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBi
ZXR0ZXIgdG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4gIEZvciBu
b3cgd2UnbGwgcGljawogICAgIC8vIHRoZSBkZWZhdWx0IHRoYXQgdGhlIHVzZXIgd291bGQgZ2V0
IHdpdGhvdXQgY2hhbmdpbmcgYW55IHByZWZzLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q3Vyc29yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0N1cnNvck1h
Yy5tbQkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJzb3JNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIE5TQ3Vyc29yKiBjcmVh
dGVDdXN0b21DdXJzb3IoSW1hZwogCiAvLyBMZWFrIHRoZXNlIGN1cnNvcnMgaW50ZW50aW9uYWxs
eSwgdGhhdCB3YXkgd2Ugd29uJ3Qgd2FzdGUgdGltZSB0cnlpbmcgdG8gY2xlYW4gdGhlbQogLy8g
dXAgYXQgcHJvY2VzcyBleGl0IHRpbWUuCi1zdGF0aWMgQ3Vyc29yJiBsZWFrTmFtZWRDdXJzb3Io
Y29uc3QgY2hhciogbmFtZSwgaW50IHgsIGludCB5KQorc3RhdGljIEN1cnNvciogbGVha05hbWVk
Q3Vyc29yKGNvbnN0IGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAgICAgTlNTdHJpbmcqIHJlc291cmNlTmFtZSA9IFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpuYW1lXTsKQEAgLTcwLDkgKzcwLDkgQEAgc3Rh
dGljIEN1cnNvciYgbGVha05hbWVkQ3Vyc29yKGNvbnN0IGNoYQogICAgICAgICBjdXJzb3IgPSBb
W05TQ3Vyc29yIGFsbG9jXSBpbml0V2l0aEltYWdlOmN1cnNvckltYWdlIGhvdFNwb3Q6aG90U3Bv
dFBvaW50XTsKICAgICAgICAgW2N1cnNvckltYWdlIHJlbGVhc2VdOwogICAgIH0KLSAgICByZXR1
cm4gKm5ldyBDdXJzb3IoY3Vyc29yKTsKKyAgICByZXR1cm4gbmV3IEN1cnNvcihjdXJzb3IpOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuICpuZXcgQ3Vyc29yOwor
ICAgIHJldHVybiBuZXcgQ3Vyc29yOwogfQogCiBDdXJzb3I6OkN1cnNvcihJbWFnZSogaW1hZ2Us
IGNvbnN0IEludFBvaW50JiBob3RzcG90KQpAQCAtMTA1LDE5MyArMTA1LDIyNSBAQCBDdXJzb3I6
OkN1cnNvcihOU0N1cnNvciogYykKIAogY29uc3QgQ3Vyc29yJiBwb2ludGVyQ3Vyc29yKCkKIHsK
LSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29yIGFycm93Q3Vyc29y
XSk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IG5ldyBDdXJzb3IoW05TQ3Vyc29yIGFycm93
Q3Vyc29yXSk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgY3Jvc3NDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFr
TmFtZWRDdXJzb3IoImNyb3NzSGFpckN1cnNvciIsIDExLCAxMSk7CisgICAgc3RhdGljIEN1cnNv
ciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigiY3Jvc3NIYWlyQ3Vyc29yIiwgMTEsIDExKTsKKyAg
ICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBo
YW5kQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJs
aW5rQ3Vyc29yIiwgNiwgMSk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1
cnNvcigibGlua0N1cnNvciIsIDYsIDEpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJl
dHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG1vdmVDdXJzb3IoKQogewotICAgIHN0YXRpYyBD
dXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm1vdmVDdXJzb3IiLCA3LCA3KTsKKyAgICBzdGF0
aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJtb3ZlQ3Vyc29yIiwgNywgNyk7Cisg
ICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
dmVydGljYWxUZXh0Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVk
Q3Vyc29yKCJ2ZXJ0aWNhbFRleHRDdXJzb3IiLCA3LCA3KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBj
UHRyID0gbGVha05hbWVkQ3Vyc29yKCJ2ZXJ0aWNhbFRleHRDdXJzb3IiLCA3LCA3KTsKKyAgICBD
dXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjZWxs
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjZWxs
Q3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1cnNv
cigiY2VsbEN1cnNvciIsIDcsIDcpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29yKCkKIHsKLSAgICBzdGF0
aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjb250ZXh0TWVudUN1cnNvciIsIDMsIDIp
OworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImNvbnRleHRNZW51
Q3Vyc29yIiwgMywgMik7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgYWxpYXNDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMg
PSBsZWFrTmFtZWRDdXJzb3IoImFsaWFzQ3Vyc29yIiwgMTEsIDMpOworICAgIHN0YXRpYyBDdXJz
b3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImFsaWFzQ3Vyc29yIiwgMTEsIDMpOworICAgIEN1
cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21J
bkN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiem9v
bUluQ3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1
cnNvcigiem9vbUluQ3Vyc29yIiwgNywgNyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNvcigpCiB7Ci0gICAgc3Rh
dGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiem9vbU91dEN1cnNvciIsIDcsIDcpOwor
ICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21PdXRDdXJzb3Ii
LCA3LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBjb3B5Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05h
bWVkQ3Vyc29yKCJjb3B5Q3Vyc29yIiwgMywgMik7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9
IGxlYWtOYW1lZEN1cnNvcigiY29weUN1cnNvciIsIDMsIDIpOworICAgIEN1cnNvciYgYyA9ICpj
UHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vbmVDdXJzb3IoKQogewot
ICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vbmVDdXJzb3IiLCA3LCA3
KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub25lQ3Vyc29y
IiwgNywgNyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgcHJvZ3Jlc3NDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBs
ZWFrTmFtZWRDdXJzb3IoInByb2dyZXNzQ3Vyc29yIiwgMywgMik7CisgICAgc3RhdGljIEN1cnNv
ciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigicHJvZ3Jlc3NDdXJzb3IiLCAzLCAyKTsKKyAgICBD
dXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub0Ry
b3BDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5v
RHJvcEN1cnNvciIsIDMsIDEpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRD
dXJzb3IoIm5vRHJvcEN1cnNvciIsIDMsIDEpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vdEFsbG93ZWRDdXJzb3IoKQogewotICAg
IHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vdEFsbG93ZWRDdXJzb3IiLCAx
MSwgMTEpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoIm5vdEFs
bG93ZWRDdXJzb3IiLCAxMSwgMTEpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIGlCZWFtQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29yIElCZWFtQ3Vyc29yXSk7CisgICAgc3RhdGlj
IEN1cnNvciogY1B0ciA9IG5ldyBDdXJzb3IoW05TQ3Vyc29yIElCZWFtQ3Vyc29yXSk7CisgICAg
Q3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2Fp
dEN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigid2Fp
dEN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJz
b3IoIndhaXRDdXJzb3IiLCA3LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1
cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBoZWxwQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJoZWxwQ3Vyc29yIiwgOCwgOCk7CisgICAgc3RhdGlj
IEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigiaGVscEN1cnNvciIsIDgsIDgpOworICAg
IEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGVh
c3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJz
b3IoImVhc3RSZXNpemVDdXJzb3IiLCAxNCwgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9
IGxlYWtOYW1lZEN1cnNvcigiZWFzdFJlc2l6ZUN1cnNvciIsIDE0LCA3KTsKKyAgICBDdXJzb3Im
IGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6
ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9y
dGhSZXNpemVDdXJzb3IiLCA3LCAxKTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05h
bWVkQ3Vyc29yKCJub3J0aFJlc2l6ZUN1cnNvciIsIDcsIDEpOworICAgIEN1cnNvciYgYyA9ICpj
UHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFJlc2l6ZUN1
cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhF
YXN0UmVzaXplQ3Vyc29yIiwgMTQsIDEpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFr
TmFtZWRDdXJzb3IoIm5vcnRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAxKTsKKyAgICBDdXJzb3Im
IGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RS
ZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
Im5vcnRoV2VzdFJlc2l6ZUN1cnNvciIsIDAsIDApOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIg
PSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoV2VzdFJlc2l6ZUN1cnNvciIsIDAsIDApOworICAgIEN1
cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRo
UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29y
KCJzb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDE0KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0g
bGVha05hbWVkQ3Vyc29yKCJzb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDE0KTsKKyAgICBDdXJzb3Im
IGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBzb3V0aEVhc3RS
ZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
InNvdXRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAxNCk7CisgICAgc3RhdGljIEN1cnNvciogY1B0
ciA9IGxlYWtOYW1lZEN1cnNvcigic291dGhFYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDE0KTsKKyAg
ICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBz
b3V0aFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFt
ZWRDdXJzb3IoInNvdXRoV2VzdFJlc2l6ZUN1cnNvciIsIDEsIDE0KTsKKyAgICBzdGF0aWMgQ3Vy
c29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJzb3V0aFdlc3RSZXNpemVDdXJzb3IiLCAxLCAx
NCk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgd2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtO
YW1lZEN1cnNvcigid2VzdFJlc2l6ZUN1cnNvciIsIDEsIDcpOworICAgIHN0YXRpYyBDdXJzb3Iq
IGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoIndlc3RSZXNpemVDdXJzb3IiLCAxLCA3KTsKKyAgICBD
dXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0
aFNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVk
Q3Vyc29yKCJub3J0aFNvdXRoUmVzaXplQ3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNv
ciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcp
OworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIGVhc3RXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVh
a05hbWVkQ3Vyc29yKCJlYXN0V2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBD
dXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImVhc3RXZXN0UmVzaXplQ3Vyc29yIiwgNywg
Nyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3Ii
LCA3LCA3KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub3J0
aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0
cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFdlc3RTb3V0aEVhc3RS
ZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
Im5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJz
b3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNv
ciIsIDcsIDcpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIGNvbHVtblJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYg
YyA9ICpuZXcgQ3Vyc29yKFtOU0N1cnNvciByZXNpemVMZWZ0UmlnaHRDdXJzb3JdKTsKKyAgICBz
dGF0aWMgQ3Vyc29yKiBjUHRyID0gbmV3IEN1cnNvcihbTlNDdXJzb3IgcmVzaXplTGVmdFJpZ2h0
Q3Vyc29yXSk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgcm93UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0g
Km5ldyBDdXJzb3IoW05TQ3Vyc29yIHJlc2l6ZVVwRG93bkN1cnNvcl0pOworICAgIHN0YXRpYyBD
dXJzb3IqIGNQdHIgPSBuZXcgQ3Vyc29yKFtOU0N1cnNvciByZXNpemVVcERvd25DdXJzb3JdKTsK
KyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIApAQCAtMzQyLDEzICsz
NzQsMTUgQEAgY29uc3QgQ3Vyc29yJiB3ZXN0UGFubmluZ0N1cnNvcigpCiAKIGNvbnN0IEN1cnNv
ciYgZ3JhYkN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vyc29yKFtO
U0N1cnNvciBvcGVuSGFuZEN1cnNvcl0pOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBuZXcg
Q3Vyc29yKFtOU0N1cnNvciBvcGVuSGFuZEN1cnNvcl0pOworICAgIEN1cnNvciYgYyA9ICpjUHRy
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGdyYWJiaW5nQ3Vyc29yKCkKIHsK
LSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29yIGNsb3NlZEhhbmRD
dXJzb3JdKTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbmV3IEN1cnNvcihbTlNDdXJzb3Ig
Y2xvc2VkSGFuZEN1cnNvcl0pOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBj
OwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQko
cmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewotICAg
IHN0YXRpYyBTY3JvbGxiYXJUaGVtZU1hYyB0aGVtZTsKKyAgICBzdGF0aWMgU2Nyb2xsYmFyVGhl
bWVNYWMqIHRoZW1lUHRyID0gbmV3IFNjcm9sbGJhclRoZW1lTWFjOworICAgIFNjcm9sbGJhclRo
ZW1lTWFjJiB0aGVtZSA9ICp0aGVtZVB0cjsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOCBAQCBl
bnVtIHsKIAogVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQogewotICAgIHN0YXRpYyBUaGVtZU1hYyB0
aGVtZU1hYzsKKyAgICBzdGF0aWMgVGhlbWVNYWMqIHRoZW1lTWFjUHRyID0gbmV3IFRoZW1lTWFj
OworICAgIFRoZW1lTWFjJiB0aGVtZU1hYyA9ICp0aGVtZU1hY1B0cjsKICAgICByZXR1cm4gJnRo
ZW1lTWFjOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQkocmV2aXNp
b24gMzgyNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaHJlYWRDaGVjay5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzksNyArNzksOCBAQCB2b2lkIHJlcG9ydFRocmVhZFZpb2xhdGlvbihjb25z
dCBjaGFyKiBmCiB2b2lkIFdlYkNvcmVSZXBvcnRUaHJlYWRWaW9sYXRpb24oY29uc3QgY2hhciog
ZnVuY3Rpb24pCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0gICAgc3RhdGljIEhh
c2hTZXQ8U3RyaW5nPiBsb2dnZWRGdW5jdGlvbnM7CisgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5n
PiogbG9nZ2VkRnVuY3Rpb25zUHRyID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKKyAgICBIYXNoU2V0
PFN0cmluZz4mIGxvZ2dlZEZ1bmN0aW9ucyA9ICpsb2dnZWRGdW5jdGlvbnNQdHI7CiAgICAgc3dp
dGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcikgewogICAgICAgICBjYXNlIE5vVGhyZWFkQ2hl
Y2s6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0d29ya1N0YXRl
Tm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV0d29ya1N0
YXRlTm90aWZpZXIgbmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgc3RhdGljIE5ldHdvcmtTdGF0
ZU5vdGlmaWVyKiBuZXR3b3JrU3RhdGVOb3RpZmllclB0ciA9IG5ldyBOZXR3b3JrU3RhdGVOb3Rp
ZmllcjsKKyAgICBOZXR3b3JrU3RhdGVOb3RpZmllciYgbmV0d29ya1N0YXRlTm90aWZpZXIgPSAq
bmV0d29ya1N0YXRlTm90aWZpZXJQdHI7CiAgICAgCiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5v
dGlmaWVyOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zv
cm1EYXRhU3RyZWFtTWFjLm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE0
ICs0OSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3Ry
ZWFtUmVmLCBSZWZQdHI8Rm9ybURhdGE+ID4gU3RyZWFtRm9ybURhdGFNYXA7CiBzdGF0aWMgU3Ry
ZWFtRm9ybURhdGFNYXAmIGdldFN0cmVhbUZvcm1EYXRhTWFwKCkKIHsKLSAgICBzdGF0aWMgU3Ry
ZWFtRm9ybURhdGFNYXAgc3RyZWFtRm9ybURhdGFNYXA7CisgICAgc3RhdGljIFN0cmVhbUZvcm1E
YXRhTWFwKiBzdHJlYW1Gb3JtRGF0YU1hcFB0ciA9IG5ldyBTdHJlYW1Gb3JtRGF0YU1hcDsKKyAg
ICBTdHJlYW1Gb3JtRGF0YU1hcCYgc3RyZWFtRm9ybURhdGFNYXAgPSAqc3RyZWFtRm9ybURhdGFN
YXBQdHI7CiAgICAgcmV0dXJuIHN0cmVhbUZvcm1EYXRhTWFwOwogfQogCiB0eXBlZGVmIEhhc2hN
YXA8Q0ZSZWFkU3RyZWFtUmVmLCBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+ID4gU3RyZWFtUmVzb3Vy
Y2VIYW5kbGVNYXA7CiBzdGF0aWMgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAmIGdldFN0cmVhbVJl
c291cmNlSGFuZGxlTWFwKCkKIHsKLSAgICBzdGF0aWMgU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAg
c3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CisgICAgc3RhdGljIFN0cmVhbVJlc291cmNlSGFuZGxl
TWFwKiBzdHJlYW1SZXNvdXJjZUhhbmRsZU1hcFB0ciA9IG5ldyBTdHJlYW1SZXNvdXJjZUhhbmRs
ZU1hcDsKKyAgICBTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCYgc3RyZWFtUmVzb3VyY2VIYW5kbGVN
YXAgPSAqc3RyZWFtUmVzb3VyY2VIYW5kbGVNYXBQdHI7CiAgICAgcmV0dXJuIHN0cmVhbVJlc291
cmNlSGFuZGxlTWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksOCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6
eUluaXQoCiAgICAgICAgIC8vIGlzIHJldHVybmluZyBpbmNvcnJlY3QgTUlNRSB0eXBlIGZvciBs
b2NhbCAueGh0bWwgZmlsZXMpIHdoaWNoIGlzIG9ubHkgcmVxdWlyZWQgaW4gTGVvcGFyZC4KICAg
ICAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkgJiYgbV9taW1lVHlwZSA9PSAidGV4dC9odG1s
IikgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbV91cmwucGF0aCgpOwotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyB4aHRtbEV4dCgiLnhodG1sIik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgU3RyaW5nKiB4aHRtbEV4dFB0ciA9IG5ldyBTdHJpbmcoIi54aHRt
bCIpOworICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB4aHRtbEV4dCA9ICp4aHRtbEV4dFB0cjsK
ICAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKHhodG1sRXh0LCBmYWxzZSkpCiAgICAgICAg
ICAgICAgICAgbV9taW1lVHlwZSA9ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiOwogICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkocmV2aXNpb24gMzgy
NzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDcgKzEyMiw4IEBAIGJvb2wgVGV4dEVuY29kaW5nOjppc0phcGFuZXNlKCkg
Y29uc3QKICAgICBpZiAobm9FeHRlbmRlZFRleHRFbmNvZGluZ05hbWVVc2VkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBIYXNoU2V0PGNvbnN0IGNoYXIqPiBzZXQ7Cisg
ICAgc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+KiBzZXRQdHIgPSBuZXcgSGFzaFNldDxjb25z
dCBjaGFyKj47CisgICAgSGFzaFNldDxjb25zdCBjaGFyKj4mIHNldCA9ICpzZXRQdHI7CiAgICAg
aWYgKHNldC5pc0VtcHR5KCkpIHsKICAgICAgICAgYWRkRW5jb2RpbmdOYW1lKHNldCwgIngtbWFj
LWphcGFuZXNlIik7CiAgICAgICAgIGFkZEVuY29kaW5nTmFtZShzZXQsICJjcDkzMiIpOwpJbmRl
eDogV2ViQ29yZS9wbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAkocmV2
aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyJiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVy
OjpzY2hlZHVsZXIoKQogewotICAgIHN0YXRpYyBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyJiBz
Y2hlZHVsZXIgPSAqbmV3IFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI7CisgICAgc3RhdGljIFBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIqIHNjaGVkdWxlclB0ciA9IG5ldyBQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyOworICAgIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXImIHNjaGVkdWxlciA9
ICpzY2hlZHVsZXJQdHI7CiAKICAgICByZXR1cm4gc2NoZWR1bGVyOwogfQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3ODUsNyArMTc4NSw4IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnBhaW50RWxsaXBzaXNCb3hlcyhQYWkKIAogSGFzaE1hcDxSZW5kZXJC
bG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiogY29udGludWF0aW9uT3V0bGluZVRhYmxl
KCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5j
ZWRTZXQqPiB0YWJsZTsKKyAgICBzdGF0aWMgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZs
b3dTZXF1ZW5jZWRTZXQqPiogdGFibGVQdHIgPSBuZXcgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJl
bmRlckZsb3dTZXF1ZW5jZWRTZXQqPjsKKyAgICBIYXNoTWFwPFJlbmRlckJsb2NrKiwgUmVuZGVy
Rmxvd1NlcXVlbmNlZFNldCo+JiB0YWJsZSA9ICp0YWJsZVB0cjsKICAgICByZXR1cm4gJnRhYmxl
OwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAkocmV2aXNpb24gMzgy
NzUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsOCBAQCBzdGF0aWMgQ291bnRlck5vZGUqIGNvdW50ZXIoUmVuZGVyT2Jq
ZWN0CiAKIHN0YXRpYyBDb3VudGVyTWFwcyYgY291bnRlck1hcHMoKQogewotICAgIHN0YXRpYyBD
b3VudGVyTWFwcyBzdGF0aWNDb3VudGVyTWFwczsKKyAgICBzdGF0aWMgQ291bnRlck1hcHMqIHN0
YXRpY0NvdW50ZXJNYXBzUHRyID0gbmV3IENvdW50ZXJNYXBzOworICAgIENvdW50ZXJNYXBzJiBz
dGF0aWNDb3VudGVyTWFwcyA9ICpzdGF0aWNDb3VudGVyTWFwc1B0cjsKICAgICByZXR1cm4gc3Rh
dGljQ291bnRlck1hcHM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsNyArNzcxLDggQEAgdm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCbwogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyIGVsbGlwc2lzQW5kU3BhY2VbMl0g
PSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAnIH07Ci0gICAgICAgICAgICAgICAgc3RhdGljIEF0
b21pY1N0cmluZyBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lzQW5kU3BhY2UsIDIpOworICAg
ICAgICAgICAgICAgIHN0YXRpYyBBdG9taWNTdHJpbmcqIGVsbGlwc2lzQW5kU3BhY2VTdHJQdHIg
PSBuZXcgQXRvbWljU3RyaW5nKGVsbGlwc2lzQW5kU3BhY2UsIDIpOworICAgICAgICAgICAgICAg
IEF0b21pY1N0cmluZyYgZWxsaXBzaXNBbmRTcGFjZVN0ciA9ICplbGxpcHNpc0FuZFNwYWNlU3Ry
UHRyOwogCiAgICAgICAgICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2li
bGVMaW5lcyA9PSAxKS0+Zm9udCgpOwogICAgICAgICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNw
YWNlV2lkdGggPSBmb250LndpZHRoKFRleHRSdW4oZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
OSw3ICsyODksOCBAQCBjb25zdCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7
CiAgICAgaWYgKG1fbWFya2VyKQogICAgICAgICByZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHN0YXRpY051bGxTdHJpbmc7CisgICAgc3RhdGljIFN0cmluZyogc3Rh
dGljTnVsbFN0cmluZ1B0ciA9IG5ldyBTdHJpbmc7CisgICAgU3RyaW5nJiBzdGF0aWNOdWxsU3Ry
aW5nID0gKnN0YXRpY051bGxTdHJpbmdQdHI7CiAgICAgcmV0dXJuIHN0YXRpY051bGxTdHJpbmc7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAJ
KHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJT
Y3JvbGxiYXJUaGVtZSgpCiB7Ci0gICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lIHRoZW1l
OworICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogdGhlbWVQdHIgPSBuZXcgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU7CisgICAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUmIHRoZW1lID0gKnRoZW1l
UHRyOwogICAgIHJldHVybiAmdGhlbWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTMgKzE2OCwyMCBAQCBzdGF0aWMgRm9u
dFdlaWdodCB0b0ZvbnRXZWlnaHQoTlNJbnRlZ2VyCiAKIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnN5
c3RlbUZvbnQoaW50IGNzc1ZhbHVlSWQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KSBjb25zdAogewotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc3lzdGVtRm9udDsKLSAgICBz
dGF0aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsU3lzdGVtRm9udDsKLSAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uIG1lbnVGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbGFiZWxGb250
OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbWluaUNvbnRyb2xGb250OwotICAgIHN0YXRp
YyBGb250RGVzY3JpcHRpb24gc21hbGxDb250cm9sRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2Ny
aXB0aW9uIGNvbnRyb2xGb250OworICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24qIHN5c3RlbUZv
bnRQdHIgPSBuZXcgRm9udERlc2NyaXB0aW9uOworICAgIEZvbnREZXNjcmlwdGlvbiYgc3lzdGVt
Rm9udCA9ICpzeXN0ZW1Gb250UHRyOworICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24qIHNtYWxs
U3lzdGVtRm9udFB0ciA9IG5ldyBGb250RGVzY3JpcHRpb247CisgICAgRm9udERlc2NyaXB0aW9u
JiBzbWFsbFN5c3RlbUZvbnQgPSAqc21hbGxTeXN0ZW1Gb250UHRyOworICAgIHN0YXRpYyBGb250
RGVzY3JpcHRpb24qIG1lbnVGb250UHRyID0gbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBGb250
RGVzY3JpcHRpb24mIG1lbnVGb250ID0gKm1lbnVGb250UHRyOworICAgIHN0YXRpYyBGb250RGVz
Y3JpcHRpb24qIGxhYmVsRm9udFB0ciA9IG5ldyBGb250RGVzY3JpcHRpb247CisgICAgRm9udERl
c2NyaXB0aW9uJiBsYWJlbEZvbnQgPSAqbGFiZWxGb250UHRyOworICAgIHN0YXRpYyBGb250RGVz
Y3JpcHRpb24qIG1pbmlDb250cm9sRm9udFB0ciA9IG5ldyBGb250RGVzY3JpcHRpb247CisgICAg
Rm9udERlc2NyaXB0aW9uJiBtaW5pQ29udHJvbEZvbnQgPSAqbWluaUNvbnRyb2xGb250UHRyOwor
ICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24qIHNtYWxsQ29udHJvbEZvbnRQdHIgPSBuZXcgRm9u
dERlc2NyaXB0aW9uOworICAgIEZvbnREZXNjcmlwdGlvbiYgc21hbGxDb250cm9sRm9udCA9ICpz
bWFsbENvbnRyb2xGb250UHRyOworICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24qIGNvbnRyb2xG
b250UHRyID0gbmV3IEZvbnREZXNjcmlwdGlvbjsKKyAgICBGb250RGVzY3JpcHRpb24mIGNvbnRy
b2xGb250ID0gKmNvbnRyb2xGb250UHRyOwogCiAgICAgRm9udERlc2NyaXB0aW9uKiBjYWNoZWRE
ZXNjOwogICAgIE5TRm9udCogZm9udCA9IG5pbDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2Jp
ZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lv
biAzODI3NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTkyLDcgKzIxOTIsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92
ZXJmCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBvZiB0aGUgZWxsaXBzaXMgdXNpbmcgdGhl
IGN1cnJlbnQgZm9udC4KICAgICAvLyBGSVhNRTogQ1NTMyBzYXlzIHRoaXMgaXMgY29uZmlndXJh
YmxlLCBhbHNvIG5lZWQgdG8gdXNlIDB4MDAyRSAoRlVMTCBTVE9QKSBpZiBob3Jpem9udGFsIGVs
bGlwc2lzIGlzICJub3QgcmVuZGVyYWJsZSIKICAgICBUZXh0UnVuIGVsbGlwc2lzUnVuKCZob3Jp
em9udGFsRWxsaXBzaXMsIDEpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZWxsaXBzaXNTdHIo
Jmhvcml6b250YWxFbGxpcHNpcywgMSk7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyogZWxsaXBz
aXNTdHJQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCZob3Jpem9udGFsRWxsaXBzaXMsIDEpOworICAg
IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIgPSAqZWxsaXBzaXNTdHJQdHI7CiAgICAgY29uc3Qg
Rm9udCYgZmlyc3RMaW5lRm9udCA9IGZpcnN0TGluZVN0eWxlKCktPmZvbnQoKTsKICAgICBjb25z
dCBGb250JiBmb250ID0gc3R5bGUoKS0+Zm9udCgpOwogICAgIGludCBmaXJzdExpbmVFbGxpcHNp
c1dpZHRoID0gZmlyc3RMaW5lRm9udC53aWR0aChlbGxpcHNpc1J1bik7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIw
LDEzICs3MjAsMTUgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzcwog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpCiB7Ci0gICAg
c3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZW1wdHlMaXN0OworICAgIHN0YXRp
YyBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+KiBlbXB0eUxpc3RQdHIgPSBuZXcgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPjsKKyAgICBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+
JiBlbXB0eUxpc3QgPSAqZW1wdHlMaXN0UHRyOwogICAgIHJldHVybiBlbXB0eUxpc3Q7CiB9CiAK
IGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjpub25lRGFz
aGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgc3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lv
bj4gbm9uZUxpc3Q7CisgICAgc3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4qIG5v
bmVMaXN0UHRyID0gbmV3IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj47CisgICAgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZUxpc3QgPSAqbm9uZUxpc3RQdHI7CiAgICAgc3Rh
dGljIGJvb2wgbm9uZUxpc3RJbml0aWFsaXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlz
dEluaXRpYWxpemVkKSB7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4Mjc1KQor
KysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzEg
KzU4LDM2IEBAIHN0YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKICAgICAvLyBOb3RlOiBXZSBkb24n
dCBoYXZlIHRvIHVzZSBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCiAg
ICAgLy8gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24g
dGhlIG1haW4gdGhyZWFkCiAgICAgLy8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2Fs
bCB0aGlzIGZ1bmN0aW9uIGFyZSB1c2VkLgotICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3
IE11dGV4OworICAgIHN0YXRpYyBNdXRleCogbXV0ZXhQdHIgPSBuZXcgTXV0ZXg7CisgICAgTXV0
ZXgmIG11dGV4ID0gKm11dGV4UHRyOwogICAgIHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIEhh
c2hNYXA8aW50LCBTdHJpbmc+JiBndWlkVG9WZXJzaW9uTWFwKCkKIHsKLSAgICBzdGF0aWMgSGFz
aE1hcDxpbnQsIFN0cmluZz4mIG1hcCA9ICpuZXcgSGFzaE1hcDxpbnQsIFN0cmluZz47CisgICAg
c3RhdGljIEhhc2hNYXA8aW50LCBTdHJpbmc+KiBtYXBQdHIgPSBuZXcgSGFzaE1hcDxpbnQsIFN0
cmluZz47CisgICAgSGFzaE1hcDxpbnQsIFN0cmluZz4mIG1hcCA9ICptYXBQdHI7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIAogc3RhdGljIEhhc2hNYXA8aW50LCBIYXNoU2V0PERhdGFiYXNlKj4qPiYg
Z3VpZFRvRGF0YWJhc2VNYXAoKQogewotICAgIHN0YXRpYyBIYXNoTWFwPGludCwgSGFzaFNldDxE
YXRhYmFzZSo+Kj4mIG1hcCA9ICpuZXcgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJhc2UqPio+
OworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj4qIG1hcFB0ciA9
IG5ldyBIYXNoTWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj47CisgICAgSGFzaE1hcDxpbnQs
IEhhc2hTZXQ8RGF0YWJhc2UqPio+JiBtYXAgPSAqbWFwUHRyOwogICAgIHJldHVybiBtYXA7CiB9
CiAKIGNvbnN0IFN0cmluZyYgRGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpCiB7Ci0g
ICAgc3RhdGljIFN0cmluZyYgbmFtZSA9ICpuZXcgU3RyaW5nKCJfX1dlYktpdERhdGFiYXNlSW5m
b1RhYmxlX18iKTsKKyAgICBzdGF0aWMgU3RyaW5nKiBuYW1lUHRyID0gbmV3IFN0cmluZygiX19X
ZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fIik7CisgICAgU3RyaW5nJiBuYW1lID0gKm5hbWVQdHI7
CiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlVmVy
c2lvbktleSgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyYga2V5ID0gKm5ldyBTdHJpbmcoIldlYktp
dERhdGFiYXNlVmVyc2lvbktleSIpOworICAgIHN0YXRpYyBTdHJpbmcqIGtleVB0ciA9IG5ldyBT
dHJpbmcoIldlYktpdERhdGFiYXNlVmVyc2lvbktleSIpOworICAgIFN0cmluZyYga2V5ID0gKmtl
eVB0cjsKICAgICByZXR1cm4ga2V5OwogfQogCkBAIC0yMTgsNyArMjIzLDggQEAgc3RhdGljIGJv
b2wgcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYQogCiBib29sIERhdGFiYXNlOjpnZXRWZXJz
aW9uRnJvbURhdGFiYXNlKFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBzdGF0aWMgU3RyaW5nJiBn
ZXRWZXJzaW9uUXVlcnkgPSAqbmV3IFN0cmluZygiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktl
eSgpICsgIic7Iik7CisgICAgc3RhdGljIFN0cmluZyogZ2V0VmVyc2lvblF1ZXJ5UHRyID0gbmV3
IFN0cmluZygiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpICsg
IiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7Iik7CisgICAgU3Ry
aW5nJiBnZXRWZXJzaW9uUXVlcnkgPSAqZ2V0VmVyc2lvblF1ZXJ5UHRyOwogCiAgICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIApAQCAtMjU0LDcgKzI2MCw4IEBAIHN0YXRpYyBi
b29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXQKIAogYm9vbCBEYXRhYmFzZTo6c2V0VmVy
c2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewotICAgIHN0YXRpYyBTdHJp
bmcmIHNldFZlcnNpb25RdWVyeSA9ICpuZXcgU3RyaW5nKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJh
c2VJbmZvVGFibGVOYW1lKCkgKyAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VW
ZXJzaW9uS2V5KCkgKyAiJywgPyk7Iik7CisgICAgc3RhdGljIFN0cmluZyogc2V0VmVyc2lvblF1
ZXJ5UHRyID0gbmV3IFN0cmluZygiSU5TRVJUIElOVE8gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFt
ZSgpICsgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsg
IicsID8pOyIpOworICAgIFN0cmluZyYgc2V0VmVyc2lvblF1ZXJ5ID0gKnNldFZlcnNpb25RdWVy
eVB0cjsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAKQEAgLTM2Myw5
ICszNzAsMTEgQEAgc3RhdGljIGludCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdAogICAg
IC8vIE5vdGU6IFdlIGRvbid0IGhhdmUgdG8gdXNlIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRp
YyBoZXJlIGJlY2F1c2UKICAgICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGluIHRo
ZSBjb25zdHJ1Y3RvciBvbiB0aGUgbWFpbiB0aHJlYWQKICAgICAvLyBiZWZvcmUgYW55IG90aGVy
IHRocmVhZHMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24gYXJlIHVzZWQuCi0gICAgc3RhdGljIE11
dGV4JiBzdHJpbmdJZGVudGlmaWVyTXV0ZXggPSAqbmV3IE11dGV4OworICAgIHN0YXRpYyBNdXRl
eCogc3RyaW5nSWRlbnRpZmllck11dGV4UHRyID0gbmV3IE11dGV4OworICAgIE11dGV4JiBzdHJp
bmdJZGVudGlmaWVyTXV0ZXggPSAqc3RyaW5nSWRlbnRpZmllck11dGV4UHRyOwogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihzdHJpbmdJZGVudGlmaWVyTXV0ZXgpOwotICAgIHN0YXRpYyBIYXNoTWFw
PFN0cmluZywgaW50PiYgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCA9ICpuZXcgSGFzaE1hcDxT
dHJpbmcsIGludD47CisgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBpbnQ+KiBzdHJpbmdJZGVu
dGlmaWVyVG9HVUlETWFwUHRyID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBpbnQ+OworICAgIEhhc2hN
YXA8U3RyaW5nLCBpbnQ+JiBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwID0gKnN0cmluZ0lkZW50
aWZpZXJUb0dVSURNYXBQdHI7CiAgICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9HVUlE
TWFwLmdldChzdHJpbmdJRCk7CiAgICAgaWYgKCFndWlkKSB7CiAgICAgICAgIHN0YXRpYyBpbnQg
Y3VycmVudE5ld0dVSUQgPSAxOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJ
KHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDggQEAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBEYXRh
YmFzZVRyYWNrZXI6Om9yaQogCiBEYXRhYmFzZVRyYWNrZXImIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpCiB7Ci0gICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlciA9ICpuZXcgRGF0
YWJhc2VUcmFja2VyOworICAgIHN0YXRpYyBEYXRhYmFzZVRyYWNrZXIqIHRyYWNrZXJQdHIgPSBu
ZXcgRGF0YWJhc2VUcmFja2VyOworICAgIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlciA9ICp0cmFj
a2VyUHRyOwogICAgIHJldHVybiB0cmFja2VyOwogfQogCkBAIC03NzEsNyArNzcyLDggQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnNldENsaWVudChEYXRhYmFzZQogCiBzdGF0aWMgTXV0ZXgmIG5v
dGlmaWNhdGlvbk11dGV4KCkKIHsKLSAgICBzdGF0aWMgTXV0ZXgmIG11dGV4ID0gKm5ldyBNdXRl
eDsKKyAgICBzdGF0aWMgTXV0ZXgqIG11dGV4UHRyID0gbmV3IE11dGV4OworICAgIE11dGV4JiBt
dXRleCA9ICptdXRleFB0cjsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTc3OSw3ICs3ODEs
OCBAQCB0eXBlZGVmIFZlY3RvcjxwYWlyPFNlY3VyaXR5T3JpZ2luKiwgU3RyCiAKIHN0YXRpYyBO
b3RpZmljYXRpb25RdWV1ZSYgbm90aWZpY2F0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBOb3Rp
ZmljYXRpb25RdWV1ZSYgcXVldWUgPSAqbmV3IE5vdGlmaWNhdGlvblF1ZXVlOworICAgIHN0YXRp
YyBOb3RpZmljYXRpb25RdWV1ZSogcXVldWVQdHIgPSBuZXcgTm90aWZpY2F0aW9uUXVldWU7Cisg
ICAgTm90aWZpY2F0aW9uUXVldWUmIHF1ZXVlID0gKnF1ZXVlUHRyOwogICAgIHJldHVybiBxdWV1
ZTsKIH0KIApJbmRleDogV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHJldmlzaW9uIDM4Mjc1KQor
KysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDggQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTG9jYWxTdG9yYWdlKj4gTAogCiBz
dGF0aWMgTG9jYWxTdG9yYWdlTWFwJiBsb2NhbFN0b3JhZ2VNYXAoKQogewotICAgIHN0YXRpYyBM
b2NhbFN0b3JhZ2VNYXAgbG9jYWxTdG9yYWdlTWFwOworICAgIHN0YXRpYyBMb2NhbFN0b3JhZ2VN
YXAqIGxvY2FsU3RvcmFnZU1hcFB0ciA9IG5ldyBMb2NhbFN0b3JhZ2VNYXA7CisgICAgTG9jYWxT
dG9yYWdlTWFwJiBsb2NhbFN0b3JhZ2VNYXAgPSAqbG9jYWxTdG9yYWdlTWFwUHRyOwogICAgIHJl
dHVybiBsb2NhbFN0b3JhZ2VNYXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSwxMCBAQCB2b2lk
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlCiAgICAgCiBTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6Um90YXRlTW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9k
ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBhdXRvVmFsKCJhdXRv
Iik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBhdXRvUmV2ZXJzZSgiYXV0by1yZXZl
cnNlIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogYXV0b1ZhbFB0ciA9IG5ldyBB
dG9taWNTdHJpbmcoImF1dG8iKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9WYWwgPSAq
YXV0b1ZhbFB0cjsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBhdXRvUmV2ZXJzZVB0
ciA9IG5ldyBBdG9taWNTdHJpbmcoImF1dG8tcmV2ZXJzZSIpOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXV0b1JldmVyc2UgPSAqYXV0b1JldmVyc2VQdHI7CiAgICAgU3RyaW5nIHJvdGF0ZSA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6cm90YXRlQXR0cik7CiAgICAgaWYgKHJvdGF0ZSA9PSBh
dXRvVmFsKQogICAgICAgICByZXR1cm4gUm90YXRlQXV0bzsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsMTAgKzE5NiwxNCBAQCBTVkdB
bmltYXRpb25FbGVtZW50OjpBbmltYXRpb25Nb2RlIFNWR0FuCiAKIFNWR0FuaW1hdGlvbkVsZW1l
bnQ6OkNhbGNNb2RlIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNhbGNNb2RlKCkgY29uc3QKIHsgICAg
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkaXNjcmV0ZSgiZGlzY3JldGUiKTsKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGxpbmVhcigibGluZWFyIik7Ci0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBwYWNlZCgicGFjZWQiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIHNwbGluZSgic3BsaW5lIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyogZGlzY3JldGVQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJkaXNjcmV0ZSIpOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZGlzY3JldGUgPSAqZGlzY3JldGVQdHI7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyogbGluZWFyUHRyID0gbmV3IEF0b21pY1N0cmluZygibGluZWFyIik7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lYXIgPSAqbGluZWFyUHRyOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcqIHBhY2VkUHRyID0gbmV3IEF0b21pY1N0cmluZygicGFjZWQiKTsK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBhY2VkID0gKnBhY2VkUHRyOworICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcqIHNwbGluZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoInNwbGluZSIp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3BsaW5lID0gKnNwbGluZVB0cjsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpjYWxjTW9kZUF0
dHIpOwogICAgIGlmICh2YWx1ZSA9PSBkaXNjcmV0ZSkKICAgICAgICAgcmV0dXJuIENhbGNNb2Rl
RGlzY3JldGU7CkBAIC0yMTQsOCArMjE4LDEwIEBAIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkNhbGNN
b2RlIFNWR0FuaW1hdGkKIAogU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXR0cmlidXRlVHlwZSBTVkdB
bmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVUeXBlKCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBjc3MoIkNTUyIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgeG1sKCJYTUwiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBjc3NQdHIg
PSBuZXcgQXRvbWljU3RyaW5nKCJDU1MiKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNzcyA9
ICpjc3NQdHI7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogeG1sUHRyID0gbmV3IEF0
b21pY1N0cmluZygiWE1MIik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4bWwgPSAqeG1sUHRy
OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmF0dHJpYnV0ZVR5cGVBdHRyKTsKICAgICBpZiAodmFsdWUgPT0gY3NzKQogICAgICAgICByZXR1
cm4gQXR0cmlidXRlVHlwZUNTUzsKQEAgLTI0MSwxNCArMjQ3LDE2IEBAIFN0cmluZyBTVkdBbmlt
YXRpb25FbGVtZW50Ojpmcm9tVmFsdWUoKSAKIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojpp
c0FkZGl0aXZlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHN1bSgi
c3VtIik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogc3VtUHRyID0gbmV3IEF0b21p
Y1N0cmluZygic3VtIik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdW0gPSAqc3VtUHRyOwog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmFk
ZGl0aXZlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRpb25Nb2RlKCkg
PT0gQnlBbmltYXRpb247CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVs
YXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW0oInN1bSIp
OworICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIHN1bVB0ciA9IG5ldyBBdG9taWNTdHJp
bmcoInN1bSIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3VtID0gKnN1bVB0cjsKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjphY2N1bXVs
YXRlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSAmJiBhbmltYXRpb25Nb2RlKCkgIT0g
VG9BbmltYXRpb247CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAJKHJldmlzaW9uIDM4Mjc1KQor
KysgV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyAr
NTEsOCBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBBdG9tCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1sc3BhY2UoKSBjb25zdAogewogICAgIGlmICgh
bV9zcGFjZSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRTdHJp
bmcoImRlZmF1bHQiKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogZGVmYXVs
dFN0cmluZ1B0ciA9IG5ldyBBdG9taWNTdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBkZWZhdWx0U3RyaW5nID0gKmRlZmF1bHRTdHJpbmdQdHI7CiAgICAgICAg
IHJldHVybiBkZWZhdWx0U3RyaW5nOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDcgKzg5LDggQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQo
KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBl
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRWYWx1ZSgi
dGV4dC9lY21hc2NyaXB0Iik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogZGVmYXVs
dFZhbHVlUHRyID0gbmV3IEF0b21pY1N0cmluZygidGV4dC9lY21hc2NyaXB0Iik7CisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0VmFsdWUgPSAqZGVmYXVsdFZhbHVlUHRyOwogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShjb250ZW50U2NyaXB0VHlwZUF0dHIp
OwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KQEAgLTEwMSw3
ICsxMDIsOCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldENvbnRlbnRTY3JpcHRUeXBlCiAKIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFN0eWxlVHlwZSgpIGNvbnN0
CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0VmFsdWUoInRleHQvY3Nz
Iik7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogZGVmYXVsdFZhbHVlUHRyID0gbmV3
IEF0b21pY1N0cmluZygidGV4dC9jc3MiKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRlZmF1
bHRWYWx1ZSA9ICpkZWZhdWx0VmFsdWVQdHI7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuID0g
Z2V0QXR0cmlidXRlKGNvbnRlbnRTdHlsZVR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5pc051bGwo
KSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDM4Mjc1KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6c2V0WG1sc3Bh
Y2UoY29uc3QgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5bGVFbGVtZW50Ojp0eXBlKCkg
Y29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRWYWx1ZSgidGV4
dC9jc3MiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBkZWZhdWx0VmFsdWVQdHIg
PSBuZXcgQXRvbWljU3RyaW5nKCJ0ZXh0L2NzcyIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
ZGVmYXVsdFZhbHVlID0gKmRlZmF1bHRWYWx1ZVB0cjsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG4gPSBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVm
YXVsdFZhbHVlIDogbjsKIH0KQEAgLTY1LDcgKzY2LDggQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6
OnNldFR5cGUoY29uc3QgQXRvbQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVu
dDo6bWVkaWEoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGVmYXVs
dFZhbHVlKCJhbGwiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBkZWZhdWx0VmFs
dWVQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJhbGwiKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGRlZmF1bHRWYWx1ZSA9ICpkZWZhdWx0VmFsdWVQdHI7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuID0gZ2V0QXR0cmlidXRlKG1lZGlhQXR0cik7CiAgICAgcmV0dXJuIG4uaXNOdWxsKCkgPyBk
ZWZhdWx0VmFsdWUgOiBuOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OCw3ICs0OTgsOCBAQCB2b2lkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7CiAgICAgICAgICAg
ICBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHByZXNlcnZlU3RyaW5nKCJwcmVz
ZXJ2ZSIpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcqIHByZXNl
cnZlU3RyaW5nUHRyID0gbmV3IEF0b21pY1N0cmluZygicHJlc2VydmUiKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZXNlcnZlU3RyaW5nID0gKnByZXNlcnZlU3RyaW5n
UHRyOwogCiAgICAgICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJp
bmcpCiAgICAgICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU1Byb3BlcnR5
V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmUpOwpJbmRleDogV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw3ICsxOTMsOCBAQCBT
TUlMVGltZSBTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlCiAgICAgCiAgICAgU3RyaW5n
IHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIik7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyogaW5kZWZpbml0ZVZhbHVlUHRyID0gbmV3IEF0b21pY1N0cmluZygiaW5k
ZWZpbml0ZSIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW5kZWZpbml0ZVZhbHVlID0gKmlu
ZGVmaW5pdGVWYWx1ZVB0cjsKICAgICBpZiAocGFyc2UgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAg
ICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsKIApAQCAtNDU3LDggKzQ1OCwxMCBA
QCBib29sIFNWR1NNSUxFbGVtZW50Ojppc0Zyb3plbigpIGNvbnN0CiAgICAgCiBTVkdTTUlMRWxl
bWVudDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiB7ICAgIAotICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgbmV2ZXIoIm5ldmVyIik7Ci0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyB3aGVuTm90QWN0aXZlKCJ3aGVuTm90QWN0aXZlIik7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyogbmV2ZXJQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJuZXZl
ciIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV2ZXIgPSAqbmV2ZXJQdHI7CisgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyogd2hlbk5vdEFjdGl2ZVB0ciA9IG5ldyBBdG9taWNTdHJp
bmcoIndoZW5Ob3RBY3RpdmUiKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHdoZW5Ob3RBY3Rp
dmUgPSAqd2hlbk5vdEFjdGl2ZVB0cjsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
Z2V0QXR0cmlidXRlKFNWR05hbWVzOjpyZXN0YXJ0QXR0cik7CiAgICAgaWYgKHZhbHVlID09IG5l
dmVyKQogICAgICAgICByZXR1cm4gUmVzdGFydE5ldmVyOwpAQCAtNDY5LDcgKzQ3Miw4IEBAIFNW
R1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjoKICAgICAKIFNWR1NNSUxFbGVt
ZW50OjpGaWxsTW9kZSBTVkdTTUlMRWxlbWVudDo6ZmlsbCgpIGNvbnN0CiB7ICAgCi0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyBmcmVlemUoImZyZWV6ZSIpOworICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcqIGZyZWV6ZVB0ciA9IG5ldyBBdG9taWNTdHJpbmcoImZyZWV6ZSIpOwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZnJlZXplID0gKmZyZWV6ZVB0cjsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpmaWxsQXR0cik7CiAg
ICAgcmV0dXJuIHZhbHVlID09IGZyZWV6ZSA/IEZpbGxGcmVlemUgOiBGaWxsUmVtb3ZlOwogfQpA
QCAtNTA2LDcgKzUxMCw4IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCgp
IGMKICAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5y
ZXNvbHZlZCgpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBpbmRlZmluaXRlVmFs
dWUoImluZGVmaW5pdGUiKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBpbmRlZmlu
aXRlVmFsdWVQdHIgPSBuZXcgQXRvbWljU3RyaW5nKCJpbmRlZmluaXRlIik7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbmRlZmluaXRlVmFsdWUgPSAqaW5kZWZpbml0ZVZhbHVlUHRyOwogICAg
IGlmICh2YWx1ZSA9PSBpbmRlZmluaXRlVmFsdWUpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6
aW5kZWZpbml0ZSgpOwogICAgIGJvb2wgb2s7CkBAIC04NjEsNyArODY2LDggQEAgdm9pZCBTVkdT
TUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZQogdm9pZCBTVkdTTUlMRWxlbWVudDo6bm90
aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZChOZXdPckV4aXN0aW5nSW50ZXJ2YWwgbmV3T3JF
eGlzdGluZykKIHsKICAgICBBU1NFUlQobV9pbnRlcnZhbEJlZ2luLmlzRmluaXRlKCkpOwotICAg
IHN0YXRpYyBIYXNoU2V0PFNWR1NNSUxFbGVtZW50Kj4gbG9vcEJyZWFrZXI7CisgICAgc3RhdGlj
IEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiogbG9vcEJyZWFrZXJQdHIgPSBuZXcgSGFzaFNldDxT
VkdTTUlMRWxlbWVudCo+OworICAgIEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQqPiYgbG9vcEJyZWFr
ZXIgPSAqbG9vcEJyZWFrZXJQdHI7CiAgICAgaWYgKGxvb3BCcmVha2VyLmNvbnRhaW5zKHRoaXMp
KQogICAgICAgICByZXR1cm47CiAgICAgbG9vcEJyZWFrZXIuYWRkKHRoaXMpOwpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4
LDggQEAgc3RydWN0IFJlc291cmNlU2V0IHsgCiB9OwogCiBzdGF0aWMgSGFzaE1hcDxTVkdTdHls
ZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPiYgY2xpZW50TWFwKCkgewotICAgIHN0YXRpYyBIYXNo
TWFwPFNWR1N0eWxlZEVsZW1lbnQqLCBSZXNvdXJjZVNldCo+IG1hcDsKKyAgICBzdGF0aWMgSGFz
aE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPiogbWFwUHRyID0gbmV3IEhhc2hN
YXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNlU2V0Kj47CisgICAgSGFzaE1hcDxTVkdTdHls
ZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPiYgbWFwID0gKm1hcFB0cjsKICAgICByZXR1cm4gbWFw
OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3Bw
CShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFy
a2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsOCBAQCB2b2lkIFNWR1Jlc291cmNl
TWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAgICAgaWYgKCFtX21hcmtlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U1ZHUmVzb3VyY2VNYXJrZXIqPiBjdXJyZW50bHlE
cmF3aW5nTWFya2VyczsKKyAgICBzdGF0aWMgSGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+KiBj
dXJyZW50bHlEcmF3aW5nTWFya2Vyc1B0ciA9IG5ldyBIYXNoU2V0PFNWR1Jlc291cmNlTWFya2Vy
Kj47CisgICAgSGFzaFNldDxTVkdSZXNvdXJjZU1hcmtlcio+JiBjdXJyZW50bHlEcmF3aW5nTWFy
a2VycyA9ICpjdXJyZW50bHlEcmF3aW5nTWFya2Vyc1B0cjsKIAogICAgIC8vIGF2b2lkIGRyYXdp
bmcgY2lyY3VsYXIgbWFya2VyIHJlZmVyZW5jZXMKICAgICBpZiAoY3VycmVudGx5RHJhd2luZ01h
cmtlcnMuY29udGFpbnModGhpcykpCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lv
biAzODI3NSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsOCBAQCB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmluZywgS1VS
TD4sCiAKIHN0YXRpYyBQcmVmbGlnaHRSZXN1bHRDYWNoZSYgcHJlZmxpZ2h0UmVzdWx0Q2FjaGUo
KQogewotICAgIHN0YXRpYyBQcmVmbGlnaHRSZXN1bHRDYWNoZSBjYWNoZTsKKyAgICBzdGF0aWMg
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUqIGNhY2hlUHRyID0gbmV3IFByZWZsaWdodFJlc3VsdENhY2hl
OworICAgIFByZWZsaWdodFJlc3VsdENhY2hlJiBjYWNoZSA9ICpjYWNoZVB0cjsKICAgICByZXR1
cm4gY2FjaGU7CiB9CiAKQEAgLTg4LDkgKzg5LDEyIEBAIHN0YXRpYyB2b2lkIGFwcGVuZFByZWZs
aWdodFJlc3VsdENhY2hlRW4KIAogc3RhdGljIGJvb2wgaXNTYWZlUmVxdWVzdEhlYWRlcihjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+IGZvcmJpZGRlbkhlYWRlcnM7Ci0gICAgc3RhdGljIFN0cmluZyBwcm94eVN0cmluZygi
cHJveHktIik7Ci0gICAgc3RhdGljIFN0cmluZyBzZWNTdHJpbmcoInNlYy0iKTsKKyAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4qIGZvcmJpZGRlbkhlYWRlcnNQdHIg
PSBuZXcgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD47CisgICAgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4mIGZvcmJpZGRlbkhlYWRlcnMgPSAqZm9yYmlkZGVuSGVhZGVy
c1B0cjsKKyAgICBzdGF0aWMgU3RyaW5nKiBwcm94eVN0cmluZ1B0ciA9IG5ldyBTdHJpbmcoInBy
b3h5LSIpOworICAgIFN0cmluZyYgcHJveHlTdHJpbmcgPSAqcHJveHlTdHJpbmdQdHI7CisgICAg
c3RhdGljIFN0cmluZyogc2VjU3RyaW5nUHRyID0gbmV3IFN0cmluZygic2VjLSIpOworICAgIFN0
cmluZyYgc2VjU3RyaW5nID0gKnNlY1N0cmluZ1B0cjsKICAgICAKICAgICBpZiAoZm9yYmlkZGVu
SGVhZGVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yYmlkZGVuSGVhZGVycy5hZGQoImFjY2Vw
dC1jaGFyc2V0Iik7CkBAIC0xMjEsNyArMTI1LDggQEAgc3RhdGljIGJvb2wgaXNPbkFjY2Vzc0Nv
bnRyb2xTaW1wbGVSZXF1ZQogCiBzdGF0aWMgYm9vbCBpc09uQWNjZXNzQ29udHJvbFJlc3BvbnNl
SGVhZGVyV2hpdGVsaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gYWxsb3dlZEhlYWRlcnM7CisgICAgc3RhdGljIEhh
c2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+KiBhbGxvd2VkSGVhZGVyc1B0ciA9IG5ldyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjsKKyAgICBIYXNoU2V0PFN0cmluZywgQ2Fz
ZUZvbGRpbmdIYXNoPiYgYWxsb3dlZEhlYWRlcnMgPSAqYWxsb3dlZEhlYWRlcnNQdHI7CiAgICAg
aWYgKGFsbG93ZWRIZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBhbGxvd2VkSGVhZGVycy5h
ZGQoImNhY2hlLWNvbnRyb2wiKTsKICAgICAgICAgYWxsb3dlZEhlYWRlcnMuYWRkKCJjb250ZW50
LWxhbmd1YWdlIik7CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAkocmV2aXNp
b24gMzgyNzUpCisrKyBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgWFBhdGggewogICAgIAogRXZhbHVh
dGlvbkNvbnRleHQmIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkKIHsKLSAgICBzdGF0
aWMgRXZhbHVhdGlvbkNvbnRleHQgZXZhbHVhdGlvbkNvbnRleHQ7CisgICAgc3RhdGljIEV2YWx1
YXRpb25Db250ZXh0KiBldmFsdWF0aW9uQ29udGV4dFB0ciA9IG5ldyBFdmFsdWF0aW9uQ29udGV4
dDsKKyAgICBFdmFsdWF0aW9uQ29udGV4dCYgZXZhbHVhdGlvbkNvbnRleHQgPSAqZXZhbHVhdGlv
bkNvbnRleHRQdHI7CiAgICAgcmV0dXJuIGV2YWx1YXRpb25Db250ZXh0OwogfQogCkluZGV4OiBX
ZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBh
dGhQYXJzZXIuY3BwCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYkNvcmUveG1sL1hQYXRoUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsOCBAQCBzdGF0aWMgdm9pZCBzZXRVcEF4
aXNOYW1lc01hcChIYXNoTWFwPFN0CiAKIHN0YXRpYyBib29sIGlzQXhpc05hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBTdGVwOjpBeGlzJiB0eXBlKQogewotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmlu
ZywgU3RlcDo6QXhpcz4gYXhpc05hbWVzOworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3Rl
cDo6QXhpcz4qIGF4aXNOYW1lc1B0ciA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz47
CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+JiBheGlzTmFtZXMgPSAqYXhpc05hbWVz
UHRyOwogCiAgICAgaWYgKGF4aXNOYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHNldFVwQXhpc05h
bWVzTWFwKGF4aXNOYW1lcyk7CkBAIC0xMTEsNyArMTEyLDggQEAgc3RhdGljIGJvb2wgaXNBeGlz
TmFtZShjb25zdCBTdHJpbmcmIG5hbQogCiBzdGF0aWMgYm9vbCBpc05vZGVUeXBlTmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBub2RlVHlwZU5h
bWVzOworICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4qIG5vZGVUeXBlTmFtZXNQdHIgPSBuZXcg
SGFzaFNldDxTdHJpbmc+OworICAgIEhhc2hTZXQ8U3RyaW5nPiYgbm9kZVR5cGVOYW1lcyA9ICpu
b2RlVHlwZU5hbWVzUHRyOwogICAgIGlmIChub2RlVHlwZU5hbWVzLmlzRW1wdHkoKSkgewogICAg
ICAgICBub2RlVHlwZU5hbWVzLmFkZCgiY29tbWVudCIpOwogICAgICAgICBub2RlVHlwZU5hbWVz
LmFkZCgidGV4dCIpOwpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHJldmlzaW9uIDM4Mjc1KQorKysgV2Vi
Q29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDggQEAg
Y29uc3QgVmFsdWU6OkFkb3B0VGFnIFZhbHVlOjphZG9wdCA9IHt9OwogY29uc3QgTm9kZVNldCYg
VmFsdWU6OnRvTm9kZVNldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAg
c3RhdGljIE5vZGVTZXQgZW1wdHlOb2RlU2V0OworICAgICAgICBzdGF0aWMgTm9kZVNldCogZW1w
dHlOb2RlU2V0UHRyID0gbmV3IE5vZGVTZXQ7CisgICAgICAgIE5vZGVTZXQmIGVtcHR5Tm9kZVNl
dCA9ICplbXB0eU5vZGVTZXRQdHI7CiAgICAgICAgIHJldHVybiBlbXB0eU5vZGVTZXQ7CiAgICAg
fQogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMzgyNzUpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDA4LTExLTEwICBHcmVnIEJvbHNpbmdhICA8
c2V0IEVNQUlMX0FERFJFU1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBv
YmplY3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisg
ICAgICAgIEZvciBlYWNoIG9mIHRoZXNlOiBDaGFuZ2VkIHRvIGxlYWsgYW4gb2JqZWN0IHRvIGF2
b2lkIGFuIGV4aXQtdGltZSBkZXN0cnVjdG9yLgorICAgICAgICAKKyAgICAgICAgSW4gZ2VuZXJh
bCBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICAKKyAgICAgICAgc3RhdGljIFQgbTsKKyAgICAg
ICAgCisgICAgICAgIGJlY2FtZToKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBUKiBtUHRyID0g
bmV3IFQ7CisgICAgICAgIFQmIG0gPSAqbVB0cjsKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMg
dG8gd29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzYzNTQ2OTY+IENvZGVnZW4gaXNzdWUgd2l0
aCBDKysgc3RhdGljIHJlZmVyZW5jZSBpbiBnY2MgYnVpbGQgNTQ2NQorCisgICAgICAgICogSGlz
dG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3RzKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlzdG9yeUl0
ZW1XcmFwcGVycyk6CisgICAgICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubToKKyAgICAg
ICAgKGZvbnRGcm9tTlNGb250KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbToKKyAgICAgICAgKHN0cmVhbXMpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAwOC0xMS0xMCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtldmluIERlY2tlciBhbmQgTWFyayBSb3dlLgpJbmRleDogV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
QmFja0ZvcndhcmRMaXN0Lm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYktpdC9tYWMvSGlzdG9y
eS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDggQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlz
dCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+JiBiYWNrRm9yd2FyZExpc3RzKCkKIHsKLSAgICBzdGF0
aWMgSGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiBzdGF0aWNC
YWNrRm9yd2FyZExpc3RzOworICAgIHN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdl
YkJhY2tGb3J3YXJkTGlzdCo+KiBzdGF0aWNCYWNrRm9yd2FyZExpc3RzUHRyID0gbmV3IEhhc2hN
YXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj47CisgICAgSGFzaE1hcDxC
YWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiYgc3RhdGljQmFja0ZvcndhcmRM
aXN0cyA9ICpzdGF0aWNCYWNrRm9yd2FyZExpc3RzUHRyOwogICAgIHJldHVybiBzdGF0aWNCYWNr
Rm9yd2FyZExpc3RzOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
CShyZXZpc2lvbiAzODI3NSkKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsOCBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmVI
aXN0b3J5SXRlbSogY29yZShXCiAKIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRl
bSo+JiBoaXN0b3J5SXRlbVdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxIaXN0b3J5
SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4gaGlzdG9yeUl0ZW1XcmFwcGVyczsKKyAgICBzdGF0aWMg
SGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4qIGhpc3RvcnlJdGVtV3JhcHBl
cnNQdHIgPSBuZXcgSGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJdGVtKj47CisgICAg
SGFzaE1hcDxIaXN0b3J5SXRlbSosIFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBl
cnMgPSAqaGlzdG9yeUl0ZW1XcmFwcGVyc1B0cjsKICAgICByZXR1cm4gaGlzdG9yeUl0ZW1XcmFw
cGVyczsKIH0KIApJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubQkocmV2aXNp
b24gMzgyNzUpCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm0JKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAgc3RhdGljIE5TRm9udCAqZGVmYXVsdE1lbnVGb250
KCkKIHN0YXRpYyBGb250JiBmb250RnJvbU5TRm9udChOU0ZvbnQgKmZvbnQpCiB7CiAgICAgc3Rh
dGljIE5TRm9udCAqY3VycmVudEZvbnQ7Ci0gICAgc3RhdGljIEZvbnQgY3VycmVudFJlbmRlcmVy
OworICAgIHN0YXRpYyBGb250KiBjdXJyZW50UmVuZGVyZXJQdHIgPSBuZXcgRm9udDsKKyAgICBG
b250JiBjdXJyZW50UmVuZGVyZXIgPSAqY3VycmVudFJlbmRlcmVyUHRyOwogCiAgICAgaWYgKFtm
b250IGlzRXF1YWw6Y3VycmVudEZvbnRdKQogICAgICAgICByZXR1cm4gY3VycmVudFJlbmRlcmVy
OwpJbmRleDogV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0cmVhbS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNl
TmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDggQEAg
c3RhdGljIE5TU3RyaW5nICpDYXJib25QYXRoRnJvbVBPU0lYUGF0aAogdHlwZWRlZiBIYXNoTWFw
PE5QU3RyZWFtKiwgTlBQPiBTdHJlYW1NYXA7CiBzdGF0aWMgU3RyZWFtTWFwJiBzdHJlYW1zKCkK
IHsKLSAgICBzdGF0aWMgU3RyZWFtTWFwIHN0YXRpY1N0cmVhbXM7CisgICAgc3RhdGljIFN0cmVh
bU1hcCogc3RhdGljU3RyZWFtc1B0ciA9IG5ldyBTdHJlYW1NYXA7CisgICAgU3RyZWFtTWFwJiBz
dGF0aWNTdHJlYW1zID0gKnN0YXRpY1N0cmVhbXNQdHI7CiAgICAgcmV0dXJuIHN0YXRpY1N0cmVh
bXM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAzODI3NSkKKysrIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjA3LDcgKzM2
MDcsOCBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNB
cnJheTo6aW5mbykpIHsKLSAgICAgICAgICAgIHN0YXRpYyBIYXNoU2V0PEpTT2JqZWN0Kj4gdmlz
aXRlZEVsZW1zOworICAgICAgICAgICAgc3RhdGljIEhhc2hTZXQ8SlNPYmplY3QqPiogdmlzaXRl
ZEVsZW1zUHRyID0gbmV3IEhhc2hTZXQ8SlNPYmplY3QqPjsKKyAgICAgICAgICAgIEhhc2hTZXQ8
SlNPYmplY3QqPiYgdmlzaXRlZEVsZW1zID0gKnZpc2l0ZWRFbGVtc1B0cjsKICAgICAgICAgICAg
IGlmICghdmlzaXRlZEVsZW1zLmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgICAgICAgICB2
aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBXZWJLaXRU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAzODI3NSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDA4LTExLTEwICBHcmVnIEJvbHNpbmdhICA8c2V0IEVNQUlMX0FERFJF
U1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJl
IGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIFJlbW92ZSAu
byBmaWxlcyBmcm9tIHRoZSBleGNsdWRlIGxpc3QgdGhhdCBoYXZlIGhhZCB0aGVpciBleGl0LXRp
bWUgZGVzdHJ1Y3RvcnMgcmVtb3ZlZC4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWV4
aXQtdGltZS1kZXN0cnVjdG9yczogRG9uJ3QgZGVtYW5nbGUgc3ltYm9scyB0aGF0IGRvbid0IGV4
aXN0LgorCiAyMDA4LTExLTA2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQlVJTEQgRklYOiBCYWNrZWQgb3V0IHIzODE4OSAoYW5kIHIzODIwMykgZm9yIFhj
b2RlIDMuMC4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1k
ZXN0cnVjdG9ycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1l
eGl0LXRpbWUtZGVzdHJ1Y3RvcnMJKHJldmlzaW9uIDM4Mjc1KQorKysgV2ViS2l0VG9vbHMvU2Ny
aXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05
NSwxMTAgKzk1LDM1IEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBpZiAoJHRh
cmdldCBlcSAiV2ViQ29yZSIpIHsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nl
c3NpYmlsaXR5T2JqZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiQXBwbHlTdHlsZUNvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
QXJjaGl2ZUZhY3RvcnkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
Q1NTUHJpbWl0aXZlVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NT
U2VsZWN0b3IubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU3R5bGVTZWxl
Y3Rvci5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRJbWFnZS5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDb2xvck1hYy5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJEb2N1bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJFdmVudEhhbmRsZXIubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZl
bnRIYW5kbGVyTWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZUUERpcmVj
dG9yeURvY3VtZW50Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNo
ZS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRm9ybURhdGFTdHJlYW1NYWMubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiRnJhbWVMb2FkZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiRnJhbWVNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiR0NDb250cm9s
bGVyLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29udGV4dE1h
Yy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MQnV0dG9uRWxlbWVudC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRWxlbWVudC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRmllbGRTZXRFbGVtZW50Lm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxJbnB1dEVsZW1lbnQubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTEludGVyY2hhbmdlLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkhUTUxLZXlnZW5FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkhUTUxMZWdlbmRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkhUTUxPcHRHcm91cEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiSFRNTE9wdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiSFRNTFBhcnNlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1M
U2VsZWN0RWxlbWVudC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGFi
bGVFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxUZXh0QXJl
YUVsZW1lbnQubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSWNvbkRhdGFiYXNl
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluZGVudE91dGRlbnRDb21tYW5kLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluc3BlY3RvckNvbnRyb2xsZXIubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiSlNET01CaW5kaW5nLm8iOwogICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIubyI7CiAg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5vIjsKICAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsKICAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkphdmFTY3JpcHRQcm9maWxlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkphdmFTY3JpcHRQcm9maWxlTm9kZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJLVVJMLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkxvY2Fs
U3RvcmFnZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3JrU3RhdGVO
b3RpZmllci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOwogICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiUmVuZGVyQmxvY2subyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiUmVuZGVyQ291bnRlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJSZW5kZXJGbGV4aWJsZUJveC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJSZW5kZXJMYXllci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJM
aXN0SXRlbS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTY3JvbGxi
YXJUaGVtZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTdHlsZS5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFjLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1lbnQubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlTWFya2VyLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlNWR1NNSUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNWR1NWR0VsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
U1ZHU3R5bGVFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1Rl
eHRDb250ZW50RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3Jp
cHRFbGVtZW50Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9sbFZpZXcu
byI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVNYWMubyI7
CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7CiAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CiAgICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlRleHRFbmNvZGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJUaHJlYWRDaGVjay5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYTUxIdHRw
UmVxdWVzdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYUGF0aEV4cHJlc3Np
b25Ob2RlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoUGFyc2VyLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoVmFsdWUubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiYmlkaS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJodG1sZWRpdGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJt
YXJrdXAubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAicnVudGltZV9yb290Lm8i
OwogICAgIH0KIAogICAgIGlmICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiQWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJXZWJCYWNrRm9yd2FyZExpc3QubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm8iOwogICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJIaXN0b3J5SXRlbS5vIjsKICAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMubyI7CiAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiV2ViUGFzdGVib2FyZEhlbHBlci5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJXZWJTdHJpbmdUcnVuY2F0b3IubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiV2ViVmlldy5vIjsKICAgICB9CiAKICAgICAkc2F3RXJyb3IgPSAxIGlm
IHByaW50RnVuY3Rpb25zKCRzaG9ydE5hbWUsICRmaWxlKTsK
</data>
<flag name="review"
          id="11496"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25102</attachid>
            <date>2008-11-12 13:14:02 -0800</date>
            <delta_ts>2008-11-13 16:49:03 -0800</delta_ts>
            <desc>This patch uses a macro</desc>
            <filename>Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>119727</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MzQwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDgtMTEtMTIgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQg
YXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorICAgICAgICAKKyAgICAg
ICAgQ3JlYXRlIERFRklORV9TVEFUSUNfTE9DQUwgbWFjcm8uIENoYW5nZSBzdGF0aWMgbG9jYWwg
b2JqZWN0cyB0byBsZWFrIHRvIGF2b2lkCisgICAgICAgIGV4aXQtdGltZSBkZXN0cnVjdG9yLiBV
cGRhdGUgY29kZSB0aGF0IHdhcyBjaGFuZ2VkIHRvIGZpeCB0aGlzIGlzc3VlIHRoYXQgcmFuCisg
ICAgICAgIGludG8gYSBnY2MgYnVnICg8cmRhcjovL3Byb2JsZW0vNjM1NDY5Nj4gQ29kZWdlbiBp
c3N1ZSB3aXRoIEMrKyBzdGF0aWMgcmVmZXJlbmNlIAorICAgICAgICBpbiBnY2MgYnVpbGQgNTQ2
NSkuIEFsc28gdHlwZGVmcyBmb3IgdGVtcGxhdGUgdHlwZXMgbmVlZGVkIHRvIGJlIGFkZGVkIGlu
IHNvbWUKKyAgICAgICAgY2FzZXMgc28gdGhlIHR5cGUgY291bGQgbWFrZSBpdCB0aHJvdWdoIHRo
ZSBtYWNybyBzdWNjZXNzZnVsbHkuCisgICAgICAgIAorICAgICAgICBCYXNpY2FsbHkgY29kZSBv
ZiB0aGUgZm9ybToKKyAgICAgICAgc3RhdGljIFQgbTsKKyAgICAgICAgYmVjb21lczoKKyAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChULCBtLCAoKSk7CisgICAgICAgIAorICAgICAgICBBbHNv
IGFueSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0aWMgVCYgbSA9ICpuZXcgVDsKKyAg
ICAgICAgYWxzbyBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFQsIG0sICgp
KTsKKyAKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6Om1haW5U
aHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgpOgorICAgICAgICAoV1RGOjpmdW5jdGlvblF1ZXVlKToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogQWRkIERFRklORV9TVEFUSUNfTE9DQUwgbWFjcm8K
KyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjp0aHJl
YWRNYXBNdXRleCk6CisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6CisgICAgICAgIChXVEY6Omlk
ZW50aWZpZXJCeVB0aHJlYWRIYW5kbGUpOgorCiAyMDA4LTExLTEyICBHYXZpbiBCYXJyYWNsb3Vn
aCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9u
IFp3YXJpY2guCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCShyZXZpc2lvbiAzODMz
OSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMsMTMgKzUzLDEzIEBAIHN0YXRpYyBib29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBn
bG8KIAogTXV0ZXgmIG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgoKQogewotICAgIHN0YXRp
YyBNdXRleCYgc3RhdGljTXV0ZXggPSAqbmV3IE11dGV4OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoTXV0ZXgsIHN0YXRpY011dGV4LCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY011dGV4OwogfQog
CiBzdGF0aWMgRnVuY3Rpb25RdWV1ZSYgZnVuY3Rpb25RdWV1ZSgpCiB7Ci0gICAgc3RhdGljIEZ1
bmN0aW9uUXVldWUmIHN0YXRpY0Z1bmN0aW9uUXVldWUgPSAqbmV3IEZ1bmN0aW9uUXVldWU7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChGdW5jdGlvblF1ZXVlLCBzdGF0aWNGdW5jdGlvblF1ZXVl
LCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY0Z1bmN0aW9uUXVldWU7CiB9CiAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzODMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNSArNDIxLDkgQEAKICNkZWZpbmUgV1RGX1VT
RV9GQVNUX0NBTExfQ1RJX0FSR1VNRU5UIDEKICNkZWZpbmUgV1RGX1VTRV9DVElfQVJHVU1FTlQg
MQogI2VuZGlmCisgICAgCisjZGVmaW5lIERFRklORV9TVEFUSUNfTE9DQUwodHlwZSwgbmFtZSwg
YXJndW1lbnRzKSBcCisgICAgc3RhdGljIHR5cGUqIG5hbWUjI1B0ciA9IG5ldyB0eXBlIGFyZ3Vt
ZW50czsgXAorICAgIHR5cGUmIG5hbWUgPSAqbmFtZSMjUHRyCiAKICNlbmRpZiAvKiBXVEZfUGxh
dGZvcm1faCAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3Bw
CShyZXZpc2lvbiAzODMzOSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
ICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybS5oIgogI2luY2x1ZGUgIlRo
cmVhZGluZy5oIgogCiAjaWYgVVNFKFBUSFJFQURTKQpAQCAtNDAsNiArNDEsOCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAordHlwZWRlZiBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRf
dD4gVGhyZWFkTWFwOworCiBzdGF0aWMgTXV0ZXgqIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRp
Y011dGV4OwogCiAjaWYgIVBMQVRGT1JNKERBUldJTikKQEAgLTQ4LDcgKzUxLDcgQEAgc3RhdGlj
IFRocmVhZElkZW50aWZpZXIgbWFpblRocmVhZElkZW50aQogCiBzdGF0aWMgTXV0ZXgmIHRocmVh
ZE1hcE11dGV4KCkKIHsKLSAgICBzdGF0aWMgTXV0ZXgmIG11dGV4ID0gKm5ldyBNdXRleDsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwogICAgIHJldHVybiBtdXRl
eDsKIH0KIApAQCAtNzYsOSArNzksOSBAQCB2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpY011CiAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgtPnVubG9jaygp
OwogfQogCi1zdGF0aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+JiB0aHJl
YWRNYXAoKQorc3RhdGljIFRocmVhZE1hcCYgdGhyZWFkTWFwKCkKIHsKLSAgICBzdGF0aWMgSGFz
aE1hcDxUaHJlYWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+JiBtYXAgPSAqbmV3IEhhc2hNYXA8VGhy
ZWFkSWRlbnRpZmllciwgcHRocmVhZF90PjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRocmVh
ZE1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtOTcsNyArMTAwLDcgQEAg
c3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckJ5UHRocgogewogICAgIE11dGV4TG9j
a2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKIAotICAgIEhhc2hNYXA8VGhyZWFkSWRlbnRp
ZmllciwgcHRocmVhZF90Pjo6aXRlcmF0b3IgaSA9IHRocmVhZE1hcCgpLmJlZ2luKCk7CisgICAg
VGhyZWFkTWFwOjppdGVyYXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4oKTsKICAgICBmb3IgKDsg
aSAhPSB0aHJlYWRNYXAoKS5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmIChwdGhyZWFkX2VxdWFs
KGktPnNlY29uZCwgcHRocmVhZEhhbmRsZSkpCiAgICAgICAgICAgICByZXR1cm4gaS0+Zmlyc3Q7
CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzgzNDApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3MCBAQAorMjAwOC0xMS0xMiAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTAKKyAgICAgICAg
UmVtb3ZlIHVzZSBvZiBzdGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4
aXQgdGltZSAoZGVzdHJ1Y3RvcnMpCisgICAgICAgIAorICAgICAgICBDcmVhdGUgREVGSU5FX1NU
QVRJQ19MT0NBTCBtYWNyby4gQ2hhbmdlIHN0YXRpYyBsb2NhbCBvYmplY3RzIHRvIGxlYWsgdG8g
YXZvaWQKKyAgICAgICAgZXhpdC10aW1lIGRlc3RydWN0b3IuIFVwZGF0ZSBjb2RlIHRoYXQgd2Fz
IGNoYW5nZWQgdG8gZml4IHRoaXMgaXNzdWUgdGhhdCByYW4KKyAgICAgICAgaW50byBhIGdjYyBi
dWcgKDxyZGFyOi8vcHJvYmxlbS82MzU0Njk2PiBDb2RlZ2VuIGlzc3VlIHdpdGggQysrIHN0YXRp
YyByZWZlcmVuY2UgCisgICAgICAgIGluIGdjYyBidWlsZCA1NDY1KS4gQWxzbyB0eXBkZWZzIGZv
ciB0ZW1wbGF0ZSB0eXBlcyBuZWVkZWQgdG8gYmUgYWRkZWQgaW4gc29tZQorICAgICAgICBjYXNl
cyBzbyB0aGUgdHlwZSBjb3VsZCBtYWtlIGl0IHRocm91Z2ggdGhlIG1hY3JvIHN1Y2Nlc3NmdWxs
eS4KKyAgICAgICAgCisgICAgICAgIEJhc2ljYWxseSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAg
ICBzdGF0aWMgVCBtOworICAgICAgICBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFQsIG0sICgpKTsKKyAgICAgICAgCisgICAgICAgIEFsc28gYW55IGNvZGUgb2YgdGhlIGZv
cm06CisgICAgICAgIHN0YXRpYyBUJiBtID0gKm5ldyBUOworICAgICAgICBhbHNvIGJlY29tZXM6
CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVCwgbSwgKCkpOworCisgICAgICAgICogYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjQ29udHJvbGxl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OndyYXBwZXJTZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2Jq
ZWN0V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVycyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6d3JhcHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5lZWRzWW91VHViZVF1aXJrKToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9yb290LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnJvb3RPYmpl
Y3RTZXQpOgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbml0U2hvcnRoYW5kTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5FdmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByaW50RXZhbCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
Ojppc1NWRzEwRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjppc1NWRzExRmVhdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoYXNQ
cmVmaXhOYW1lc3BhY2VNaXNtYXRjaCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UpOgorICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3R5bGVTcGFuQ2xhc3NTdHJpbmcpOgorICAgICAgICAqIGVkaXRpbmcvSFRNTEludGVyY2hhbmdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRlbnRCbG9ja3F1b3RlU3RyaW5n
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
Ojppc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKToKKyAgICAgICAgKiBlZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1dpdGhSZWJhbGFuY2VkV2hp
dGVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpub25CcmVha2luZ1NwYWNlU3RyaW5nKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRFc2NhcGVkQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRBZGROYW1lc3BhY2VBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGVuZE5hbWVzcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRTdGFydE1hcmt1
cCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJrdXApOgorICAgICAgICAqIGh0bWwvSFRN
TEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVsZW1lbnQ6
OnR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OmlzUmVjb2duaXplZFRhZ05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
aW5saW5lVGFnTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpibG9ja1RhZ0xpc3QpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RmllbGRTZXRFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZSk6CisgICAgICAg
ICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MS2V5
Z2VuRWxlbWVudDo6dHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGVnZW5kRWxlbWVudDo6dHlwZSk6CisgICAgICAgICog
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRH
cm91cEVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjpnZXRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmlzSGVhZGVyVGFnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQYXJzZXI6OmlzUmVzaWR1YWxTdHlsZVRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGFyc2VyOjppc0FmZmVjdGVkQnlSZXNpZHVhbFN0eWxlKToKKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxl
Y3RFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dHlwZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm0pOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm9maWxlQ2FjaGUpOgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZU5vZGVDYWNoZSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsU2NoZW1lcyk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhY2hlU3RvcmFnZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZU1JTUVUeXBl
cyk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hp
dmVNSU1FVHlwZXMpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdTdGF0ZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6a2Vl
cEFsaXZlU2V0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6Z3JvdXBOYW1lKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdl
L21hYy9GcmFtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ0V4cEZvckxhYmVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGFua1VSTCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFsdGVybmF0ZUZhbWlseU5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldFNp
bWlsYXJGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0
TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0N1cnNvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtOYW1lZEN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpwb2ludGVyQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmhhbmRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bW92ZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjp2ZXJ0aWNhbFRleHRDdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2VsbEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjphbGlhc0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjp6b29t
SW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6em9vbU91dEN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjb3B5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vbmVDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJvZ3Jlc3NDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9Ecm9w
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vdEFsbG93ZWRDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6aUJlYW1DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6d2FpdEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpoZWxwQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3RSZXNp
emVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhSZXNpemVDdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6bm9ydGhFYXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5v
cnRoV2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aFJlc2l6ZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpzb3V0aEVhc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6c291dGhXZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Ondlc3RS
ZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhTb3V0aFJlc2l6ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjplYXN0V2VzdFJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
bm9ydGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbHVt
blJlc2l6ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpyb3dSZXNpemVDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Z3JhYkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpncmFiYmluZ0N1
cnNvcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhyZWFkQ2hlY2subW06CisgICAgICAgIChXZWJD
b3JlUmVwb3J0VGhyZWFkVmlvbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ldHdvcmtTdGF0ZU5v
dGlmaWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmdldFN0cmVhbUZvcm1EYXRhTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OmdldFN0cmVhbVJlc291cmNlSGFuZGxlTWFwKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kaW5nOjpp
c0phcGFuZXNlKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1
bGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGludWF0aW9uT3V0bGluZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjphZGRDb250aW51YXRpb25XaXRoT3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25PdXRsaW5lcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlck1hcHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
SXRlbTo6bWFya2VyVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJT
Y3JvbGxiYXJUaGVtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnN5c3RlbUZvbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9iaWRpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVj
a0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9h
cmRSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJk
UmVnaW9ucyk6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpndWlkTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZFRvVmVyc2lvbk1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpndWlkVG9EYXRhYmFzZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFi
YXNlVmVyc2lvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0VmVyc2lvbkZy
b21EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZEZvck9yaWdpbkFuZE5hbWUpOgorICAgICAg
ICAqIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpub3RpZmljYXRpb25NdXRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZmljYXRpb25RdWV1ZSk6CisgICAgICAgICogc3Rv
cmFnZS9Mb2NhbFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxTdG9yYWdlTWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJvdGF0ZU1vZGUpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmNhbGNNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxl
bWVudDo6aXNBZGRpdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
Ojppc0FjY3VtdWxhdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UpOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRT
Y3JpcHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTdHls
ZVR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3R5bGVFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxl
RWxlbWVudDo6bWVkaWEpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NNSUxFbGVtZW50OjpmaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50
OjpyZXBlYXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6bm90aWZ5
RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsaWVudE1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXJr
ZXI6OmRyYXcpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW06OlByZWZsaWdodFJlc3VsdENhY2hlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmbGlnaHRSZXN1bHRDYWNoZSk6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRQcmVmbGlnaHRSZXN1bHRDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU2FmZVJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNPbkFjY2Vzc0Nv
bnRyb2xSZXNwb25zZUhlYWRlcldoaXRlbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KToKKyAgICAgICAgKiB4bWwvWFBh
dGhFeHByZXNzaW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RXhwcmVzc2lv
bjo6ZXZhbHVhdGlvbkNvbnRleHQpOgorICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6c2V0VXBBeGlzTmFtZXNNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6WFBhdGg6OmlzQXhpc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmlzTm9k
ZVR5cGVOYW1lKToKKyAgICAgICAgKiB4bWwvWFBhdGhWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6VmFsdWU6OnRvTm9kZVNldCk6CisKIDIwMDgtMTEtMTIgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBI
eWF0dApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzgz
MzkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHZvaWQqIGNvbGxlY3Qodm9pZCopCiAKIEdDQ29u
dHJvbGxlciYgZ2NDb250cm9sbGVyKCkKIHsKLSAgICBzdGF0aWMgR0NDb250cm9sbGVyIHN0YXRp
Y0dDQ29udHJvbGxlcjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdDQ29udHJvbGxlciwgc3Rh
dGljR0NDb250cm9sbGVyLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY0dDQ29udHJvbGxlcjsKIH0K
IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMzgzMzkp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDEwICs5NywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlV3JhcHBlcnMoY29u
c3QgCiBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiYgd3JhcHBlclNldCgpCiB7CiAjaWYgRU5B
QkxFKFdPUktFUlMpCi0gICAgc3RhdGljIFRocmVhZFNwZWNpZmljPEhhc2hTZXQ8RE9NT2JqZWN0
Kj4gPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGhyZWFkU3Bl
Y2lmaWM8SGFzaFNldDxET01PYmplY3QqPiA+LCBzdGF0aWNXcmFwcGVyU2V0LCAoKSk7CiAgICAg
cmV0dXJuICpzdGF0aWNXcmFwcGVyU2V0OwogI2Vsc2UKLSAgICBzdGF0aWMgSGFzaFNldDxET01P
YmplY3QqPiBzdGF0aWNXcmFwcGVyU2V0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxET01PYmplY3QqPiwgc3RhdGljV3JhcHBlclNldCwgKCkpOwogICAgIHJldHVybiBzdGF0aWNX
cmFwcGVyU2V0OwogI2VuZGlmCiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dGVkT2JqZWN0V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCB0eXBlZGVmIEhhc2hNYXA8SlNHbG9iYWxPYmplY3QqLCBXcmFwcGVy
CiAKIHN0YXRpYyBHbG9iYWxPYmplY3RXcmFwcGVyTWFwJiB3cmFwcGVycygpCiB7Ci0gICAgc3Rh
dGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAgbWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R2xvYmFsT2JqZWN0V3JhcHBlck1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNhbGxiYWNrV3Jh
cHBlci5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAg
dHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgSlNJbnNwZWN0b3JDYQogCiBzdGF0aWMgV3JhcHBl
ck1hcCYgd3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBXcmFwcGVyTWFwIG1hcDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFdyYXBwZXJNYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCShyZXZp
c2lvbiAzODMzOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBib29sIG5lZWRzWW91VHVi
ZVF1aXJrKEV4ZWNTdGF0ZSoKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGV4ZWMtPmZ1bmN0
aW9uKCk7CiAgICAgaWYgKCFmdW5jdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0
YXRpYyBjb25zdCBJZGVudGlmaWVyJiBpc1dpbmRvd3NGdW5jdGlvbk5hbWUgPSAqbmV3IElkZW50
aWZpZXIoZXhlYywgImlzV2luZG93cyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSWRlbnRp
ZmllciwgaXNXaW5kb3dzRnVuY3Rpb25OYW1lLCAoZXhlYywgImlzV2luZG93cyIpKTsKICAgICBp
ZiAoZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSgpICE9IGlzV2luZG93c0Z1bmN0aW9uTmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBib29sIG5lZWRz
WW91VHViZVF1aXJrKEV4ZWNTdGF0ZSoKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxp
bmdFeGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3QgSWRlbnRpZmllciYgaXNTYWZhcmlGdW5jdGlvbk5h
bWUgPSAqbmV3IElkZW50aWZpZXIoZXhlYywgImlzU2FmYXJpIik7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChJZGVudGlmaWVyLCBpc1NhZmFyaUZ1bmN0aW9uLCAoZXhlYywgImlzU2FmYXJpIikp
OwogICAgIEpTVmFsdWUqIGlzU2FmYXJpRnVuY3Rpb24gPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qo
aXNTYWZhcmlGdW5jdGlvbk5hbWUpOwogICAgIGlmIChpc1NhZmFyaUZ1bmN0aW9uICE9IGNhbGxp
bmdGdW5jdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9yb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jv
b3QuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgdHlwZWRlZiBIYXNoU2V0PFJvb3RP
YmplY3QqPiBSb290T2JqZWN0UwogCiBzdGF0aWMgUm9vdE9iamVjdFNldCogcm9vdE9iamVjdFNl
dCgpCiB7Ci0gICAgc3RhdGljIFJvb3RPYmplY3RTZXQgc3RhdGljUm9vdE9iamVjdFNldDsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFJvb3RPYmplY3RTZXQsIHN0YXRpY1Jvb3RPYmplY3RTZXQs
ICgpKTsKICAgICByZXR1cm4gJnN0YXRpY1Jvb3RPYmplY3RTZXQ7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDM4MzM5KQor
KysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDksOCArMzQ5LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50KiBtX3Byb3Bl
cnRpZXM7CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OworICAgIAordHlwZWRlZiBIYXNoTWFw
PGludCwgUHJvcGVydHlMb25naGFuZD4gU2hvcnRIYW5kTWFwOwogCi1zdGF0aWMgdm9pZCBpbml0
U2hvcnRoYW5kTWFwKEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiYgc2hvcnRoYW5kTWFw
KQorc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydEhhbmRNYXAmIHNob3J0aGFuZE1h
cCkKIHsKICAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBh
cnJheSkgXAogICAgICAgICBtYXAuc2V0KHByb3BJRCwgUHJvcGVydHlMb25naGFuZChhcnJheSwg
c2l6ZW9mKGFycmF5KSAvIHNpemVvZihhcnJheVswXSkpKQpAQCAtNTAwLDggKzUwMiw4IEBAIHN0
YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoSGFzaE1hcDxpbnQKIFN0cmluZyBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGJvb2wgbm90
aWZ5Q2hhbmdlZCwgYm9vbCByZXR1cm5UZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBl
YyA9IDA7Ci0KLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+IHNob3J0
aGFuZE1hcDsKKyAgICAKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0SGFuZE1hcCwgc2hv
cnRoYW5kTWFwLCAoKSk7CiAgICAgaWYgKHNob3J0aGFuZE1hcC5pc0VtcHR5KCkpCiAgICAgICAg
IGluaXRTaG9ydGhhbmRNYXAoc2hvcnRoYW5kTWFwKTsKIApJbmRleDogV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw3ICs2ODYsNyBAQCBTdHJpbmcgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zCiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxp
c3Qtc3R5bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmVjdFBhcmVuKCJy
ZWN0KCIpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHJlY3RQYXJl
biwgKCJyZWN0KCIpKTsKIAogICAgICAgICAgICAgUmVjdCogcmVjdFZhbCA9IGdldFJlY3RWYWx1
ZSgpOwogICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CkBAIC03MDksOSArNzA5LDkg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29ucwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09M
T1I6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgY29tbWFTcGFjZSgiLCAiKTsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmdiUGFyZW4oInJnYigiKTsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmdiYVBhcmVuKCJyZ2JhKCIpOworICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbW1hU3BhY2UsICgiLCAiKSk7CisgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmdiUGFyZW4sICgicmdiKCIpKTsK
KyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCByZ2JhUGFyZW4sICgicmdi
YSgiKSk7CiAKICAgICAgICAgICAgIFJHQkEzMiByZ2JDb2xvciA9IG1fdmFsdWUucmdiY29sb3I7
CiAgICAgICAgICAgICBpZiAobV90eXBlID09IENTU19QQVJTRVJfSEVYQ09MT1IpCkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNzUgKzYyLDc1IEBAIHZvaWQgQ1NTU2VsZWN0b3I6
OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBpZiAobV9tYXRjaCAhPSBQc2V1ZG9DbGFzcyAm
JiBtX21hdGNoICE9IFBzZXVkb0VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgYWN0aXZlKCJhY3RpdmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGFmdGVyKCJhZnRlciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYW55TGluaygiLXdlYmtp
dC1hbnktbGluayIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgYXV0b2ZpbGwoIi13ZWJraXQt
YXV0b2ZpbGwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGJlZm9yZSgiYmVmb3JlIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBjaGVja2VkKCJjaGVja2VkIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBmaWxlVXBsb2FkQnV0dG9uKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZGlzYWJsZWQoImRpc2FibGVkIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyByZWFkT25seSgicmVhZC1vbmx5Iik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyByZWFkV3JpdGUoInJlYWQtd3JpdGUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGRyYWcoIi13ZWJraXQtZHJhZyIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZHJhZ0FsaWFz
KCIta2h0bWwtZHJhZyIpOyAvLyB3YXMgZG9jdW1lbnRlZCB3aXRoIHRoaXMgbmFtZSBpbiBBcHBs
ZSBkb2N1bWVudGF0aW9uLCBzbyBrZWVwIGFuIGFsaWFzCi0gICAgc3RhdGljIEF0b21pY1N0cmlu
ZyBlbXB0eSgiZW1wdHkiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGVuYWJsZWQoImVuYWJs
ZWQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGZpcnN0Q2hpbGQoImZpcnN0LWNoaWxkIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdExldHRlcigiZmlyc3QtbGV0dGVyIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdExpbmUoImZpcnN0LWxpbmUiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGZpcnN0T2ZUeXBlKCJmaXJzdC1vZi10eXBlIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBmdWxsUGFnZU1lZGlhKCItd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRoQ2hpbGQoIm50aC1jaGlsZCgiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIG50aE9mVHlwZSgibnRoLW9mLXR5cGUoIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBudGhMYXN0Q2hpbGQoIm50aC1sYXN0LWNoaWxkKCIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgbnRoTGFzdE9mVHlwZSgibnRoLWxhc3Qtb2YtdHlwZSgiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGZvY3VzKCJmb2N1cyIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
aG92ZXIoImhvdmVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBpbmRldGVybWluYXRlKCJp
bmRldGVybWluYXRlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBpbnB1dFBsYWNlaG9sZGVy
KCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBs
YXN0Q2hpbGQoImxhc3QtY2hpbGQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGxhc3RPZlR5
cGUoImxhc3Qtb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGluaygibGluayIp
OwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFuZygibGFuZygiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIG1lZGlhQ29udHJvbHNQYW5lbCgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc011dGVCdXR0b24oIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIG1lZGlhQ29udHJvbHNQbGF5QnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXkt
YnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzVGltZURpc3Bs
YXkoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5Iik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzVGltZWxpbmUoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dGltZWxpbmUiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNTZWVrQmFj
a0J1dHRvbigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzU2Vla0ZvcndhcmRCdXR0b24oIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgbWVkaWFDb250cm9sc0Z1bGxzY3JlZW5CdXR0b24oIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG5vdFN0
cigibm90KCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgb25seUNoaWxkKCJvbmx5LWNoaWxk
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBvbmx5T2ZUeXBlKCJvbmx5LW9mLXR5cGUiKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJlc2l6ZXIoIi13ZWJraXQtcmVzaXplciIpOwotICAg
IHN0YXRpYyBBdG9taWNTdHJpbmcgcm9vdCgicm9vdCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgc2Nyb2xsYmFyKCItd2Via2l0LXNjcm9sbGJhciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgc2Nyb2xsYmFyQnV0dG9uKCItd2Via2l0LXNjcm9sbGJhci1idXR0b24iKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhckNvcm5lcigiLXdlYmtpdC1zY3JvbGxiYXItY29ybmVy
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJUaHVtYigiLXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhclRyYWNrKCIt
d2Via2l0LXNjcm9sbGJhci10cmFjayIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2Nyb2xs
YmFyVHJhY2tQaWVjZSgiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2stcGllY2UiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIHNlYXJjaENhbmNlbEJ1dHRvbigiLXdlYmtpdC1zZWFyY2gtY2FuY2Vs
LWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VhcmNoRGVjb3JhdGlvbigiLXdl
YmtpdC1zZWFyY2gtZGVjb3JhdGlvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VhcmNo
UmVzdWx0c0RlY29yYXRpb24oIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIpOwot
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2VhcmNoUmVzdWx0c0J1dHRvbigiLXdlYmtpdC1zZWFy
Y2gtcmVzdWx0cy1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNlbGVjdGlvbigi
c2VsZWN0aW9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzbGlkZXJUaHVtYigiLXdlYmtp
dC1zbGlkZXItdGh1bWIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRhcmdldCgidGFyZ2V0
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB2aXNpdGVkKCJ2aXNpdGVkIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyB3aW5kb3dJbmFjdGl2ZSgid2luZG93LWluYWN0aXZlIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBkZWNyZW1lbnQoImRlY3JlbWVudCIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgaW5jcmVtZW50KCJpbmNyZW1lbnQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIHN0YXJ0KCJzdGFydCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW5kKCJlbmQiKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGhvcml6b250YWwoImhvcml6b250YWwiKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIHZlcnRpY2FsKCJ2ZXJ0aWNhbCIpOwotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgZG91YmxlQnV0dG9uKCJkb3VibGUtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21p
Y1N0cmluZyBzaW5nbGVCdXR0b24oInNpbmdsZS1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIG5vQnV0dG9uKCJuby1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGNv
cm5lclByZXNlbnQoImNvcm5lci1wcmVzZW50Iik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGFjdGl2ZSwgKCJhY3RpdmUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGFmdGVyLCAoImFmdGVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhbnlMaW5rLCAoIi13ZWJraXQtYW55LWxpbmsiKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGF1dG9maWxsLCAoIi13ZWJraXQtYXV0b2Zp
bGwiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGJlZm9yZSwgKCJi
ZWZvcmUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoZWNrZWQs
ICgiY2hlY2tlZCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmls
ZVVwbG9hZEJ1dHRvbiwgKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGlzYWJsZWQsICgiZGlzYWJsZWQiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlYWRPbmx5LCAoInJlYWQtb25s
eSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZFdyaXRlLCAo
InJlYWQtd3JpdGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRy
YWcsICgiLXdlYmtpdC1kcmFnIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBkcmFnQWxpYXMsICgiLWtodG1sLWRyYWciKSk7IC8vIHdhcyBkb2N1bWVudGVkIHdpdGgg
dGhpcyBuYW1lIGluIEFwcGxlIGRvY3VtZW50YXRpb24sIHNvIGtlZXAgYW4gYWxpYQorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbXB0eSwgKCJlbXB0eSIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZW5hYmxlZCwgKCJlbmFibGVkIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdENoaWxkLCAoImZpcnN0
LWNoaWxkIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdExl
dHRlciwgKCJmaXJzdC1sZXR0ZXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGZpcnN0TGluZSwgKCJmaXJzdC1saW5lIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBmaXJzdE9mVHlwZSwgKCJmaXJzdC1vZi10eXBlIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsUGFnZU1lZGlhLCAoIi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBudGhDaGlsZCwgKCJudGgtY2hpbGQoIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBudGhPZlR5cGUsICgibnRoLW9mLXR5cGUoIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBudGhMYXN0Q2hpbGQsICgibnRoLWxhc3QtY2hpbGQoIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBudGhMYXN0T2ZUeXBlLCAo
Im50aC1sYXN0LW9mLXR5cGUoIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBmb2N1cywgKCJmb2N1cyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaG92ZXIsICgiaG92ZXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGluZGV0ZXJtaW5hdGUsICgiaW5kZXRlcm1pbmF0ZSIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5wdXRQbGFjZWhvbGRlciwgKCItd2Via2l0LWlucHV0
LXBsYWNlaG9sZGVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBs
YXN0Q2hpbGQsICgibGFzdC1jaGlsZCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbGFzdE9mVHlwZSwgKCJsYXN0LW9mLXR5cGUiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGxpbmssICgibGluayIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbGFuZywgKCJsYW5nKCIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgbWVkaWFDb250cm9sc1BhbmVsLCAoIi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGFuZWwiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IG1lZGlhQ29udHJvbHNNdXRlQnV0dG9uLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1i
dXR0b24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1lZGlhQ29u
dHJvbHNQbGF5QnV0dG9uLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1lZGlhQ29udHJvbHNUaW1l
RGlzcGxheSwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheSIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbWVkaWFDb250cm9sc1RpbWVsaW5lLCAo
Ii13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG1lZGlhQ29udHJvbHNTZWVrQmFja0J1dHRvbiwgKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIG1lZGlhQ29udHJvbHNTZWVrRm9yd2FyZEJ1dHRvbiwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24iKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1lZGlhQ29udHJvbHNGdWxsc2NyZWVuQnV0dG9uLCAo
Ii13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24iKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5vdFN0ciwgKCJub3QoIikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvbmx5Q2hpbGQsICgib25seS1jaGlsZCIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb25seU9mVHlwZSwgKCJvbmx5
LW9mLXR5cGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc2l6
ZXIsICgiLXdlYmtpdC1yZXNpemVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCByb290LCAoInJvb3QiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHNjcm9sbGJhciwgKCItd2Via2l0LXNjcm9sbGJhciIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2Nyb2xsYmFyQnV0dG9uLCAoIi13ZWJraXQtc2Nyb2xs
YmFyLWJ1dHRvbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2Ny
b2xsYmFyQ29ybmVyLCAoIi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2Nyb2xsYmFyVGh1bWIsICgiLXdlYmtpdC1zY3Jv
bGxiYXItdGh1bWIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNj
cm9sbGJhclRyYWNrLCAoIi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXJUcmFja1BpZWNlLCAoIi13ZWJraXQt
c2Nyb2xsYmFyLXRyYWNrLXBpZWNlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBzZWFyY2hDYW5jZWxCdXR0b24sICgiLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRv
biIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VhcmNoRGVjb3Jh
dGlvbiwgKCItd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbiwgKCItd2Via2l0LXNl
YXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIHNlYXJjaFJlc3VsdHNCdXR0b24sICgiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1i
dXR0b24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGlv
biwgKCJzZWxlY3Rpb24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IHNsaWRlclRodW1iLCAoIi13ZWJraXQtc2xpZGVyLXRodW1iIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0YXJnZXQsICgidGFyZ2V0IikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB2aXNpdGVkLCAoInZpc2l0ZWQiKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHdpbmRvd0luYWN0aXZlLCAoIndpbmRvdy1p
bmFjdGl2ZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVjcmVt
ZW50LCAoImRlY3JlbWVudCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaW5jcmVtZW50LCAoImluY3JlbWVudCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgc3RhcnQsICgic3RhcnQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGVuZCwgKCJlbmQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGhvcml6b250YWwsICgiaG9yaXpvbnRhbCIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgdmVydGljYWwsICgidmVydGljYWwiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRvdWJsZUJ1dHRvbiwgKCJkb3VibGUtYnV0dG9u
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzaW5nbGVCdXR0b24s
ICgic2luZ2xlLWJ1dHRvbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgbm9CdXR0b24sICgibm8tYnV0dG9uIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBjb3JuZXJQcmVzZW50LCAoImNvcm5lci1wcmVzZW50IikpOwogCiAgICAgYm9v
bCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVkby1lbGVtZW50CiAgICAgYm9vbCBjb21wYXQgPSBm
YWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBhdGJpbGl0eSBtb2RlCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcyLDEzICszNzIsMTMgQEAgc3RhdGljIGJv
b2wgZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdAogCiBzdGF0aWMgY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3Igc3RhdGljU2NyZWVuRXZhbCgic2NyZWVuIik7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChNZWRpYVF1ZXJ5RXZhbHVhdG9yLCBzdGF0aWNTY3JlZW5FdmFsLCAoInNjcmVlbiIpKTsK
ICAgICByZXR1cm4gc3RhdGljU2NyZWVuRXZhbDsKIH0KIAogc3RhdGljIGNvbnN0IE1lZGlhUXVl
cnlFdmFsdWF0b3ImIHByaW50RXZhbCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3Igc3RhdGljUHJpbnRFdmFsKCJwcmludCIpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoTWVkaWFRdWVyeUV2YWx1YXRvciwgc3RhdGljUHJpbnRFdmFsLCAoInByaW50IikpOwogICAg
IHJldHVybiBzdGF0aWNQcmludEV2YWw7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmIEVOQUJMRShTVkcpCiAKLXN0YXRpYyB2b2lkIGFkZFN0cmluZyhIYXNoU2V0PFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPiYgc2V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCit0eXBlZGVmIEhh
c2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IEZlYXR1cmVTZXQ7CisKK3N0YXRpYyB2b2lk
IGFkZFN0cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBz
ZXQuYWRkKHN0cmluZyk7CiB9CkBAIC02NCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmlu
ZyhIYXNoU2V0PFN0cmluZywgQ2EKIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0
cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwot
ICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBzdmdGZWF0dXJlczsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7CiAg
ICAgaWYgKCFpbml0aWFsaXplZCkgewogI2lmIEVOQUJMRShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZH
X0ZPUkVJR05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUikgJiYgRU5BQkxFKFNWR19GT05U
UykKICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC04OSw3ICs5MSw3
IEBAIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyAKIHN0YXRpYyBib29s
IGlzU1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPiBzdmdGZWF0dXJlczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVT
ZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICAv
LyBTYWRseSwgd2UgY2Fubm90IGNsYWltIHRvIGltcGxlbWVudCBhbnkgb2YgdGhlIFNWRyAxLjEg
Z2VuZXJpYyBmZWF0dXJlIHNldHMKICAgICAgICAgLy8gbGFjayBvZiBGb250IGFuZCBGaWx0ZXIg
c3VwcG9ydC4KQEAgLTI3NCw3ICsyNzYsNyBAQCBib29sIERPTUltcGxlbWVudGF0aW9uOjppc1hN
TE1JTUVUeXBlKGNvCiAgICAgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3htbCIgfHwgbWltZVR5cGUg
PT0gImFwcGxpY2F0aW9uL3htbCIgfHwgbWltZVR5cGUgPT0gInRleHQveHNsIikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHZhbGlkQ2hhcnMgPSAiWzAtOWEt
ekEtWl9cXC0rfiEkXFxee318LiUnYCMmKl0iOyAvLyBwZXIgUkZDczogMzAyMywgMjA0NQotICAg
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB4bWxUeXBlUmVnRXhwKFN0cmluZygiXiIpICsgdmFs
aWRDaGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIik7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgeG1sVHlwZVJlZ0V4cCwgKFN0cmluZygiXiIp
ICsgdmFsaWRDaGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIikpOwogICAgIHJl
dHVybiB4bWxUeXBlUmVnRXhwLm1hdGNoKG1pbWVUeXBlKSA+IC0xOwogfQogCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEzLDkgKzcxMyw5IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFk
b3B0Tm9kZShQYXMKIAogYm9vbCBEb2N1bWVudDo6aGFzUHJlZml4TmFtZXNwYWNlTWlzbWF0Y2go
Y29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyB4bWxuc05hbWVzcGFjZVVSSSgiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKTsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbG5zKCJ4bWxucyIpOwotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgeG1sKCJ4bWwiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgeG1sbnNOYW1lc3BhY2VVUkksICgiaHR0cDovL3d3dy53My5vcmcvMjAw
MC94bWxucy8iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhtbG5z
LCAoInhtbG5zIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4bWws
ICgieG1sIikpOwogCiAgICAgLy8gVGhlc2UgY2hlY2tzIGFyZSBmcm9tIERPTSBDb3JlIExldmVs
IDIsIGNyZWF0ZUVsZW1lbnROUwogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0yLUNvcmUvY29yZS5odG1sI0lELURvY0NyRWxOUwpJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDggQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3Vy
Y2VBdHRyaWJ1dAogLy8gSGVscGVyIGZ1bmN0aW9uCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEph
dmFTY3JpcHRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogewotICAgIHN0YXRpYyBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBsYW5ndWFnZXM7CisgICAgdHlwZWRlZiBI
YXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBMYW5ndWFnZVNldDsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKExhbmd1YWdlU2V0LCBsYW5ndWFnZXMsICgpKTsKICAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkgewogICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7CiAg
ICAgICAgIGxhbmd1YWdlcy5hZGQoImphdmFzY3JpcHQiKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAg
Ym9vbCBTdHlsZUNoYW5nZTo6Y3VycmVudGx5SGFzU3R5bGUoY29ucwogCiBzdGF0aWMgU3RyaW5n
ICZzdHlsZVNwYW5DbGFzc1N0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHlsZVNwYW5D
bGFzc1N0cmluZyA9IEFwcGxlU3R5bGVTcGFuQ2xhc3M7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHN0eWxlU3BhbkNsYXNzU3RyaW5nLCAoKEFwcGxlU3R5bGVTcGFuQ2xhc3MpKSk7
CiAgICAgcmV0dXJuIHN0eWxlU3BhbkNsYXNzU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2VkaXRpbmcv
SFRNTEludGVyY2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgewogCiBTdHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmcoKQogewotICAgIHN0YXRpYyBT
dHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmc7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGNvbnZlcnRlZFNwYWNlU3RyaW5nLCAoKSk7CiAgICAgaWYgKGNvbnZlcnRlZFNwYWNlU3Ry
aW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIGNvbnZlcnRlZFNwYWNlU3RyaW5nID0gIjxzcGFuIGNs
YXNzPVwiIjsKICAgICAgICAgY29udmVydGVkU3BhY2VTdHJpbmcgKz0gQXBwbGVDb252ZXJ0ZWRT
cGFjZTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkocmV2
aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHN0YXRpYyBTdHJpbmcgaW5kZW50QmxvY2txdW90ZVN0cmluZygpCiB7Ci0gICAgc3Rh
dGljIFN0cmluZyBzdHJpbmcgPSAid2Via2l0LWluZGVudC1ibG9ja3F1b3RlIjsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RyaW5nLCAoIndlYmtpdC1pbmRlbnQtYmxvY2txdW90
ZSIpKTsKICAgICByZXR1cm4gc3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
MTQgKzg5LDE0IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5l
Tm9kZShjb25zdCBOb2RlICpub2RlKQogewotICAgIHN0YXRpYyBTdHJpbmcgaW50ZXJjaGFuZ2VO
ZXdsaW5lQ2xhc3NTdHJpbmcoQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVDbGFzc1N0cmluZywgKEFwcGxl
SW50ZXJjaGFuZ2VOZXdsaW5lKSk7CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFt
ZShiclRhZykgJiYgCiAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEVsZW1lbnQgKj4obm9k
ZSktPmdldEF0dHJpYnV0ZShjbGFzc0F0dHIpID09IGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3Ry
aW5nOwogfQogCiBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNv
bnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0ZWRTcGFjZVNwYW5D
bGFzc1N0cmluZyhBcHBsZUNvbnZlcnRlZFNwYWNlKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmcsIChBcHBsZUNvbnZlcnRlZFNw
YWNlKSk7CiAgICAgcmV0dXJuIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiAKICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZShjbGFz
c0F0dHIpID09IGNvbnZlcnRlZFNwYWNlU3BhbkNsYXNzU3RyaW5nOwogfQpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw5ICszNjQsOSBAQCBpbnQgbWF4RGVl
cE9mZnNldChjb25zdCBOb2RlICpub2RlKQogCiBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRX
aGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0YXJ0SXNTdGFydE9mUGFyYWdy
YXBoLCBib29sIGVuZElzRW5kT2ZQYXJhZ3JhcGgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyB0d29T
cGFjZXMoIiAgIik7Ci0gICAgc3RhdGljIFN0cmluZyBuYnNwKCJceGEwIik7Ci0gICAgc3RhdGlj
IFN0cmluZyBwYXR0ZXJuKCIgXHhhMCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB0d29TcGFjZXMsICgiICAiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5i
c3AsICgiXHhhMCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGF0dGVybiwg
KCIgXHhhMCIpKTsKIAogICAgIFN0cmluZyByZWJhbGFuY2VkU3RyaW5nID0gc3RyaW5nOwogCkBA
IC0zOTMsNyArMzkzLDcgQEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpu
bwogCiBjb25zdCBTdHJpbmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIHN0YXRp
YyBTdHJpbmcgbm9uQnJlYWtpbmdTcGFjZVN0cmluZyA9IFN0cmluZygmbm9CcmVha1NwYWNlLCAx
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZywgKCZub0JyZWFrU3BhY2UsIDEpKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZzsKIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0
aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShWZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0g
YXR0ci5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBsYXN0Q29waWVkRnJvbSA9IDA7CiAKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIGFtcEVudGl0eSgiJmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nIGd0RW50aXR5KCImZ3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0
eSgiJmx0OyIpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcXVvdEVudGl0eSgiJnF1b3Q7Iik7
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBuYnNwRW50aXR5KCImbmJzcDsiKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYW1wRW50aXR5LCAoIiZhbXA7IikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBndEVudGl0eSwgKCImZ3Q7IikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBsdEVudGl0eSwgKCImbHQ7IikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBxdW90RW50aXR5LCAoIiZxdW90OyIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgbmJzcEVudGl0eSwgKCImbmJzcDsiKSk7CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSB1Y2hh
cnNbaV07CkBAIC0xNDIsMTAgKzE0MiwxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ29u
dGVudChWZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0gcmFuZ2Uuc2Vjb25kOwogICAgIHVuc2ln
bmVkIGxhc3RDb3BpZWRGcm9tID0gMDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGFt
cEVudGl0eSgiJmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCImZ3Q7
Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbmJzcEVudGl0eSgiJm5ic3A7Iik7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGFtcEVudGl0eSwgKCImYW1wOyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgZ3RFbnRpdHksICgiJmd0OyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgbHRFbnRpdHksICgiJmx0OyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgbmJzcEVudGl0eSwgKCImbmJzcDsiKSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHVjaGFyc1tpXTsKQEAgLTMxNiw4
ICszMTYsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VFbGVtKGNvbnN0CiBzdGF0
aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VBdHRyKGNvbnN0IEF0dHJpYnV0ZSogYXR0ciwgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nSW1wbCo+JiBuYW1lc3BhY2VzKQog
ewogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0cmlidXRlcyB0d2ljZQotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNVUkkgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94
bWxucy8iOwotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lIHhtbG5zQXR0cihudWxsQXRv
bSwgInhtbG5zIiwgeG1sbnNVUkkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCB4bWxuc1VSSSwgKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpKTtcCisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB4bWxuc0F0dHIsIChudWxsQXRvbSwg
InhtbG5zIiwgeG1sbnNVUkkpKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHhtbG5zQXR0cikg
ewogICAgICAgICBuYW1lc3BhY2VzLnNldChlbXB0eUF0b20uaW1wbCgpLCBhdHRyLT52YWx1ZSgp
LmltcGwoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0
aWMgdm9pZCBhcHBlbmROYW1lc3BhY2UoVmVjdG9yPFVDaGFyCiAgICAgQXRvbWljU3RyaW5nSW1w
bCogZm91bmROUyA9IG5hbWVzcGFjZXMuZ2V0KHByZSk7CiAgICAgaWYgKGZvdW5kTlMgIT0gbnMu
aW1wbCgpKSB7CiAgICAgICAgIG5hbWVzcGFjZXMuc2V0KHByZSwgbnMuaW1wbCgpKTsKLSAgICAg
ICAgc3RhdGljIGNvbnN0IFN0cmluZyB4bWxucygieG1sbnMiKTsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHhtbG5zLCAoInhtbG5zIikpOwogICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7CiAgICAgICAgIGFwcGVuZChyZXN1bHQsIHhtbG5zKTsKICAgICAgICAgaWYgKCFw
cmVmaXguaXNFbXB0eSgpKSB7CkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5k
U3RhcnRNYXJrdXAoVmVjdG9yPFVDaAogICAgICAgICAgICAgICAgIGlmIChjb252ZXJ0KQogICAg
ICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBD
U1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlLT5sZW5ndGgo
KSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVBy
ZWZpeCgiIHN0eWxlPVwiIik7CisgICAgICAgICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGFwcGVuZChyZXN1bHQsIHN0eWxlUHJlZml4KTsKICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kQXR0cmlidXRlVmFsdWUocmVzdWx0LCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRN
TCk7CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1wiJyk7CkBAIC03MDIsNyAr
NzAyLDcgQEAgU3RyaW5nIGpvaW5NYXJrdXBzKGNvbnN0IFZlY3RvcjxTdHJpbmc+IAogLy8gRklY
TUU6IEF0IGxlYXN0LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBu
b3QgYmUgaW5jbHVkZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKIFN0cmluZyBjcmVhdGVNYXJr
dXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2UgYW5ub3RhdGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIGludGVyY2hhbmdlTmV3bGluZVN0cmluZyA9IFN0cmluZygi
PGJyIGNsYXNzPVwiIikgKyBBcHBsZUludGVyY2hhbmdlTmV3bGluZSArICJcIj4iOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcsICgiPGJy
IGNsYXNzPVwiIiBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAiXCI+IikpOwogCiAgICAgaWYgKCFy
YW5nZSkKICAgICAgICAgcmV0dXJuICIiOwpAQCAtOTA1LDE0ICs5MDUsMTQgQEAgU3RyaW5nIGNy
ZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChzdHlsZS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmVj
dG9yPFVDaGFyPiBvcGVuVGFnOwotICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIGRpdlN0eWxlKCI8ZGl2IHN0eWxlPVwiIik7CisgICAgICAgICAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkaXZTdHlsZSwgKCI8ZGl2IHN0eWxlPVwiIikpOwogICAg
ICAgICAgICAgICAgICAgICBhcHBlbmQob3BlblRhZywgZGl2U3R5bGUpOwogICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvcGVuVGFnLCBzdHlsZS0+Y3NzVGV4dCgpLCBk
b2N1bWVudElzSFRNTCk7CiAgICAgICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCdcIicp
OwogICAgICAgICAgICAgICAgICAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwogICAgICAgICAgICAg
ICAgICAgICBwcmVNYXJrdXBzLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKIAotICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRpdkNsb3NlVGFnKCI8L2Rpdj4i
KTsKKyAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRpdkNs
b3NlVGFnLCAoIjwvZGl2PiIpKTsKICAgICAgICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBlbmQo
ZGl2Q2xvc2VUYWcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkBA
IC05MjksOCArOTI5LDggQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2Us
IAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgc3R5bGVT
cGFuT3BlbiA9IFN0cmluZygiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwi
IHN0eWxlPVwiIik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBzdHlsZVNwYW5DbG9zZSgiPC9z
cGFuPiIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAo
IjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIp
KTsKICAgICAKICAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQg
YWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCiAgICAgTm9kZSogcGFyZW50
T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysg
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
MTUgKzU3LDE1IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEJ1dHRvbkVsZW1lbnQ6OnQKIHsK
ICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIFNVQk1JVDogewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIpOworICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1Ym1pdCwgKCJzdWJtaXQiKSk7
CiAgICAgICAgICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQlVU
VE9OOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGJ1dHRvbigiYnV0
dG9uIik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYnV0
dG9uLCAoImJ1dHRvbiIpKTsKICAgICAgICAgICAgIHJldHVybiBidXR0b247CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBSRVNFVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyByZXNldCgicmVzZXQiKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCByZXNldCwgKCJyZXNldCIpKTsKICAgICAgICAgICAgIHJldHVybiByZXNldDsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMzgzMzkp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDgs
NyArODA4LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6Y2hpbGRBbGxvd2VkKE5vZGUgKm5ldwogLy8g
VGhpcyB1bmZvcnR1bmF0ZSBmdW5jdGlvbiBpcyBvbmx5IG5lZWRlZCB3aGVuIGNoZWNraW5nIGFn
YWluc3QgdGhlIERURC4gIE90aGVyIGxhbmd1YWdlcyAobGlrZSBTVkcpIHdvbid0IG5lZWQgdGhp
cy4KIGJvb2wgSFRNTEVsZW1lbnQ6OmlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4g
dGFnTGlzdDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+LCB0YWdMaXN0LCAoKSk7CiAgICAgaWYgKHRhZ0xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHNpemVfdCB0YWdDb3VudCA9IDA7CiAgICAgICAgIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiB0
YWdzID0gSFRNTE5hbWVzOjpnZXRIVE1MVGFncygmdGFnQ291bnQpOwpAQCAtODIyLDcgKzgyMiw3
IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmlzUmVjb2duaXplZFRhZ05hbWUoY28KIC8vIG5lZWQgdG8g
YmUgaW4gdGhlc2UgdHdvIGxpc3RzLgogSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGlubGlu
ZVRhZ0xpc3QoKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiB0YWdM
aXN0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4s
IHRhZ0xpc3QsICgpKTsKICAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgdGFn
TGlzdC5hZGQodHRUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdGFnTGlzdC5hZGQo
aVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwpAQCAtODgxLDcgKzg4MSw3IEBAIEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+KiBpbmxpbmVUYWdMaXMKIAogSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4qIGJsb2NrVGFnTGlzdCgpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+IHRhZ0xpc3Q7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiwgdGFnTGlzdCwgKCkpOwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICB0YWdMaXN0LmFkZChhZGRyZXNzVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAg
IHRhZ0xpc3QuYWRkKGJsb2NrcXVvdGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1
NSw3IEBAIGJvb2wgSFRNTEZpZWxkU2V0RWxlbWVudDo6aXNGb2N1c2FibGUoKSAKIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MRmllbGRTZXRFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGZpZWxkc2V0KCJmaWVsZHNldCIpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaWVsZHNldCwgKCJmaWVsZHNldCIpKTsKICAg
ICByZXR1cm4gZmllbGRzZXQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzMsNTMgKzM3Myw1MyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEhU
TUxJbnB1dEVsZW1lbnQ6OnR5CiAgICAgLy8gbmVlZHMgdG8gYmUgbG93ZXJjYXNlIGFjY29yZGlu
ZyB0byBET00gc3BlYwogICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBC
VVRUT046IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0dG9uKCJi
dXR0b24iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBi
dXR0b24sICgiYnV0dG9uIikpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbjsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENIRUNLQk9YOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIGNoZWNrYm94KCJjaGVja2JveCIpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGNoZWNrYm94LCAoImNoZWNrYm94IikpOwogICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrYm94OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRklMRTogewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWxlKCJmaWxlIik7CisgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsZSwgKCJmaWxlIikpOwog
ICAgICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBISURERU46
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgaGlkZGVuKCJoaWRkZW4i
KTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBoaWRkZW4s
ICgiaGlkZGVuIikpOwogICAgICAgICAgICAgcmV0dXJuIGhpZGRlbjsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIElNQUdFOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IGltYWdlKCJpbWFnZSIpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGltYWdlLCAoImltYWdlIikpOwogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgSVNJTkRFWDoKICAgICAgICAgICAgIHJldHVybiBlbXB0eUF0
b207CiAgICAgICAgIGNhc2UgUEFTU1dPUkQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcgcGFzc3dvcmQoInBhc3N3b3JkIik7CisgICAgICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgcGFzc3dvcmQsICgicGFzc3dvcmQiKSk7CiAgICAgICAg
ICAgICByZXR1cm4gcGFzc3dvcmQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBSQURJTzogewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyByYWRpbygicmFkaW8iKTsKKyAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByYWRpbywgKCJyYWRp
byIpKTsKICAgICAgICAgICAgIHJldHVybiByYWRpbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFJBTkdFOiB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJhbmdlKCJy
YW5nZSIpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJh
bmdlLCAoInJhbmdlIikpOwogICAgICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcgcmVzZXQoInJlc2V0Iik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgcmVzZXQsICgicmVzZXQiKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzZXQ7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBTRUFSQ0g6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcgc2VhcmNoKCJzZWFyY2giKTsKKyAgICAgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFyY2gsICgic2VhcmNoIikpOwogICAgICAgICAgICAg
cmV0dXJuIHNlYXJjaDsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNVQk1JVDogewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIpOworICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN1Ym1pdCwgKCJzdWJtaXQi
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
VEVYVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB0ZXh0KCJ0ZXh0
Iik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGV4dCwg
KCJ0ZXh0IikpOwogICAgICAgICAgICAgcmV0dXJuIHRleHQ7CiAgICAgICAgIH0KICAgICB9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBIVE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoRG9jCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTEtleWdlbkVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcga2V5Z2VuKCJrZXlnZW4iKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywga2V5Z2VuLCAoImtleWdlbiIpKTsKICAgICByZXR1cm4g
a2V5Z2VuOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM4MzM5KQorKysgV2ViQ29yZS9odG1sL0hUTUxMZWdlbmRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNyArNTgsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxMZWdlbmRFbGVtZW50Ojpj
cmVhdGVSCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTExlZ2VuZEVsZW1lbnQ6OnR5cGUoKSBj
b25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgbGVnZW5kKCJsZWdlbmQiKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGVnZW5kLCAoImxlZ2VuZCIp
KTsKICAgICByZXR1cm4gbGVnZW5kOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBib29sIEhUTUxPcHRH
cm91cEVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9w
dEdyb3VwRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyBvcHRncm91cCgib3B0Z3JvdXAiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgb3B0Z3JvdXAsICgib3B0Z3JvdXAiKSk7CiAgICAgcmV0dXJuIG9wdGdyb3VwOwog
fQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQor
KysgV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMsNyArNzMsNyBAQCBib29sIEhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvCiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTE9wdGlvbkVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgb3B0aW9uKCJvcHRpb24iKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb3B0aW9uLCAoIm9wdGlvbiIpKTsKICAgICBy
ZXR1cm4gb3B0aW9uOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCShyZXZpc2lvbiAzODMzOSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMyLDcg
KzgzMiw3IEBAIGJvb2wgSFRNTFBhcnNlcjo6bWFwQ3JlYXRlRXJyb3JDaGVjayhUb2sKIFBhc3NS
ZWZQdHI8Tm9kZT4gSFRNTFBhcnNlcjo6Z2V0Tm9kZShUb2tlbiogdCkKIHsKICAgICAvLyBJbml0
IG91ciBlcnJvciBoYW5kbGluZyB0YWJsZS4KLSAgICBzdGF0aWMgRnVuY3Rpb25NYXAgZ0Z1bmN0
aW9uTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIGdGdW5jdGlvbk1h
cCwgKCkpOwogICAgIGlmIChnRnVuY3Rpb25NYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdGdW5j
dGlvbk1hcC5zZXQoYVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpuZXN0ZWRD
cmVhdGVFcnJvckNoZWNrKTsKICAgICAgICAgZ0Z1bmN0aW9uTWFwLnNldChhZGRyZXNzVGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSwgJkhUTUxQYXJzZXI6OnBDbG9zZXJDcmVhdGVFcnJvckNoZWNrKTsK
QEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnByb2Nlc3NDbG9zZVRhZyhUb2tl
biogCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNIZWFkZXJUYWcoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBoZWFkZXJU
YWdzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4s
IGhlYWRlclRhZ3MsICgpKTsKICAgICBpZiAoaGVhZGVyVGFncy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaGVhZGVyVGFncy5hZGQoaDFUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgaGVh
ZGVyVGFncy5hZGQoaDJUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTk4Niw3ICs5ODYsNyBA
QCBib29sIEhUTUxQYXJzZXI6OmlzSW5saW5lKE5vZGUqIG5vZGUpIGNvCiAKIGJvb2wgSFRNTFBh
cnNlcjo6aXNSZXNpZHVhbFN0eWxlVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsK
LSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gcmVzaWR1YWxTdHlsZVRhZ3M7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiwgcmVz
aWR1YWxTdHlsZVRhZ3MsICgpKTsKICAgICBpZiAocmVzaWR1YWxTdHlsZVRhZ3MuaXNFbXB0eSgp
KSB7CiAgICAgICAgIHJlc2lkdWFsU3R5bGVUYWdzLmFkZChhVGFnLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiAgICAgICAgIHJlc2lkdWFsU3R5bGVUYWdzLmFkZChmb250VGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBib29sIEhUTUxQYXJzZXI6OmlzUmVzaWR1YWxT
dHlsZVRhZyhjb25zCiAKIGJvb2wgSFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1YWxTdHls
ZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRv
bWljU3RyaW5nSW1wbCo+IHVuYWZmZWN0ZWRUYWdzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHVuYWZmZWN0ZWRUYWdzLCAoKSk7CiAgICAgaWYg
KHVuYWZmZWN0ZWRUYWdzLmlzRW1wdHkoKSkgewogICAgICAgICB1bmFmZmVjdGVkVGFncy5hZGQo
Ym9keVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB1bmFmZmVjdGVkVGFncy5hZGQo
dGFibGVUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDggQEAgdm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6cmVjYWxjU3R5bGUoIFN0eQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxTZWxl
Y3RFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
IHNlbGVjdE11bHRpcGxlKCJzZWxlY3QtbXVsdGlwbGUiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIHNlbGVjdE9uZSgic2VsZWN0LW9uZSIpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzZWxlY3RNdWx0aXBsZSwgKCJzZWxlY3QtbXVsdGlwbGUiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdE9uZSwgKCJzZWxlY3Qt
b25lIikpOwogICAgIHJldHVybiBtX211bHRpcGxlID8gc2VsZWN0TXVsdGlwbGUgOiBzZWxlY3RP
bmU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDM4MzM5KQorKysgV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJl
YUVsZW1lbnQKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBl
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHRleHRhcmVhKCJ0ZXh0
YXJlYSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwg
KCJ0ZXh0YXJlYSIpKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NjIsMjAgKzg2MiwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBwbGF0Zm9ybShKU0NvbnRleHRS
ZWYgCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAg
c3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJtYWMtdGlnZXIiOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBwbGF0Zm9ybSwgKCJtYWMtdGlnZXIiKSk7CiAjZWxzZQotICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAibWFjLWxlb3BhcmQiOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwbGF0Zm9ybSwgKCJtYWMtbGVvcGFyZCIpKTsKICNlbmRp
ZgogI2VsaWYgUExBVEZPUk0oV0lOX09TKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZv
cm0gPSAid2luZG93cyI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHBsYXRmb3Jt
LCAoIndpbmRvd3MiKSk7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtID0gInF0IjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGxh
dGZvcm0sICgicXQiKSk7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgc3RhdGljIGNvbnN0IFN0
cmluZyBwbGF0Zm9ybSA9ICJndGsiOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBw
bGF0Zm9ybSwgKCJndGsiKSk7CiAjZWxpZiBQTEFURk9STShXWCkKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nIHBsYXRmb3JtID0gInd4IjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
cGxhdGZvcm0sICgid3giKSk7CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZv
cm0gPSAidW5rbm93biI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHBsYXRmb3Jt
LCAoInVua25vd24iKSk7CiAjZW5kaWYKIAogICAgIEpTVmFsdWVSZWYgcGxhdGZvcm1WYWx1ZSA9
IEpTVmFsdWVNYWtlU3RyaW5nKGN0eCwganNTdHJpbmdSZWYocGxhdGZvcm0pLmdldCgpKTsKSW5k
ZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNp
b24gMzgzMzkpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHR5cGVkZWYgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjpMaXN0ZW5lclMKIAogSmF2YVNjcmlwdERlYnVnU2VydmVyJiBKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXI6OnNoYXJlZCgpCiB7Ci0gICAgc3RhdGljIEphdmFTY3JpcHREZWJ1Z1NlcnZlciBz
ZXJ2ZXI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKYXZhU2NyaXB0RGVidWdTZXJ2ZXIsIHNl
cnZlciwgKCkpOwogICAgIHJldHVybiBzZXJ2ZXI7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rv
ci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9pbnNw
ZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3
IEBAIHR5cGVkZWYgSGFzaE1hcDxQcm9maWxlKiwgSlNPYmplY3QqPiBQcm8KIAogc3RhdGljIFBy
b2ZpbGVNYXAmIHByb2ZpbGVDYWNoZSgpCiB7IAotICAgIHN0YXRpYyBQcm9maWxlTWFwIHN0YXRp
Y1Byb2ZpbGVzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHJvZmlsZU1hcCwgc3RhdGljUHJv
ZmlsZXMsICgpKTsKICAgICByZXR1cm4gc3RhdGljUHJvZmlsZXM7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcAkocmV2aXNpb24gMzgzMzkp
CisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYgSGFzaE1hcDxQcm9maWxlTm9kZSosIEpT
T2JqZWN0Kj4KIAogc3RhdGljIFByb2ZpbGVOb2RlTWFwJiBwcm9maWxlTm9kZUNhY2hlKCkKIHsg
Ci0gICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwIHN0YXRpY1Byb2ZpbGVOb2RlczsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFByb2ZpbGVOb2RlTWFwLCBzdGF0aWNQcm9maWxlTm9kZXMsICgpKTsK
ICAgICByZXR1cm4gc3RhdGljUHJvZmlsZU5vZGVzOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiBjb25zdCB1bnNpZ25lZCBpbnQgY01heFBlbmRpbmdTb3VyY2VMZW5ndGhJbkxvd0Jh
bmR3aWR0aERpc3BsYXkgPSAxMjggKiAxMDI0OwogI2VuZGlmCiAKK3R5cGVkZWYgSGFzaFNldDxT
dHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gTG9jYWxTY2hlbWVzTWFwOworCiBzdHJ1Y3QgRm9ybVN1
Ym1pc3Npb24gewogICAgIGNvbnN0IGNoYXIqIGFjdGlvbjsKICAgICBTdHJpbmcgdXJsOwpAQCAt
MTE3MCw5ICsxMTcyLDkgQEAgYm9vbCBGcmFtZUxvYWRlcjo6YWxsb3dTdWJzdGl0dXRlRGF0YUFj
YwogICAgIHJldHVybiBsb2NhbExvYWRQb2xpY3kgIT0gRnJhbWVMb2FkZXI6OkFsbG93TG9jYWxM
b2Fkc0ZvckxvY2FsT25seTsKIH0KIAotc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+JiBsb2NhbFNjaGVtZXMoKQorc3RhdGljIExvY2FsU2NoZW1lc01hcCYgbG9jYWxTY2hl
bWVzKCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbG9j
YWxTY2hlbWVzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxTY2hlbWVzTWFwLCBsb2Nh
bFNjaGVtZXMsICgpKTsKIAogICAgIGlmIChsb2NhbFNjaGVtZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGxvY2FsU2NoZW1lcy5hZGQoImZpbGUiKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDM4MzM5
KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmVDb3B5TwogICAgIAogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIGNhY2hl
U3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIHN0b3JhZ2U7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSwgc3RvcmFn
ZSwgKCkpOwogICAgIAogICAgIHJldHVybiBzdG9yYWdlOwogfQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBQYXNzUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKFNoYXJlZEJ1ZmZlciopOwordHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+
IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBh
cmNoaXZlIGNsYXNzZXMgcmV0dXJuIFBhc3NSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3Nlcwog
Ly8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFwdG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVu
aWZvcm0gcmV0dXJuIHR5cGUuCkBAIC00OSw5ICs1MCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBB
cmNoaXZlQ2xhc3M+IHN0YXRpYyAKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUoYnVm
ZmVyKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlv
biosIENhc2VGb2xkaW5nSGFzaD4mIGFyY2hpdmVNSU1FVHlwZXMoKQorc3RhdGljIEFyY2hpdmVN
SU1FVHlwZXNNYXAmIGFyY2hpdmVNSU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+IG1pbWVUeXBl
czsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEFyY2hpdmVNSU1FVHlwZXNNYXAsIG1pbWVUeXBl
cywgKCkpOwogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgCiAgICAg
aWYgKGluaXRpYWxpemVkKQpAQCAtNzksOCArODAsOCBAQCBQYXNzUmVmUHRyPEFyY2hpdmU+IEFy
Y2hpdmVGYWN0b3J5OjpjcmVhCiB2b2lkIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJj
aGl2ZU1JTUVUeXBlcygpCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+JiBtaW1lVHlwZXMgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD46Oml0
ZXJhdG9yIGkgPSBhcmNoaXZlTUlNRVR5cGVzKCkuYmVnaW4oKTsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBDYXNlRm9sZGluZ0hhc2g+OjppdGVyYXRvciBl
bmQgPSBhcmNoaXZlTUlNRVR5cGVzKCkuZW5kKCk7CisgICAgQXJjaGl2ZU1JTUVUeXBlc01hcDo6
aXRlcmF0b3IgaSA9IGFyY2hpdmVNSU1FVHlwZXMoKS5iZWdpbigpOworICAgIEFyY2hpdmVNSU1F
VHlwZXNNYXA6Oml0ZXJhdG9yIGVuZCA9IGFyY2hpdmVNSU1FVHlwZXMoKS5lbmQoKTsKICAgICAK
ICAgICBmb3IgKDsgaSAhPSBlbmQ7ICsraSkKICAgICAgICAgbWltZVR5cGVzLmFkZChpLT5maXJz
dCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAzODMz
OSkKKysrIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUwLDcgKzg1MCw3IEBAIFN0cmluZyBJY29uRGF0YWJhc2U6OmRhdGFiYXNlUGF0aCgp
IGNvbnMKIAogU3RyaW5nIEljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKQog
ewotICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUgPSAiV2VicGFnZUlj
b25zLmRiIjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGVmYXVsdERhdGFiYXNl
RmlsZW5hbWUsICgiV2VicGFnZUljb25zLmRiIikpOwogICAgIHJldHVybiBkZWZhdWx0RGF0YWJh
c2VGaWxlbmFtZS5jb3B5KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lv
biAzODMzOSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsNyArMTUwLDcgQEAgRXZlbnRIYW5kbGVyOjp+RXZlbnRIYW5kbGVyKCkKICAgICAK
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyRHJhZ1N0YXRlJiBFdmVudEhhbmRsZXI6OmRyYWdT
dGF0ZSgpCiB7Ci0gICAgc3RhdGljIEV2ZW50SGFuZGxlckRyYWdTdGF0ZSBzdGF0ZTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEV2ZW50SGFuZGxlckRyYWdTdGF0ZSwgc3RhdGUsICgpKTsKICAg
ICByZXR1cm4gc3RhdGU7CiB9CiAgICAgCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDcgKzMxNyw3IEBA
IHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiogY3JlYXRlUmVnRXhwRm8KICAgICAvLyBSRVZJRVct
IHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUg
TlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2Fu
J3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0g
UmVndWxhckV4cHJlc3Npb24oIlxcdyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVndWxh
ckV4cHJlc3Npb24sIHdvcmRSZWdFeHAsICgiXFx3IikpOwogICAgIFN0cmluZyBwYXR0ZXJuKCIo
Iik7CiAgICAgdW5zaWduZWQgaW50IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CiAgICAgdW5z
aWduZWQgaW50IGk7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIEZyYW1lOjpyZW1vdmVFZGl0
aW5nU3R5bGVGcm9tRWxlbWVuCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hTZXQ8RnJhbWUq
PiYga2VlcEFsaXZlU2V0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxGcmFtZSo+IHN0YXRpY0tl
ZXBBbGl2ZVNldDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8RnJhbWUqPiwgc3Rh
dGljS2VlcEFsaXZlU2V0LCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY0tlZXBBbGl2ZVNldDsKIH0K
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFBhZ2U6OnNldEdyb3Vw
TmFtZShjb25zdCBTdHJpbmcmIG5hCiAKIGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBOYW1lKCkg
Y29uc3QKIHsKLSAgICBzdGF0aWMgU3RyaW5nIG51bGxTdHJpbmc7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIG51bGxTdHJpbmcsICgpKTsKICAgICByZXR1cm4gbV9ncm91cCA/IG1f
Z3JvdXAtPm5hbWUoKSA6IG51bGxTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw4IEBAIHN0YXRpYyBib29sIGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCh1bnMKICAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBkZWZh
dWx0UG9ydHM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IERlZmF1bHRQ
b3J0c01hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERlZmF1bHRQb3J0c01hcCwgZGVmYXVs
dFBvcnRzLCAoKSk7CiAgICAgaWYgKGRlZmF1bHRQb3J0cy5pc0VtcHR5KCkpIHsKICAgICAgICAg
ZGVmYXVsdFBvcnRzLnNldCgiaHR0cCIsIDgwKTsKICAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgi
aHR0cHMiLCA0NDMpOwpAQCAtMjYwLDcgKzI2MSw3IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IFNlY3VyaXR5T3JpZ2kKIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdCAKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHNlcGFyYXRvclN0cmluZyA9IFN0
cmluZygmU2VwYXJhdG9yQ2hhcmFjdGVyLCAxKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc2VwYXJhdG9yU3RyaW5nLCAoJlNlcGFyYXRvckNoYXJhY3RlciwgMSkpOwogICAgIHJl
dHVybiBtX3Byb3RvY29sICsgc2VwYXJhdG9yU3RyaW5nICsgbV9ob3N0ICsgc2VwYXJhdG9yU3Ry
aW5nICsgU3RyaW5nOjpudW1iZXIobV9wb3J0KTsgCiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9t
YWMvRnJhbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5t
bQkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw4ICs4OCw4IEBAIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JM
YWJlbHMoTlNBcnIKICAgICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8gdGhl
IG51bWJlciBvZiBsb2NhbGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5nLgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKICAgICBzdGF0aWMgTlNNdXRhYmxl
QXJyYXkqIHJlZ0V4cExhYmVscyA9IG5pbDsKLSAgICBzdGF0aWMgVmVjdG9yPFJlZ3VsYXJFeHBy
ZXNzaW9uKj4gcmVnRXhwczsKLSAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24gd29yZFJlZ0V4
cCA9IFJlZ3VsYXJFeHByZXNzaW9uKCJcXHciKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxSZWd1bGFyRXhwcmVzc2lvbio+LCByZWdFeHBzLCAoKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgd29yZFJlZ0V4cCwgKCJcXHciKSk7CiAKICAgICBS
ZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NjMsNyArMTU2Myw3IEBAIFN0cmluZyBtaW1lVHlwZUZyb21E
YXRhVVJMKGNvbnN0IFN0cmluZyYKIAogY29uc3QgS1VSTCYgYmxhbmtVUkwoKQogewotICAgIHN0
YXRpYyBLVVJMIHN0YXRpY0JsYW5rVVJMKCJhYm91dDpibGFuayIpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoS1VSTCwgc3RhdGljQmxhbmtVUkwsICgiYWJvdXQ6YmxhbmsiKSk7CiAgICAgcmV0
dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDIxICsxMjQsMjQgQEAgc3Rh
dGljIEZvbnRQbGF0Zm9ybURhdGFDYWNoZSogZ0ZvbnRQbGF0Zgogc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgYWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5h
bWUpCiB7CiAgICAgLy8gQWxpYXMgQ291cmllciA8LT4gQ291cmllciBOZXcKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGNvdXJpZXIoIkNvdXJpZXIiKSwgY291cmllck5ldygiQ291cmllciBOZXci
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgY291cmllciwgKCJDb3Vy
aWVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjb3VyaWVyTmV3
LCAoIkNvdXJpZXIgTmV3IikpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1l
LCBjb3VyaWVyKSkKICAgICAgICAgcmV0dXJuIGNvdXJpZXJOZXc7CiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGZhbWlseU5hbWUsIGNvdXJpZXJOZXcpKQogICAgICAgICByZXR1cm4gY291cmll
cjsKIAogICAgIC8vIEFsaWFzIFRpbWVzIGFuZCBUaW1lcyBOZXcgUm9tYW4uCi0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyB0aW1lcygiVGltZXMiKSwgdGltZXNOZXdSb21hbigiVGltZXMgTmV3IFJv
bWFuIik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRpbWVzLCAoIlRp
bWVzIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0aW1lc05ld1Jv
bWFuLCAoIlRpbWVzIE5ldyBSb21hbiIpKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFt
aWx5TmFtZSwgdGltZXMpKQogICAgICAgICByZXR1cm4gdGltZXNOZXdSb21hbjsKICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgdGltZXNOZXdSb21hbikpCiAgICAgICAgIHJl
dHVybiB0aW1lczsKICAgICAKICAgICAvLyBBbGlhcyBBcmlhbCBhbmQgSGVsdmV0aWNhCi0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBhcmlhbCgiQXJpYWwiKSwgaGVsdmV0aWNhKCJIZWx2ZXRpY2Ei
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYXJpYWwsICgiQXJpYWwi
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhlbHZldGljYSwgKCJI
ZWx2ZXRpY2EiKSk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGFyaWFs
KSkKICAgICAgICAgcmV0dXJuIGhlbHZldGljYTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZmFtaWx5TmFtZSwgaGVsdmV0aWNhKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAs
NyArMTQwLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgogICAg
IHdoaWxlIChjdXJyRmFtaWx5ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1cnJG
YW1pbHktPmZhbWlseSgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgU3RyaW5nIG1h
dGNoV29yZHNbM10gPSB7IFN0cmluZygiQXJhYmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0cmlu
ZygiVXJkdSIpIH07Ci0gICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGdlZXphU3RyKCJH
ZWV6YSBQcm8iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBnZWV6YVN0ciwgKCJHZWV6YSBQcm8iKSk7CiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IDMgJiYgIXBsYXRmb3JtRGF0YTsgKytqKQogICAgICAgICAgICAgICAgIGlmIChjdXJyRmFt
aWx5LT5mYW1pbHkoKS5jb250YWlucyhtYXRjaFdvcmRzW2pdLCBmYWxzZSkpCiAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5m
b250RGVzY3JpcHRpb24oKSwgZ2VlemFTdHIpOwpAQCAtMTUzLDggKzE1Myw4IEBAIEZvbnRQbGF0
Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckYKIAogRm9udFBsYXRmb3JtRGF0YSogRm9u
dENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0aW9uKQogewotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXNTdHIoIlRp
bWVzIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsdWNpZGFHcmFuZGVTdHIoIkx1Y2lkYSBH
cmFuZGUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGltZXNTdHIs
ICgiVGltZXMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGx1Y2lk
YUdyYW5kZVN0ciwgKCJMdWNpZGEgR3JhbmRlIikpOwogCiAgICAgLy8gRklYTUU6IFdvdWxkIGJl
IGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3MgZGVmYXVsdCBmb250IGhlcmUu
ICBGb3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVsdCB0aGF0IHRoZSB1c2VyIHdv
dWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9D
dXJzb3JNYWMubW0JKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vy
c29yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBOU0N1cnNv
ciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWcKIAogLy8gTGVhayB0aGVzZSBjdXJzb3JzIGludGVu
dGlvbmFsbHksIHRoYXQgd2F5IHdlIHdvbid0IHdhc3RlIHRpbWUgdHJ5aW5nIHRvIGNsZWFuIHRo
ZW0KIC8vIHVwIGF0IHByb2Nlc3MgZXhpdCB0aW1lLgotc3RhdGljIEN1cnNvciYgbGVha05hbWVk
Q3Vyc29yKGNvbnN0IGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBDdXJzb3IqIGxl
YWtOYW1lZEN1cnNvcihjb25zdCBjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIE5TU3RyaW5nKiByZXNvdXJjZU5hbWUgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6bmFtZV07CkBAIC03MCw5ICs3MCw5
IEBAIHN0YXRpYyBDdXJzb3ImIGxlYWtOYW1lZEN1cnNvcihjb25zdCBjaGEKICAgICAgICAgY3Vy
c29yID0gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTpjdXJzb3JJbWFnZSBob3RTcG90
OmhvdFNwb3RQb2ludF07CiAgICAgICAgIFtjdXJzb3JJbWFnZSByZWxlYXNlXTsKICAgICB9Ci0g
ICAgcmV0dXJuICpuZXcgQ3Vyc29yKGN1cnNvcik7CisgICAgcmV0dXJuIG5ldyBDdXJzb3IoY3Vy
c29yKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiAqbmV3IEN1
cnNvcjsKKyAgICByZXR1cm4gbmV3IEN1cnNvcjsKIH0KIAogQ3Vyc29yOjpDdXJzb3IoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90c3BvdCkKQEAgLTEwNSwxOTMgKzEwNSwyMjEgQEAg
Q3Vyc29yOjpDdXJzb3IoTlNDdXJzb3IqIGMpCiAKIGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNv
cigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vyc29yKFtOU0N1cnNvciBhcnJv
d0N1cnNvcl0pOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoW05TQ3Vyc29y
IGFycm93Q3Vyc29yXSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNyb3Nz
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjcm9z
c0hhaXJDdXJzb3IiLCAxMSwgMTEpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFt
ZWRDdXJzb3IoImNyb3NzSGFpckN1cnNvciIsIDExLCAxMSk7CisgICAgQ3Vyc29yJiBjID0gKmNQ
dHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgaGFuZEN1cnNvcigpCiB7Ci0g
ICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibGlua0N1cnNvciIsIDYsIDEp
OworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImxpbmtDdXJzb3Ii
LCA2LCAxKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBtb3ZlQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05h
bWVkQ3Vyc29yKCJtb3ZlQ3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9
IGxlYWtOYW1lZEN1cnNvcigibW92ZUN1cnNvciIsIDcsIDcpOworICAgIEN1cnNvciYgYyA9ICpj
UHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHZlcnRpY2FsVGV4dEN1cnNv
cigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigidmVydGljYWxU
ZXh0Q3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1
cnNvcigidmVydGljYWxUZXh0Q3Vyc29yIiwgNywgNyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY2VsbEN1cnNvcigpCiB7Ci0gICAg
c3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiY2VsbEN1cnNvciIsIDcsIDcpOwor
ICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3
LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBjb250ZXh0TWVudUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxl
YWtOYW1lZEN1cnNvcigiY29udGV4dE1lbnVDdXJzb3IiLCAzLCAyKTsKKyAgICBzdGF0aWMgQ3Vy
c29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJjb250ZXh0TWVudUN1cnNvciIsIDMsIDIpOwor
ICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3Im
IGFsaWFzQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29y
KCJhbGlhc0N1cnNvciIsIDExLCAzKTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05h
bWVkQ3Vyc29yKCJhbGlhc0N1cnNvciIsIDExLCAzKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiB6b29tSW5DdXJzb3IoKQogewotICAg
IHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIsIDcsIDcp
OworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21JbkN1cnNv
ciIsIDcsIDcpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIHpvb21PdXRDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBs
ZWFrTmFtZWRDdXJzb3IoInpvb21PdXRDdXJzb3IiLCA3LCA3KTsKKyAgICBzdGF0aWMgQ3Vyc29y
KiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJ6b29tT3V0Q3Vyc29yIiwgNywgNyk7CisgICAgQ3Vy
c29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgY29weUN1
cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiY29weUN1
cnNvciIsIDMsIDIpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3Io
ImNvcHlDdXJzb3IiLCAzLCAyKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub25lQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29y
JiBjID0gbGVha05hbWVkQ3Vyc29yKCJub25lQ3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1
cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigibm9uZUN1cnNvciIsIDcsIDcpOworICAgIEN1
cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHByb2dy
ZXNzQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJw
cm9ncmVzc0N1cnNvciIsIDMsIDIpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFt
ZWRDdXJzb3IoInByb2dyZXNzQ3Vyc29yIiwgMywgMik7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9Ecm9wQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub0Ryb3BDdXJzb3IiLCAzLCAx
KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub0Ryb3BDdXJz
b3IiLCAzLCAxKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBub3RBbGxvd2VkQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBj
ID0gbGVha05hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vyc29yIiwgMTEsIDExKTsKKyAgICBzdGF0
aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vyc29yIiwgMTEs
IDExKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBpQmVhbUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vy
c29yKFtOU0N1cnNvciBJQmVhbUN1cnNvcl0pOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ3Vy
c29yLCBjLCAoW05TQ3Vyc29yIElCZWFtQ3Vyc29yXSkpOwogICAgIHJldHVybiBjOwogfQogCiBj
b25zdCBDdXJzb3ImIHdhaXRDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFr
TmFtZWRDdXJzb3IoIndhaXRDdXJzb3IiLCA3LCA3KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRy
ID0gbGVha05hbWVkQ3Vyc29yKCJ3YWl0Q3Vyc29yIiwgNywgNyk7CisgICAgQ3Vyc29yJiBjID0g
KmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgaGVscEN1cnNvcigpCiB7
Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiaGVscEN1cnNvciIsIDgs
IDgpOworICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImhlbHBDdXJz
b3IiLCA4LCA4KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBj
ID0gbGVha05hbWVkQ3Vyc29yKCJlYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDcpOworICAgIHN0YXRp
YyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoImVhc3RSZXNpemVDdXJzb3IiLCAxNCwg
Nyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm9ydGhSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFr
TmFtZWRDdXJzb3IoIm5vcnRoUmVzaXplQ3Vyc29yIiwgNywgMSk7CisgICAgc3RhdGljIEN1cnNv
ciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhSZXNpemVDdXJzb3IiLCA3LCAxKTsKKyAg
ICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBu
b3J0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFt
ZWRDdXJzb3IoIm5vcnRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAxKTsKKyAgICBzdGF0aWMgQ3Vy
c29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aEVhc3RSZXNpemVDdXJzb3IiLCAxNCwg
MSk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm9ydGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0g
bGVha05hbWVkQ3Vyc29yKCJub3J0aFdlc3RSZXNpemVDdXJzb3IiLCAwLCAwKTsKKyAgICBzdGF0
aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aFdlc3RSZXNpemVDdXJzb3Ii
LCAwLCAwKTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBzb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9
IGxlYWtOYW1lZEN1cnNvcigic291dGhSZXNpemVDdXJzb3IiLCA3LCAxNCk7CisgICAgc3RhdGlj
IEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigic291dGhSZXNpemVDdXJzb3IiLCA3LCAx
NCk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgc291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0g
bGVha05hbWVkQ3Vyc29yKCJzb3V0aEVhc3RSZXNpemVDdXJzb3IiLCAxNCwgMTQpOworICAgIHN0
YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoInNvdXRoRWFzdFJlc2l6ZUN1cnNv
ciIsIDE0LCAxNCk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJzb3V0aFdlc3RSZXNpemVDdXJzb3IiLCAxLCAxNCk7
CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtOYW1lZEN1cnNvcigic291dGhXZXN0UmVz
aXplQ3Vyc29yIiwgMSwgMTQpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBj
OwogfQogCiBjb25zdCBDdXJzb3ImIHdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBD
dXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIndlc3RSZXNpemVDdXJzb3IiLCAxLCA3KTsKKyAg
ICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJ3ZXN0UmVzaXplQ3Vyc29y
IiwgMSwgNyk7CisgICAgQ3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNv
ciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcpOwor
ICAgIHN0YXRpYyBDdXJzb3IqIGNQdHIgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoU291dGhSZXNp
emVDdXJzb3IiLCA3LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICByZXR1cm4gYzsK
IH0KIAogY29uc3QgQ3Vyc29yJiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGlj
IEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiZWFzdFdlc3RSZXNpemVDdXJzb3IiLCA3LCA3
KTsKKyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJlYXN0V2VzdFJl
c2l6ZUN1cnNvciIsIDcsIDcpOworICAgIEN1cnNvciYgYyA9ICpjUHRyOwogICAgIHJldHVybiBj
OwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhFYXN0U291dGhX
ZXN0UmVzaXplQ3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciogY1B0ciA9IGxlYWtO
YW1lZEN1cnNvcigibm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yIiwgNywgNyk7CisgICAg
Q3Vyc29yJiBjID0gKmNQdHI7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9y
dGhXZXN0U291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0g
bGVha05hbWVkQ3Vyc29yKCJub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsK
KyAgICBzdGF0aWMgQ3Vyc29yKiBjUHRyID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aFdlc3RTb3V0
aEVhc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsKKyAgICBDdXJzb3ImIGMgPSAqY1B0cjsKICAgICBy
ZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb2x1bW5SZXNpemVDdXJzb3IoKQogewotICAg
IHN0YXRpYyBDdXJzb3ImIGMgPSAqbmV3IEN1cnNvcihbTlNDdXJzb3IgcmVzaXplTGVmdFJpZ2h0
Q3Vyc29yXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChbTlNDdXJzb3Ig
cmVzaXplTGVmdFJpZ2h0Q3Vyc29yXSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJz
b3ImIHJvd1Jlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vy
c29yKFtOU0N1cnNvciByZXNpemVVcERvd25DdXJzb3JdKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEN1cnNvciwgYywgKFtOU0N1cnNvciByZXNpemVVcERvd25DdXJzb3JdKSk7CiAgICAgcmV0
dXJuIGM7CiB9CiAKQEAgLTM0MiwxMyArMzcwLDEzIEBAIGNvbnN0IEN1cnNvciYgd2VzdFBhbm5p
bmdDdXJzb3IoKQogCiBjb25zdCBDdXJzb3ImIGdyYWJDdXJzb3IoKQogewotICAgIHN0YXRpYyBD
dXJzb3ImIGMgPSAqbmV3IEN1cnNvcihbTlNDdXJzb3Igb3BlbkhhbmRDdXJzb3JdKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEN1cnNvciwgYywgKFtOU0N1cnNvciBvcGVuSGFuZEN1cnNvcl0p
KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBncmFiYmluZ0N1cnNvcigpCiB7
Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vyc29yKFtOU0N1cnNvciBjbG9zZWRIYW5k
Q3Vyc29yXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChbTlNDdXJzb3Ig
Y2xvc2VkSGFuZEN1cnNvcl0pKTsKICAgICByZXR1cm4gYzsKIH0KIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0JKHJldmlzaW9uIDM4MzM5KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTg2LDcgKzg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxiYXJUaGVtZSogU2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKLSAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVN
YWMgdGhlbWU7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxiYXJUaGVtZU1hYywgdGhl
bWUsICgpKTsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBlbnVtIHsKIAogVGhlbWUqIHBs
YXRmb3JtVGhlbWUoKQogewotICAgIHN0YXRpYyBUaGVtZU1hYyB0aGVtZU1hYzsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFRoZW1lTWFjLCB0aGVtZU1hYywgKCkpOwogICAgIHJldHVybiAmdGhl
bWVNYWM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCShyZXZpc2lv
biAzODMzOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1RocmVhZENoZWNrLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgcmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0
IGNoYXIqIGYKIHZvaWQgV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBm
dW5jdGlvbikKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLSAgICBzdGF0aWMgSGFz
aFNldDxTdHJpbmc+IGxvZ2dlZEZ1bmN0aW9uczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhh
c2hTZXQ8U3RyaW5nPiwgbG9nZ2VkRnVuY3Rpb25zLCAoKSk7CiAgICAgc3dpdGNoICh0aHJlYWRW
aW9sYXRpb25CZWhhdmlvcikgewogICAgICAgICBjYXNlIE5vVGhyZWFkQ2hlY2s6CiAgICAgICAg
ICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVO
b3RpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0d29ya1N0YXRlTm90aWZpZXImIG5l
dHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV0d29ya1N0YXRlTm90aWZpZXIg
bmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOZXR3b3JrU3Rh
dGVOb3RpZmllciwgbmV0d29ya1N0YXRlTm90aWZpZXIsICgpKTsKICAgICAKICAgICByZXR1cm4g
bmV0d29ya1N0YXRlTm90aWZpZXI7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJldmlzaW9uIDM4MzM5KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDksMTQgKzQ5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgSGFz
aE1hcDxDRlJlYWRTdHJlYW1SZWYsIFJlZlB0cjxGb3JtRGF0YT4gPiBTdHJlYW1Gb3JtRGF0YU1h
cDsKIHN0YXRpYyBTdHJlYW1Gb3JtRGF0YU1hcCYgZ2V0U3RyZWFtRm9ybURhdGFNYXAoKQogewot
ICAgIHN0YXRpYyBTdHJlYW1Gb3JtRGF0YU1hcCBzdHJlYW1Gb3JtRGF0YU1hcDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmVhbUZvcm1EYXRhTWFwLCBzdHJlYW1Gb3JtRGF0YU1hcCwgKCkp
OwogICAgIHJldHVybiBzdHJlYW1Gb3JtRGF0YU1hcDsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPENG
UmVhZFN0cmVhbVJlZiwgUmVmUHRyPFJlc291cmNlSGFuZGxlPiA+IFN0cmVhbVJlc291cmNlSGFu
ZGxlTWFwOwogc3RhdGljIFN0cmVhbVJlc291cmNlSGFuZGxlTWFwJiBnZXRTdHJlYW1SZXNvdXJj
ZUhhbmRsZU1hcCgpCiB7Ci0gICAgc3RhdGljIFN0cmVhbVJlc291cmNlSGFuZGxlTWFwIHN0cmVh
bVJlc291cmNlSGFuZGxlTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyZWFtUmVzb3Vy
Y2VIYW5kbGVNYXAsIHN0cmVhbVJlc291cmNlSGFuZGxlTWFwLCAoKSk7CiAgICAgcmV0dXJuIHN0
cmVhbVJlc291cmNlSGFuZGxlTWFwOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCShyZXZpc2lvbiAzODMzOSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBs
YXRmb3JtTGF6eUluaXQoCiAgICAgICAgIC8vIGlzIHJldHVybmluZyBpbmNvcnJlY3QgTUlNRSB0
eXBlIGZvciBsb2NhbCAueGh0bWwgZmlsZXMpIHdoaWNoIGlzIG9ubHkgcmVxdWlyZWQgaW4gTGVv
cGFyZC4KICAgICAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkgJiYgbV9taW1lVHlwZSA9PSAi
dGV4dC9odG1sIikgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbV91cmwucGF0
aCgpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyB4aHRtbEV4dCgiLnhodG1sIik7
CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeGh0bWxFeHQsICgiLnho
dG1sIikpOwogICAgICAgICAgICAgaWYgKHBhdGguZW5kc1dpdGgoeGh0bWxFeHQsIGZhbHNlKSkK
ICAgICAgICAgICAgICAgICBtX21pbWVUeXBlID0gImFwcGxpY2F0aW9uL3hodG1sK3htbCI7CiAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCShyZXZp
c2lvbiAzODMzOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBUZXh0RW5jb2Rpbmc6OmlzSmFw
YW5lc2UoKSBjb25zdAogICAgIGlmIChub0V4dGVuZGVkVGV4dEVuY29kaW5nTmFtZVVzZWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+
IHNldDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8Y29uc3QgY2hhcio+LCBzZXQs
ICgpKTsKICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgewogICAgICAgICBhZGRFbmNvZGluZ05hbWUo
c2V0LCAieC1tYWMtamFwYW5lc2UiKTsKICAgICAgICAgYWRkRW5jb2RpbmdOYW1lKHNldCwgImNw
OTMyIik7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXImIFBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXI6OnNjaGVkdWxlcigpCiB7Ci0gICAgc3RhdGljIFBsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXImIHNjaGVkdWxlciA9ICpuZXcgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIsIHNjaGVkdWxl
ciwgKCkpOwogCiAgICAgcmV0dXJuIHNjaGVkdWxlcjsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw4IEBAIHN0YXRpYyBQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudHNNYXAqIGdQZXIKIAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94KiwgSGFzaFNldDxSZW5kZXJCbG9jayo+Kj4gUGVyY2VudEhlaWdodENvbnRhaW5l
ck1hcDsKIHN0YXRpYyBQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwKiBnUGVyY2VudEhlaWdodENv
bnRhaW5lck1hcCA9IDA7CisgICAgCit0eXBlZGVmIFdURjo6SGFzaE1hcDxSZW5kZXJCbG9jayos
IFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXA7CiAK
IC8vIE91ciBNYXJnaW5JbmZvIHN0YXRlIHVzZWQgd2hlbiBsYXlpbmcgb3V0IGJsb2NrIGNoaWxk
cmVuLgogUmVuZGVyQmxvY2s6Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oUmVuZGVyQmxvY2sqIGJs
b2NrLCBpbnQgdG9wLCBpbnQgYm90dG9tKQpAQCAtMTc4Myw5ICsxNzg1LDkgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6cGFpbnRFbGxpcHNpc0JveGVzKFBhaQogICAgIH0KIH0KIAotSGFzaE1hcDxSZW5k
ZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiogY29udGludWF0aW9uT3V0bGluZVRh
YmxlKCkKK0NvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCogY29udGludWF0aW9uT3V0bGluZVRh
YmxlKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1
ZW5jZWRTZXQqPiB0YWJsZTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRpbnVhdGlvbk91
dGxpbmVUYWJsZU1hcCwgdGFibGUsICgpKTsKICAgICByZXR1cm4gJnRhYmxlOwogfQogCkBAIC0x
Nzk1LDcgKzE3OTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRDb250aW51YXRpb25XaXRoT3V0
CiAgICAgLy8gd2F5IG9mIHBhaW50aW5nLgogICAgIEFTU0VSVCghZmxvdy0+bGF5ZXIoKSk7CiAg
ICAgCi0gICAgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiog
dGFibGUgPSBjb250aW51YXRpb25PdXRsaW5lVGFibGUoKTsKKyAgICBDb250aW51YXRpb25PdXRs
aW5lVGFibGVNYXAqIHRhYmxlID0gY29udGludWF0aW9uT3V0bGluZVRhYmxlKCk7CiAgICAgUmVu
ZGVyRmxvd1NlcXVlbmNlZFNldCogY29udGludWF0aW9ucyA9IHRhYmxlLT5nZXQodGhpcyk7CiAg
ICAgaWYgKCFjb250aW51YXRpb25zKSB7CiAgICAgICAgIGNvbnRpbnVhdGlvbnMgPSBuZXcgUmVu
ZGVyRmxvd1NlcXVlbmNlZFNldDsKQEAgLTE4MDcsNyArMTgwOSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXQKIAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250
aW51YXRpb25PdXRsaW5lcyhQYWludEluZm8mIGluZm8sIGludCB0eCwgaW50IHR5KQogewotICAg
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2VxdWVuY2VkU2V0Kj4qIHRhYmxlID0g
Y29udGludWF0aW9uT3V0bGluZVRhYmxlKCk7CisgICAgQ29udGludWF0aW9uT3V0bGluZVRhYmxl
TWFwKiB0YWJsZSA9IGNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSgpOwogICAgIGlmICh0YWJsZS0+
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGlj
IENvdW50ZXJOb2RlKiBjb3VudGVyKFJlbmRlck9iamVjdAogCiBzdGF0aWMgQ291bnRlck1hcHMm
IGNvdW50ZXJNYXBzKCkKIHsKLSAgICBzdGF0aWMgQ291bnRlck1hcHMgc3RhdGljQ291bnRlck1h
cHM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb3VudGVyTWFwcywgc3RhdGljQ291bnRlck1h
cHMsICgpKTsKICAgICByZXR1cm4gc3RhdGljQ291bnRlck1hcHM7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NzEsNyArNzcxLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCbwog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IFVD
aGFyIGVsbGlwc2lzQW5kU3BhY2VbMl0gPSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAnIH07Ci0g
ICAgICAgICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyBlbGxpcHNpc0FuZFNwYWNlU3RyKGVs
bGlwc2lzQW5kU3BhY2UsIDIpOworICAgICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBlbGxpcHNpc0FuZFNwYWNlU3RyLCAoZWxsaXBzaXNBbmRTcGFjZSwgMikp
OwogCiAgICAgICAgICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVM
aW5lcyA9PSAxKS0+Zm9udCgpOwogICAgICAgICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNwYWNl
V2lkdGggPSBmb250LndpZHRoKFRleHRSdW4oZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3
ICsyODksNyBAQCBjb25zdCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7CiAg
ICAgaWYgKG1fbWFya2VyKQogICAgICAgICByZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAgICBz
dGF0aWMgU3RyaW5nIHN0YXRpY051bGxTdHJpbmc7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHN0YXRpY051bGxTdHJpbmcsICgpKTsKICAgICByZXR1cm4gc3RhdGljTnVsbFN0cmlu
ZzsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNw
cAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlbmRl
clNjcm9sbGJhclRoZW1lKCkKIHsKLSAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWUgdGhl
bWU7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZW5kZXJTY3JvbGxiYXJUaGVtZSwgdGhlbWUs
ICgpKTsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEzICsxNjgsMTMgQEAgc3RhdGljIEZv
bnRXZWlnaHQgdG9Gb250V2VpZ2h0KE5TSW50ZWdlcgogCiB2b2lkIFJlbmRlclRoZW1lTWFjOjpz
eXN0ZW1Gb250KGludCBjc3NWYWx1ZUlkLCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bikgY29uc3QKIHsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHN5c3RlbUZvbnQ7Ci0gICAg
c3RhdGljIEZvbnREZXNjcmlwdGlvbiBzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnRE
ZXNjcmlwdGlvbiBtZW51Rm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGxhYmVsRm9u
dDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1pbmlDb250cm9sRm9udDsKLSAgICBzdGF0
aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsQ29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNj
cmlwdGlvbiBjb250cm9sRm9udDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNjcmlw
dGlvbiwgc3lzdGVtRm9udCwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRm9udERlc2Ny
aXB0aW9uLCBzbWFsbFN5c3RlbUZvbnQsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZv
bnREZXNjcmlwdGlvbiwgbWVudUZvbnQsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZv
bnREZXNjcmlwdGlvbiwgbGFiZWxGb250LCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChG
b250RGVzY3JpcHRpb24sIG1pbmlDb250cm9sRm9udCwgKCkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoRm9udERlc2NyaXB0aW9uLCBzbWFsbENvbnRyb2xGb250LCAoKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRpb24sIGNvbnRyb2xGb250LCAoKSk7CiAKICAgICBG
b250RGVzY3JpcHRpb24qIGNhY2hlZERlc2M7CiAgICAgTlNGb250KiBmb250ID0gbmlsOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvYmlkaS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlk
aS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNoZWNrTGluZXNGb3JUZXh0T3ZlcmYKICAgICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIG9m
IHRoZSBlbGxpcHNpcyB1c2luZyB0aGUgY3VycmVudCBmb250LgogICAgIC8vIEZJWE1FOiBDU1Mz
IHNheXMgdGhpcyBpcyBjb25maWd1cmFibGUsIGFsc28gbmVlZCB0byB1c2UgMHgwMDJFIChGVUxM
IFNUT1ApIGlmIGhvcml6b250YWwgZWxsaXBzaXMgaXMgIm5vdCByZW5kZXJhYmxlIgogICAgIFRl
eHRSdW4gZWxsaXBzaXNSdW4oJmhvcml6b250YWxFbGxpcHNpcywgMSk7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBlbGxpcHNpc1N0cigmaG9yaXpvbnRhbEVsbGlwc2lzLCAxKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZWxsaXBzaXNTdHIsICgmaG9yaXpvbnRhbEVs
bGlwc2lzLCAxKSk7CiAgICAgY29uc3QgRm9udCYgZmlyc3RMaW5lRm9udCA9IGZpcnN0TGluZVN0
eWxlKCktPmZvbnQoKTsKICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUoKS0+Zm9udCgpOwog
ICAgIGludCBmaXJzdExpbmVFbGxpcHNpc1dpZHRoID0gZmlyc3RMaW5lRm9udC53aWR0aChlbGxp
cHNpc1J1bik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShy
ZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDEzICs3MjAsMTMgQEAgQ291bnRlckRpcmVjdGl2ZU1h
cCYgUmVuZGVyU3R5bGU6OmFjY2VzcwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIGNv
bnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIFJlbmRlclN0eWxlOjppbml0aWFsRGFz
aGJvYXJkUmVnaW9ucygpCiB7Ci0gICAgc3RhdGljIFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lv
bj4gZW1wdHlMaXN0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0eWxlRGFzaGJv
YXJkUmVnaW9uPiwgZW1wdHlMaXN0LCAoKSk7CiAgICAgcmV0dXJuIGVtcHR5TGlzdDsKIH0KIAog
Y29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVuZGVyU3R5bGU6Om5vbmVEYXNo
Ym9hcmRSZWdpb25zKCkKIHsKLSAgICBzdGF0aWMgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiBub25lTGlzdDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHlsZURhc2hib2Fy
ZFJlZ2lvbj4sIG5vbmVMaXN0LCAoKSk7CiAgICAgc3RhdGljIGJvb2wgbm9uZUxpc3RJbml0aWFs
aXplZCA9IGZhbHNlOwogCiAgICAgaWYgKCFub25lTGlzdEluaXRpYWxpemVkKSB7CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFi
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMzEgKzU4LDMzIEBAIHN0YXRpYyBNdXRleCYg
Z3VpZE11dGV4KCkKICAgICAvLyBOb3RlOiBXZSBkb24ndCBoYXZlIHRvIHVzZSBBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCiAgICAgLy8gdGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24gdGhlIG1haW4gdGhyZWFkCiAgICAgLy8g
YmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFyZSB1c2Vk
LgotICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3IE11dGV4OworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCi1zdGF0
aWMgSGFzaE1hcDxpbnQsIFN0cmluZz4mIGd1aWRUb1ZlcnNpb25NYXAoKQordHlwZWRlZiBIYXNo
TWFwPGludCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKK3N0YXRpYyBHdWlkVmVyc2lvbk1hcCYg
Z3VpZFRvVmVyc2lvbk1hcCgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBTdHJpbmc+JiBt
YXAgPSAqbmV3IEhhc2hNYXA8aW50LCBTdHJpbmc+OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R3VpZFZlcnNpb25NYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBI
YXNoTWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj4mIGd1aWRUb0RhdGFiYXNlTWFwKCkKK3R5
cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJhc2UqPio+IEd1aWREYXRhYmFzZU1hcDsK
K3N0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNlTWFwKCkKIHsKLSAgICBzdGF0
aWMgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJhc2UqPio+JiBtYXAgPSAqbmV3IEhhc2hNYXA8
aW50LCBIYXNoU2V0PERhdGFiYXNlKj4qPjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEd1aWRE
YXRhYmFzZU1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAogY29uc3QgU3RyaW5n
JiBEYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5n
JiBuYW1lID0gKm5ldyBTdHJpbmcoIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAoIl9fV2ViS2l0RGF0YWJhc2VJbmZv
VGFibGVfXyIpKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VWZXJzaW9uS2V5KCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nJiBrZXkgPSAqbmV3IFN0
cmluZygiV2ViS2l0RGF0YWJhc2VWZXJzaW9uS2V5Iik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIGtleSwgKCJXZWJLaXREYXRhYmFzZVZlcnNpb25LZXkiKSk7CiAgICAgcmV0dXJu
IGtleTsKIH0KIApAQCAtMjE4LDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIHJldHJpZXZlVGV4dFJl
c3VsdEZyb21EYXRhYmEKIAogYm9vbCBEYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShT
dHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgc3RhdGljIFN0cmluZyYgZ2V0VmVyc2lvblF1ZXJ5ID0g
Km5ldyBTdHJpbmcoIlNFTEVDVCB2YWx1ZSBGUk9NICIgKyBkYXRhYmFzZUluZm9UYWJsZU5hbWUo
KSArICIgV0hFUkUga2V5ID0gJyIgKyBkYXRhYmFzZVZlcnNpb25LZXkoKSArICInOyIpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBnZXRWZXJzaW9uUXVlcnksICgiU0VMRUNUIHZh
bHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpICsgIiBXSEVSRSBrZXkgPSAnIiAr
IGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7IikpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6
ZXItPmRpc2FibGUoKTsKIApAQCAtMjU0LDcgKzI1Niw3IEBAIHN0YXRpYyBib29sIHNldFRleHRW
YWx1ZUluRGF0YWJhc2UoU1FMaXQKIAogYm9vbCBEYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWJh
c2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewotICAgIHN0YXRpYyBTdHJpbmcmIHNldFZlcnNp
b25RdWVyeSA9ICpuZXcgU3RyaW5nKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJhc2VJbmZvVGFibGVO
YW1lKCkgKyAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VWZXJzaW9uS2V5KCkg
KyAiJywgPyk7Iik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNldFZlcnNpb25R
dWVyeSwgKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkgKyAiIChrZXks
IHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VWZXJzaW9uS2V5KCkgKyAiJywgPyk7IikpOwog
CiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIApAQCAtMzYzLDkgKzM2NSwx
MCBAQCBzdGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0CiAgICAgLy8gTm90
ZTogV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljIGhlcmUg
YmVjYXVzZQogICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgaW4gdGhlIGNvbnN0
cnVjdG9yIG9uIHRoZSBtYWluIHRocmVhZAogICAgIC8vIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFk
cyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4KLSAgICBzdGF0aWMgTXV0ZXgmIHN0
cmluZ0lkZW50aWZpZXJNdXRleCA9ICpuZXcgTXV0ZXg7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChNdXRleCwgc3RyaW5nSWRlbnRpZmllck11dGV4LCAoKSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHN0cmluZ0lkZW50aWZpZXJNdXRleCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBp
bnQ+JiBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwID0gKm5ldyBIYXNoTWFwPFN0cmluZywgaW50
PjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCwgKCkp
OwogICAgIGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3RyaW5nSUQp
OwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1cnJlbnROZXdHVUlEID0g
MTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAzODMzOSkK
KysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIE9yaWdpblF1b3RhTWFuYWdlciYgRGF0YWJhc2VUcmFja2VyOjpvcmkK
IAogRGF0YWJhc2VUcmFja2VyJiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKQogewotICAgIHN0
YXRpYyBEYXRhYmFzZVRyYWNrZXImIHRyYWNrZXIgPSAqbmV3IERhdGFiYXNlVHJhY2tlcjsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKERhdGFiYXNlVHJhY2tlciwgdHJhY2tlciwgKCkpOwogICAg
IHJldHVybiB0cmFja2VyOwogfQogCkBAIC03NzEsNyArNzcxLDcgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnNldENsaWVudChEYXRhYmFzZQogCiBzdGF0aWMgTXV0ZXgmIG5vdGlmaWNhdGlvbk11
dGV4KCkKIHsKLSAgICBzdGF0aWMgTXV0ZXgmIG11dGV4ID0gKm5ldyBNdXRleDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKE11dGV4LCBtdXRleCwgKCkpOwogICAgIHJldHVybiBtdXRleDsKIH0K
IApAQCAtNzc5LDcgKzc3OSw3IEBAIHR5cGVkZWYgVmVjdG9yPHBhaXI8U2VjdXJpdHlPcmlnaW4q
LCBTdHIKIAogc3RhdGljIE5vdGlmaWNhdGlvblF1ZXVlJiBub3RpZmljYXRpb25RdWV1ZSgpCiB7
Ci0gICAgc3RhdGljIE5vdGlmaWNhdGlvblF1ZXVlJiBxdWV1ZSA9ICpuZXcgTm90aWZpY2F0aW9u
UXVldWU7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOb3RpZmljYXRpb25RdWV1ZSwgcXVldWUs
ICgpKTsKICAgICByZXR1cm4gcXVldWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2Uu
Y3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IExvY2FsU3RvcmFnZSo+IEwKIAogc3RhdGljIExvY2FsU3RvcmFnZU1hcCYgbG9jYWxTdG9yYWdl
TWFwKCkKIHsKLSAgICBzdGF0aWMgTG9jYWxTdG9yYWdlTWFwIGxvY2FsU3RvcmFnZU1hcDsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKExvY2FsU3RvcmFnZU1hcCwgbG9jYWxTdG9yYWdlTWFwLCAo
KSk7CiAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZU1hcDsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkx
LDggQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VNYXBwZQogICAgIAogU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6
OnJvdGF0ZU1vZGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0
b1ZhbCgiYXV0byIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYXV0b1JldmVyc2Uo
ImF1dG8tcmV2ZXJzZSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBh
dXRvVmFsLCAoImF1dG8iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGF1dG9SZXZlcnNlLCAoImF1dG8tcmV2ZXJzZSIpKTsKICAgICBTdHJpbmcgcm90YXRlID0gZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjpyb3RhdGVBdHRyKTsKICAgICBpZiAocm90YXRlID09IGF1dG9W
YWwpCiAgICAgICAgIHJldHVybiBSb3RhdGVBdXRvOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NiwxMCArMTk2LDEwIEBAIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OkFuaW1hdGlvbk1vZGUgU1ZHQW4KIAogU1ZHQW5pbWF0aW9uRWxlbWVudDo6
Q2FsY01vZGUgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y2FsY01vZGUoKSBjb25zdAogeyAgICAKLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRpc2NyZXRlKCJkaXNjcmV0ZSIpOwotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgbGluZWFyKCJsaW5lYXIiKTsKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nIHBhY2VkKCJwYWNlZCIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcgc3BsaW5lKCJzcGxpbmUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZGlzY3JldGUsICgiZGlzY3JldGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGxpbmVhciwgKCJsaW5lYXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHBhY2VkLCAoInBhY2VkIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBzcGxpbmUsICgic3BsaW5lIikpOwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmNhbGNNb2RlQXR0cik7CiAgICAg
aWYgKHZhbHVlID09IGRpc2NyZXRlKQogICAgICAgICByZXR1cm4gQ2FsY01vZGVEaXNjcmV0ZTsK
QEAgLTIxNCw4ICsyMTQsOCBAQCBTVkdBbmltYXRpb25FbGVtZW50OjpDYWxjTW9kZSBTVkdBbmlt
YXRpCiAKIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkF0dHJpYnV0ZVR5cGUgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6YXR0cmlidXRlVHlwZSgpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgY3NzKCJDU1MiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHhtbCgi
WE1MIik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNzcywgKCJDU1Mi
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhtbCwgKCJYTUwiKSk7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6
YXR0cmlidXRlVHlwZUF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBjc3MpCiAgICAgICAgIHJldHVy
biBBdHRyaWJ1dGVUeXBlQ1NTOwpAQCAtMjQxLDE0ICsyNDEsMTQgQEAgU3RyaW5nIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OmZyb21WYWx1ZSgpIAogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6Omlz
QWRkaXRpdmUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc3VtKCJz
dW0iKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIp
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjphZGRpdGl2ZUF0dHIpOwogICAgIHJldHVybiB2YWx1ZSA9PSBzdW0gfHwgYW5pbWF0aW9uTW9k
ZSgpID09IEJ5QW5pbWF0aW9uOwogfQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWNj
dW11bGF0ZWQoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc3VtKCJz
dW0iKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc3VtLCAoInN1bSIp
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjphY2N1bXVsYXRlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSAmJiBhbmltYXRpb25N
b2RlKCkgIT0gVG9BbmltYXRpb247CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAJKHJldmlzaW9u
IDM4MzM5KQorKysgV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsNyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyhjb25zdCBBdG9t
CiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6eG1sc3BhY2UoKSBjb25zdAogewog
ICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGRl
ZmF1bHRTdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGRlZmF1bHRTdHJpbmcsICgiZGVmYXVsdCIpKTsKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRTdHJpbmc7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MzgzMzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODksNyArODksNyBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5cGUoKSBjb25zdAog
ewotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGVmYXVsdFZhbHVlKCJ0ZXh0L2VjbWFz
Y3JpcHQiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdFZh
bHVlLCAoInRleHQvZWNtYXNjcmlwdCIpKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBn
ZXRBdHRyaWJ1dGUoY29udGVudFNjcmlwdFR5cGVBdHRyKTsKICAgICByZXR1cm4gbi5pc051bGwo
KSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTVkdTVkdF
bGVtZW50OjpzZXRDb250ZW50U2NyaXB0VHlwZQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NW
R0VsZW1lbnQ6OmNvbnRlbnRTdHlsZVR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcgZGVmYXVsdFZhbHVlKCJ0ZXh0L2NzcyIpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBkZWZhdWx0VmFsdWUsICgidGV4dC9jc3MiKSk7CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuID0gZ2V0QXR0cmlidXRlKGNvbnRlbnRTdHlsZVR5cGVBdHRyKTsK
ICAgICByZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR1N0
eWxlRWxlbWVudDo6c2V0WG1sc3BhY2UoY29uc3QgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZH
U3R5bGVFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nIGRlZmF1bHRWYWx1ZSgidGV4dC9jc3MiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoInRleHQvY3NzIikpOwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZSh0eXBlQXR0cik7CiAgICAgcmV0dXJuIG4uaXNOdWxs
KCkgPyBkZWZhdWx0VmFsdWUgOiBuOwogfQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNWR1N0eWxl
RWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9tCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU3R5
bGVFbGVtZW50OjptZWRpYSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyBkZWZhdWx0VmFsdWUoImFsbCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBkZWZhdWx0VmFsdWUsICgiYWxsIikpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9
IGdldEF0dHJpYnV0ZShtZWRpYUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVs
dFZhbHVlIDogbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoU1ZH
TGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgewogICAgICAgICAgICAgaWYg
KGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKSB7Ci0gICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBwcmVzZXJ2ZVN0cmluZygicHJlc2VydmUi
KTsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHJl
c2VydmVTdHJpbmcsICgicHJlc2VydmUiKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+
dmFsdWUoKSA9PSBwcmVzZXJ2ZVN0cmluZykKICAgICAgICAgICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoYXR0ciwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4MzM5KQor
KysgV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkzLDcgKzE5Myw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpwYXJzZUNsb2Nr
VmFsdWUKICAgICAKICAgICBTdHJpbmcgcGFyc2UgPSBkYXRhLnN0cmlwV2hpdGVTcGFjZSgpOwog
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBpbmRlZmluaXRlVmFsdWUoImluZGVmaW5p
dGUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5kZWZpbml0ZVZh
bHVlLCAoImluZGVmaW5pdGUiKSk7CiAgICAgaWYgKHBhcnNlID09IGluZGVmaW5pdGVWYWx1ZSkK
ICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAKQEAgLTQ1Nyw4ICs0NTcs
OCBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojppc0Zyb3plbigpIGNvbnN0CiAgICAgCiBTVkdTTUlM
RWxlbWVudDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6cmVzdGFydCgpIGNvbnN0CiB7ICAgIAot
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgbmV2ZXIoIm5ldmVyIik7Ci0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyB3aGVuTm90QWN0aXZlKCJ3aGVuTm90QWN0aXZlIik7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5ldmVyLCAoIm5ldmVyIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3aGVuTm90QWN0aXZlLCAoIndoZW5O
b3RBY3RpdmUiKSk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGdldEF0dHJpYnV0
ZShTVkdOYW1lczo6cmVzdGFydEF0dHIpOwogICAgIGlmICh2YWx1ZSA9PSBuZXZlcikKICAgICAg
ICAgcmV0dXJuIFJlc3RhcnROZXZlcjsKQEAgLTQ2OSw3ICs0NjksNyBAQCBTVkdTTUlMRWxlbWVu
dDo6UmVzdGFydCBTVkdTTUlMRWxlbWVudDo6CiAgICAgCiBTVkdTTUlMRWxlbWVudDo6RmlsbE1v
ZGUgU1ZHU01JTEVsZW1lbnQ6OmZpbGwoKSBjb25zdAogeyAgIAotICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcgZnJlZXplKCJmcmVlemUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZnJlZXplLCAoImZyZWV6ZSIpKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpmaWxsQXR0cik7CiAgICAgcmV0dXJuIHZh
bHVlID09IGZyZWV6ZSA/IEZpbGxGcmVlemUgOiBGaWxsUmVtb3ZlOwogfQpAQCAtNTA2LDcgKzUw
Niw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50OjpyZXBlYXRDb3VudCgpIGMKICAgICBpZiAo
dmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwog
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBpbmRlZmluaXRlVmFsdWUoImluZGVmaW5p
dGUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5kZWZpbml0ZVZh
bHVlLCAoImluZGVmaW5pdGUiKSk7CiAgICAgaWYgKHZhbHVlID09IGluZGVmaW5pdGVWYWx1ZSkK
ICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjppbmRlZmluaXRlKCk7CiAgICAgYm9vbCBvazsKQEAg
LTg2MSw3ICs4NjEsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBl
CiB2b2lkIFNWR1NNSUxFbGVtZW50Ojpub3RpZnlEZXBlbmRlbnRzSW50ZXJ2YWxDaGFuZ2VkKE5l
d09yRXhpc3RpbmdJbnRlcnZhbCBuZXdPckV4aXN0aW5nKQogewogICAgIEFTU0VSVChtX2ludGVy
dmFsQmVnaW4uaXNGaW5pdGUoKSk7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U1ZHU01JTEVsZW1lbnQq
PiBsb29wQnJlYWtlcjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZHU01JTEVs
ZW1lbnQqPiwgbG9vcEJyZWFrZXIsICgpKTsKICAgICBpZiAobG9vcEJyZWFrZXIuY29udGFpbnMo
dGhpcykpCiAgICAgICAgIHJldHVybjsKICAgICBsb29wQnJlYWtlci5hZGQodGhpcyk7CkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
OCArNDcsMTAgQEAgc3RydWN0IFJlc291cmNlU2V0IHsgCiAgICAgU1ZHUmVzb3VyY2UqIHJlc291
cmNlc1tfUmVzb3VyY2VUeXBlQ291bnRdOyAKIH07CiAKLXN0YXRpYyBIYXNoTWFwPFNWR1N0eWxl
ZEVsZW1lbnQqLCBSZXNvdXJjZVNldCo+JiBjbGllbnRNYXAoKSB7Ci0gICAgc3RhdGljIEhhc2hN
YXA8U1ZHU3R5bGVkRWxlbWVudCosIFJlc291cmNlU2V0Kj4gbWFwOwordHlwZWRlZiBIYXNoTWFw
PFNWR1N0eWxlZEVsZW1lbnQqLCBSZXNvdXJjZVNldCo+IFJlc291cmNlQ2xpZW50TWFwOworCitz
dGF0aWMgUmVzb3VyY2VDbGllbnRNYXAmIGNsaWVudE1hcCgpIHsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJlc291cmNlQ2xpZW50TWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQog
CkBAIC0xMTYsNyArMTE4LDcgQEAgdm9pZCBTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZUNsaWVudHMo
SGFzaAogCiB2b2lkIFNWR1Jlc291cmNlOjpyZW1vdmVDbGllbnQoU1ZHU3R5bGVkRWxlbWVudCog
aXRlbSkgCiB7Ci0gICAgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPjo6
aXRlcmF0b3IgcmVzb3VyY2VQdHIgPSBjbGllbnRNYXAoKS5maW5kKGl0ZW0pOworICAgIFJlc291
cmNlQ2xpZW50TWFwOjppdGVyYXRvciByZXNvdXJjZVB0ciA9IGNsaWVudE1hcCgpLmZpbmQoaXRl
bSk7CiAgICAgaWYgKHJlc291cmNlUHRyID09IGNsaWVudE1hcCgpLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hcmtl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJr
ZXIuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291
cmNlTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNWR1Jl
c291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAgICAgaWYgKCFtX21hcmtlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8U1ZHUmVzb3VyY2VNYXJrZXIqPiBjdXJy
ZW50bHlEcmF3aW5nTWFya2VyczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZH
UmVzb3VyY2VNYXJrZXIqPiwgY3VycmVudGx5RHJhd2luZ01hcmtlcnMsICgpKTsKIAogICAgIC8v
IGF2b2lkIGRyYXdpbmcgY2lyY3VsYXIgbWFya2VyIHJlZmVyZW5jZXMKICAgICBpZiAoY3VycmVu
dGx5RHJhd2luZ01hcmtlcnMuY29udGFpbnModGhpcykpCkluZGV4OiBXZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsOCArNTEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IEhlYWRlcnNTZXQ7CisK
IHN0cnVjdCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0gewotICAgIFByZWZsaWdodFJlc3VsdENh
Y2hlSXRlbSh1bnNpZ25lZCBleHBpcnlEZWx0YSwgYm9vbCBjcmVkZW50aWFscywgSGFzaFNldDxT
dHJpbmc+KiBtZXRob2RzLCBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiogaGVhZGVy
cykKKyAgICBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0odW5zaWduZWQgZXhwaXJ5RGVsdGEsIGJv
b2wgY3JlZGVudGlhbHMsIEhhc2hTZXQ8U3RyaW5nPiogbWV0aG9kcywgSGVhZGVyc1NldCogaGVh
ZGVycykKICAgICAgICAgOiBtX2Fic29sdXRlRXhwaXJ5VGltZShjdXJyZW50VGltZSgpICsgZXhw
aXJ5RGVsdGEpCiAgICAgICAgICwgbV9jcmVkZW50aWFscyhjcmVkZW50aWFscykKICAgICAgICAg
LCBtX21ldGhvZHMobWV0aG9kcykKQEAgLTY2LDE5ICs2OCwxOSBAQCBzdHJ1Y3QgUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVJdGVtIHsKICAgICBkb3VibGUgbV9hYnNvbHV0ZUV4cGlyeVRpbWU7CiAgICAg
Ym9vbCBtX2NyZWRlbnRpYWxzOwogICAgIE93blB0cjxIYXNoU2V0PFN0cmluZz4gPiBtX21ldGhv
ZHM7Ci0gICAgT3duUHRyPEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+ID4gbV9oZWFk
ZXJzOworICAgIE93blB0cjxIZWFkZXJzU2V0ID4gbV9oZWFkZXJzOwogfTsKIAogdHlwZWRlZiBI
YXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtVUkw+LCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0q
PiBQcmVmbGlnaHRSZXN1bHRDYWNoZTsKIAogc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlJiBw
cmVmbGlnaHRSZXN1bHRDYWNoZSgpCiB7Ci0gICAgc3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hl
IGNhY2hlOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHJlZmxpZ2h0UmVzdWx0Q2FjaGUsIGNh
Y2hlLCAoKSk7CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRQcmVm
bGlnaHRSZXN1bHRDYWNoZUVudHJ5KFN0cmluZyBvcmlnaW4sIEtVUkwgdXJsLCB1bnNpZ25lZCBl
eHBpcnlEZWx0YSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgY3JlZGVudGlhbHMsIEhhc2hTZXQ8U3RyaW5nPiogbWV0aG9kcywgSGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4qIGhlYWRlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgY3JlZGVudGlhbHMsIEhhc2hTZXQ8U3RyaW5nPiogbWV0
aG9kcywgSGVhZGVyc1NldCogaGVhZGVycykKIHsKICAgICBBU1NFUlQoIXByZWZsaWdodFJlc3Vs
dENhY2hlKCkuY29udGFpbnMoc3RkOjptYWtlX3BhaXIob3JpZ2luLCB1cmwpKSk7CiAKQEAgLTg4
LDkgKzkwLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kUHJlZmxpZ2h0UmVzdWx0Q2FjaGVFbgogCiBz
dGF0aWMgYm9vbCBpc1NhZmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAg
ICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gZm9yYmlkZGVuSGVhZGVy
czsKLSAgICBzdGF0aWMgU3RyaW5nIHByb3h5U3RyaW5nKCJwcm94eS0iKTsKLSAgICBzdGF0aWMg
U3RyaW5nIHNlY1N0cmluZygic2VjLSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGVhZGVy
c1NldCwgZm9yYmlkZGVuSGVhZGVycywgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBwcm94eVN0cmluZywgKCJwcm94eS0iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHNlY1N0cmluZywgKCJzZWMtIikpOwogICAgIAogICAgIGlmIChmb3JiaWRkZW5IZWFk
ZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3JiaWRkZW5IZWFkZXJzLmFkZCgiYWNjZXB0LWNo
YXJzZXQiKTsKQEAgLTEyMSw3ICsxMjMsNyBAQCBzdGF0aWMgYm9vbCBpc09uQWNjZXNzQ29udHJv
bFNpbXBsZVJlcXVlCiAKIHN0YXRpYyBib29sIGlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFk
ZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBhbGxvd2VkSGVhZGVyczsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEhlYWRlcnNTZXQsIGFsbG93ZWRIZWFkZXJzLCAoKSk7CiAgICAgaWYgKGFsbG93ZWRI
ZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBhbGxvd2VkSGVhZGVycy5hZGQoImNhY2hlLWNv
bnRyb2wiKTsKICAgICAgICAgYWxsb3dlZEhlYWRlcnMuYWRkKCJjb250ZW50LWxhbmd1YWdlIik7
CkBAIC0xMTY1LDcgKzExNjcsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVz
cG9uc2VQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBPd25QdHI8SGFzaFNldDxTdHJp
bmcsIENhc2VGb2xkaW5nSGFzaD4gPiBoZWFkZXJzKG5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPik7CisgICAgT3duUHRyPEhlYWRlcnNTZXQgPiBoZWFkZXJzKG5ldyBIZWFkZXJz
U2V0KTsKICAgICBpZiAoIXBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdChyZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiKSwgaGVhZGVycy5nZXQo
KSkpIHsKICAgICAgICAgbmV0d29ya0Vycm9yKCk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCShyZXZpc2lvbiAzODMzOSkKKysrIFdlYkNvcmUv
eG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBYUGF0aCB7CiAgICAgCiBFdmFsdWF0aW9uQ29udGV4dCYgRXhwcmVzc2lv
bjo6ZXZhbHVhdGlvbkNvbnRleHQoKQogewotICAgIHN0YXRpYyBFdmFsdWF0aW9uQ29udGV4dCBl
dmFsdWF0aW9uQ29udGV4dDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEV2YWx1YXRpb25Db250
ZXh0LCBldmFsdWF0aW9uQ29udGV4dCwgKCkpOwogICAgIHJldHVybiBldmFsdWF0aW9uQ29udGV4
dDsKIH0KIApJbmRleDogV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJDb3Jl
L3htbC9YUGF0aFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAgUGFy
c2VyKiBQYXJzZXI6OmN1cnJlbnRQYXJzZXIgPSAwOwogICAgIAogZW51bSBYTUxDYXQgeyBOYW1l
U3RhcnQsIE5hbWVDb250LCBOb3RQYXJ0T2ZOYW1lIH07CiAKK3R5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFN0ZXA6OkF4aXM+IEF4aXNOYW1lc01hcDsKKwogc3RhdGljIFhNTENhdCBjaGFyQ2F0KFVD
aGFyIGFDaGFyKQogewogICAgIC8vIyMjIG1pZ2h0IG5lZWQgdG8gYWRkIHNvbWUgc3BlY2lhbCBj
YXNlcyBmcm9tIHRoZSBYTUwgc3BlYy4KQEAgLTcwLDcgKzcyLDcgQEAgc3RhdGljIFhNTENhdCBj
aGFyQ2F0KFVDaGFyIGFDaGFyKQogICAgIHJldHVybiBOb3RQYXJ0T2ZOYW1lOwogfQogCi1zdGF0
aWMgdm9pZCBzZXRVcEF4aXNOYW1lc01hcChIYXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz4mIGF4
aXNOYW1lcykKK3N0YXRpYyB2b2lkIHNldFVwQXhpc05hbWVzTWFwKEF4aXNOYW1lc01hcCYgYXhp
c05hbWVzKQogewogICAgIHN0cnVjdCBBeGlzTmFtZSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWU7CkBAIC05NywxMiArOTksMTIgQEAgc3RhdGljIHZvaWQgc2V0VXBBeGlzTmFtZXNNYXAoSGFz
aE1hcDxTdAogCiBzdGF0aWMgYm9vbCBpc0F4aXNOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Rl
cDo6QXhpcyYgdHlwZSkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+
IGF4aXNOYW1lczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF4aXNOYW1lc01hcCwgYXhpc05h
bWVzLCAoKSk7CiAKICAgICBpZiAoYXhpc05hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgc2V0VXBB
eGlzTmFtZXNNYXAoYXhpc05hbWVzKTsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlz
Pjo6aXRlcmF0b3IgaXQgPSBheGlzTmFtZXMuZmluZChuYW1lKTsKKyAgICBBeGlzTmFtZXNNYXA6
Oml0ZXJhdG9yIGl0ID0gYXhpc05hbWVzLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IGF4aXNO
YW1lcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHR5cGUgPSBpdC0+c2Vjb25k
OwpAQCAtMTExLDcgKzExMyw3IEBAIHN0YXRpYyBib29sIGlzQXhpc05hbWUoY29uc3QgU3RyaW5n
JiBuYW0KIAogc3RhdGljIGJvb2wgaXNOb2RlVHlwZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4gbm9kZVR5cGVOYW1lczsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgbm9kZVR5cGVOYW1lcywgKCkpOwogICAgIGlm
IChub2RlVHlwZU5hbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgi
Y29tbWVudCIpOwogICAgICAgICBub2RlVHlwZU5hbWVzLmFkZCgidGV4dCIpOwpJbmRleDogV2Vi
Q29yZS94bWwvWFBhdGhWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhW
YWx1ZS5jcHAJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViQ29yZS94bWwvWFBhdGhWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgY29uc3QgVmFsdWU6OkFkb3B0VGFnIFZh
bHVlOjphZG9wdCA9IHt9OwogY29uc3QgTm9kZVNldCYgVmFsdWU6OnRvTm9kZVNldCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgc3RhdGljIE5vZGVTZXQgZW1wdHlOb2Rl
U2V0OworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5vZGVTZXQsIGVtcHR5Tm9kZVNldCwg
KCkpOwogICAgICAgICByZXR1cm4gZW1wdHlOb2RlU2V0OwogICAgIH0KIApJbmRleDogV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDM4MzQwKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzNyBAQAorMjAwOC0xMS0xMiAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTAKKyAgICAgICAgUmVtb3Zl
IHVzZSBvZiBzdGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUgZGVzdHJveWVkIGF0IGV4aXQgdGlt
ZSAoZGVzdHJ1Y3RvcnMpCisgICAgICAgIAorICAgICAgICBDcmVhdGUgREVGSU5FX1NUQVRJQ19M
T0NBTCBtYWNyby4gQ2hhbmdlIHN0YXRpYyBsb2NhbCBvYmplY3RzIHRvIGxlYWsgdG8gYXZvaWQK
KyAgICAgICAgZXhpdC10aW1lIGRlc3RydWN0b3IuIFVwZGF0ZSBjb2RlIHRoYXQgd2FzIGNoYW5n
ZWQgdG8gZml4IHRoaXMgaXNzdWUgdGhhdCByYW4KKyAgICAgICAgaW50byBhIGdjYyBidWcgKDxy
ZGFyOi8vcHJvYmxlbS82MzU0Njk2PiBDb2RlZ2VuIGlzc3VlIHdpdGggQysrIHN0YXRpYyByZWZl
cmVuY2UgCisgICAgICAgIGluIGdjYyBidWlsZCA1NDY1KS4gQWxzbyB0eXBkZWZzIGZvciB0ZW1w
bGF0ZSB0eXBlcyBuZWVkZWQgdG8gYmUgYWRkZWQgaW4gc29tZQorICAgICAgICBjYXNlcyBzbyB0
aGUgdHlwZSBjb3VsZCBtYWtlIGl0IHRocm91Z2ggdGhlIG1hY3JvIHN1Y2Nlc3NmdWxseS4KKyAg
ICAgICAgCisgICAgICAgIEJhc2ljYWxseSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0
aWMgVCBtOworICAgICAgICBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFQs
IG0sICgpKTsKKyAgICAgICAgCisgICAgICAgIEFsc28gYW55IGNvZGUgb2YgdGhlIGZvcm06Cisg
ICAgICAgIHN0YXRpYyBUJiBtID0gKm5ldyBUOworICAgICAgICBhbHNvIGJlY29tZXM6CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoVCwgbSwgKCkpOworCisgICAgICAgICogSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChiYWNrRm9yd2FyZExpc3RzKToKKyAgICAg
ICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoaGlzdG9yeUl0ZW1XcmFw
cGVycyk6CisgICAgICAgICogTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubToKKyAgICAgICAgKGZv
bnRGcm9tTlNGb250KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbToKKyAgICAgICAgKHN0cmVhbXMpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVlKToKKwogMjAwOC0xMS0xMCAgVG9yIEFybmUg
VmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRM
aXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW0JKHJldmlzaW9uIDM4MzM5KQorKysgV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3
YXJkTGlzdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksOSArNDksMTEgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJh
Y2tGb3J3YXJkTGlzdCo+JiBiYWNrRm9yd2FyZExpc3RzKCkKK3R5cGVkZWYgSGFzaE1hcDxCYWNr
Rm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiBCYWNrRm9yd2FyZExpc3RNYXA7CisK
K3N0YXRpYyBCYWNrRm9yd2FyZExpc3RNYXAmIGJhY2tGb3J3YXJkTGlzdHMoKQogewotICAgIHN0
YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJkTGlzdCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+IHN0YXRp
Y0JhY2tGb3J3YXJkTGlzdHM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChCYWNrRm9yd2FyZExp
c3RNYXAsIHN0YXRpY0JhY2tGb3J3YXJkTGlzdHMsICgpKTsKICAgICByZXR1cm4gc3RhdGljQmFj
a0ZvcndhcmRMaXN0czsKIH0KIApJbmRleDogV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDEyICs2NSwxNCBAQCBOU1N0cmluZyAqV2ViSGlzdG9y
eUl0ZW1DaGFuZ2VkTm90aWZpY2F0CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCit0eXBl
ZGVmIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+IEhpc3RvcnlJdGVtTWFw
OworCiBzdGF0aWMgaW5saW5lIFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSoga2l0UHJpdmF0ZShXZWJD
b3JlSGlzdG9yeUl0ZW0qIGxpc3QpIHsgcmV0dXJuIChXZWJIaXN0b3J5SXRlbVByaXZhdGUqKWxp
c3Q7IH0KIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUhpc3RvcnlJdGVtKiBjb3JlKFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogbGlzdCkgeyByZXR1cm4gKFdlYkNvcmVIaXN0b3J5SXRlbSopbGlzdDsgfQog
Ci1IYXNoTWFwPEhpc3RvcnlJdGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiYgaGlzdG9yeUl0ZW1XcmFw
cGVycygpCitIaXN0b3J5SXRlbU1hcCYgaGlzdG9yeUl0ZW1XcmFwcGVycygpCiB7Ci0gICAgc3Rh
dGljIEhhc2hNYXA8SGlzdG9yeUl0ZW0qLCBXZWJIaXN0b3J5SXRlbSo+IGhpc3RvcnlJdGVtV3Jh
cHBlcnM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIaXN0b3J5SXRlbU1hcCwgaGlzdG9yeUl0
ZW1XcmFwcGVycywgKCkpOwogICAgIHJldHVybiBoaXN0b3J5SXRlbVdyYXBwZXJzOwogfQogCklu
ZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViU3RyaW5nVHJ1bmNhdG9yLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9NaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tCShyZXZpc2lvbiAzODMzOSkKKysr
IFdlYktpdC9tYWMvTWlzYy9XZWJTdHJpbmdUcnVuY2F0b3IubQkod29ya2luZyBjb3B5KQpAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgTlNGb250ICpkZWZhdWx0TWVudUZvbnQoKQogc3RhdGljIEZv
bnQmIGZvbnRGcm9tTlNGb250KE5TRm9udCAqZm9udCkKIHsKICAgICBzdGF0aWMgTlNGb250ICpj
dXJyZW50Rm9udDsKLSAgICBzdGF0aWMgRm9udCBjdXJyZW50UmVuZGVyZXI7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChGb250LCBjdXJyZW50UmVuZGVyZXIsICgpKTsKIAogICAgIGlmIChbZm9u
dCBpc0VxdWFsOmN1cnJlbnRGb250XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsK
SW5kZXg6IFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQkocmV2aXNpb24gMzgzMzkpCisrKyBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyBOU1N0cmluZyAqQ2FyYm9uUGF0aEZyb21QT1NJWFBhdGgKIHR5cGVkZWYgSGFzaE1hcDxO
UFN0cmVhbSosIE5QUD4gU3RyZWFtTWFwOwogc3RhdGljIFN0cmVhbU1hcCYgc3RyZWFtcygpCiB7
Ci0gICAgc3RhdGljIFN0cmVhbU1hcCBzdGF0aWNTdHJlYW1zOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyZWFtTWFwLCBzdGF0aWNTdHJlYW1zLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY1N0
cmVhbXM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAzODMzOSkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjA3LDcg
KzM2MDcsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cygm
SlNBcnJheTo6aW5mbykpIHsKLSAgICAgICAgICAgIHN0YXRpYyBIYXNoU2V0PEpTT2JqZWN0Kj4g
dmlzaXRlZEVsZW1zOworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEpT
T2JqZWN0Kj4sIHZpc2l0ZWRFbGVtcywgKCkpOwogICAgICAgICAgICAgaWYgKCF2aXNpdGVkRWxl
bXMuY29udGFpbnMob2JqZWN0KSkgewogICAgICAgICAgICAgICAgIHZpc2l0ZWRFbGVtcy5hZGQo
b2JqZWN0KTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MzQwKQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MDgtMTEtMTIgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGlj
IEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3Jz
KQorICAgICAgICAKKyAgICAgICAgQ3JlYXRlIERFRklORV9TVEFUSUNfTE9DQUwgbWFjcm8uIENo
YW5nZSBzdGF0aWMgbG9jYWwgb2JqZWN0cyB0byBsZWFrIHRvIGF2b2lkCisgICAgICAgIGV4aXQt
dGltZSBkZXN0cnVjdG9yLiBVcGRhdGUgY29kZSB0aGF0IHdhcyBjaGFuZ2VkIHRvIGZpeCB0aGlz
IGlzc3VlIHRoYXQgcmFuCisgICAgICAgIGludG8gYSBnY2MgYnVnICg8cmRhcjovL3Byb2JsZW0v
NjM1NDY5Nj4gQ29kZWdlbiBpc3N1ZSB3aXRoIEMrKyBzdGF0aWMgcmVmZXJlbmNlIAorICAgICAg
ICBpbiBnY2MgYnVpbGQgNTQ2NSkuIEFsc28gdHlwZGVmcyBmb3IgdGVtcGxhdGUgdHlwZXMgbmVl
ZGVkIHRvIGJlIGFkZGVkIGluIHNvbWUKKyAgICAgICAgY2FzZXMgc28gdGhlIHR5cGUgY291bGQg
bWFrZSBpdCB0aHJvdWdoIHRoZSBtYWNybyBzdWNjZXNzZnVsbHkuCisgICAgICAgIAorICAgICAg
ICBCYXNpY2FsbHkgY29kZSBvZiB0aGUgZm9ybToKKyAgICAgICAgc3RhdGljIFQgbTsKKyAgICAg
ICAgYmVjb21lczoKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChULCBtLCAoKSk7CisgICAg
ICAgIAorICAgICAgICBBbHNvIGFueSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0aWMg
VCYgbSA9ICpuZXcgVDsKKyAgICAgICAgYWxzbyBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFQsIG0sICgpKTsKKyAgICAgICAgCisgICAgICAgIFJlbW92ZSAubyBmaWxlcyBm
cm9tIHRoZSBleGNsdWRlIGxpc3QgdGhhdCBoYXZlIGhhZCB0aGVpciBleGl0LXRpbWUgZGVzdHJ1
Y3RvcnMgcmVtb3ZlZC4KKworICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1k
ZXN0cnVjdG9yczogRG9uJ3QgZGVtYW5nbGUgc3ltYm9scyB0aGF0IGRvbid0IGV4aXN0LgorCiAy
MDA4LTExLTA2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
QlVJTEQgRklYOiBCYWNrZWQgb3V0IHIzODE4OSAoYW5kIHIzODIwMykgZm9yIFhjb2RlIDMuMC4K
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9y
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMJKHJldmlzaW9uIDM4MzM5KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVj
ay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMTAgKzk1
LDM1IEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICBpZiAoJHRhcmdldCBlcSAi
V2ViQ29yZSIpIHsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nlc3NpYmlsaXR5
T2JqZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbHlT
dHlsZUNvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQXJjaGl2ZUZh
Y3RvcnkubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24ubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTUHJpbWl0
aXZlVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU2VsZWN0b3Iu
byI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQ1NTU3R5bGVTZWxlY3Rvci5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRJbWFnZS5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJDb2xvck1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJEb2N1bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJFdmVu
dEhhbmRsZXIubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVy
TWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZUUERpcmVjdG9yeURvY3Vt
ZW50Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKICAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGVNYWMubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiRm9ybURhdGFTdHJlYW1NYWMubyI7Ci0gICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiRnJhbWVMb2FkZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVN
YWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiR0NDb250cm9sbGVyLm8iOwog
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29udGV4dE1hYy5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MQnV0dG9uRWxlbWVudC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJIVE1MRmllbGRTZXRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkhUTUxJbnB1dEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSFRNTEludGVyY2hhbmdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIkhUTUxLZXlnZW5FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkhUTUxMZWdlbmRFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkhUTUxPcHRHcm91cEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SFRNTE9wdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRN
TFBhcnNlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MU2VsZWN0RWxl
bWVudC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGFibGVFbGVtZW50
Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxUZXh0QXJlYUVsZW1lbnQu
byI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSWNvbkRhdGFiYXNlLm8iOwogICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkltYWdlLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkluZGVudE91dGRlbnRDb21tYW5kLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkluc3BlY3RvckNvbnRyb2xsZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiSlNET01CaW5kaW5nLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIubyI7CiAgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5vIjsKICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsKICAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiSmF2YVNjcmlwdERlYnVnU2VydmVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkphdmFTY3JpcHRQcm9maWxlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkphdmFTY3JpcHRQcm9maWxlTm9kZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJLVVJMLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkxvY2FsU3RvcmFnZS5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3JrU3RhdGVOb3RpZmllci5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOwogICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiUmVuZGVyQmxvY2subyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiUmVuZGVyQ291bnRlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5k
ZXJGbGV4aWJsZUJveC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJM
YXllci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMaXN0SXRlbS5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTdHlsZS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFjLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1lbnQubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlNWR1Jlc291cmNlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNWR1Jlc291cmNlTWFya2VyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIlNWR1NNSUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNW
R1NWR0VsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU3R5bGVF
bGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1RleHRDb250ZW50
RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3JpcHRFbGVtZW50
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9sbFZpZXcubyI7Ci0gICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVNYWMubyI7CiAgICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7CiAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CiAgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlRleHRFbmNvZGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJUaGVtZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJUaHJlYWRD
aGVjay5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYTUxIdHRwUmVxdWVzdC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJYUGF0aEV4cHJlc3Npb25Ob2RlLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoUGFyc2VyLm8iOwotICAgICAg
ICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoVmFsdWUubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiYmlkaS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJo
dG1sZWRpdGluZy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJtYXJrdXAubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAicnVudGltZV9yb290Lm8iOwogICAgIH0K
IAogICAgIGlmICgkdGFyZ2V0IGVxICJXZWJLaXQiKSB7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiQWNjZXNzaWJpbGl0eU9iamVjdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJXZWJCYWNrRm9yd2FyZExpc3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm8iOwogICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIldlYkhUTUxSZXByZXNlbnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJXZWJIaXN0b3J5SXRlbS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJXZWJOU1Bhc3RlYm9hcmRFeHRyYXMubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiV2ViUGFzdGVib2FyZEhlbHBlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJXZWJTdHJpbmdUcnVuY2F0b3IubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiV2ViVmlldy5vIjsKICAgICB9CiAKICAgICAkc2F3RXJyb3IgPSAxIGlmIHByaW50RnVu
Y3Rpb25zKCRzaG9ydE5hbWUsICRmaWxlKTsK
</data>
<flag name="review"
          id="11553"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25143</attachid>
            <date>2008-11-13 16:49:03 -0800</date>
            <delta_ts>2008-11-15 12:10:09 -0800</delta_ts>
            <desc>JavaScriptCore only patch</desc>
            <filename>JSC-Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>8673</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4Mzc4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMDgtMTEtMTMgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQg
YXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIENyZWF0
ZSBERUZJTkVfU1RBVElDX0xPQ0FMIGFuZCBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTiBtYWNy
b3MuIENoYW5nZSBzdGF0aWMgCisgICAgICAgIGxvY2FsIG9iamVjdHMgdG8gbGVhayB0byBhdm9p
ZCBleGl0LXRpbWUgZGVzdHJ1Y3Rvci4gVXBkYXRlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZCAKKyAg
ICAgICAgdG8gZml4IHRoaXMgaXNzdWUgdGhhdCByYW4gaW50byBhIGdjYyBidWcgKDxyZGFyOi8v
cHJvYmxlbS82MzU0Njk2PiBDb2RlZ2VuIGlzc3VlIAorICAgICAgICB3aXRoIEMrKyBzdGF0aWMg
cmVmZXJlbmNlIGluIGdjYyBidWlsZCA1NDY1KS4gQWxzbyB0eXBkZWZzIGZvciB0ZW1wbGF0ZSB0
eXBlcyAKKyAgICAgICAgbmVlZGVkIHRvIGJlIGFkZGVkIGluIHNvbWUgY2FzZXMgc28gdGhlIHR5
cGUgY291bGQgbWFrZSBpdCB0aHJvdWdoIHRoZSBtYWNybyAKKyAgICAgICAgc3VjY2Vzc2Z1bGx5
LgorCisgICAgICAgIEJhc2ljYWxseSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0aWMg
VCBtOworICAgICAgICBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFQsIG0s
ICgpKTsKKworICAgICAgICBBbHNvIGFueSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0
aWMgVCYgbSA9ICpuZXcgVDsKKyAgICAgICAgYWxzbyBiZWNvbWVzOgorICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFQsIG0sICgpKTsKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAg
ICAgICAoV1RGOjptYWluVGhyZWFkRnVuY3Rpb25RdWV1ZU11dGV4KToKKyAgICAgICAgKFdURjo6
ZnVuY3Rpb25RdWV1ZSk6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOiBBZGRlZC4gQWRk
IERFRklORV9TVEFUSUNfTE9DQUwgYW5kIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOIG1hY3Jv
cworICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OnRo
cmVhZE1hcE11dGV4KToKKyAgICAgICAgKFdURjo6dGhyZWFkTWFwKToKKyAgICAgICAgKFdURjo6
aWRlbnRpZmllckJ5UHRocmVhZEhhbmRsZSk6CisKIDIwMDgtMTEtMTMgIENhbWVyb24gWndhcmlj
aCAgPHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzODM3OCkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTMwNyw2ICszMDcsNyBAQAogCQlFMUE4NjJENjBEN0YyQjVDMDAxRUM2QUEgLyogQ29sbGF0
b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxQTg2MkQ1MEQ3RjJCNUMwMDFFQzZBQSAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9
OwogCQlFMUVFNzkzRDBENkM5QjkyMDBGRUEzQkEgLyogVGhyZWFkaW5nUHRocmVhZHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc5M0MwRDZD
OUI5MjAwRkVBM0JBIC8qIFRocmVhZGluZ1B0aHJlYWRzLmNwcCAqLzsgfTsKIAkJRTFFRjc5QUEw
Q0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFFRjc5QTgwQ0U5N0JBNjAwODhENTAwIC8qIFVURjguY3BwICov
OyB9OworCQlGRTFCNDQ3QTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFCNDQ3OTBFQ0NENzNC
MDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNzQ2LDYgKzc0Nyw3IEBA
CiAJCUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVTdHJpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCUY2OTJBODg2MDI1NTU5
N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB9OwogCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OworCQlG
RTFCNDQ3OTBFQ0NENzNCMDA0RjRERDEgLyogU3RkTGliRXh0cmFzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZExpYkV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMDU1LDYgKzEwNTcsNyBAQAogCQkJ
CTY1QzY0N0IzMDkzRUY4RDYwMDIyQzM4MCAvKiBSZWZQdHIuaCAqLywKIAkJCQkxNDhBMUVDRDBE
MTBDMjNCMDA2OUE0N0MgLyogUmVmUHRySGFzaE1hcC5oICovLAogCQkJCTUxRjY0OEQ2MEJCNEUy
Q0EwMDMzRDc2MCAvKiBSZXRhaW5QdHIuaCAqLywKKwkJCQlGRTFCNDQ3OTBFQ0NENzNCMDA0RjRE
RDEgLyogU3RkTGliRXh0cmFzLmggKi8sCiAJCQkJRTExRDUxNzUwQjJFNzk4RDAwNTZDMTg4IC8q
IFN0cmluZ0V4dHJhcy5oICovLAogCQkJCTVEQTQ3OTY1MENGQkNGNTYwMDkzMjhBMCAvKiBUQ1Bh
Y2tlZENhY2hlLmggKi8sCiAJCQkJNjU0MUJENkUwOEU4MEExNzAwMkNCRUU3IC8qIFRDUGFnZU1h
cC5oICovLApAQCAtMTU3NCw2ICsxNTc3LDcgQEAKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0
QUEgLyogU3RydWN0dXJlSURDaGFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VGRjAwNjQwRUMw
NUE5QTAwQUE3QzkzIC8qIE5vZGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRDODkxNDBF
Q0EwRjlBMDBEQkVFRUMgLyogRXZhbENvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUx
QjQ0N0EwRUNDRDczQjAwNEY0REQxIC8qIFN0ZExpYkV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKIAorI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgogI2luY2x1ZGUgIlRocmVhZGluZy5oIgogI2luY2x1ZGUg
IlZlY3Rvci5oIgogCkBAIC01MywxMyArNTQsMTMgQEAgc3RhdGljIGJvb2wgY2FsbGJhY2tzUGF1
c2VkOyAvLyBUaGlzIGdsbwogCiBNdXRleCYgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleCgp
CiB7Ci0gICAgc3RhdGljIE11dGV4JiBzdGF0aWNNdXRleCA9ICpuZXcgTXV0ZXg7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RhdGljTXV0ZXgsICgpKTsKICAgICByZXR1cm4gc3Rh
dGljTXV0ZXg7CiB9CiAKIHN0YXRpYyBGdW5jdGlvblF1ZXVlJiBmdW5jdGlvblF1ZXVlKCkKIHsK
LSAgICBzdGF0aWMgRnVuY3Rpb25RdWV1ZSYgc3RhdGljRnVuY3Rpb25RdWV1ZSA9ICpuZXcgRnVu
Y3Rpb25RdWV1ZTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uUXVldWUsIHN0YXRp
Y0Z1bmN0aW9uUXVldWUsICgpKTsKICAgICByZXR1cm4gc3RhdGljRnVuY3Rpb25RdWV1ZTsKIH0K
IApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMCkKKysrIEphdmFT
Y3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisvLyBVc2Ug
dGhlc2UgdG8gZGVjbGFyZSBhbmQgZGVmaW5lIGEgc3RhdGljIGxvY2FsIHZhcmlhYmxlIChzdGF0
aWMgVDspIHNvIHRoYXQKKy8vICBpdCBpcyBsZWFrZWQgc28gdGhhdCBpdHMgZGVzdHJ1Y3RvcnMg
YXJlIG5vdCBjYWxsZWQgYXQgZXhpdC4gVXNpbmcgdGhpcworLy8gIG1hY3JvIGFsc28gYWxsb3dz
IHdvcmthcm91bmRzIGZvciB2YXJpb3VzIGNvbXBpbGVyIGJ1Z3MuCisjZGVmaW5lIERFRklORV9T
VEFUSUNfTE9DQUwodHlwZSwgbmFtZSwgYXJndW1lbnRzKSBcCisgICAgc3RhdGljIHR5cGUqIG5h
bWUjI1B0ciA9IG5ldyB0eXBlIGFyZ3VtZW50czsgXAorICAgIHR5cGUmIG5hbWUgPSAqbmFtZSMj
UHRyCisKKyNkZWZpbmUgREVGSU5FX1NUQVRJQ19MT0NBTF9BU1NJR04odHlwZSwgbmFtZSwgZGF0
YSkgXAorICAgIHN0YXRpYyB0eXBlKiBuYW1lIyNQdHIgPSBkYXRhOyBcCisgICAgdHlwZSYgbmFt
ZSA9ICpuYW1lIyNQdHIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRz
LmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAjaW5j
bHVkZSAiVGhyZWFkaW5nLmgiCiAKICNpZiBVU0UoUFRIUkVBRFMpCkBAIC00MCw2ICs0MSw4IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCit0eXBlZGVmIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwg
cHRocmVhZF90PiBUaHJlYWRNYXA7CisKIHN0YXRpYyBNdXRleCogYXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXg7CiAKICNpZiAhUExBVEZPUk0oREFSV0lOKQpAQCAtNDgsNyArNTEsNyBA
QCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpCiAKIHN0YXRpYyBNdXRl
eCYgdGhyZWFkTWFwTXV0ZXgoKQogewotICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3IE11
dGV4OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CiAgICAgcmV0
dXJuIG11dGV4OwogfQogCkBAIC03Niw5ICs3OSw5IEBAIHZvaWQgdW5sb2NrQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljTXUKICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleC0+
dW5sb2NrKCk7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRf
dD4mIHRocmVhZE1hcCgpCitzdGF0aWMgVGhyZWFkTWFwJiB0aHJlYWRNYXAoKQogewotICAgIHN0
YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRfdD4mIG1hcCA9ICpuZXcgSGFz
aE1hcDxUaHJlYWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoVGhyZWFkTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC05Nyw3ICsx
MDAsNyBAQCBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQnlQdGhyCiB7CiAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwogCi0gICAgSGFzaE1hcDxUaHJl
YWRJZGVudGlmaWVyLCBwdGhyZWFkX3Q+OjppdGVyYXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4o
KTsKKyAgICBUaHJlYWRNYXA6Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOwogICAg
IGZvciAoOyBpICE9IHRocmVhZE1hcCgpLmVuZCgpOyArK2kpIHsKICAgICAgICAgaWYgKHB0aHJl
YWRfZXF1YWwoaS0+c2Vjb25kLCBwdGhyZWFkSGFuZGxlKSkKICAgICAgICAgICAgIHJldHVybiBp
LT5maXJzdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25144</attachid>
            <date>2008-11-13 16:51:36 -0800</date>
            <delta_ts>2008-11-15 12:10:12 -0800</delta_ts>
            <desc>WebCore only patch</desc>
            <filename>WC-Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>116657</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcyIEBACisyMDA4LTExLTEzICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxMAorICAgICAgICBS
ZW1vdmUgdXNlIG9mIHN0YXRpYyBDKysgb2JqZWN0cyB0aGF0IGFyZSBkZXN0cm95ZWQgYXQgZXhp
dCB0aW1lIChkZXN0cnVjdG9ycykKKworICAgICAgICBDcmVhdGUgREVGSU5FX1NUQVRJQ19MT0NB
TCBhbmQgREVGSU5FX1NUQVRJQ19MT0NBTF9BU1NJR04gbWFjcm9zLiBDaGFuZ2Ugc3RhdGljIAor
ICAgICAgICBsb2NhbCBvYmplY3RzIHRvIGxlYWsgdG8gYXZvaWQgZXhpdC10aW1lIGRlc3RydWN0
b3IuIFVwZGF0ZSBjb2RlIHRoYXQgd2FzIGNoYW5nZWQgCisgICAgICAgIHRvIGZpeCB0aGlzIGlz
c3VlIHRoYXQgcmFuIGludG8gYSBnY2MgYnVnICg8cmRhcjovL3Byb2JsZW0vNjM1NDY5Nj4gQ29k
ZWdlbiBpc3N1ZSAKKyAgICAgICAgd2l0aCBDKysgc3RhdGljIHJlZmVyZW5jZSBpbiBnY2MgYnVp
bGQgNTQ2NSkuIEFsc28gdHlwZGVmcyBmb3IgdGVtcGxhdGUgdHlwZXMgCisgICAgICAgIG5lZWRl
ZCB0byBiZSBhZGRlZCBpbiBzb21lIGNhc2VzIHNvIHRoZSB0eXBlIGNvdWxkIG1ha2UgaXQgdGhy
b3VnaCB0aGUgbWFjcm8gCisgICAgICAgIHN1Y2Nlc3NmdWxseS4KKworICAgICAgICBCYXNpY2Fs
bHkgY29kZSBvZiB0aGUgZm9ybToKKyAgICAgICAgc3RhdGljIFQgbTsKKyAgICAgICAgYmVjb21l
czoKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChULCBtLCAoKSk7CisKKyAgICAgICAgQWxz
byBhbnkgY29kZSBvZiB0aGUgZm9ybToKKyAgICAgICAgc3RhdGljIFQmIG0gPSAqbmV3IFQ7Cisg
ICAgICAgIGFsc28gYmVjb21lczoKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChULCBtLCAo
KSk7CisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvU3RkTGliRXh0cmFzLmg6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnY0NvbnRyb2xsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cmFwcGVyU2V0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZWVkc1lvdVR1YmVR
dWlyayk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpyb290T2JqZWN0U2V0KToKKyAgICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdFNob3J0aGFuZE1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVy
dHkpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlw
ZSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2NyZWVuRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpwcmludEV2YWwpOgorICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6aXNTVkcxMEZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
aXNTVkcxMUZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246Omlz
WE1MTUlNRVR5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aGFzUHJlZml4TmFtZXNwYWNlTWlzbWF0Y2gpOgorICAgICAgICAqIGRv
bS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3VwcG9ydGVkSmF2YVNj
cmlwdExhbmd1YWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnN0eWxlU3BhbkNsYXNzU3RyaW5nKToKKyAgICAgICAgKiBlZGl0
aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5k
ZW50QmxvY2txdW90ZVN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0ludGVyY2hhbmdlTmV3bGluZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6aXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbik6Cisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6bm9uQnJlYWtp
bmdTcGFjZVN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
RXNjYXBlZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWRkTmFtZXNwYWNlQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToK
KyAgICAgICAgKiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxCdXR0b25FbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OmlubGluZVRhZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Ymxv
Y2tUYWdMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6dHlwZSk6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAqIGh0bWwvSFRN
TExlZ2VuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExlZ2VuZEVsZW1lbnQ6
OnR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
Ojp0eXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBhcnNlcjo6Z2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjpp
c0hlYWRlclRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5
bGVUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6aXNBZmZlY3RlZEJ5UmVzaWR1
YWxTdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dHlwZSk6CisgICAgICAgICogaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnR5cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2hhcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUNhY2hlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2ZpbGVOb2Rl
Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsb2NhbFNjaGVtZXMpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZVN0b3JhZ2UpOgorICAg
ICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFyY2hpdmVNSU1FVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZUZhY3Rvcnk6
OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0
RGF0YWJhc2VGaWxlbmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnU3RhdGUpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVnRXhwRm9yTGFiZWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmtlZXBBbGl2ZVNldCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwTmFtZSk6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGFnZS9tYWMvRnJhbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpy
ZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxhbmtVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphbHRlcm5hdGVGYW1pbHlOYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9DdXJzb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpsZWFrTmFtZWRDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRlckN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpjcm9zc0N1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpoYW5kQ3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6Om1vdmVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxUZXh0Q3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OmNlbGxDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6YWxpYXNDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6em9vbUluQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Onpvb21PdXRD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpub25lQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnByb2dyZXNzQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5vRHJvcEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpub3RBbGxvd2Vk
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmlCZWFtQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OndhaXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6aGVscEN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjplYXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoUmVz
aXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFJlc2l6ZUN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpub3J0aFdlc3RSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c291dGhSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6c291dGhFYXN0UmVzaXpl
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OnNvdXRoV2VzdFJlc2l6ZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjp3ZXN0UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcnRo
U291dGhSZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFdlc3RSZXNpemVDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6Om5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpjb2x1bW5SZXNpemVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6cm93
UmVzaXplQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OmdyYWJDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Z3JhYmJpbmdDdXJzb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVU
aGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1UaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RocmVhZENoZWNr
Lm1tOgorICAgICAgICAoV2ViQ29yZVJlcG9ydFRocmVhZFZpb2xhdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpuZXR3b3JrU3RhdGVOb3RpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJlYW1Gb3Jt
RGF0YU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRFbmNvZGluZzo6aXNKYXBhbmVzZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXI6OnNjaGVkdWxlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRpbnVhdGlvbk91dGxpbmVUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkQ29udGludWF0aW9uV2l0aE91dGxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGluZXMp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvdW50ZXJNYXBzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dFZlcnRpY2Fs
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGlzdEl0ZW06Om1hcmtlclRleHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzeXN0
ZW1Gb250KToKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y2hlY2tMaW5lc0ZvclRleHRPdmVyZmxvdyk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjppbml0aWFsRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZE11dGV4KToKKyAgICAgICAgKFdlYkNvcmU6Omd1
aWRUb1ZlcnNpb25NYXApOgorICAgICAgICAoV2ViQ29yZTo6Z3VpZFRvRGF0YWJhc2VNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpkYXRhYmFzZVZlcnNpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRGb3JPcmln
aW5BbmROYW1lKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6bm90aWZpY2F0aW9uTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6bm90aWZpY2F0aW9uUXVl
dWUpOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxvY2FsU3RvcmFnZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpyb3Rh
dGVNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpjYWxjTW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzQWRkaXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNBY2N1bXVsYXRlZCk6CisgICAgICAgICogc3ZnL1NWR0xh
bmdTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OnhtbHNwYWNlKToK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50Ojpjb250ZW50U2NyaXB0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdF
bGVtZW50Ojpjb250ZW50U3R5bGVUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZUVsZW1lbnQ6Om1lZGlhKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNl
Q2xvY2tWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cmVzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTTUlMRWxlbWVudDo6cmVwZWF0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U01JTEVsZW1lbnQ6Om5vdGlmeURlcGVuZGVudHNJbnRlcnZhbENoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGllbnRN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2U6OnJlbW92ZUNsaWVudCk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjpQcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6cHJlZmxpZ2h0UmVzdWx0
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJlZmxpZ2h0UmVzdWx0Q2FjaGVFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjppc1NhZmVSZXF1ZXN0SGVhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzT25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodCk6
CisgICAgICAgICogeG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OkV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KToKKyAgICAgICAgKiB4bWwv
WFBhdGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OnNldFVwQXhpc05hbWVz
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjppc0F4aXNOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjppc05vZGVUeXBlTmFtZSk6CisgICAgICAgICogeG1sL1hQYXRoVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlZhbHVlOjp0b05vZGVTZXQpOgorCiAyMDA4
LTExLTEzICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RkTGliRXh0cmFzLmg+CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0NvbGxlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogI2lmIFVTRShQVEhSRUFEUykKICNpbmNsdWRlIDxwdGhyZWFkLmg+
CkBAIC01Miw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkKiBjb2xsZWN0KHZvaWQqKQogCiBHQ0NvbnRy
b2xsZXImIGdjQ29udHJvbGxlcigpCiB7Ci0gICAgc3RhdGljIEdDQ29udHJvbGxlciBzdGF0aWNH
Q0NvbnRyb2xsZXI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHQ0NvbnRyb2xsZXIsIHN0YXRp
Y0dDQ29udHJvbGxlciwgKCkpOwogICAgIHJldHVybiBzdGF0aWNHQ0NvbnRyb2xsZXI7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDM4Mzc4KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90b3R5cGVG
dW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShT
VkcpCiAjaW5jbHVkZSAiSlNTVkdFeGNlcHRpb24uaCIKQEAgLTk3LDEwICs5OCwxMCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcmVtb3ZlV3JhcHBlcnMoY29uc3QgCiBzdGF0aWMgSGFzaFNldDxET01P
YmplY3QqPiYgd3JhcHBlclNldCgpCiB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgc3RhdGlj
IFRocmVhZFNwZWNpZmljPEhhc2hTZXQ8RE9NT2JqZWN0Kj4gPiBzdGF0aWNXcmFwcGVyU2V0Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGhyZWFkU3BlY2lmaWM8SGFzaFNldDxET01PYmplY3Qq
PiA+LCBzdGF0aWNXcmFwcGVyU2V0LCAoKSk7CiAgICAgcmV0dXJuICpzdGF0aWNXcmFwcGVyU2V0
OwogI2Vsc2UKLSAgICBzdGF0aWMgSGFzaFNldDxET01PYmplY3QqPiBzdGF0aWNXcmFwcGVyU2V0
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxET01PYmplY3QqPiwgc3RhdGljV3Jh
cHBlclNldCwgKCkpOwogICAgIHJldHVybiBzdGF0aWNXcmFwcGVyU2V0OwogI2VuZGlmCiB9Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIu
Y3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCkBAIC00MCw3ICs0MSw3IEBAIHR5cGVkZWYgSGFzaE1hcDxKU0dsb2Jh
bE9iamVjdCosIFdyYXBwZXIKIAogc3RhdGljIEdsb2JhbE9iamVjdFdyYXBwZXJNYXAmIHdyYXBw
ZXJzKCkKIHsKLSAgICBzdGF0aWMgR2xvYmFsT2JqZWN0V3JhcHBlck1hcCBtYXA7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChHbG9iYWxPYmplY3RXcmFwcGVyTWFwLCBtYXAsICgpKTsKICAgICBy
ZXR1cm4gbWFwOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2Fs
bGJhY2tXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5z
cGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmgi
CiAKICNpbmNsdWRlICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuaCIKKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKQEAgLTM4LDcgKzM5LDcg
QEAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgSlNJbnNwZWN0b3JDYQogCiBzdGF0aWMgV3Jh
cHBlck1hcCYgd3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBXcmFwcGVyTWFwIG1hcDsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFdyYXBwZXJNYXAsIG1hcCwgKCkpOwogICAgIHJldHVybiBtYXA7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCShy
ZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBib29sIG5lZWRzWW91
VHViZVF1aXJrKEV4ZWNTdGF0ZSoKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGV4ZWMtPmZ1
bmN0aW9uKCk7CiAgICAgaWYgKCFmdW5jdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHN0YXRpYyBjb25zdCBJZGVudGlmaWVyJiBpc1dpbmRvd3NGdW5jdGlvbk5hbWUgPSAqbmV3IElk
ZW50aWZpZXIoZXhlYywgImlzV2luZG93cyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgSWRlbnRpZmllciwgaXNXaW5kb3dzRnVuY3Rpb25OYW1lLCAoZXhlYywgImlzV2luZG93cyIp
KTsKICAgICBpZiAoZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSgpICE9IGlzV2luZG93c0Z1bmN0aW9u
TmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBi
b29sIG5lZWRzWW91VHViZVF1aXJrKEV4ZWNTdGF0ZSoKICAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxpbmdFeGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3QgSWRlbnRpZmllciYgaXNTYWZhcmlG
dW5jdGlvbk5hbWUgPSAqbmV3IElkZW50aWZpZXIoZXhlYywgImlzU2FmYXJpIik7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBJZGVudGlmaWVyLCBpc1NhZmFyaUZ1bmN0aW9uLCAoZXhl
YywgImlzU2FmYXJpIikpOwogICAgIEpTVmFsdWUqIGlzU2FmYXJpRnVuY3Rpb24gPSB0aGlzT2Jq
ZWN0LT5nZXREaXJlY3QoaXNTYWZhcmlGdW5jdGlvbk5hbWUpOwogICAgIGlmIChpc1NhZmFyaUZ1
bmN0aW9uICE9IGNhbGxpbmdGdW5jdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX3Jvb3QuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfcm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQmluZGluZ3MgewogCkBAIC00Miw3
ICs0Myw3IEBAIHR5cGVkZWYgSGFzaFNldDxSb290T2JqZWN0Kj4gUm9vdE9iamVjdFMKIAogc3Rh
dGljIFJvb3RPYmplY3RTZXQqIHJvb3RPYmplY3RTZXQoKQogewotICAgIHN0YXRpYyBSb290T2Jq
ZWN0U2V0IHN0YXRpY1Jvb3RPYmplY3RTZXQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSb290
T2JqZWN0U2V0LCBzdGF0aWNSb290T2JqZWN0U2V0LCAoKSk7CiAgICAgcmV0dXJuICZzdGF0aWNS
b290T2JqZWN0U2V0OwogfQogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTM0OSw4ICszNTAsMTAgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBpbnQqIG1fcHJvcGVydGllczsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CisgICAgCit0
eXBlZGVmIEhhc2hNYXA8aW50LCBQcm9wZXJ0eUxvbmdoYW5kPiBTaG9ydGhhbmRNYXA7CiAKLXN0
YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoSGFzaE1hcDxpbnQsIFByb3BlcnR5TG9uZ2hhbmQ+
JiBzaG9ydGhhbmRNYXApCitzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1h
cCYgc2hvcnRoYW5kTWFwKQogewogICAgICNkZWZpbmUgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
bWFwLCBwcm9wSUQsIGFycmF5KSBcCiAgICAgICAgIG1hcC5zZXQocHJvcElELCBQcm9wZXJ0eUxv
bmdoYW5kKGFycmF5LCBzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKGFycmF5WzBdKSkpCkBAIC01MDEs
NyArNTA0LDcgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpyZW1vdgogewog
ICAgIGVjID0gMDsKIAotICAgIHN0YXRpYyBIYXNoTWFwPGludCwgUHJvcGVydHlMb25naGFuZD4g
c2hvcnRoYW5kTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kTWFwLCBzaG9y
dGhhbmRNYXAsICgpKTsKICAgICBpZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkKICAgICAgICAg
aW5pdFNob3J0aGFuZE1hcChzaG9ydGhhbmRNYXApOwogCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgpAQCAtNjg2LDcgKzY4Nyw3IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnMKICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgbGlzdC1zdHlsZSBhbmQgc2VwYXJhdG9yCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfUkVDVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyByZWN0UGFyZW4oInJlY3QoIik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgcmVjdFBhcmVuLCAoInJlY3QoIikpOwogCiAgICAgICAgICAgICBSZWN0KiBy
ZWN0VmFsID0gZ2V0UmVjdFZhbHVlKCk7CiAgICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3Vs
dDsKQEAgLTcwOSw5ICs3MTAsOSBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQo
KSBjb25zCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CiAgICAgICAgIGNh
c2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBjb21tYVNwYWNlKCIsICIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyByZ2JQ
YXJlbigicmdiKCIpOwotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyByZ2JhUGFyZW4o
InJnYmEoIik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
Y29tbWFTcGFjZSwgKCIsICIpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCByZ2JQYXJlbiwgKCJyZ2IoIikpOworICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIHJnYmFQYXJlbiwgKCJyZ2JhKCIpKTsKIAogICAgICAgICAg
ICAgUkdCQTMyIHJnYkNvbG9yID0gbV92YWx1ZS5yZ2Jjb2xvcjsKICAgICAgICAgICAgIGlmICht
X3R5cGUgPT0gQ1NTX1BBUlNFUl9IRVhDT0xPUikKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDM4Mzc4KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3IuaCIKIAorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1bnNpZ25lZCBpbnQgQ1NTU2VsZWN0b3I6OnNwZWNpZmljaXR5KCkKQEAgLTYy
LDc1ICs2NCw3NSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvCiAg
ICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9tYXRjaCAhPSBQc2V1ZG9FbGVtZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFjdGl2ZSgiYWN0
aXZlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBhZnRlcigiYWZ0ZXIiKTsKLSAgICBzdGF0
aWMgQXRvbWljU3RyaW5nIGFueUxpbmsoIi13ZWJraXQtYW55LWxpbmsiKTsKLSAgICBzdGF0aWMg
QXRvbWljU3RyaW5nIGF1dG9maWxsKCItd2Via2l0LWF1dG9maWxsIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBiZWZvcmUoImJlZm9yZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY2hl
Y2tlZCgiY2hlY2tlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmlsZVVwbG9hZEJ1dHRv
bigiLXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGRpc2FibGVkKCJkaXNhYmxlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgcmVhZE9ubHko
InJlYWQtb25seSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgcmVhZFdyaXRlKCJyZWFkLXdy
aXRlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBkcmFnKCItd2Via2l0LWRyYWciKTsKLSAg
ICBzdGF0aWMgQXRvbWljU3RyaW5nIGRyYWdBbGlhcygiLWtodG1sLWRyYWciKTsgLy8gd2FzIGRv
Y3VtZW50ZWQgd2l0aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1lbnRhdGlvbiwgc28ga2VlcCBh
biBhbGlhcwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZW1wdHkoImVtcHR5Iik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyBlbmFibGVkKCJlbmFibGVkIik7Ci0gICAgc3RhdGljIEF0b21pY1N0
cmluZyBmaXJzdENoaWxkKCJmaXJzdC1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcg
Zmlyc3RMZXR0ZXIoImZpcnN0LWxldHRlciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmly
c3RMaW5lKCJmaXJzdC1saW5lIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmaXJzdE9mVHlw
ZSgiZmlyc3Qtb2YtdHlwZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZnVsbFBhZ2VNZWRp
YSgiLXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50
aENoaWxkKCJudGgtY2hpbGQoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBudGhPZlR5cGUo
Im50aC1vZi10eXBlKCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbnRoTGFzdENoaWxkKCJu
dGgtbGFzdC1jaGlsZCgiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG50aExhc3RPZlR5cGUo
Im50aC1sYXN0LW9mLXR5cGUoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBmb2N1cygiZm9j
dXMiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGhvdmVyKCJob3ZlciIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgaW5kZXRlcm1pbmF0ZSgiaW5kZXRlcm1pbmF0ZSIpOwotICAgIHN0YXRp
YyBBdG9taWNTdHJpbmcgaW5wdXRQbGFjZWhvbGRlcigiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRl
ciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbGFzdENoaWxkKCJsYXN0LWNoaWxkIik7Ci0g
ICAgc3RhdGljIEF0b21pY1N0cmluZyBsYXN0T2ZUeXBlKCJsYXN0LW9mLXR5cGUiKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGxpbmsoImxpbmsiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5n
IGxhbmcoImxhbmcoIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzUGFu
ZWwoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3Ry
aW5nIG1lZGlhQ29udHJvbHNNdXRlQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzUGxheUJ1dHRv
bigiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgbWVkaWFDb250cm9sc1RpbWVEaXNwbGF5KCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtZGlzcGxheSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFDb250cm9sc1Rp
bWVsaW5lKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIik7Ci0gICAgc3RhdGljIEF0
b21pY1N0cmluZyBtZWRpYUNvbnRyb2xzU2Vla0JhY2tCdXR0b24oIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbWVkaWFD
b250cm9sc1NlZWtGb3J3YXJkQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9y
d2FyZC1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIG1lZGlhQ29udHJvbHNGdWxs
c2NyZWVuQnV0dG9uKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIik7
Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBub3RTdHIoIm5vdCgiKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIG9ubHlDaGlsZCgib25seS1jaGlsZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgb25seU9mVHlwZSgib25seS1vZi10eXBlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBy
ZXNpemVyKCItd2Via2l0LXJlc2l6ZXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHJvb3Qo
InJvb3QiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhcigiLXdlYmtpdC1zY3Jv
bGxiYXIiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhckJ1dHRvbigiLXdlYmtp
dC1zY3JvbGxiYXItYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzY3JvbGxiYXJD
b3JuZXIoIi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgc2Nyb2xsYmFyVGh1bWIoIi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIik7Ci0gICAgc3RhdGlj
IEF0b21pY1N0cmluZyBzY3JvbGxiYXJUcmFjaygiLXdlYmtpdC1zY3JvbGxiYXItdHJhY2siKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNjcm9sbGJhclRyYWNrUGllY2UoIi13ZWJraXQtc2Ny
b2xsYmFyLXRyYWNrLXBpZWNlIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzZWFyY2hDYW5j
ZWxCdXR0b24oIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iKTsKLSAgICBzdGF0aWMgQXRv
bWljU3RyaW5nIHNlYXJjaERlY29yYXRpb24oIi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24iKTsK
LSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKCItd2Via2l0
LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24iKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHNl
YXJjaFJlc3VsdHNCdXR0b24oIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIik7Ci0gICAg
c3RhdGljIEF0b21pY1N0cmluZyBzZWxlY3Rpb24oInNlbGVjdGlvbiIpOwotICAgIHN0YXRpYyBB
dG9taWNTdHJpbmcgc2xpZGVyVGh1bWIoIi13ZWJraXQtc2xpZGVyLXRodW1iIik7Ci0gICAgc3Rh
dGljIEF0b21pY1N0cmluZyB0YXJnZXQoInRhcmdldCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJp
bmcgdmlzaXRlZCgidmlzaXRlZCIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgd2luZG93SW5h
Y3RpdmUoIndpbmRvdy1pbmFjdGl2ZSIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZGVjcmVt
ZW50KCJkZWNyZW1lbnQiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGluY3JlbWVudCgiaW5j
cmVtZW50Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBzdGFydCgic3RhcnQiKTsKLSAgICBz
dGF0aWMgQXRvbWljU3RyaW5nIGVuZCgiZW5kIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBo
b3Jpem9udGFsKCJob3Jpem9udGFsIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyB2ZXJ0aWNh
bCgidmVydGljYWwiKTsKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGRvdWJsZUJ1dHRvbigiZG91
YmxlLWJ1dHRvbiIpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgc2luZ2xlQnV0dG9uKCJzaW5n
bGUtYnV0dG9uIik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBub0J1dHRvbigibm8tYnV0dG9u
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBjb3JuZXJQcmVzZW50KCJjb3JuZXItcHJlc2Vu
dCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhY3RpdmUsICgiYWN0
aXZlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhZnRlciwgKCJh
ZnRlciIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYW55TGluaywg
KCItd2Via2l0LWFueS1saW5rIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBhdXRvZmlsbCwgKCItd2Via2l0LWF1dG9maWxsIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBiZWZvcmUsICgiYmVmb3JlIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBjaGVja2VkLCAoImNoZWNrZWQiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpbGVVcGxvYWRCdXR0b24sICgiLXdlYmtpdC1m
aWxlLXVwbG9hZC1idXR0b24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGRpc2FibGVkLCAoImRpc2FibGVkIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCByZWFkT25seSwgKCJyZWFkLW9ubHkiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHJlYWRXcml0ZSwgKCJyZWFkLXdyaXRlIikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkcmFnLCAoIi13ZWJraXQtZHJhZyIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZHJhZ0FsaWFzLCAoIi1raHRtbC1k
cmFnIikpOyAvLyB3YXMgZG9jdW1lbnRlZCB3aXRoIHRoaXMgbmFtZSBpbiBBcHBsZSBkb2N1bWVu
dGF0aW9uLCBzbyBrZWVwIGFuIGFsaWEKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZW1wdHksICgiZW1wdHkiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGVuYWJsZWQsICgiZW5hYmxlZCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgZmlyc3RDaGlsZCwgKCJmaXJzdC1jaGlsZCIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RMZXR0ZXIsICgiZmlyc3QtbGV0dGVyIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdExpbmUsICgiZmlyc3Qt
bGluZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RPZlR5
cGUsICgiZmlyc3Qtb2YtdHlwZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZnVsbFBhZ2VNZWRpYSwgKCItd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRoQ2hpbGQsICgibnRoLWNoaWxkKCIp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRoT2ZUeXBlLCAoIm50
aC1vZi10eXBlKCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbnRo
TGFzdENoaWxkLCAoIm50aC1sYXN0LWNoaWxkKCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgbnRoTGFzdE9mVHlwZSwgKCJudGgtbGFzdC1vZi10eXBlKCIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZm9jdXMsICgiZm9jdXMiKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhvdmVyLCAoImhvdmVyIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpbmRldGVybWluYXRlLCAoImlu
ZGV0ZXJtaW5hdGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlu
cHV0UGxhY2Vob2xkZXIsICgiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGFzdENoaWxkLCAoImxhc3QtY2hpbGQiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGxhc3RPZlR5cGUsICgibGFz
dC1vZi10eXBlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsaW5r
LCAoImxpbmsiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGxhbmcs
ICgibGFuZygiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG1lZGlh
Q29udHJvbHNQYW5lbCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtZWRpYUNvbnRyb2xzTXV0ZUJ1dHRvbiwg
KCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtZWRpYUNvbnRyb2xzUGxheUJ1dHRvbiwgKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBtZWRpYUNvbnRyb2xzVGltZURpc3BsYXksICgiLXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lLWRpc3BsYXkiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIG1lZGlhQ29udHJvbHNUaW1lbGluZSwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtZWRpYUNv
bnRyb2xzU2Vla0JhY2tCdXR0b24sICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2st
YnV0dG9uIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBtZWRpYUNv
bnRyb2xzU2Vla0ZvcndhcmRCdXR0b24sICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZv
cndhcmQtYnV0dG9uIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBt
ZWRpYUNvbnRyb2xzRnVsbHNjcmVlbkJ1dHRvbiwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBub3RTdHIsICgibm90KCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgb25seUNoaWxkLCAoIm9ubHktY2hpbGQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIG9ubHlPZlR5cGUsICgib25seS1vZi10eXBlIikpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZXNpemVyLCAoIi13ZWJraXQtcmVzaXplciIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcm9vdCwgKCJyb290IikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXIsICgiLXdlYmtp
dC1zY3JvbGxiYXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNj
cm9sbGJhckJ1dHRvbiwgKCItd2Via2l0LXNjcm9sbGJhci1idXR0b24iKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNjcm9sbGJhckNvcm5lciwgKCItd2Via2l0LXNj
cm9sbGJhci1jb3JuZXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IHNjcm9sbGJhclRodW1iLCAoIi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIikpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzY3JvbGxiYXJUcmFjaywgKCItd2Via2l0LXNj
cm9sbGJhci10cmFjayIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c2Nyb2xsYmFyVHJhY2tQaWVjZSwgKCItd2Via2l0LXNjcm9sbGJhci10cmFjay1waWVjZSIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VhcmNoQ2FuY2VsQnV0dG9u
LCAoIi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24iKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNlYXJjaERlY29yYXRpb24sICgiLXdlYmtpdC1zZWFyY2gtZGVj
b3JhdGlvbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VhcmNo
UmVzdWx0c0RlY29yYXRpb24sICgiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFyY2hSZXN1bHRzQnV0
dG9uLCAoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3Rpb24sICgic2VsZWN0aW9uIikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzbGlkZXJUaHVtYiwgKCItd2Via2l0LXNs
aWRlci10aHVtYiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGFy
Z2V0LCAoInRhcmdldCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
dmlzaXRlZCwgKCJ2aXNpdGVkIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCB3aW5kb3dJbmFjdGl2ZSwgKCJ3aW5kb3ctaW5hY3RpdmUiKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRlY3JlbWVudCwgKCJkZWNyZW1lbnQiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGluY3JlbWVudCwgKCJpbmNyZW1lbnQi
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHN0YXJ0LCAoInN0YXJ0
IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBlbmQsICgiZW5kIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBob3Jpem9udGFsLCAoImhv
cml6b250YWwiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZlcnRp
Y2FsLCAoInZlcnRpY2FsIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBkb3VibGVCdXR0b24sICgiZG91YmxlLWJ1dHRvbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgc2luZ2xlQnV0dG9uLCAoInNpbmdsZS1idXR0b24iKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5vQnV0dG9uLCAoIm5vLWJ1dHRvbiIp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgY29ybmVyUHJlc2VudCwg
KCJjb3JuZXItcHJlc2VudCIpKTsKIAogICAgIGJvb2wgZWxlbWVudCA9IGZhbHNlOyAvLyBwc2V1
ZG8tZWxlbWVudAogICAgIGJvb2wgY29tcGF0ID0gZmFsc2U7IC8vIHNpbmdsZSBjb2xvbiBjb21w
YXRiaWxpdHkgbW9kZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDM4
Mzc4KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgog
I2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKQEAgLTM3MiwxMyArMzczLDEzIEBAIHN0YXRpYyBib29sIGVsZW1l
bnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3QKIAogc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIHNjcmVlbkV2YWwoKQogewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHN0YXRpY1NjcmVlbkV2YWwoInNjcmVlbiIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgTWVkaWFRdWVyeUV2YWx1YXRvciwgc3RhdGljU2NyZWVuRXZhbCwgKCJzY3JlZW4iKSk7CiAg
ICAgcmV0dXJuIHN0YXRpY1NjcmVlbkV2YWw7CiB9CiAKIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBwcmludEV2YWwoKQogewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHN0YXRpY1ByaW50RXZhbCgicHJpbnQiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3IsIHN0YXRpY1ByaW50RXZhbCwgKCJwcmludCIpKTsK
ICAgICByZXR1cm4gc3RhdGljUHJpbnRFdmFsOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVGV4dERvY3VtZW50LmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIK
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCkBAIC01Niw3ICs1Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShTVkcpCiAKLXN0YXRpYyB2b2lkIGFkZFN0cmluZyhIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiYgc2V0LCBjb25zdCBjaGFyKiBzdHJpbmcpCit0eXBlZGVmIEhhc2hT
ZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IEZlYXR1cmVTZXQ7CisKK3N0YXRpYyB2b2lkIGFk
ZFN0cmluZyhGZWF0dXJlU2V0JiBzZXQsIGNvbnN0IGNoYXIqIHN0cmluZykKIHsKICAgICBzZXQu
YWRkKHN0cmluZyk7CiB9CkBAIC02NCw3ICs2Nyw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZyhI
YXNoU2V0PFN0cmluZywgQ2EKIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmlu
ZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotICAg
IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBzdmdGZWF0dXJlczsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQsIHN2Z0ZlYXR1cmVzLCAoKSk7CiAgICAg
aWYgKCFpbml0aWFsaXplZCkgewogI2lmIEVOQUJMRShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZHX0ZP
UkVJR05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUikgJiYgRU5BQkxFKFNWR19GT05UUykK
ICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAic3ZnIik7CkBAIC04OSw3ICs5Miw3IEBA
IHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0cmluZyAKIHN0YXRpYyBib29sIGlz
U1ZHMTFGZWF0dXJlKGNvbnN0IFN0cmluZyAmZmVhdHVyZSkKIHsKICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsaXplZCA9IGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRp
bmdIYXNoPiBzdmdGZWF0dXJlczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZlYXR1cmVTZXQs
IHN2Z0ZlYXR1cmVzLCAoKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICAvLyBT
YWRseSwgd2UgY2Fubm90IGNsYWltIHRvIGltcGxlbWVudCBhbnkgb2YgdGhlIFNWRyAxLjEgZ2Vu
ZXJpYyBmZWF0dXJlIHNldHMKICAgICAgICAgLy8gbGFjayBvZiBGb250IGFuZCBGaWx0ZXIgc3Vw
cG9ydC4KQEAgLTI3NCw3ICsyNzcsNyBAQCBib29sIERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1J
TUVUeXBlKGNvCiAgICAgaWYgKG1pbWVUeXBlID09ICJ0ZXh0L3htbCIgfHwgbWltZVR5cGUgPT0g
ImFwcGxpY2F0aW9uL3htbCIgfHwgbWltZVR5cGUgPT0gInRleHQveHNsIikKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHZhbGlkQ2hhcnMgPSAiWzAtOWEtekEt
Wl9cXC0rfiEkXFxee318LiUnYCMmKl0iOyAvLyBwZXIgUkZDczogMzAyMywgMjA0NQotICAgIHN0
YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB4bWxUeXBlUmVnRXhwKFN0cmluZygiXiIpICsgdmFsaWRD
aGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIik7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgeG1sVHlwZVJlZ0V4cCwgKFN0cmluZygiXiIpICsg
dmFsaWRDaGFycyArICIrLyIgKyB2YWxpZENoYXJzICsgIitcXCt4bWwkIikpOwogICAgIHJldHVy
biB4bWxUeXBlUmVnRXhwLm1hdGNoKG1pbWVUeXBlKSA+IC0xOwogfQogCkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzLDYgKzExMyw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogI2lu
Y2x1ZGUgIkRhdGFiYXNlLmgiCkBAIC03MTMsOSArNzE0LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBE
b2N1bWVudDo6YWRvcHROb2RlKFBhcwogCiBib29sIERvY3VtZW50OjpoYXNQcmVmaXhOYW1lc3Bh
Y2VNaXNtYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nIHhtbG5zTmFtZXNwYWNlVVJJKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3htbG5zLyIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnMoInhtbG5zIik7
Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyB4bWwoInhtbCIpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB4bWxuc05hbWVzcGFjZVVSSSwgKCJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgeG1sbnMsICgieG1sbnMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHhtbCwgKCJ4bWwiKSk7CiAKICAgICAvLyBUaGVzZSBj
aGVja3MgYXJlIGZyb20gRE9NIENvcmUgTGV2ZWwgMiwgY3JlYXRlRWxlbWVudE5TCiAgICAgLy8g
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTItQ29yZS9jb3JlLmh0bWwjSUQtRG9jQ3JF
bE5TCkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC05MSw3ICs5Miw4IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6aGFu
ZGxlU291cmNlQXR0cmlidXQKIC8vIEhlbHBlciBmdW5jdGlvbgogc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICBz
dGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbGFuZ3VhZ2VzOworICAgIHR5
cGVkZWYgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gTGFuZ3VhZ2VTZXQ7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChMYW5ndWFnZVNldCwgbGFuZ3VhZ2VzLCAoKSk7CiAgICAgaWYg
KGxhbmd1YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgbGFuZ3VhZ2VzLmFkZCgiamF2YXNjcmlw
dCIpOwogICAgICAgICBsYW5ndWFnZXMuYWRkKCJqYXZhc2NyaXB0Iik7CkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgi
CiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTYsNyArMjE3LDcgQEAgYm9vbCBTdHls
ZUNoYW5nZTo6Y3VycmVudGx5SGFzU3R5bGUoY29ucwogCiBzdGF0aWMgU3RyaW5nICZzdHlsZVNw
YW5DbGFzc1N0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHlsZVNwYW5DbGFzc1N0cmlu
ZyA9IEFwcGxlU3R5bGVTcGFuQ2xhc3M7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHN0eWxlU3BhbkNsYXNzU3RyaW5nLCAoKEFwcGxlU3R5bGVTcGFuQ2xhc3MpKSk7CiAgICAgcmV0
dXJuIHN0eWxlU3BhbkNsYXNzU3RyaW5nOwogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSFRN
TEludGVyY2hhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSFRNTEludGVy
Y2hhbmdlLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL2VkaXRpbmcvSFRNTEludGVy
Y2hhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNo
YXJhY3Rlck5hbWVzLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNiw3ICszNyw3IEBAIG5hbWVzcGFjZSB7CiAKIFN0cmluZyBjb252ZXJ0ZWRTcGFj
ZVN0cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBjb252ZXJ0ZWRTcGFjZVN0cmluZzsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29udmVydGVkU3BhY2VTdHJpbmcsICgpKTsK
ICAgICBpZiAoY29udmVydGVkU3BhY2VTdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgY29udmVy
dGVkU3BhY2VTdHJpbmcgPSAiPHNwYW4gY2xhc3M9XCIiOwogICAgICAgICBjb252ZXJ0ZWRTcGFj
ZVN0cmluZyArPSBBcHBsZUNvbnZlcnRlZFNwYWNlOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0lu
ZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5k
ZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJTcGxpdEVsZW1lbnRDb21tYW5kLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw3ICs0NCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBTdHJpbmcgaW5kZW50QmxvY2txdW90ZVN0
cmluZygpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHJpbmcgPSAid2Via2l0LWluZGVudC1ibG9j
a3F1b3RlIjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RyaW5nLCAoIndlYmtp
dC1pbmRlbnQtYmxvY2txdW90ZSIpKTsKICAgICByZXR1cm4gc3RyaW5nOwogfQogCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDM4
Mzc4KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAj
aW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OSwxNCAr
OTAsMTQgQEAgcHJpdmF0ZToKIAogc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2Rl
KGNvbnN0IE5vZGUgKm5vZGUpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBpbnRlcmNoYW5nZU5ld2xp
bmVDbGFzc1N0cmluZyhBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGludGVyY2hhbmdlTmV3bGluZUNsYXNzU3RyaW5nLCAoQXBwbGVJbnRl
cmNoYW5nZU5ld2xpbmUpKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKGJy
VGFnKSAmJiAKICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudCAqPihub2RlKS0+
Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikgPT0gaW50ZXJjaGFuZ2VOZXdsaW5lQ2xhc3NTdHJpbmc7
CiB9CiAKIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3Qg
Tm9kZSAqbm9kZSkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbnZlcnRlZFNwYWNlU3BhbkNsYXNz
U3RyaW5nKEFwcGxlQ29udmVydGVkU3BhY2UpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb252ZXJ0ZWRTcGFjZVNwYW5DbGFzc1N0cmluZywgKEFwcGxlQ29udmVydGVkU3BhY2Up
KTsKICAgICByZXR1cm4gbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIAogICAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVudCAqPihub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0
cikgPT0gY29udmVydGVkU3BhY2VTcGFuQ2xhc3NTdHJpbmc7CiB9CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgInZpc2li
bGVfdW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKQEAgLTM2NCw5ICszNjUsOSBAQCBpbnQgbWF4RGVlcE9mZnNldChjb25zdCBO
b2RlICpub2RlKQogCiBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBib29sIHN0YXJ0SXNTdGFydE9mUGFyYWdyYXBoLCBib29sIGVuZElz
RW5kT2ZQYXJhZ3JhcGgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyB0d29TcGFjZXMoIiAgIik7Ci0g
ICAgc3RhdGljIFN0cmluZyBuYnNwKCJceGEwIik7Ci0gICAgc3RhdGljIFN0cmluZyBwYXR0ZXJu
KCIgXHhhMCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0d29TcGFjZXMsICgi
ICAiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5ic3AsICgiXHhhMCIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcGF0dGVybiwgKCIgXHhhMCIpKTsKIAog
ICAgIFN0cmluZyByZWJhbGFuY2VkU3RyaW5nID0gc3RyaW5nOwogCkBAIC0zOTMsNyArMzk0LDcg
QEAgYm9vbCBpc1RhYmxlU3RydWN0dXJlTm9kZShjb25zdCBOb2RlICpubwogCiBjb25zdCBTdHJp
bmcmIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKQogewotICAgIHN0YXRpYyBTdHJpbmcgbm9uQnJl
YWtpbmdTcGFjZVN0cmluZyA9IFN0cmluZygmbm9CcmVha1NwYWNlLCAxKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgbm9uQnJlYWtpbmdTcGFjZVN0cmluZywgKCZub0JyZWFrU3Bh
Y2UsIDEpKTsKICAgICByZXR1cm4gbm9uQnJlYWtpbmdTcGFjZVN0cmluZzsKIH0KIApJbmRleDog
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMu
aCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTk0LDExICs5NSwxMSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShW
ZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0gYXR0ci5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBs
YXN0Q29waWVkRnJvbSA9IDA7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGFtcEVudGl0eSgi
JmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCImZ3Q7Iik7Ci0gICAg
c3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgcXVvdEVudGl0eSgiJnF1b3Q7Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBuYnNw
RW50aXR5KCImbmJzcDsiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
YW1wRW50aXR5LCAoIiZhbXA7IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBndEVudGl0eSwgKCImZ3Q7IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBsdEVudGl0eSwgKCImbHQ7IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBxdW90RW50aXR5LCAoIiZxdW90OyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFN0cmluZywgbmJzcEVudGl0eSwgKCImbmJzcDsiKSk7CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSB1Y2hh
cnNbaV07CkBAIC0xNDIsMTAgKzE0MywxMCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ29u
dGVudChWZWN0b3I8CiAgICAgdW5zaWduZWQgbGVuID0gcmFuZ2Uuc2Vjb25kOwogICAgIHVuc2ln
bmVkIGxhc3RDb3BpZWRGcm9tID0gMDsKICAgICAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGFt
cEVudGl0eSgiJmFtcDsiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGd0RW50aXR5KCImZ3Q7
Iik7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsdEVudGl0eSgiJmx0OyIpOwotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbmJzcEVudGl0eSgiJm5ic3A7Iik7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIGFtcEVudGl0eSwgKCImYW1wOyIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZ3RFbnRpdHksICgiJmd0OyIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbHRFbnRpdHksICgiJmx0OyIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgbmJzcEVudGl0eSwgKCImbmJzcDsiKSk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgVUNoYXIg
YyA9IHVjaGFyc1tpXTsKQEAgLTMxNiw4ICszMTcsOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRBZGRO
YW1lc3BhY2VFbGVtKGNvbnN0CiBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VBdHRyKGNv
bnN0IEF0dHJpYnV0ZSogYXR0ciwgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3Ry
aW5nSW1wbCo+JiBuYW1lc3BhY2VzKQogewogICAgIC8vIERvbid0IGFkZCBuYW1lc3BhY2UgYXR0
cmlidXRlcyB0d2ljZQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sbnNVUkkgPSAi
aHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iOwotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZp
ZWROYW1lIHhtbG5zQXR0cihudWxsQXRvbSwgInhtbG5zIiwgeG1sbnNVUkkpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB4bWxuc1VSSSwgKCJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3htbG5zLyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFF1
YWxpZmllZE5hbWUsIHhtbG5zQXR0ciwgKG51bGxBdG9tLCAieG1sbnMiLCB4bWxuc1VSSSkpOwog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0geG1sbnNBdHRyKSB7CiAgICAgICAgIG5hbWVzcGFjZXMu
c2V0KGVtcHR5QXRvbS5pbXBsKCksIGF0dHItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzQyLDcgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE5hbWVzcGFj
ZShWZWN0b3I8VUNoYXIKICAgICBBdG9taWNTdHJpbmdJbXBsKiBmb3VuZE5TID0gbmFtZXNwYWNl
cy5nZXQocHJlKTsKICAgICBpZiAoZm91bmROUyAhPSBucy5pbXBsKCkpIHsKICAgICAgICAgbmFt
ZXNwYWNlcy5zZXQocHJlLCBucy5pbXBsKCkpOwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IHhtbG5zKCJ4bWxucyIpOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgeG1sbnMsICgieG1sbnMiKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAg
ICAgYXBwZW5kKHJlc3VsdCwgeG1sbnMpOwogICAgICAgICBpZiAoIXByZWZpeC5pc0VtcHR5KCkp
IHsKQEAgLTUwMSw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdGFydE1hcmt1cChWZWN0
b3I8VUNoCiAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnQpCiAgICAgICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0
cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPmxlbmd0aCgpID4gMCkgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxlUHJlZml4KCIgc3R5bGU9XCIi
KTsKKyAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHN0eWxlUHJlZml4LCAoIiBzdHlsZT1cIiIpKTsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KHJlc3VsdCwgc3R5bGVQcmVmaXgpOwogICAgICAgICAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1
dGVWYWx1ZShyZXN1bHQsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXCInKTsKQEAgLTcwMiw3ICs3MDMsNyBAQCBT
dHJpbmcgam9pbk1hcmt1cHMoY29uc3QgVmVjdG9yPFN0cmluZz4gCiAvLyBGSVhNRTogQXQgbGVh
c3QsIGFubm90YXRpb24gYW5kIHN0eWxlIGluZm8gc2hvdWxkIHByb2JhYmx5IG5vdCBiZSBpbmNs
dWRlZCBpbiByYW5nZS5tYXJrdXBTdHJpbmcoKQogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBS
YW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSBhbm5vdGF0ZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzKQogewotICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nID0gU3RyaW5nKCI8YnIgY2xhc3M9
XCIiKSArIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lICsgIlwiPiI7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIGludGVyY2hhbmdlTmV3bGluZVN0cmluZywgKCI8YnIgY2xh
c3M9XCIiIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lICJcIj4iKSk7CiAKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gIiI7CkBAIC05MDUsMTQgKzkwNiwxNCBAQCBTdHJpbmcgY3JlYXRl
TWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKHN0eWxlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgICAgICBWZWN0b3I8
VUNoYXI+IG9wZW5UYWc7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
ZGl2U3R5bGUoIjxkaXYgc3R5bGU9XCIiKTsKKyAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdlN0eWxlLCAoIjxkaXYgc3R5bGU9XCIiKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChvcGVuVGFnLCBkaXZTdHlsZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCks
IGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAgICAgICAgICAgICAgb3BlblRhZy5hcHBlbmQoJ1wi
Jyk7CiAgICAgICAgICAgICAgICAgICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7CiAgICAgICAgICAg
ICAgICAgICAgIHByZU1hcmt1cHMuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOwogCi0g
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgZGl2Q2xvc2VUYWcoIjwvZGl2
PiIpOworICAgICAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgZGl2Q2xvc2VUYWcsICgiPC9kaXY+IikpOwogICAgICAgICAgICAgICAgICAgICBtYXJrdXBz
LmFwcGVuZChkaXZDbG9zZVRhZyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKQEAgLTkyOSw4ICs5MzAsOCBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdl
KiByYW5nZSwgCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBzdHlsZVNwYW5PcGVuID0gU3RyaW5nKCI8c3BhbiBjbGFzcz1cIiIgQXBwbGVTdHlsZVNwYW5D
bGFzcyAiXCIgc3R5bGU9XCIiKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHN0eWxlU3BhbkNs
b3NlKCI8L3NwYW4+Iik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0
eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0
eWxlPVwiIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNw
YW5DbG9zZSwgKCI8L3NwYW4+IikpOwogICAgIAogICAgIC8vIEFkZCBhIHdyYXBwZXIgc3BhbiB3
aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5oZXJp
dC4KICAgICBOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2VkID8gbGFzdENsb3Nl
ZC0+cGFyZW50Tm9kZSgpIDogMDsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAko
cmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckJ1dHRvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
NywxNSArNTgsMTUgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQnV0dG9uRWxlbWVudDo6dAog
ewogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1VCTUlUOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHN1Ym1pdCgic3VibWl0Iik7CisgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc3VibWl0LCAoInN1
Ym1pdCIpKTsKICAgICAgICAgICAgIHJldHVybiBzdWJtaXQ7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0
dG9uKCJidXR0b24iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBidXR0b24sICgiYnV0dG9uIikpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJFU0VUOiB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nIHJlc2V0KCJyZXNldCIpOworICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHJlc2V0LCAoInJlc2V0IikpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc2V0OwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJYTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODA4LDcg
KzgwOSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OmNoaWxkQWxsb3dlZChOb2RlICpuZXcKIC8vIFRo
aXMgdW5mb3J0dW5hdGUgZnVuY3Rpb24gaXMgb25seSBuZWVkZWQgd2hlbiBjaGVja2luZyBhZ2Fp
bnN0IHRoZSBEVEQuICBPdGhlciBsYW5ndWFnZXMgKGxpa2UgU1ZHKSB3b24ndCBuZWVkIHRoaXMu
CiBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHRh
Z0xpc3Q7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiwgdGFnTGlzdCwgKCkpOwogICAgIGlmICh0YWdMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBz
aXplX3QgdGFnQ291bnQgPSAwOwogICAgICAgICBXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogdGFn
cyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoJnRhZ0NvdW50KTsKQEAgLTgyMiw3ICs4MjMsNyBA
QCBib29sIEhUTUxFbGVtZW50Ojppc1JlY29nbml6ZWRUYWdOYW1lKGNvCiAvLyBuZWVkIHRvIGJl
IGluIHRoZXNlIHR3byBsaXN0cy4KIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBpbmxpbmVU
YWdMaXN0KCkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gdGFnTGlz
dDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCB0
YWdMaXN0LCAoKSk7CiAgICAgaWYgKHRhZ0xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIHRhZ0xp
c3QuYWRkKHR0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIHRhZ0xpc3QuYWRkKGlU
YWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKQEAgLTg4MSw3ICs4ODIsNyBAQCBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiogaW5saW5lVGFnTGlzCiAKIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
KiBibG9ja1RhZ0xpc3QoKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PiB0YWdMaXN0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4sIHRhZ0xpc3QsICgpKTsKICAgICBpZiAodGFnTGlzdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgdGFnTGlzdC5hZGQoYWRkcmVzc1RhZy5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAgICB0
YWdMaXN0LmFkZChibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQu
aCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTUsNyArNTYsNyBAQCBib29sIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmlzRm9jdXNhYmxl
KCkgCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTEZpZWxkU2V0RWxlbWVudDo6dHlwZSgpIGNv
bnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWVsZHNldCgiZmllbGRzZXQi
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZmllbGRzZXQs
ICgiZmllbGRzZXQiKSk7CiAgICAgcmV0dXJuIGZpZWxkc2V0OwogfQogCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0zNzMsNTMgKzM3NCw1MyBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxJbnB1dEVsZW1lbnQ6OnR5CiAgICAgLy8gbmVlZHMgdG8gYmUgbG93ZXJjYXNlIGFj
Y29yZGluZyB0byBET00gc3BlYwogICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBCVVRUT046IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgYnV0
dG9uKCJidXR0b24iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBidXR0b24sICgiYnV0dG9uIikpOwogICAgICAgICAgICAgcmV0dXJuIGJ1dHRv
bjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENIRUNLQk9YOiB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nIGNoZWNrYm94KCJjaGVja2JveCIpOworICAgICAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGNoZWNrYm94LCAoImNoZWNr
Ym94IikpOwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrYm94OwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRklMRTogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmaWxl
KCJmaWxlIik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgZmlsZSwgKCJmaWxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBISURERU46IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcgaGlkZGVuKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBoaWRkZW4sICgiaGlkZGVuIikpOwogICAgICAgICAgICAg
cmV0dXJuIGhpZGRlbjsKICAgICAgICAgfQogICAgICAgICBjYXNlIElNQUdFOiB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGltYWdlKCJpbWFnZSIpOworICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGltYWdlLCAoImltYWdl
IikpOwogICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
SVNJTkRFWDoKICAgICAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgICAgIGNhc2UgUEFT
U1dPUkQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcGFzc3dvcmQo
InBhc3N3b3JkIik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgcGFzc3dvcmQsICgicGFzc3dvcmQiKSk7CiAgICAgICAgICAgICByZXR1cm4gcGFz
c3dvcmQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBSQURJTzogewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyByYWRpbygicmFkaW8iKTsKKyAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCByYWRpbywgKCJyYWRpbyIpKTsKICAg
ICAgICAgICAgIHJldHVybiByYWRpbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJBTkdFOiB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHJhbmdlKCJyYW5nZSIpOwor
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHJhbmdl
LCAoInJhbmdlIikpOwogICAgICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgUkVTRVQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcg
cmVzZXQoInJlc2V0Iik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgcmVzZXQsICgicmVzZXQiKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzZXQ7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTRUFSQ0g6IHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcgc2VhcmNoKCJzZWFyY2giKTsKKyAgICAgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzZWFyY2gsICgic2VhcmNoIikpOwogICAg
ICAgICAgICAgcmV0dXJuIHNlYXJjaDsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNVQk1JVDog
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdWJtaXQoInN1Ym1pdCIp
OworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHN1
Ym1pdCwgKCJzdWJtaXQiKSk7CiAgICAgICAgICAgICByZXR1cm4gc3VibWl0OwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgVEVYVDogewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyB0ZXh0KCJ0ZXh0Iik7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IEF0b21pY1N0cmluZywgdGV4dCwgKCJ0ZXh0IikpOwogICAgICAgICAgICAgcmV0dXJuIHRleHQ7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1NMS2V5R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTU2LDcgKzU3LDcgQEAgSFRNTEtleWdlbkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KERv
YwogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxLZXlnZW5FbGVtZW50Ojp0eXBlKCkgY29uc3QK
IHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGtleWdlbigia2V5Z2VuIik7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGtleWdlbiwgKCJrZXlnZW4i
KSk7CiAgICAgcmV0dXJuIGtleWdlbjsKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMZWdl
bmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlckxlZ2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs1OSw3IEBAIFJlbmRl
ck9iamVjdCogSFRNTExlZ2VuZEVsZW1lbnQ6OmNyZWF0ZVIKIAogY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MTGVnZW5kRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyBsZWdlbmQoImxlZ2VuZCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgQXRvbWljU3RyaW5nLCBsZWdlbmQsICgibGVnZW5kIikpOwogICAgIHJldHVybiBsZWdlbmQ7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4
Mzc4KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OSw3ICs1MCw3IEBAIGJvb2wgSFRNTE9wdEdyb3VwRWxlbWVudDo6aXNGb2N1c2FibGUoKSAK
IAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT3B0R3JvdXBFbGVtZW50Ojp0eXBlKCkgY29uc3QK
IHsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIG9wdGdyb3VwKCJvcHRncm91cCIpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRncm91cCwgKCJv
cHRncm91cCIpKTsKICAgICByZXR1cm4gb3B0Z3JvdXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyTWVudUxpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiTm9kZVJl
bmRlclN0eWxlLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNyArNzQsNyBAQCBib29s
IEhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvCiAKIGNvbnN0IEF0b21pY1N0cmlu
ZyYgSFRNTE9wdGlvbkVsZW1lbnQ6OnR5cGUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcgb3B0aW9uKCJvcHRpb24iKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgb3B0aW9uLCAoIm9wdGlvbiIpKTsKICAgICByZXR1cm4gb3B0aW9u
OwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsOCBAQAogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHQuaCIKLQorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyAgICAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTgzMiw3ICs4
MzMsNyBAQCBib29sIEhUTUxQYXJzZXI6Om1hcENyZWF0ZUVycm9yQ2hlY2soVG9rCiBQYXNzUmVm
UHRyPE5vZGU+IEhUTUxQYXJzZXI6OmdldE5vZGUoVG9rZW4qIHQpCiB7CiAgICAgLy8gSW5pdCBv
dXIgZXJyb3IgaGFuZGxpbmcgdGFibGUuCi0gICAgc3RhdGljIEZ1bmN0aW9uTWFwIGdGdW5jdGlv
bk1hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFwLCBnRnVuY3Rpb25NYXAs
ICgpKTsKICAgICBpZiAoZ0Z1bmN0aW9uTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBnRnVuY3Rp
b25NYXAuc2V0KGFUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmSFRNTFBhcnNlcjo6bmVzdGVkQ3Jl
YXRlRXJyb3JDaGVjayk7CiAgICAgICAgIGdGdW5jdGlvbk1hcC5zZXQoYWRkcmVzc1RhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksICZIVE1MUGFyc2VyOjpwQ2xvc2VyQ3JlYXRlRXJyb3JDaGVjayk7CkBA
IC05NDMsNyArOTQ0LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpwcm9jZXNzQ2xvc2VUYWcoVG9rZW4q
IAogCiBib29sIEhUTUxQYXJzZXI6OmlzSGVhZGVyVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFn
TmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gaGVhZGVyVGFn
czsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCBo
ZWFkZXJUYWdzLCAoKSk7CiAgICAgaWYgKGhlYWRlclRhZ3MuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGhlYWRlclRhZ3MuYWRkKGgxVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgIGhlYWRl
clRhZ3MuYWRkKGgyVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkBAIC05ODYsNyArOTg3LDcgQEAg
Ym9vbCBIVE1MUGFyc2VyOjppc0lubGluZShOb2RlKiBub2RlKSBjbwogCiBib29sIEhUTUxQYXJz
ZXI6OmlzUmVzaWR1YWxTdHlsZVRhZyhjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUpCiB7Ci0g
ICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IHJlc2lkdWFsU3R5bGVUYWdzOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4sIHJlc2lk
dWFsU3R5bGVUYWdzLCAoKSk7CiAgICAgaWYgKHJlc2lkdWFsU3R5bGVUYWdzLmlzRW1wdHkoKSkg
ewogICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoYVRhZy5sb2NhbE5hbWUoKS5pbXBsKCkp
OwogICAgICAgICByZXNpZHVhbFN0eWxlVGFncy5hZGQoZm9udFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOwpAQCAtMTAxMyw3ICsxMDE0LDcgQEAgYm9vbCBIVE1MUGFyc2VyOjppc1Jlc2lkdWFsU3R5
bGVUYWcoY29ucwogCiBib29sIEhUTUxQYXJzZXI6OmlzQWZmZWN0ZWRCeVJlc2lkdWFsU3R5bGUo
Y29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiB1bmFmZmVjdGVkVGFnczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+LCB1bmFmZmVjdGVkVGFncywgKCkpOwogICAgIGlmICh1
bmFmZmVjdGVkVGFncy5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3MuYWRkKGJv
ZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgdW5hZmZlY3RlZFRhZ3MuYWRkKHRh
YmxlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxp
c3RCb3guaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlzdC5oIgogI2luY2x1ZGUgPG1hdGguaD4K
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTE0LDggKzExNSw4IEBAIHZvaWQgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnJlY2FsY1N0eWxlKCBTdHkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2VsZWN0
RWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBz
ZWxlY3RNdWx0aXBsZSgic2VsZWN0LW11bHRpcGxlIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyBzZWxlY3RPbmUoInNlbGVjdC1vbmUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IEF0b21pY1N0cmluZywgc2VsZWN0TXVsdGlwbGUsICgic2VsZWN0LW11bHRpcGxlIikp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzZWxlY3RPbmUs
ICgic2VsZWN0LW9uZSIpKTsKICAgICByZXR1cm4gbV9tdWx0aXBsZSA/IHNlbGVjdE11bHRpcGxl
IDogc2VsZWN0T25lOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
OSw3ICs2MCw3IEBAIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0eXBlKCkgY29uc3QKIHsK
LSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHRleHRhcmVhKCJ0ZXh0YXJlYSIpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCB0ZXh0YXJlYSwgKCJ0ZXh0
YXJlYSIpKTsKICAgICByZXR1cm4gdGV4dGFyZWE7CiB9CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2
ICs3NCw3IEBACiAjaW5jbHVkZSA8cHJvZmlsZXIvUHJvZmlsZS5oPgogI2luY2x1ZGUgPHByb2Zp
bGVyL1Byb2ZpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAjaW5jbHVkZSAiRGF0
YWJhc2UuaCIKQEAgLTg2MiwyMCArODYzLDIwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHBsYXRmb3Jt
KEpTQ29udGV4dFJlZiAKIHsKICNpZiBQTEFURk9STShNQUMpCiAjaWZkZWYgQlVJTERJTkdfT05f
VElHRVIKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtID0gIm1hYy10aWdlciI7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoIm1hYy10aWdl
ciIpKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJtYWMtbGVv
cGFyZCI7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAo
Im1hYy1sZW9wYXJkIikpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShXSU5fT1MpCi0gICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJ3aW5kb3dzIjsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgcGxhdGZvcm0sICgid2luZG93cyIpKTsKICNlbGlmIFBMQVRG
T1JNKFFUKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0gPSAicXQiOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0Zm9ybSwgKCJxdCIpKTsKICNlbGlm
IFBMQVRGT1JNKEdUSykKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHBsYXRmb3JtID0gImd0ayI7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBsYXRmb3JtLCAoImd0ayIp
KTsKICNlbGlmIFBMQVRGT1JNKFdYKQotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm0g
PSAid3giOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwbGF0Zm9ybSwg
KCJ3eCIpKTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBwbGF0Zm9ybSA9ICJ1bmtu
b3duIjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcGxhdGZvcm0sICgi
dW5rbm93biIpKTsKICNlbmRpZgogCiAgICAgSlNWYWx1ZVJlZiBwbGF0Zm9ybVZhbHVlID0gSlNW
YWx1ZU1ha2VTdHJpbmcoY3R4LCBqc1N0cmluZ1JlZihwbGF0Zm9ybSkuZ2V0KCkpOwpJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAz
ODM3OCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5o
PgogI2luY2x1ZGUgPHBhcnNlci9QYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTU5LDcgKzYwLDcgQEAgdHlwZWRlZiBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6Okxpc3RlbmVyUwogCiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIm
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKIHsKLSAgICBzdGF0aWMgSmF2YVNjcmlw
dERlYnVnU2VydmVyIHNlcnZlcjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEphdmFTY3JpcHRE
ZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CiAgICAgcmV0dXJuIHNlcnZlcjsKIH0KIApJbmRleDog
V2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmNwcAkocmV2aXNpb24gMzgzNzgpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFByb2ZpbGUqLCBKU09i
amVjdCo+IFBybwogCiBzdGF0aWMgUHJvZmlsZU1hcCYgcHJvZmlsZUNhY2hlKCkKIHsgCi0gICAg
c3RhdGljIFByb2ZpbGVNYXAgc3RhdGljUHJvZmlsZXM7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChQcm9maWxlTWFwLCBzdGF0aWNQcm9maWxlcywgKCkpOwogICAgIHJldHVybiBzdGF0aWNQcm9m
aWxlczsKIH0KIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5v
ZGUuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQ
cm9maWxlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC00Niw3ICs0Nyw3IEBAIHR5cGVk
ZWYgSGFzaE1hcDxQcm9maWxlTm9kZSosIEpTT2JqZWN0Kj4KIAogc3RhdGljIFByb2ZpbGVOb2Rl
TWFwJiBwcm9maWxlTm9kZUNhY2hlKCkKIHsgCi0gICAgc3RhdGljIFByb2ZpbGVOb2RlTWFwIHN0
YXRpY1Byb2ZpbGVOb2RlczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFByb2ZpbGVOb2RlTWFw
LCBzdGF0aWNQcm9maWxlTm9kZXMsICgpKTsKICAgICByZXR1cm4gc3RhdGljUHJvZmlsZU5vZGVz
OwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pT
TG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGUuaCIKQEAgLTExNyw2ICsxMTgsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogY29uc3QgdW5zaWduZWQgaW50IGNNYXhQZW5kaW5nU291cmNlTGVu
Z3RoSW5Mb3dCYW5kd2lkdGhEaXNwbGF5ID0gMTI4ICogMTAyNDsKICNlbmRpZgogCit0eXBlZGVm
IEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IExvY2FsU2NoZW1lc01hcDsKKwogc3Ry
dWN0IEZvcm1TdWJtaXNzaW9uIHsKICAgICBjb25zdCBjaGFyKiBhY3Rpb247CiAgICAgU3RyaW5n
IHVybDsKQEAgLTExNzAsOSArMTE3Myw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmFsbG93U3Vic3Rp
dHV0ZURhdGFBY2MKICAgICByZXR1cm4gbG9jYWxMb2FkUG9saWN5ICE9IEZyYW1lTG9hZGVyOjpB
bGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiB9CiAKLXN0YXRpYyBIYXNoU2V0PFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPiYgbG9jYWxTY2hlbWVzKCkKK3N0YXRpYyBMb2NhbFNjaGVtZXNNYXAm
IGxvY2FsU2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGlu
Z0hhc2g+IGxvY2FsU2NoZW1lczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExvY2FsU2NoZW1l
c01hcCwgbG9jYWxTY2hlbWVzLCAoKSk7CiAKICAgICBpZiAobG9jYWxTY2hlbWVzLmlzRW1wdHko
KSkgewogICAgICAgICBsb2NhbFNjaGVtZXMuYWRkKCJmaWxlIik7CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCShyZXZp
c2lvbiAzODM3OCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxpdGVUcmFu
c2FjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NTMsNyArNjU0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmVDb3B5TwogICAgIAogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIGNhY2hlU3RvcmFn
ZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIHN0b3JhZ2U7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSwgc3RvcmFnZSwgKCkp
OwogICAgIAogICAgIHJldHVybiBzdG9yYWdlOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICsz
NywxMiBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB0eXBlZGVmIFBhc3NSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24o
U2hhcmVkQnVmZmVyKik7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhl
IGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUGFzc1JlZlB0
ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFr
ZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KQEAgLTQ5LDkgKzUx
LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIAogICAgIHJldHVy
biBBcmNoaXZlQ2xhc3M6OmNyZWF0ZShidWZmZXIpOwogfQogCi1zdGF0aWMgSGFzaE1hcDxTdHJp
bmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiYgYXJjaGl2ZU1J
TUVUeXBlcygpCitzdGF0aWMgQXJjaGl2ZU1JTUVUeXBlc01hcCYgYXJjaGl2ZU1JTUVUeXBlcygp
CiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbios
IENhc2VGb2xkaW5nSGFzaD4gbWltZVR5cGVzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXJj
aGl2ZU1JTUVUeXBlc01hcCwgbWltZVR5cGVzLCAoKSk7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKICAgICAKICAgICBpZiAoaW5pdGlhbGl6ZWQpCkBAIC03OSw4ICs4MSw4
IEBAIFBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWEKIHZvaWQgQXJjaGl2
ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCkKIHsKICAgICBIYXNoU2V0
PFN0cmluZz4mIG1pbWVUeXBlcyA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0
aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPjo6aXRlcmF0b3IgaSA9IGFyY2hpdmVNSU1FVHlwZXMoKS5i
ZWdpbigpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENh
c2VGb2xkaW5nSGFzaD46Oml0ZXJhdG9yIGVuZCA9IGFyY2hpdmVNSU1FVHlwZXMoKS5lbmQoKTsK
KyAgICBBcmNoaXZlTUlNRVR5cGVzTWFwOjppdGVyYXRvciBpID0gYXJjaGl2ZU1JTUVUeXBlcygp
LmJlZ2luKCk7CisgICAgQXJjaGl2ZU1JTUVUeXBlc01hcDo6aXRlcmF0b3IgZW5kID0gYXJjaGl2
ZU1JTUVUeXBlcygpLmVuZCgpOwogICAgIAogICAgIGZvciAoOyBpICE9IGVuZDsgKytpKQogICAg
ICAgICBtaW1lVHlwZXMuYWRkKGktPmZpcnN0KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
U3lzdGVtVGltZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiAjaWYgUExBVEZPUk0oV0lOX09TKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTg1MCw3
ICs4NTEsNyBAQCBTdHJpbmcgSWNvbkRhdGFiYXNlOjpkYXRhYmFzZVBhdGgoKSBjb25zCiAKIFN0
cmluZyBJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkKIHsKLSAgICBzdGF0
aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lID0gIldlYnBhZ2VJY29ucy5kYiI7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRlZmF1bHREYXRhYmFzZUZpbGVuYW1lLCAo
IldlYnBhZ2VJY29ucy5kYiIpKTsKICAgICByZXR1cm4gZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUu
Y29weSgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMzgzNzgpCisr
KyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiAr
NjMsNyBAQAogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKQEAgLTE1
MCw3ICsxNTEsNyBAQCBFdmVudEhhbmRsZXI6On5FdmVudEhhbmRsZXIoKQogICAgIAogRXZlbnRI
YW5kbGVyOjpFdmVudEhhbmRsZXJEcmFnU3RhdGUmIEV2ZW50SGFuZGxlcjo6ZHJhZ1N0YXRlKCkK
IHsKLSAgICBzdGF0aWMgRXZlbnRIYW5kbGVyRHJhZ1N0YXRlIHN0YXRlOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRXZlbnRIYW5kbGVyRHJhZ1N0YXRlLCBzdGF0ZSwgKCkpOwogICAgIHJldHVy
biBzdGF0ZTsKIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKICNpZiBGUkFNRV9MT0FEU19VU0VSX1NUWUxFU0hFRVQKICNpbmNsdWRlICJVc2VyU3R5
bGVTaGVldExvYWRlci5oIgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyBSZWd1bGFyRXhwcmVz
c2lvbiogY3JlYXRlUmVnRXhwRm8KICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxs
IGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAg
ICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0
YXRpYyBSZWd1bGFyRXhwcmVzc2lvbiB3b3JkUmVnRXhwID0gUmVndWxhckV4cHJlc3Npb24oIlxc
dyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVndWxhckV4cHJlc3Npb24sIHdvcmRSZWdF
eHAsICgiXFx3IikpOwogICAgIFN0cmluZyBwYXR0ZXJuKCIoIik7CiAgICAgdW5zaWduZWQgaW50
IG51bUxhYmVscyA9IGxhYmVscy5zaXplKCk7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC0xMDEx
LDcgKzEwMTIsNyBAQCB2b2lkIEZyYW1lOjpyZW1vdmVFZGl0aW5nU3R5bGVGcm9tRWxlbWVuCiAj
aWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hTZXQ8RnJhbWUqPiYga2VlcEFsaXZlU2V0KCkKIHsK
LSAgICBzdGF0aWMgSGFzaFNldDxGcmFtZSo+IHN0YXRpY0tlZXBBbGl2ZVNldDsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8RnJhbWUqPiwgc3RhdGljS2VlcEFsaXZlU2V0LCAoKSk7
CiAgICAgcmV0dXJuIHN0YXRpY0tlZXBBbGl2ZVNldDsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICNp
bmNsdWRlICJMb2NhbFN0b3JhZ2UuaCIKQEAgLTIzMyw3ICsyMzQsNyBAQCB2b2lkIFBhZ2U6OnNl
dEdyb3VwTmFtZShjb25zdCBTdHJpbmcmIG5hCiAKIGNvbnN0IFN0cmluZyYgUGFnZTo6Z3JvdXBO
YW1lKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgU3RyaW5nIG51bGxTdHJpbmc7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIG51bGxTdHJpbmcsICgpKTsKICAgICByZXR1cm4gbV9ncm91
cCA/IG1fZ3JvdXAtPm5hbWUoKSA6IG51bGxTdHJpbmc7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDEsNyArNDIsOCBAQCBzdGF0aWMgYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5z
CiAgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gZGVmYXVsdFBvcnRzOworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBEZWZhdWx0UG9ydHNNYXA7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChEZWZhdWx0UG9ydHNNYXAsIGRlZmF1bHRQb3J0cywgKCkpOwogICAg
IGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQo
Imh0dHAiLCA4MCk7CiAgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHBzIiwgNDQzKTsKQEAg
LTI2MCw3ICsyNjIsNyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
CiAKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QgCiB7
Ci0gICAgc3RhdGljIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcgPSBTdHJpbmcoJlNlcGFyYXRvckNo
YXJhY3RlciwgMSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNlcGFyYXRvclN0
cmluZywgKCZTZXBhcmF0b3JDaGFyYWN0ZXIsIDEpKTsKICAgICByZXR1cm4gbV9wcm90b2NvbCAr
IHNlcGFyYXRvclN0cmluZyArIG1faG9zdCArIHNlcGFyYXRvclN0cmluZyArIFN0cmluZzo6bnVt
YmVyKG1fcG9ydCk7IAogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0JKHJldmlzaW9uIDM4Mzc4
KQorKysgV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTks
NiArNTksNyBAQAogCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW1wb3J0IDxydW50aW1l
L0pTTG9jay5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQogI2ltcG9ydCAiV2ViRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC04OCw4
ICs4OSw4IEBAIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnIKICAgICAv
LyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBsb2NhbGVz
IGlzIHVzZWQgaW4gc2VhcmNoaW5nLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgcmVn
RXhwQ2FjaGVTaXplID0gNDsKICAgICBzdGF0aWMgTlNNdXRhYmxlQXJyYXkqIHJlZ0V4cExhYmVs
cyA9IG5pbDsKLSAgICBzdGF0aWMgVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4gcmVnRXhwczsK
LSAgICBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24gd29yZFJlZ0V4cCA9IFJlZ3VsYXJFeHByZXNz
aW9uKCJcXHciKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxSZWd1bGFyRXhwcmVz
c2lvbio+LCByZWdFeHBzLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWd1bGFyRXhw
cmVzc2lvbiwgd29yZFJlZ0V4cCwgKCJcXHciKSk7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiog
cmVzdWx0OwogICAgIGlmICghcmVnRXhwTGFiZWxzKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lv
biAzODM3OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUpCiAjaW5jbHVkZSA8dW5pY29kZS91aWRu
YS5oPgpAQCAtMTU2Myw3ICsxNTY0LDcgQEAgU3RyaW5nIG1pbWVUeXBlRnJvbURhdGFVUkwoY29u
c3QgU3RyaW5nJgogCiBjb25zdCBLVVJMJiBibGFua1VSTCgpCiB7Ci0gICAgc3RhdGljIEtVUkwg
c3RhdGljQmxhbmtVUkwoImFib3V0OmJsYW5rIik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChL
VVJMLCBzdGF0aWNCbGFua1VSTCwgKCJhYm91dDpibGFuayIpKTsKICAgICByZXR1cm4gc3RhdGlj
QmxhbmtVUkw7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU3RyaW5n
SGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCkBAIC0xMjQsMjEgKzEyNSwyNCBAQCBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hl
KiBnRm9udFBsYXRmCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbHRlcm5hdGVGYW1pbHlO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSkKIHsKICAgICAvLyBBbGlhcyBDb3Vy
aWVyIDwtPiBDb3VyaWVyIE5ldwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgY291cmllcigiQ291
cmllciIpLCBjb3VyaWVyTmV3KCJDb3VyaWVyIE5ldyIpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBjb3VyaWVyLCAoIkNvdXJpZXIiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGNvdXJpZXJOZXcsICgiQ291cmllciBOZXciKSk7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseU5hbWUsIGNvdXJpZXIpKQogICAgICAgICByZXR1
cm4gY291cmllck5ldzsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgY291
cmllck5ldykpCiAgICAgICAgIHJldHVybiBjb3VyaWVyOwogCiAgICAgLy8gQWxpYXMgVGltZXMg
YW5kIFRpbWVzIE5ldyBSb21hbi4KLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRpbWVzKCJUaW1l
cyIpLCB0aW1lc05ld1JvbWFuKCJUaW1lcyBOZXcgUm9tYW4iKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgdGltZXMsICgiVGltZXMiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHRpbWVzTmV3Um9tYW4sICgiVGltZXMgTmV3IFJvbWFuIikp
OwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCB0aW1lcykpCiAgICAgICAg
IHJldHVybiB0aW1lc05ld1JvbWFuOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlO
YW1lLCB0aW1lc05ld1JvbWFuKSkKICAgICAgICAgcmV0dXJuIHRpbWVzOwogICAgIAogICAgIC8v
IEFsaWFzIEFyaWFsIGFuZCBIZWx2ZXRpY2EKLSAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGFyaWFs
KCJBcmlhbCIpLCBoZWx2ZXRpY2EoIkhlbHZldGljYSIpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBhcmlhbCwgKCJBcmlhbCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaGVsdmV0aWNhLCAoIkhlbHZldGljYSIpKTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UoZmFtaWx5TmFtZSwgYXJpYWwpKQogICAgICAgICByZXR1cm4gaGVsdmV0
aWNhOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHlOYW1lLCBoZWx2ZXRpY2EpKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQko
cmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIkZvbnRQ
bGF0Zm9ybURhdGEuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBv
cnQgIldlYkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lm
ZGVmIEJVSUxESU5HX09OX1RJR0VSCiB0eXBlZGVmIGludCBOU0ludGVnZXI7CkBAIC0xNDAsNyAr
MTQxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRgogICAgIHdo
aWxlIChjdXJyRmFtaWx5ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1cnJGYW1p
bHktPmZhbWlseSgpLmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgU3RyaW5nIG1hdGNo
V29yZHNbM10gPSB7IFN0cmluZygiQXJhYmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0cmluZygi
VXJkdSIpIH07Ci0gICAgICAgICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIGdlZXphU3RyKCJHZWV6
YSBQcm8iKTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBn
ZWV6YVN0ciwgKCJHZWV6YSBQcm8iKSk7CiAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8
IDMgJiYgIXBsYXRmb3JtRGF0YTsgKytqKQogICAgICAgICAgICAgICAgIGlmIChjdXJyRmFtaWx5
LT5mYW1pbHkoKS5jb250YWlucyhtYXRjaFdvcmRzW2pdLCBmYWxzZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udC5mb250
RGVzY3JpcHRpb24oKSwgZ2VlemFTdHIpOwpAQCAtMTUzLDggKzE1NCw4IEBAIEZvbnRQbGF0Zm9y
bURhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckYKIAogRm9udFBsYXRmb3JtRGF0YSogRm9udENh
Y2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uKQogewotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXNTdHIoIlRpbWVz
Iik7Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZyBsdWNpZGFHcmFuZGVTdHIoIkx1Y2lkYSBHcmFu
ZGUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGltZXNTdHIsICgi
VGltZXMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGx1Y2lkYUdy
YW5kZVN0ciwgKCJMdWNpZGEgR3JhbmRlIikpOwogCiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGV2
ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3MgZGVmYXVsdCBmb250IGhlcmUuICBG
b3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVsdCB0aGF0IHRoZSB1c2VyIHdvdWxk
IGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bWFjL0N1cnNvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9DdXJz
b3JNYWMubW0JKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ3Vyc29y
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJGb3VuZGF0
aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgogI2ltcG9ydCAiSW50UG9pbnQuaCIKKyNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlQ3Vyc29yQnVu
ZGxlIDogTlNPYmplY3QgeyB9CiBAZW5kCkBAIC01Niw3ICs1Nyw3IEBAIHN0YXRpYyBOU0N1cnNv
ciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWcKIAogLy8gTGVhayB0aGVzZSBjdXJzb3JzIGludGVu
dGlvbmFsbHksIHRoYXQgd2F5IHdlIHdvbid0IHdhc3RlIHRpbWUgdHJ5aW5nIHRvIGNsZWFuIHRo
ZW0KIC8vIHVwIGF0IHByb2Nlc3MgZXhpdCB0aW1lLgotc3RhdGljIEN1cnNvciYgbGVha05hbWVk
Q3Vyc29yKGNvbnN0IGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBDdXJzb3IqIGxl
YWtOYW1lZEN1cnNvcihjb25zdCBjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIE5TU3RyaW5nKiByZXNvdXJjZU5hbWUgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6bmFtZV07CkBAIC03MCw5ICs3MSw5
IEBAIHN0YXRpYyBDdXJzb3ImIGxlYWtOYW1lZEN1cnNvcihjb25zdCBjaGEKICAgICAgICAgY3Vy
c29yID0gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTpjdXJzb3JJbWFnZSBob3RTcG90
OmhvdFNwb3RQb2ludF07CiAgICAgICAgIFtjdXJzb3JJbWFnZSByZWxlYXNlXTsKICAgICB9Ci0g
ICAgcmV0dXJuICpuZXcgQ3Vyc29yKGN1cnNvcik7CisgICAgcmV0dXJuIG5ldyBDdXJzb3IoY3Vy
c29yKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiAqbmV3IEN1
cnNvcjsKKyAgICByZXR1cm4gbmV3IEN1cnNvcjsKIH0KIAogQ3Vyc29yOjpDdXJzb3IoSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRQb2ludCYgaG90c3BvdCkKQEAgLTEwNSwxOTMgKzEwNiwxOTMgQEAg
Q3Vyc29yOjpDdXJzb3IoTlNDdXJzb3IqIGMpCiAKIGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNv
cigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9ICpuZXcgQ3Vyc29yKFtOU0N1cnNvciBhcnJv
d0N1cnNvcl0pOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ3Vyc29yLCBjLCAoW05TQ3Vyc29y
IGFycm93Q3Vyc29yXSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNyb3Nz
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjcm9z
c0hhaXJDdXJzb3IiLCAxMSwgMTEpOworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1
cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigiY3Jvc3NIYWlyQ3Vyc29yIiwgMTEsIDExKSkpOwog
ICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQogewotICAgIHN0
YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoImxpbmtDdXJzb3IiLCA2LCAxKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3Io
ImxpbmtDdXJzb3IiLCA2LCAxKSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3Im
IG1vdmVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
Im1vdmVDdXJzb3IiLCA3LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJz
b3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoIm1vdmVDdXJzb3IiLCA3LCA3KSkpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIHZlcnRpY2FsVGV4dEN1cnNvcigpCiB7Ci0gICAgc3Rh
dGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigidmVydGljYWxUZXh0Q3Vyc29yIiwgNywg
Nyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTF9BU1NJR04oQ3Vyc29yLCBjLCAobGVha05hbWVk
Q3Vyc29yKCJ2ZXJ0aWNhbFRleHRDdXJzb3IiLCA3LCA3KSkpOwogICAgIHJldHVybiBjOwogfQog
CiBjb25zdCBDdXJzb3ImIGNlbGxDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBs
ZWFrTmFtZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3LCA3
KSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGNvbnRleHRNZW51Q3Vyc29y
KCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjb250ZXh0TWVu
dUN1cnNvciIsIDMsIDIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwg
YywgKGxlYWtOYW1lZEN1cnNvcigiY29udGV4dE1lbnVDdXJzb3IiLCAzLCAyKSkpOwogICAgIHJl
dHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGFsaWFzQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMg
Q3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJhbGlhc0N1cnNvciIsIDExLCAzKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoImFs
aWFzQ3Vyc29yIiwgMTEsIDMpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
em9vbUluQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29y
KCJ6b29tSW5DdXJzb3IiLCA3LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihD
dXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIsIDcsIDcpKSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbU91dEN1cnNvcigpCiB7Ci0gICAgc3Rh
dGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiem9vbU91dEN1cnNvciIsIDcsIDcpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNv
cigiem9vbU91dEN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgY29weUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1
cnNvcigiY29weUN1cnNvciIsIDMsIDIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdO
KEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigiY29weUN1cnNvciIsIDMsIDIpKSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9uZUN1cnNvcigpCiB7Ci0gICAgc3RhdGlj
IEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9uZUN1cnNvciIsIDcsIDcpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigibm9u
ZUN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgcHJv
Z3Jlc3NDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
InByb2dyZXNzQ3Vyc29yIiwgMywgMik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTF9BU1NJR04o
Q3Vyc29yLCBjLCAobGVha05hbWVkQ3Vyc29yKCJwcm9ncmVzc0N1cnNvciIsIDMsIDIpKSk7CiAg
ICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9Ecm9wQ3Vyc29yKCkKIHsKLSAgICBz
dGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub0Ryb3BDdXJzb3IiLCAzLCAxKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRDdXJz
b3IoIm5vRHJvcEN1cnNvciIsIDMsIDEpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm90QWxsb3dlZEN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtO
YW1lZEN1cnNvcigibm90QWxsb3dlZEN1cnNvciIsIDExLCAxMSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTF9BU1NJR04oQ3Vyc29yLCBjLCAobGVha05hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vy
c29yIiwgMTEsIDExKSkpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGlCZWFt
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29y
IElCZWFtQ3Vyc29yXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChbTlND
dXJzb3IgSUJlYW1DdXJzb3JdKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYg
d2FpdEN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigi
d2FpdEN1cnNvciIsIDcsIDcpOworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNv
ciwgYywgKGxlYWtOYW1lZEN1cnNvcigid2FpdEN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJu
IGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgaGVscEN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNv
ciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiaGVscEN1cnNvciIsIDgsIDgpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigiaGVscEN1cnNv
ciIsIDgsIDgpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgZWFzdFJlc2l6
ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiZWFz
dFJlc2l6ZUN1cnNvciIsIDE0LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihD
dXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoImVhc3RSZXNpemVDdXJzb3IiLCAxNCwgNykpKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aFJlc2l6ZUN1cnNvcigpCiB7
Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhSZXNpemVDdXJz
b3IiLCA3LCAxKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChs
ZWFrTmFtZWRDdXJzb3IoIm5vcnRoUmVzaXplQ3Vyc29yIiwgNywgMSkpKTsKICAgICByZXR1cm4g
YzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0aEVhc3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0
YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoRWFzdFJlc2l6ZUN1cnNvciIs
IDE0LCAxKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFr
TmFtZWRDdXJzb3IoIm5vcnRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAxKSkpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAg
c3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhXZXN0UmVzaXplQ3Vyc29y
IiwgMCwgMCk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTF9BU1NJR04oQ3Vyc29yLCBjLCAobGVh
a05hbWVkQ3Vyc29yKCJub3J0aFdlc3RSZXNpemVDdXJzb3IiLCAwLCAwKSkpOwogICAgIHJldHVy
biBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0
aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJzb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDE0
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRD
dXJzb3IoInNvdXRoUmVzaXplQ3Vyc29yIiwgNywgMTQpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgc291dGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJzb3V0aEVhc3RSZXNpemVDdXJzb3IiLCAxNCwgMTQp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1
cnNvcigic291dGhFYXN0UmVzaXplQ3Vyc29yIiwgMTQsIDE0KSkpOwogICAgIHJldHVybiBjOwog
fQogCiBjb25zdCBDdXJzb3ImIHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGlj
IEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigic291dGhXZXN0UmVzaXplQ3Vyc29yIiwgMSwg
MTQpOworICAgIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1l
ZEN1cnNvcigic291dGhXZXN0UmVzaXplQ3Vyc29yIiwgMSwgMTQpKSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgd2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1
cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigid2VzdFJlc2l6ZUN1cnNvciIsIDEsIDcpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigi
d2VzdFJlc2l6ZUN1cnNvciIsIDEsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm9ydGhTb3V0aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciYgYyA9
IGxlYWtOYW1lZEN1cnNvcigibm9ydGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUxfQVNTSUdOKEN1cnNvciwgYywgKGxlYWtOYW1lZEN1cnNvcigibm9y
dGhTb3V0aFJlc2l6ZUN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0
IEN1cnNvciYgZWFzdFdlc3RSZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMg
PSBsZWFrTmFtZWRDdXJzb3IoImVhc3RXZXN0UmVzaXplQ3Vyc29yIiwgNywgNyk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTF9BU1NJR04oQ3Vyc29yLCBjLCAobGVha05hbWVkQ3Vyc29yKCJlYXN0
V2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1
cnNvciYgbm9ydGhFYXN0U291dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vy
c29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3Ii
LCA3LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFr
TmFtZWRDdXJzb3IoIm5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpKSk7CiAg
ICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhXZXN0U291dGhFYXN0UmVzaXpl
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3J0
aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMX0FTU0lHTihDdXJzb3IsIGMsIChsZWFrTmFtZWRDdXJzb3IoIm5vcnRoV2VzdFNvdXRoRWFz
dFJlc2l6ZUN1cnNvciIsIDcsIDcpKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNv
ciYgY29sdW1uUmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5ldyBD
dXJzb3IoW05TQ3Vyc29yIHJlc2l6ZUxlZnRSaWdodEN1cnNvcl0pOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoW05TQ3Vyc29yIHJlc2l6ZUxlZnRSaWdodEN1cnNvcl0pKTsK
ICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiByb3dSZXNpemVDdXJzb3IoKQogewot
ICAgIHN0YXRpYyBDdXJzb3ImIGMgPSAqbmV3IEN1cnNvcihbTlNDdXJzb3IgcmVzaXplVXBEb3du
Q3Vyc29yXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3IsIGMsIChbTlNDdXJzb3Ig
cmVzaXplVXBEb3duQ3Vyc29yXSkpOwogICAgIHJldHVybiBjOwogfQogCkBAIC0zNDIsMTMgKzM0
MywxMyBAQCBjb25zdCBDdXJzb3ImIHdlc3RQYW5uaW5nQ3Vyc29yKCkKIAogY29uc3QgQ3Vyc29y
JiBncmFiQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5ldyBDdXJzb3IoW05T
Q3Vyc29yIG9wZW5IYW5kQ3Vyc29yXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDdXJzb3Is
IGMsIChbTlNDdXJzb3Igb3BlbkhhbmRDdXJzb3JdKSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgZ3JhYmJpbmdDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3ImIGMgPSAq
bmV3IEN1cnNvcihbTlNDdXJzb3IgY2xvc2VkSGFuZEN1cnNvcl0pOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ3Vyc29yLCBjLCAoW05TQ3Vyc29yIGNsb3NlZEhhbmRDdXJzb3JdKSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJh
clRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
U2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpbmNsdWRlIDxDYXJi
b24vQ2FyYm9uLmg+CiAKQEAgLTg2LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
Y3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKLSAgICBzdGF0
aWMgU2Nyb2xsYmFyVGhlbWVNYWMgdGhlbWU7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3Jv
bGxiYXJUaGVtZU1hYywgdGhlbWUsICgpKTsKICAgICByZXR1cm4gJnRoZW1lOwogfQogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJTY3JvbGxW
aWV3LmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00Niw3ICs0Nyw3
IEBAIGVudW0gewogCiBUaGVtZSogcGxhdGZvcm1UaGVtZSgpCiB7Ci0gICAgc3RhdGljIFRoZW1l
TWFjIHRoZW1lTWFjOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVGhlbWVNYWMsIHRoZW1lTWFj
LCAoKSk7CiAgICAgcmV0dXJuICZ0aGVtZU1hYzsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhyZWFkQ2hlY2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhyZWFkQ2hlY2subW0JKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhyZWFkQ2hlY2subW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9y
dCAiU3RyaW5nSGFzaC5oIgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OSw3ICs4MCw3IEBA
IHZvaWQgcmVwb3J0VGhyZWFkVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGYKIHZvaWQgV2ViQ29yZVJl
cG9ydFRocmVhZFZpb2xhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbikKIHsKICAgICB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGxvZ2dlZEZ1bmN0
aW9uczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwgbG9nZ2VkRnVu
Y3Rpb25zLCAoKSk7CiAgICAgc3dpdGNoICh0aHJlYWRWaW9sYXRpb25CZWhhdmlvcikgewogICAg
ICAgICBjYXNlIE5vVGhyZWFkQ2hlY2s6CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcAkocmV2
aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTMgQEAKICNpbmNsdWRlICJO
ZXR3b3JrU3RhdGVOb3RpZmllci5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTmV0
d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHsKLSAgICBzdGF0aWMg
TmV0d29ya1N0YXRlTm90aWZpZXIgbmV0d29ya1N0YXRlTm90aWZpZXI7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChOZXR3b3JrU3RhdGVOb3RpZmllciwgbmV0d29ya1N0YXRlTm90aWZpZXIsICgp
KTsKICAgICAKICAgICByZXR1cm4gbmV0d29ya1N0YXRlTm90aWZpZXI7CiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMubW0JKHJl
dmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0
cmVhbU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1Ro
cmVhZGluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSwxNCArNTAsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogdHlwZWRlZiBIYXNoTWFwPENGUmVhZFN0cmVhbVJlZiwgUmVmUHRy
PEZvcm1EYXRhPiA+IFN0cmVhbUZvcm1EYXRhTWFwOwogc3RhdGljIFN0cmVhbUZvcm1EYXRhTWFw
JiBnZXRTdHJlYW1Gb3JtRGF0YU1hcCgpCiB7Ci0gICAgc3RhdGljIFN0cmVhbUZvcm1EYXRhTWFw
IHN0cmVhbUZvcm1EYXRhTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyZWFtRm9ybURh
dGFNYXAsIHN0cmVhbUZvcm1EYXRhTWFwLCAoKSk7CiAgICAgcmV0dXJuIHN0cmVhbUZvcm1EYXRh
TWFwOwogfQogCiB0eXBlZGVmIEhhc2hNYXA8Q0ZSZWFkU3RyZWFtUmVmLCBSZWZQdHI8UmVzb3Vy
Y2VIYW5kbGU+ID4gU3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiBzdGF0aWMgU3RyZWFtUmVzb3Vy
Y2VIYW5kbGVNYXAmIGdldFN0cmVhbVJlc291cmNlSGFuZGxlTWFwKCkKIHsKLSAgICBzdGF0aWMg
U3RyZWFtUmVzb3VyY2VIYW5kbGVNYXAgc3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJlYW1SZXNvdXJjZUhhbmRsZU1hcCwgc3RyZWFtUmVzb3VyY2VI
YW5kbGVNYXAsICgpKTsKICAgICByZXR1cm4gc3RyZWFtUmVzb3VyY2VIYW5kbGVNYXA7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVz
cG9uc2VNYWMubW0JKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDxs
aW1pdHM+CiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoRm91bmRhdGlvblNlY3JldHNXZWJD
b3JlS25vd3NBYm91dCkKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6
cGxhdGZvcm1MYXp5SW5pdCgKICAgICAgICAgLy8gaXMgcmV0dXJuaW5nIGluY29ycmVjdCBNSU1F
IHR5cGUgZm9yIGxvY2FsIC54aHRtbCBmaWxlcykgd2hpY2ggaXMgb25seSByZXF1aXJlZCBpbiBM
ZW9wYXJkLgogICAgICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSAmJiBtX21pbWVUeXBlID09
ICJ0ZXh0L2h0bWwiKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBtX3VybC5w
YXRoKCk7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHhodG1sRXh0KCIueGh0bWwi
KTsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB4aHRtbEV4
dCwgKCIueGh0bWwiKSk7CiAgICAgICAgICAgICBpZiAocGF0aC5lbmRzV2l0aCh4aHRtbEV4dCwg
ZmFsc2UpKQogICAgICAgICAgICAgICAgIG1fbWltZVR5cGUgPSAiYXBwbGljYXRpb24veGh0bWwr
eG1sIjsKICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5j
cHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNlbmRpZgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjIsNyArMTIzLDcg
QEAgYm9vbCBUZXh0RW5jb2Rpbmc6OmlzSmFwYW5lc2UoKSBjb25zdAogICAgIGlmIChub0V4dGVu
ZGVkVGV4dEVuY29kaW5nTmFtZVVzZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c3RhdGljIEhhc2hTZXQ8Y29uc3QgY2hhcio+IHNldDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEhhc2hTZXQ8Y29uc3QgY2hhcio+LCBzZXQsICgpKTsKICAgICBpZiAoc2V0LmlzRW1wdHkoKSkg
ewogICAgICAgICBhZGRFbmNvZGluZ05hbWUoc2V0LCAieC1tYWMtamFwYW5lc2UiKTsKICAgICAg
ICAgYWRkRW5jb2RpbmdOYW1lKHNldCwgImNwOTMyIik7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMv
UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdl
YkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsMTIgKzI1LDEzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXImIFBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlcigpCiB7Ci0gICAgc3RhdGljIFBsdWdp
bk1haW5UaHJlYWRTY2hlZHVsZXImIHNjaGVkdWxlciA9ICpuZXcgUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlcjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIsIHNjaGVkdWxlciwgKCkpOwogCiAgICAgcmV0dXJuIHNjaGVkdWxlcjsKIH0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC03MCw2ICs3
MSw4IEBAIHN0YXRpYyBQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAqIGdQZXIKIAogdHlwZWRl
ZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgSGFzaFNldDxSZW5kZXJCbG9jayo+Kj4g
UGVyY2VudEhlaWdodENvbnRhaW5lck1hcDsKIHN0YXRpYyBQZXJjZW50SGVpZ2h0Q29udGFpbmVy
TWFwKiBnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcCA9IDA7CisgICAgCit0eXBlZGVmIFdURjo6
SGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiBDb250aW51YXRp
b25PdXRsaW5lVGFibGVNYXA7CiAKIC8vIE91ciBNYXJnaW5JbmZvIHN0YXRlIHVzZWQgd2hlbiBs
YXlpbmcgb3V0IGJsb2NrIGNoaWxkcmVuLgogUmVuZGVyQmxvY2s6Ok1hcmdpbkluZm86Ok1hcmdp
bkluZm8oUmVuZGVyQmxvY2sqIGJsb2NrLCBpbnQgdG9wLCBpbnQgYm90dG9tKQpAQCAtMTc4Myw5
ICsxNzg2LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRFbGxpcHNpc0JveGVzKFBhaQogICAg
IH0KIH0KIAotSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiog
Y29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKK0NvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCog
Y29udGludWF0aW9uT3V0bGluZVRhYmxlKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxSZW5kZXJC
bG9jayosIFJlbmRlckZsb3dTZXF1ZW5jZWRTZXQqPiB0YWJsZTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENvbnRpbnVhdGlvbk91dGxpbmVUYWJsZU1hcCwgdGFibGUsICgpKTsKICAgICByZXR1
cm4gJnRhYmxlOwogfQogCkBAIC0xNzk1LDcgKzE3OTgsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjph
ZGRDb250aW51YXRpb25XaXRoT3V0CiAgICAgLy8gd2F5IG9mIHBhaW50aW5nLgogICAgIEFTU0VS
VCghZmxvdy0+bGF5ZXIoKSk7CiAgICAgCi0gICAgSGFzaE1hcDxSZW5kZXJCbG9jayosIFJlbmRl
ckZsb3dTZXF1ZW5jZWRTZXQqPiogdGFibGUgPSBjb250aW51YXRpb25PdXRsaW5lVGFibGUoKTsK
KyAgICBDb250aW51YXRpb25PdXRsaW5lVGFibGVNYXAqIHRhYmxlID0gY29udGludWF0aW9uT3V0
bGluZVRhYmxlKCk7CiAgICAgUmVuZGVyRmxvd1NlcXVlbmNlZFNldCogY29udGludWF0aW9ucyA9
IHRhYmxlLT5nZXQodGhpcyk7CiAgICAgaWYgKCFjb250aW51YXRpb25zKSB7CiAgICAgICAgIGNv
bnRpbnVhdGlvbnMgPSBuZXcgUmVuZGVyRmxvd1NlcXVlbmNlZFNldDsKQEAgLTE4MDcsNyArMTgx
MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZENvbnRpbnVhdGlvbldpdGhPdXQKIAogdm9pZCBS
ZW5kZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25PdXRsaW5lcyhQYWludEluZm8mIGluZm8sIGlu
dCB0eCwgaW50IHR5KQogewotICAgIEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBSZW5kZXJGbG93U2Vx
dWVuY2VkU2V0Kj4qIHRhYmxlID0gY29udGludWF0aW9uT3V0bGluZVRhYmxlKCk7CisgICAgQ29u
dGludWF0aW9uT3V0bGluZVRhYmxlTWFwKiB0YWJsZSA9IGNvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZSgpOwogICAgIGlmICh0YWJsZS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgICAg
IApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHJldmlzaW9uIDM4Mzc4KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgogI2luY2x1ZGUgIlJl
bmRlckxpc3RNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw3ICs0Miw3
IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogY291bnRlcihSZW5kZXJPYmplY3QKIAogc3RhdGljIENv
dW50ZXJNYXBzJiBjb3VudGVyTWFwcygpCiB7Ci0gICAgc3RhdGljIENvdW50ZXJNYXBzIHN0YXRp
Y0NvdW50ZXJNYXBzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ291bnRlck1hcHMsIHN0YXRp
Y0NvdW50ZXJNYXBzLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY0NvdW50ZXJNYXBzOwogfQogCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAzODM3
OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNoYXJhY3Rlck5hbWVzLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC03NzEsNyAr
NzcyLDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0VmVydGljYWxCbwogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyIGVs
bGlwc2lzQW5kU3BhY2VbMl0gPSB7IGhvcml6b250YWxFbGxpcHNpcywgJyAnIH07Ci0gICAgICAg
ICAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyBlbGxpcHNpc0FuZFNwYWNlU3RyKGVsbGlwc2lz
QW5kU3BhY2UsIDIpOworICAgICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBlbGxpcHNpc0FuZFNwYWNlU3RyLCAoZWxsaXBzaXNBbmRTcGFjZSwgMikpOwogCiAg
ICAgICAgICAgICAgICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKG51bVZpc2libGVMaW5lcyA9
PSAxKS0+Zm9udCgpOwogICAgICAgICAgICAgICAgIGludCBlbGxpcHNpc0FuZFNwYWNlV2lkdGgg
PSBmb250LndpZHRoKFRleHRSdW4oZWxsaXBzaXNBbmRTcGFjZSwgMikpOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJIVE1MT0xpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdE1h
cmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTI4OSw3ICsyOTAsNyBAQCBjb25z
dCBTdHJpbmcmIFJlbmRlckxpc3RJdGVtOjptYXJrZXJUZXh0CiB7CiAgICAgaWYgKG1fbWFya2Vy
KQogICAgICAgICByZXR1cm4gbV9tYXJrZXItPnRleHQoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHN0
YXRpY051bGxTdHJpbmc7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0YXRpY051
bGxTdHJpbmcsICgpKTsKICAgICByZXR1cm4gc3RhdGljTnVsbFN0cmluZzsKIH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAkocmV2aXNpb24gMzgz
NzgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgi
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlbmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xs
YmFyVGhlbWUoKQogewotICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSB0aGVtZTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlbmRlclNjcm9sbGJhclRoZW1lLCB0aGVtZSwgKCkpOwog
ICAgIHJldHVybiAmdGhlbWU7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxDYXJib24vQ2Fy
Ym9uLmg+CiAjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8bWF0aC5oPgogCiAjaWZk
ZWYgQlVJTERJTkdfT05fVElHRVIKQEAgLTE2OCwxMyArMTY5LDEzIEBAIHN0YXRpYyBGb250V2Vp
Z2h0IHRvRm9udFdlaWdodChOU0ludGVnZXIKIAogdm9pZCBSZW5kZXJUaGVtZU1hYzo6c3lzdGVt
Rm9udChpbnQgY3NzVmFsdWVJZCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNv
bnN0CiB7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBzeXN0ZW1Gb250OwotICAgIHN0YXRp
YyBGb250RGVzY3JpcHRpb24gc21hbGxTeXN0ZW1Gb250OwotICAgIHN0YXRpYyBGb250RGVzY3Jp
cHRpb24gbWVudUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBsYWJlbEZvbnQ7Ci0g
ICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtaW5pQ29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZv
bnREZXNjcmlwdGlvbiBzbWFsbENvbnRyb2xGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRp
b24gY29udHJvbEZvbnQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRpb24s
IHN5c3RlbUZvbnQsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlv
biwgc21hbGxTeXN0ZW1Gb250LCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVz
Y3JpcHRpb24sIG1lbnVGb250LCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVz
Y3JpcHRpb24sIGxhYmVsRm9udCwgKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRm9udERl
c2NyaXB0aW9uLCBtaW5pQ29udHJvbEZvbnQsICgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEZvbnREZXNjcmlwdGlvbiwgc21hbGxDb250cm9sRm9udCwgKCkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRm9udERlc2NyaXB0aW9uLCBjb250cm9sRm9udCwgKCkpOwogCiAgICAgRm9udERl
c2NyaXB0aW9uKiBjYWNoZWREZXNjOwogICAgIE5TRm9udCogZm9udCA9IG5pbDsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L2JpZGkuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiYnJlYWtfbGluZXMu
aCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yMTkyLDcgKzIxOTMs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0xpbmVzRm9yVGV4dE92ZXJmCiAgICAgLy8gRGV0
ZXJtaW5lIHRoZSB3aWR0aCBvZiB0aGUgZWxsaXBzaXMgdXNpbmcgdGhlIGN1cnJlbnQgZm9udC4K
ICAgICAvLyBGSVhNRTogQ1NTMyBzYXlzIHRoaXMgaXMgY29uZmlndXJhYmxlLCBhbHNvIG5lZWQg
dG8gdXNlIDB4MDAyRSAoRlVMTCBTVE9QKSBpZiBob3Jpem9udGFsIGVsbGlwc2lzIGlzICJub3Qg
cmVuZGVyYWJsZSIKICAgICBUZXh0UnVuIGVsbGlwc2lzUnVuKCZob3Jpem9udGFsRWxsaXBzaXMs
IDEpOwotICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZWxsaXBzaXNTdHIoJmhvcml6b250YWxFbGxp
cHNpcywgMSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVsbGlwc2lz
U3RyLCAoJmhvcml6b250YWxFbGxpcHNpcywgMSkpOwogICAgIGNvbnN0IEZvbnQmIGZpcnN0TGlu
ZUZvbnQgPSBmaXJzdExpbmVTdHlsZSgpLT5mb250KCk7CiAgICAgY29uc3QgRm9udCYgZm9udCA9
IHN0eWxlKCktPmZvbnQoKTsKICAgICBpbnQgZmlyc3RMaW5lRWxsaXBzaXNXaWR0aCA9IGZpcnN0
TGluZUZvbnQud2lkdGgoZWxsaXBzaXNSdW4pOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MjAsMTMgKzcyMSwxMyBA
QCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQogY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgUmVu
ZGVyU3R5bGU6OmluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCkKIHsKLSAgICBzdGF0aWMgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBlbXB0eUxpc3Q7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+LCBlbXB0eUxpc3QsICgpKTsKICAgICByZXR1
cm4gZW1wdHlMaXN0OwogfQogCiBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBS
ZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKQogewotICAgIHN0YXRpYyBWZWN0b3I8
U3R5bGVEYXNoYm9hcmRSZWdpb24+IG5vbmVMaXN0OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiwgbm9uZUxpc3QsICgpKTsKICAgICBzdGF0aWMg
Ym9vbCBub25lTGlzdEluaXRpYWxpemVkID0gZmFsc2U7CiAKICAgICBpZiAoIW5vbmVMaXN0SW5p
dGlhbGl6ZWQpIHsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3
IEBACiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsMzEgKzU5
LDMzIEBAIHN0YXRpYyBNdXRleCYgZ3VpZE11dGV4KCkKICAgICAvLyBOb3RlOiBXZSBkb24ndCBo
YXZlIHRvIHVzZSBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMgaGVyZSBiZWNhdXNlCiAgICAg
Ly8gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBpbiB0aGUgY29uc3RydWN0b3Igb24gdGhl
IG1haW4gdGhyZWFkCiAgICAgLy8gYmVmb3JlIGFueSBvdGhlciB0aHJlYWRzIHRoYXQgY2FsbCB0
aGlzIGZ1bmN0aW9uIGFyZSB1c2VkLgotICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3IE11
dGV4OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CiAgICAgcmV0
dXJuIG11dGV4OwogfQogCi1zdGF0aWMgSGFzaE1hcDxpbnQsIFN0cmluZz4mIGd1aWRUb1ZlcnNp
b25NYXAoKQordHlwZWRlZiBIYXNoTWFwPGludCwgU3RyaW5nPiBHdWlkVmVyc2lvbk1hcDsKK3N0
YXRpYyBHdWlkVmVyc2lvbk1hcCYgZ3VpZFRvVmVyc2lvbk1hcCgpCiB7Ci0gICAgc3RhdGljIEhh
c2hNYXA8aW50LCBTdHJpbmc+JiBtYXAgPSAqbmV3IEhhc2hNYXA8aW50LCBTdHJpbmc+OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoR3VpZFZlcnNpb25NYXAsIG1hcCwgKCkpOwogICAgIHJldHVy
biBtYXA7CiB9CiAKLXN0YXRpYyBIYXNoTWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj4mIGd1
aWRUb0RhdGFiYXNlTWFwKCkKK3R5cGVkZWYgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJhc2Uq
Pio+IEd1aWREYXRhYmFzZU1hcDsKK3N0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFi
YXNlTWFwKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIEhhc2hTZXQ8RGF0YWJhc2UqPio+
JiBtYXAgPSAqbmV3IEhhc2hNYXA8aW50LCBIYXNoU2V0PERhdGFiYXNlKj4qPjsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEd1aWREYXRhYmFzZU1hcCwgbWFwLCAoKSk7CiAgICAgcmV0dXJuIG1h
cDsKIH0KIAogY29uc3QgU3RyaW5nJiBEYXRhYmFzZTo6ZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkK
IHsKLSAgICBzdGF0aWMgU3RyaW5nJiBuYW1lID0gKm5ldyBTdHJpbmcoIl9fV2ViS2l0RGF0YWJh
c2VJbmZvVGFibGVfXyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAo
Il9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyIpKTsKICAgICByZXR1cm4gbmFtZTsKIH0KIAog
c3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VWZXJzaW9uS2V5KCkKIHsKLSAgICBzdGF0aWMg
U3RyaW5nJiBrZXkgPSAqbmV3IFN0cmluZygiV2ViS2l0RGF0YWJhc2VWZXJzaW9uS2V5Iik7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGtleSwgKCJXZWJLaXREYXRhYmFzZVZlcnNp
b25LZXkiKSk7CiAgICAgcmV0dXJuIGtleTsKIH0KIApAQCAtMjE4LDcgKzIyMSw3IEBAIHN0YXRp
YyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmEKIAogYm9vbCBEYXRhYmFzZTo6Z2V0
VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgc3RhdGljIFN0cmlu
ZyYgZ2V0VmVyc2lvblF1ZXJ5ID0gKm5ldyBTdHJpbmcoIlNFTEVDVCB2YWx1ZSBGUk9NICIgKyBk
YXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgV0hFUkUga2V5ID0gJyIgKyBkYXRhYmFzZVZlcnNp
b25LZXkoKSArICInOyIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBnZXRWZXJz
aW9uUXVlcnksICgiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgp
ICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7IikpOwogCiAg
ICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIApAQCAtMjU0LDcgKzI1Nyw3IEBA
IHN0YXRpYyBib29sIHNldFRleHRWYWx1ZUluRGF0YWJhc2UoU1FMaXQKIAogYm9vbCBEYXRhYmFz
ZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewotICAgIHN0
YXRpYyBTdHJpbmcmIHNldFZlcnNpb25RdWVyeSA9ICpuZXcgU3RyaW5nKCJJTlNFUlQgSU5UTyAi
ICsgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkgKyAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsg
ZGF0YWJhc2VWZXJzaW9uS2V5KCkgKyAiJywgPyk7Iik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNldFZlcnNpb25RdWVyeSwgKCJJTlNFUlQgSU5UTyAiICsgZGF0YWJhc2VJbmZv
VGFibGVOYW1lKCkgKyAiIChrZXksIHZhbHVlKSBWQUxVRVMgKCciICsgZGF0YWJhc2VWZXJzaW9u
S2V5KCkgKyAiJywgPyk7IikpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUo
KTsKIApAQCAtMzYzLDkgKzM2NiwxMCBAQCBzdGF0aWMgaW50IGd1aWRGb3JPcmlnaW5BbmROYW1l
KGNvbnN0IFN0CiAgICAgLy8gTm90ZTogV2UgZG9uJ3QgaGF2ZSB0byB1c2UgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQogICAgIC8vIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIG9uY2UgaW4gdGhlIGNvbnN0cnVjdG9yIG9uIHRoZSBtYWluIHRocmVhZAogICAgIC8vIGJl
Zm9yZSBhbnkgb3RoZXIgdGhyZWFkcyB0aGF0IGNhbGwgdGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4K
LSAgICBzdGF0aWMgTXV0ZXgmIHN0cmluZ0lkZW50aWZpZXJNdXRleCA9ICpuZXcgTXV0ZXg7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChNdXRleCwgc3RyaW5nSWRlbnRpZmllck11dGV4LCAoKSk7
CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHN0cmluZ0lkZW50aWZpZXJNdXRleCk7Ci0gICAgc3Rh
dGljIEhhc2hNYXA8U3RyaW5nLCBpbnQ+JiBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwID0gKm5l
dyBIYXNoTWFwPFN0cmluZywgaW50PjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+
IElER3VpZE1hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRl
bnRpZmllclRvR1VJRE1hcCwgKCkpOwogICAgIGludCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRv
R1VJRE1hcC5nZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMg
aW50IGN1cnJlbnROZXdHVUlEID0gMTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKQEAgLTU1LDcgKzU2LDcgQEAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBEYXRh
YmFzZVRyYWNrZXI6Om9yaQogCiBEYXRhYmFzZVRyYWNrZXImIERhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpCiB7Ci0gICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tlciA9ICpuZXcgRGF0
YWJhc2VUcmFja2VyOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGF0YWJhc2VUcmFja2VyLCB0
cmFja2VyLCAoKSk7CiAgICAgcmV0dXJuIHRyYWNrZXI7CiB9CiAKQEAgLTc3MSw3ICs3NzIsNyBA
QCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0Q2xpZW50KERhdGFiYXNlCiAKIHN0YXRpYyBNdXRl
eCYgbm90aWZpY2F0aW9uTXV0ZXgoKQogewotICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3
IE11dGV4OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIG11dGV4LCAoKSk7CiAgICAg
cmV0dXJuIG11dGV4OwogfQogCkBAIC03NzksNyArNzgwLDcgQEAgdHlwZWRlZiBWZWN0b3I8cGFp
cjxTZWN1cml0eU9yaWdpbiosIFN0cgogCiBzdGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIG5vdGlm
aWNhdGlvblF1ZXVlKCkKIHsKLSAgICBzdGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIHF1ZXVlID0g
Km5ldyBOb3RpZmljYXRpb25RdWV1ZTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5vdGlmaWNh
dGlvblF1ZXVlLCBxdWV1ZSwgKCkpOwogICAgIHJldHVybiBxdWV1ZTsKIH0KIApJbmRleDogV2Vi
Q29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZS5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9zdG9yYWdl
L0xvY2FsU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWEuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDIsNyArNDMsNyBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBMb2NhbFN0b3Jh
Z2UqPiBMCiAKIHN0YXRpYyBMb2NhbFN0b3JhZ2VNYXAmIGxvY2FsU3RvcmFnZU1hcCgpCiB7Ci0g
ICAgc3RhdGljIExvY2FsU3RvcmFnZU1hcCBsb2NhbFN0b3JhZ2VNYXA7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChMb2NhbFN0b3JhZ2VNYXAsIGxvY2FsU3RvcmFnZU1hcCwgKCkpOwogICAgIHJl
dHVybiBsb2NhbFN0b3JhZ2VNYXA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAj
aW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIApAQCAtOTEsOCArOTIsOCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpwYXJzZU1hcHBlCiAgICAgCiBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Um90
YXRlTW9kZSBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cm90YXRlTW9kZSgpIGNvbnN0CiB7Ci0g
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBhdXRvVmFsKCJhdXRvIik7Ci0gICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyBhdXRvUmV2ZXJzZSgiYXV0by1yZXZlcnNlIik7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGF1dG9WYWwsICgiYXV0byIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgYXV0b1JldmVyc2Us
ICgiYXV0by1yZXZlcnNlIikpOwogICAgIFN0cmluZyByb3RhdGUgPSBnZXRBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnJvdGF0ZUF0dHIpOwogICAgIGlmIChyb3RhdGUgPT0gYXV0b1ZhbCkKICAgICAgICAg
cmV0dXJuIFJvdGF0ZUF1dG87CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTk2LDEw
ICsxOTcsMTAgQEAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6QW5pbWF0aW9uTW9kZSBTVkdBbgogCiBT
VkdBbmltYXRpb25FbGVtZW50OjpDYWxjTW9kZSBTVkdBbmltYXRpb25FbGVtZW50OjpjYWxjTW9k
ZSgpIGNvbnN0CiB7ICAgIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgZGlzY3JldGUo
ImRpc2NyZXRlIik7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBsaW5lYXIoImxpbmVh
ciIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgcGFjZWQoInBhY2VkIik7Ci0gICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzcGxpbmUoInNwbGluZSIpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBkaXNjcmV0ZSwgKCJkaXNjcmV0ZSIpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbGluZWFyLCAoImxp
bmVhciIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcGFj
ZWQsICgicGFjZWQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHNwbGluZSwgKCJzcGxpbmUiKSk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGdldEF0dHJpYnV0ZShTVkdOYW1lczo6Y2FsY01vZGVBdHRyKTsKICAgICBpZiAodmFsdWUgPT0g
ZGlzY3JldGUpCiAgICAgICAgIHJldHVybiBDYWxjTW9kZURpc2NyZXRlOwpAQCAtMjE0LDggKzIx
NSw4IEBAIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkNhbGNNb2RlIFNWR0FuaW1hdGkKIAogU1ZHQW5p
bWF0aW9uRWxlbWVudDo6QXR0cmlidXRlVHlwZSBTVkdBbmltYXRpb25FbGVtZW50OjphdHRyaWJ1
dGVUeXBlKCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBjc3Mo
IkNTUyIpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgeG1sKCJYTUwiKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgY3NzLCAoIkNTUyIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgeG1sLCAoIlhNTCIpKTsK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjph
dHRyaWJ1dGVUeXBlQXR0cik7CiAgICAgaWYgKHZhbHVlID09IGNzcykKICAgICAgICAgcmV0dXJu
IEF0dHJpYnV0ZVR5cGVDU1M7CkBAIC0yNDEsMTQgKzI0MiwxNCBAQCBTdHJpbmcgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6ZnJvbVZhbHVlKCkgCiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNB
ZGRpdGl2ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzdW0oInN1
bSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBzdW0sICgi
c3VtIikpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUoU1ZH
TmFtZXM6OmFkZGl0aXZlQXR0cik7CiAgICAgcmV0dXJuIHZhbHVlID09IHN1bSB8fCBhbmltYXRp
b25Nb2RlKCkgPT0gQnlBbmltYXRpb247CiB9CiAKIGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6
aXNBY2N1bXVsYXRlZCgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBz
dW0oInN1bSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBz
dW0sICgic3VtIikpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1
dGUoU1ZHTmFtZXM6OmFjY3VtdWxhdGVBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gc3VtICYm
IGFuaW1hdGlvbk1vZGUoKSAhPSBUb0FuaW1hdGlvbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0xhbmdTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNw
cAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsNyArNTIsNyBAQCB2b2lkIFNWR0xhbmdTcGFjZTo6
c2V0WG1sbGFuZyhjb25zdCBBdG9tCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0xhbmdTcGFjZTo6
eG1sc3BhY2UoKSBjb25zdAogewogICAgIGlmICghbV9zcGFjZSkgewotICAgICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nIGRlZmF1bHRTdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRTdHJpbmcsICgiZGVm
YXVsdCIpKTsKICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJpbmc7CiAgICAgfQogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNW
R1pvb21FdmVudC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJTTUlMVGltZUNvbnRhaW5lci5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OSw3ICs5MCw3IEBAIFNWR1NWR0VsZW1lbnQ6On5T
VkdTVkdFbGVtZW50KCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250
ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBk
ZWZhdWx0VmFsdWUoInRleHQvZWNtYXNjcmlwdCIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBkZWZhdWx0VmFsdWUsICgidGV4dC9lY21hc2NyaXB0IikpOwog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbiA9IGdldEF0dHJpYnV0ZShjb250ZW50U2NyaXB0VHlw
ZUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KQEAg
LTEwMSw3ICsxMDIsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldENvbnRlbnRTY3JpcHRUeXBl
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFN0eWxlVHlwZSgp
IGNvbnN0CiB7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBkZWZhdWx0VmFsdWUoInRl
eHQvY3NzIik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRl
ZmF1bHRWYWx1ZSwgKCJ0ZXh0L2NzcyIpKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBn
ZXRBdHRyaWJ1dGUoY29udGVudFN0eWxlVHlwZUF0dHIpOwogICAgIHJldHVybiBuLmlzTnVsbCgp
ID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDcgKzU0LDcg
QEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldFhtbHNwYWNlKGNvbnN0IAogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyBkZWZhdWx0VmFsdWUoInRleHQvY3NzIik7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGRlZmF1bHRWYWx1ZSwgKCJ0ZXh0L2NzcyIp
KTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUodHlwZUF0dHIpOwog
ICAgIHJldHVybiBuLmlzTnVsbCgpID8gZGVmYXVsdFZhbHVlIDogbjsKIH0KQEAgLTY1LDcgKzY2
LDcgQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFNWR1N0eWxlRWxlbWVudDo6bWVkaWEoKSBjb25zdAogewotICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcgZGVmYXVsdFZhbHVlKCJhbGwiKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgZGVmYXVsdFZhbHVlLCAoImFsbCIpKTsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG4gPSBnZXRBdHRyaWJ1dGUobWVkaWFBdHRyKTsKICAgICBy
ZXR1cm4gbi5pc051bGwoKSA/IGRlZmF1bHRWYWx1ZSA6IG47CiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIlNWR0lubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5OCw3ICs0OTksNyBAQCB2b2lkIFNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7CiAgICAgICAgICAg
ICBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHByZXNlcnZlU3RyaW5nKCJwcmVz
ZXJ2ZSIpOworICAgICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBwcmVzZXJ2ZVN0cmluZywgKCJwcmVzZXJ2ZSIpKTsKIAogICAgICAgICAgICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpID09IHByZXNlcnZlU3RyaW5nKQogICAgICAgICAgICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJl
KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNp
b24gMzgzNzgpCisrKyBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgog
I2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CkBAIC0xOTMsNyArMTk0LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6
OnBhcnNlQ2xvY2tWYWx1ZQogICAgIAogICAgIFN0cmluZyBwYXJzZSA9IGRhdGEuc3RyaXBXaGl0
ZVNwYWNlKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGluZGVmaW5pdGVWYWx1
ZSgiaW5kZWZpbml0ZSIpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBpbmRlZmluaXRlVmFsdWUsICgiaW5kZWZpbml0ZSIpKTsKICAgICBpZiAocGFyc2UgPT0g
aW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4gU01JTFRpbWU6OmluZGVmaW5pdGUoKTsK
IApAQCAtNDU3LDggKzQ1OCw4IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzRnJvemVuKCkgY29u
c3QKICAgICAKIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjpyZXN0YXJ0
KCkgY29uc3QKIHsgICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBuZXZlcigibmV2
ZXIiKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIHdoZW5Ob3RBY3RpdmUoIndoZW5O
b3RBY3RpdmUiKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
bmV2ZXIsICgibmV2ZXIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNT
dHJpbmcsIHdoZW5Ob3RBY3RpdmUsICgid2hlbk5vdEFjdGl2ZSIpKTsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gZ2V0QXR0cmlidXRlKFNWR05hbWVzOjpyZXN0YXJ0QXR0cik7CiAg
ICAgaWYgKHZhbHVlID09IG5ldmVyKQogICAgICAgICByZXR1cm4gUmVzdGFydE5ldmVyOwpAQCAt
NDY5LDcgKzQ3MCw3IEBAIFNWR1NNSUxFbGVtZW50OjpSZXN0YXJ0IFNWR1NNSUxFbGVtZW50OjoK
ICAgICAKIFNWR1NNSUxFbGVtZW50OjpGaWxsTW9kZSBTVkdTTUlMRWxlbWVudDo6ZmlsbCgpIGNv
bnN0CiB7ICAgCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBmcmVlemUoImZyZWV6ZSIp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBmcmVlemUsICgi
ZnJlZXplIikpOwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBnZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmZpbGxBdHRyKTsKICAgICByZXR1cm4gdmFsdWUgPT0gZnJlZXplID8gRmlsbEZy
ZWV6ZSA6IEZpbGxSZW1vdmU7CiB9CkBAIC01MDYsNyArNTA3LDcgQEAgU01JTFRpbWUgU1ZHU01J
TEVsZW1lbnQ6OnJlcGVhdENvdW50KCkgYwogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nIGluZGVmaW5pdGVWYWx1ZSgiaW5kZWZpbml0ZSIpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBpbmRlZmluaXRlVmFsdWUsICgiaW5kZWZpbml0
ZSIpKTsKICAgICBpZiAodmFsdWUgPT0gaW5kZWZpbml0ZVZhbHVlKQogICAgICAgICByZXR1cm4g
U01JTFRpbWU6OmluZGVmaW5pdGUoKTsKICAgICBib29sIG9rOwpAQCAtODYxLDcgKzg2Miw3IEBA
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGUKIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6Om5vdGlmeURlcGVuZGVudHNJbnRlcnZhbENoYW5nZWQoTmV3T3JFeGlzdGluZ0ludGVy
dmFsIG5ld09yRXhpc3RpbmcpCiB7CiAgICAgQVNTRVJUKG1faW50ZXJ2YWxCZWdpbi5pc0Zpbml0
ZSgpKTsKLSAgICBzdGF0aWMgSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+IGxvb3BCcmVha2VyOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTVkdTTUlMRWxlbWVudCo+LCBsb29wQnJl
YWtlciwgKCkpOwogICAgIGlmIChsb29wQnJlYWtlci5jb250YWlucyh0aGlzKSkKICAgICAgICAg
cmV0dXJuOwogICAgIGxvb3BCcmVha2VyLmFkZCh0aGlzKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDggKzQ4LDEwIEBAIHN0cnVjdCBSZXNvdXJjZVNldCB7
IAogICAgIFNWR1Jlc291cmNlKiByZXNvdXJjZXNbX1Jlc291cmNlVHlwZUNvdW50XTsgCiB9Owog
Ci1zdGF0aWMgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQqPiYgY2xpZW50
TWFwKCkgewotICAgIHN0YXRpYyBIYXNoTWFwPFNWR1N0eWxlZEVsZW1lbnQqLCBSZXNvdXJjZVNl
dCo+IG1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTVkdTdHlsZWRFbGVtZW50KiwgUmVzb3VyY2VTZXQq
PiBSZXNvdXJjZUNsaWVudE1hcDsKKworc3RhdGljIFJlc291cmNlQ2xpZW50TWFwJiBjbGllbnRN
YXAoKSB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXNvdXJjZUNsaWVudE1hcCwgbWFwLCAo
KSk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMTE2LDcgKzExOSw3IEBAIHZvaWQgU1ZHUmVz
b3VyY2U6OmludmFsaWRhdGVDbGllbnRzKEhhc2gKIAogdm9pZCBTVkdSZXNvdXJjZTo6cmVtb3Zl
Q2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqIGl0ZW0pIAogewotICAgIEhhc2hNYXA8U1ZHU3R5bGVk
RWxlbWVudCosIFJlc291cmNlU2V0Kj46Oml0ZXJhdG9yIHJlc291cmNlUHRyID0gY2xpZW50TWFw
KCkuZmluZChpdGVtKTsKKyAgICBSZXNvdXJjZUNsaWVudE1hcDo6aXRlcmF0b3IgcmVzb3VyY2VQ
dHIgPSBjbGllbnRNYXAoKS5maW5kKGl0ZW0pOwogICAgIGlmIChyZXNvdXJjZVB0ciA9PSBjbGll
bnRNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIApJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjUsNyArNjYsNyBAQCB2b2lkIFNWR1Jlc291cmNlTWFya2VyOjpkcmF3KEdyYXBoaWNzQ29uCiAg
ICAgaWYgKCFtX21hcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljIEhhc2hTZXQ8
U1ZHUmVzb3VyY2VNYXJrZXIqPiBjdXJyZW50bHlEcmF3aW5nTWFya2VyczsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEhhc2hTZXQ8U1ZHUmVzb3VyY2VNYXJrZXIqPiwgY3VycmVudGx5RHJhd2lu
Z01hcmtlcnMsICgpKTsKIAogICAgIC8vIGF2b2lkIGRyYXdpbmcgY2lyY3VsYXIgbWFya2VyIHJl
ZmVyZW5jZXMKICAgICBpZiAoY3VycmVudGx5RHJhd2luZ01hcmtlcnMuY29udGFpbnModGhpcykp
CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDE0IEBA
CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIK
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nLCBDYXNl
Rm9sZGluZ0hhc2g+IEhlYWRlcnNTZXQ7CisKIHN0cnVjdCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0
ZW0gewotICAgIFByZWZsaWdodFJlc3VsdENhY2hlSXRlbSh1bnNpZ25lZCBleHBpcnlEZWx0YSwg
Ym9vbCBjcmVkZW50aWFscywgSGFzaFNldDxTdHJpbmc+KiBtZXRob2RzLCBIYXNoU2V0PFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPiogaGVhZGVycykKKyAgICBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0
ZW0odW5zaWduZWQgZXhwaXJ5RGVsdGEsIGJvb2wgY3JlZGVudGlhbHMsIEhhc2hTZXQ8U3RyaW5n
PiogbWV0aG9kcywgSGVhZGVyc1NldCogaGVhZGVycykKICAgICAgICAgOiBtX2Fic29sdXRlRXhw
aXJ5VGltZShjdXJyZW50VGltZSgpICsgZXhwaXJ5RGVsdGEpCiAgICAgICAgICwgbV9jcmVkZW50
aWFscyhjcmVkZW50aWFscykKICAgICAgICAgLCBtX21ldGhvZHMobWV0aG9kcykKQEAgLTY2LDE5
ICs2OSwxOSBAQCBzdHJ1Y3QgUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtIHsKICAgICBkb3VibGUg
bV9hYnNvbHV0ZUV4cGlyeVRpbWU7CiAgICAgYm9vbCBtX2NyZWRlbnRpYWxzOwogICAgIE93blB0
cjxIYXNoU2V0PFN0cmluZz4gPiBtX21ldGhvZHM7Ci0gICAgT3duUHRyPEhhc2hTZXQ8U3RyaW5n
LCBDYXNlRm9sZGluZ0hhc2g+ID4gbV9oZWFkZXJzOworICAgIE93blB0cjxIZWFkZXJzU2V0ID4g
bV9oZWFkZXJzOwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtVUkw+
LCBQcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0qPiBQcmVmbGlnaHRSZXN1bHRDYWNoZTsKIAogc3Rh
dGljIFByZWZsaWdodFJlc3VsdENhY2hlJiBwcmVmbGlnaHRSZXN1bHRDYWNoZSgpCiB7Ci0gICAg
c3RhdGljIFByZWZsaWdodFJlc3VsdENhY2hlIGNhY2hlOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUHJlZmxpZ2h0UmVzdWx0Q2FjaGUsIGNhY2hlLCAoKSk7CiAgICAgcmV0dXJuIGNhY2hlOwog
fQogCiBzdGF0aWMgdm9pZCBhcHBlbmRQcmVmbGlnaHRSZXN1bHRDYWNoZUVudHJ5KFN0cmluZyBv
cmlnaW4sIEtVUkwgdXJsLCB1bnNpZ25lZCBleHBpcnlEZWx0YSwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3JlZGVudGlhbHMsIEhhc2hTZXQ8U3Ry
aW5nPiogbWV0aG9kcywgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4qIGhlYWRlcnMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3JlZGVu
dGlhbHMsIEhhc2hTZXQ8U3RyaW5nPiogbWV0aG9kcywgSGVhZGVyc1NldCogaGVhZGVycykKIHsK
ICAgICBBU1NFUlQoIXByZWZsaWdodFJlc3VsdENhY2hlKCkuY29udGFpbnMoc3RkOjptYWtlX3Bh
aXIob3JpZ2luLCB1cmwpKSk7CiAKQEAgLTg4LDkgKzkxLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5k
UHJlZmxpZ2h0UmVzdWx0Q2FjaGVFbgogCiBzdGF0aWMgYm9vbCBpc1NhZmVSZXF1ZXN0SGVhZGVy
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VG
b2xkaW5nSGFzaD4gZm9yYmlkZGVuSGVhZGVyczsKLSAgICBzdGF0aWMgU3RyaW5nIHByb3h5U3Ry
aW5nKCJwcm94eS0iKTsKLSAgICBzdGF0aWMgU3RyaW5nIHNlY1N0cmluZygic2VjLSIpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSGVhZGVyc1NldCwgZm9yYmlkZGVuSGVhZGVycywgKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwcm94eVN0cmluZywgKCJwcm94eS0iKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNlY1N0cmluZywgKCJzZWMtIikpOwog
ICAgIAogICAgIGlmIChmb3JiaWRkZW5IZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3Ji
aWRkZW5IZWFkZXJzLmFkZCgiYWNjZXB0LWNoYXJzZXQiKTsKQEAgLTEyMSw3ICsxMjQsNyBAQCBz
dGF0aWMgYm9vbCBpc09uQWNjZXNzQ29udHJvbFNpbXBsZVJlcXVlCiAKIHN0YXRpYyBib29sIGlz
T25BY2Nlc3NDb250cm9sUmVzcG9uc2VIZWFkZXJXaGl0ZWxpc3QoY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBhbGxvd2Vk
SGVhZGVyczsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhlYWRlcnNTZXQsIGFsbG93ZWRIZWFk
ZXJzLCAoKSk7CiAgICAgaWYgKGFsbG93ZWRIZWFkZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBh
bGxvd2VkSGVhZGVycy5hZGQoImNhY2hlLWNvbnRyb2wiKTsKICAgICAgICAgYWxsb3dlZEhlYWRl
cnMuYWRkKCJjb250ZW50LWxhbmd1YWdlIik7CkBAIC0xMTY1LDcgKzExNjgsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2VQCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBPd25QdHI8SGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gPiBoZWFkZXJz
KG5ldyBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPik7CisgICAgT3duUHRyPEhlYWRl
cnNTZXQgPiBoZWFkZXJzKG5ldyBIZWFkZXJzU2V0KTsKICAgICBpZiAoIXBhcnNlQWNjZXNzQ29u
dHJvbEFsbG93TGlzdChyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkFjY2Vzcy1Db250cm9sLUFs
bG93LUhlYWRlcnMiKSwgaGVhZGVycy5nZXQoKSkpIHsKICAgICAgICAgbmV0d29ya0Vycm9yKCk7
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCShy
ZXZpc2lvbiAzODM3OCkKKysrIFdlYkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTQgQEAKIAogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJYUGF0aFZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgWFBhdGggewogICAgIAogRXZhbHVhdGlvbkNv
bnRleHQmIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCkKIHsKLSAgICBzdGF0aWMgRXZh
bHVhdGlvbkNvbnRleHQgZXZhbHVhdGlvbkNvbnRleHQ7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChFdmFsdWF0aW9uQ29udGV4dCwgZXZhbHVhdGlvbkNvbnRleHQsICgpKTsKICAgICByZXR1cm4g
ZXZhbHVhdGlvbkNvbnRleHQ7CiB9CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAJKHJldmlzaW9uIDM4
Mzc4KQorKysgV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiWFBhdGhFeGNlcHRpb24uaCIKICNpbmNsdWRlICJYUGF0
aE5TUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFN0ZXAuaCIKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIGludCB4cGF0aHl5cGFyc2Uodm9pZCopOwogCkBAIC01Myw2ICs1NCw4
IEBAIFBhcnNlciogUGFyc2VyOjpjdXJyZW50UGFyc2VyID0gMDsKICAgICAKIGVudW0gWE1MQ2F0
IHsgTmFtZVN0YXJ0LCBOYW1lQ29udCwgTm90UGFydE9mTmFtZSB9OwogCit0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBBeGlzTmFtZXNNYXA7CisKIHN0YXRpYyBYTUxDYXQgY2hh
ckNhdChVQ2hhciBhQ2hhcikKIHsKICAgICAvLyMjIyBtaWdodCBuZWVkIHRvIGFkZCBzb21lIHNw
ZWNpYWwgY2FzZXMgZnJvbSB0aGUgWE1MIHNwZWMuCkBAIC03MCw3ICs3Myw3IEBAIHN0YXRpYyBY
TUxDYXQgY2hhckNhdChVQ2hhciBhQ2hhcikKICAgICByZXR1cm4gTm90UGFydE9mTmFtZTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0VXBBeGlzTmFtZXNNYXAoSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4
aXM+JiBheGlzTmFtZXMpCitzdGF0aWMgdm9pZCBzZXRVcEF4aXNOYW1lc01hcChBeGlzTmFtZXNN
YXAmIGF4aXNOYW1lcykKIHsKICAgICBzdHJ1Y3QgQXhpc05hbWUgewogICAgICAgICBjb25zdCBj
aGFyKiBuYW1lOwpAQCAtOTcsMTIgKzEwMCwxMiBAQCBzdGF0aWMgdm9pZCBzZXRVcEF4aXNOYW1l
c01hcChIYXNoTWFwPFN0CiAKIHN0YXRpYyBib29sIGlzQXhpc05hbWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdGVwOjpBeGlzJiB0eXBlKQogewotICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3Rl
cDo6QXhpcz4gYXhpc05hbWVzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXhpc05hbWVzTWFw
LCBheGlzTmFtZXMsICgpKTsKIAogICAgIGlmIChheGlzTmFtZXMuaXNFbXB0eSgpKQogICAgICAg
ICBzZXRVcEF4aXNOYW1lc01hcChheGlzTmFtZXMpOwogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0
ZXA6OkF4aXM+OjppdGVyYXRvciBpdCA9IGF4aXNOYW1lcy5maW5kKG5hbWUpOworICAgIEF4aXNO
YW1lc01hcDo6aXRlcmF0b3IgaXQgPSBheGlzTmFtZXMuZmluZChuYW1lKTsKICAgICBpZiAoaXQg
PT0gYXhpc05hbWVzLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdHlwZSA9IGl0
LT5zZWNvbmQ7CkBAIC0xMTEsNyArMTE0LDcgQEAgc3RhdGljIGJvb2wgaXNBeGlzTmFtZShjb25z
dCBTdHJpbmcmIG5hbQogCiBzdGF0aWMgYm9vbCBpc05vZGVUeXBlTmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBub2RlVHlwZU5hbWVzOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBub2RlVHlwZU5hbWVzLCAoKSk7
CiAgICAgaWYgKG5vZGVUeXBlTmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUeXBlTmFt
ZXMuYWRkKCJjb21tZW50Iik7CiAgICAgICAgIG5vZGVUeXBlTmFtZXMuYWRkKCJ0ZXh0Iik7Cklu
ZGV4OiBXZWJDb3JlL3htbC9YUGF0aFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3ht
bC9YUGF0aFZhbHVlLmNwcAkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJDb3JlL3htbC9YUGF0aFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlhQYXRo
VXRpbC5oIgogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogCiB1c2luZyBzdGQ6Om51bWVyaWNfbGlt
aXRzOwpAQCAtNDUsNyArNDYsNyBAQCBjb25zdCBWYWx1ZTo6QWRvcHRUYWcgVmFsdWU6OmFkb3B0
ID0ge307CiBjb25zdCBOb2RlU2V0JiBWYWx1ZTo6dG9Ob2RlU2V0KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fZGF0YSkgewotICAgICAgICBzdGF0aWMgTm9kZVNldCBlbXB0eU5vZGVTZXQ7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoTm9kZVNldCwgZW1wdHlOb2RlU2V0LCAoKSk7CiAgICAg
ICAgIHJldHVybiBlbXB0eU5vZGVTZXQ7CiAgICAgfQogCiA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25145</attachid>
            <date>2008-11-13 16:52:32 -0800</date>
            <delta_ts>2008-11-15 12:10:17 -0800</delta_ts>
            <desc>WebKit only patch</desc>
            <filename>WK-Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>6172</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzODM3OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDgtMTEtMTMgIEdyZWcgQm9sc2luZ2EgIDxib2xz
aW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MTAKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBzdGF0aWMgQysrIG9iamVjdHMgdGhhdCBhcmUg
ZGVzdHJveWVkIGF0IGV4aXQgdGltZSAoZGVzdHJ1Y3RvcnMpCisKKyAgICAgICAgQ3JlYXRlIERF
RklORV9TVEFUSUNfTE9DQUwgYW5kIERFRklORV9TVEFUSUNfTE9DQUxfQVNTSUdOIG1hY3Jvcy4g
Q2hhbmdlIHN0YXRpYyAKKyAgICAgICAgbG9jYWwgb2JqZWN0cyB0byBsZWFrIHRvIGF2b2lkIGV4
aXQtdGltZSBkZXN0cnVjdG9yLiBVcGRhdGUgY29kZSB0aGF0IHdhcyBjaGFuZ2VkIAorICAgICAg
ICB0byBmaXggdGhpcyBpc3N1ZSB0aGF0IHJhbiBpbnRvIGEgZ2NjIGJ1ZyAoPHJkYXI6Ly9wcm9i
bGVtLzYzNTQ2OTY+IENvZGVnZW4gaXNzdWUgCisgICAgICAgIHdpdGggQysrIHN0YXRpYyByZWZl
cmVuY2UgaW4gZ2NjIGJ1aWxkIDU0NjUpLiBBbHNvIHR5cGRlZnMgZm9yIHRlbXBsYXRlIHR5cGVz
IAorICAgICAgICBuZWVkZWQgdG8gYmUgYWRkZWQgaW4gc29tZSBjYXNlcyBzbyB0aGUgdHlwZSBj
b3VsZCBtYWtlIGl0IHRocm91Z2ggdGhlIG1hY3JvIAorICAgICAgICBzdWNjZXNzZnVsbHkuCisK
KyAgICAgICAgQmFzaWNhbGx5IGNvZGUgb2YgdGhlIGZvcm06CisgICAgICAgIHN0YXRpYyBUIG07
CisgICAgICAgIGJlY29tZXM6CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoVCwgbSwgKCkp
OworCisgICAgICAgIEFsc28gYW55IGNvZGUgb2YgdGhlIGZvcm06CisgICAgICAgIHN0YXRpYyBU
JiBtID0gKm5ldyBUOworICAgICAgICBhbHNvIGJlY29tZXM6CisgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoVCwgbSwgKCkpOworCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0
ZExpYkV4dHJhcy5oOiBBZGRlZC4KKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlz
dC5tbToKKyAgICAgICAgKGJhY2tGb3J3YXJkTGlzdHMpOgorICAgICAgICAqIEhpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW06CisgICAgICAgIChoaXN0b3J5SXRlbVdyYXBwZXJzKToKKyAgICAgICAg
KiBNaXNjL1dlYlN0cmluZ1RydW5jYXRvci5tOgorICAgICAgICAoZm9udEZyb21OU0ZvbnQpOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAg
ICAoc3RyZWFtcyk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoYWVE
ZXNjRnJvbUpTVmFsdWUpOgorCiAyMDA4LTExLTEzICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIGZpeGVkIDxyZGFyOi8vcHJvYmxlbS82MzYxNTc4PiBXZWIg
S2l0IFVJIHN0cmluZ3M6IGEgZmV3IGVkaXRzCkluZGV4OiBXZWJLaXQvbWFjL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9t
YWMvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9TdGRMaWJFeHRyYXMuaD4KSW5kZXg6
IFdlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQkocmV2aXNpb24gMzgzNzgp
CisrKyBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00NiwxMiArNDYsMTUgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1zdGF0aWMgSGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExp
c3QqPiYgYmFja0ZvcndhcmRMaXN0cygpCit0eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0
KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4gQmFja0ZvcndhcmRMaXN0TWFwOworCitzdGF0aWMgQmFj
a0ZvcndhcmRMaXN0TWFwJiBiYWNrRm9yd2FyZExpc3RzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1h
cDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiBzdGF0aWNCYWNrRm9yd2Fy
ZExpc3RzOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQmFja0ZvcndhcmRMaXN0TWFwLCBzdGF0
aWNCYWNrRm9yd2FyZExpc3RzLCAoKSk7CiAgICAgcmV0dXJuIHN0YXRpY0JhY2tGb3J3YXJkTGlz
dHM7CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0JKHJldmlzaW9u
IDM4Mzc4KQorKysgV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAvLyBQcml2YXRlIGtl
eXMgdXNlZCBpbiB0aGUgV2ViSGlzdG9yeUl0ZW0ncyBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9u
LgogLy8gc2VlIDMyNDU3OTMgZm9yIGV4cGxhbmF0aW9uIG9mICJsYXN0VmlzaXRlZERhdGUiCkBA
IC02NSwxMiArNjYsMTQgQEAgTlNTdHJpbmcgKldlYkhpc3RvcnlJdGVtQ2hhbmdlZE5vdGlmaWNh
dAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAordHlwZWRlZiBIYXNoTWFwPEhpc3RvcnlJ
dGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiBIaXN0b3J5SXRlbU1hcDsKKwogc3RhdGljIGlubGluZSBX
ZWJIaXN0b3J5SXRlbVByaXZhdGUqIGtpdFByaXZhdGUoV2ViQ29yZUhpc3RvcnlJdGVtKiBsaXN0
KSB7IHJldHVybiAoV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKilsaXN0OyB9CiBzdGF0aWMgaW5saW5l
IFdlYkNvcmVIaXN0b3J5SXRlbSogY29yZShXZWJIaXN0b3J5SXRlbVByaXZhdGUqIGxpc3QpIHsg
cmV0dXJuIChXZWJDb3JlSGlzdG9yeUl0ZW0qKWxpc3Q7IH0KIAotSGFzaE1hcDxIaXN0b3J5SXRl
bSosIFdlYkhpc3RvcnlJdGVtKj4mIGhpc3RvcnlJdGVtV3JhcHBlcnMoKQorSGlzdG9yeUl0ZW1N
YXAmIGhpc3RvcnlJdGVtV3JhcHBlcnMoKQogewotICAgIHN0YXRpYyBIYXNoTWFwPEhpc3RvcnlJ
dGVtKiwgV2ViSGlzdG9yeUl0ZW0qPiBoaXN0b3J5SXRlbVdyYXBwZXJzOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSGlzdG9yeUl0ZW1NYXAsIGhpc3RvcnlJdGVtV3JhcHBlcnMsICgpKTsKICAg
ICByZXR1cm4gaGlzdG9yeUl0ZW1XcmFwcGVyczsKIH0KIApJbmRleDogV2ViS2l0L21hYy9NaXNj
L1dlYlN0cmluZ1RydW5jYXRvci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJT
dHJpbmdUcnVuY2F0b3IubQkocmV2aXNpb24gMzgzNzgpCisrKyBXZWJLaXQvbWFjL01pc2MvV2Vi
U3RyaW5nVHJ1bmNhdG9yLm0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRm9udFBsYXRmb3JtRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bVN0cmluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdUcnVuY2F0b3IuaD4KKyNpbXBvcnQg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ5
LDcgKzUwLDcgQEAgc3RhdGljIE5TRm9udCAqZGVmYXVsdE1lbnVGb250KCkKIHN0YXRpYyBGb250
JiBmb250RnJvbU5TRm9udChOU0ZvbnQgKmZvbnQpCiB7CiAgICAgc3RhdGljIE5TRm9udCAqY3Vy
cmVudEZvbnQ7Ci0gICAgc3RhdGljIEZvbnQgY3VycmVudFJlbmRlcmVyOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRm9udCwgY3VycmVudFJlbmRlcmVyLCAoKSk7CiAKICAgICBpZiAoW2ZvbnQg
aXNFcXVhbDpjdXJyZW50Rm9udF0pCiAgICAgICAgIHJldHVybiBjdXJyZW50UmVuZGVyZXI7Cklu
ZGV4OiBXZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0JKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTUsNyArNTYsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKkNhcmJvblBhdGhGcm9tUE9TSVhQYXRoCiB0eXBlZGVmIEhhc2hN
YXA8TlBTdHJlYW0qLCBOUFA+IFN0cmVhbU1hcDsKIHN0YXRpYyBTdHJlYW1NYXAmIHN0cmVhbXMo
KQogewotICAgIHN0YXRpYyBTdHJlYW1NYXAgc3RhdGljU3RyZWFtczsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmVhbU1hcCwgc3RhdGljU3RyZWFtcywgKCkpOwogICAgIHJldHVybiBzdGF0
aWNTdHJlYW1zOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzgzNzgp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDYgKzEzNSw3IEBACiAjaW1wb3J0IDx3dGYvSGFzaFRyYWl0cy5oPgogI2ltcG9ydCA8d3RmL1Jl
ZkNvdW50ZWRMZWFrQ291bnRlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2lt
cG9ydCA8V2ViS2l0L1dlYkRhc2hib2FyZFJlZ2lvbi5oPgpAQCAtMzYwNyw3ICszNjA4LDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0ZybwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6Omlu
Zm8pKSB7Ci0gICAgICAgICAgICBzdGF0aWMgSGFzaFNldDxKU09iamVjdCo+IHZpc2l0ZWRFbGVt
czsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxKU09iamVjdCo+LCB2
aXNpdGVkRWxlbXMsICgpKTsKICAgICAgICAgICAgIGlmICghdmlzaXRlZEVsZW1zLmNvbnRhaW5z
KG9iamVjdCkpIHsKICAgICAgICAgICAgICAgICB2aXNpdGVkRWxlbXMuYWRkKG9iamVjdCk7CiAg
ICAgICAgICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25146</attachid>
            <date>2008-11-13 16:53:21 -0800</date>
            <delta_ts>2008-11-15 12:10:20 -0800</delta_ts>
            <desc>WebKitTools only patch</desc>
            <filename>WKT-Bugzilla-21810.patch.txt</filename>
            <type>text/plain</type>
            <size>7253</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4Mzc4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDgtMTEtMTMgIEdyZWcgQm9sc2luZ2EgIDxi
b2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEw
CisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ry
b3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIENyZWF0ZSBERUZJTkVf
U1RBVElDX0xPQ0FMIGFuZCBERUZJTkVfU1RBVElDX0xPQ0FMX0FTU0lHTiBtYWNyb3MuIENoYW5n
ZSBzdGF0aWMgCisgICAgICAgIGxvY2FsIG9iamVjdHMgdG8gbGVhayB0byBhdm9pZCBleGl0LXRp
bWUgZGVzdHJ1Y3Rvci4gVXBkYXRlIGNvZGUgdGhhdCB3YXMgY2hhbmdlZCAKKyAgICAgICAgdG8g
Zml4IHRoaXMgaXNzdWUgdGhhdCByYW4gaW50byBhIGdjYyBidWcgKDxyZGFyOi8vcHJvYmxlbS82
MzU0Njk2PiBDb2RlZ2VuIGlzc3VlIAorICAgICAgICB3aXRoIEMrKyBzdGF0aWMgcmVmZXJlbmNl
IGluIGdjYyBidWlsZCA1NDY1KS4gQWxzbyB0eXBkZWZzIGZvciB0ZW1wbGF0ZSB0eXBlcyAKKyAg
ICAgICAgbmVlZGVkIHRvIGJlIGFkZGVkIGluIHNvbWUgY2FzZXMgc28gdGhlIHR5cGUgY291bGQg
bWFrZSBpdCB0aHJvdWdoIHRoZSBtYWNybyAKKyAgICAgICAgc3VjY2Vzc2Z1bGx5LgorCisgICAg
ICAgIEJhc2ljYWxseSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0aWMgVCBtOworICAg
ICAgICBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFQsIG0sICgpKTsKKwor
ICAgICAgICBBbHNvIGFueSBjb2RlIG9mIHRoZSBmb3JtOgorICAgICAgICBzdGF0aWMgVCYgbSA9
ICpuZXcgVDsKKyAgICAgICAgYWxzbyBiZWNvbWVzOgorICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFQsIG0sICgpKTsKKworICAgICAgICBSZW1vdmUgLm8gZmlsZXMgZnJvbSB0aGUgZXhjbHVk
ZSBsaXN0IHRoYXQgaGF2ZSBoYWQgdGhlaXIgZXhpdC10aW1lIGRlc3RydWN0b3JzIHJlbW92ZWQu
CisgICAgICAgIAorICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVj
dG9yczoKKwogMjAwOC0xMS0xMiAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViS2l0
VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwko
cmV2aXNpb24gMzgzNzgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRp
bWUtZGVzdHJ1Y3RvcnMJKHdvcmtpbmcgY29weSkKQEAgLTk1LDExMCArOTUsMzUgQEAgZm9yIG15
ICRmaWxlIChzb3J0IEBmaWxlcykgewogICAgIGlmICgkdGFyZ2V0IGVxICJXZWJDb3JlIikgewog
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlPYmplY3QubyI7CiAg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBcHBseVN0eWxlQ29tbWFuZC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBcmNoaXZlRmFjdG9yeS5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDU1NQcmltaXRpdmVWYWx1ZS5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDU1NTZWxlY3Rvci5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJDU1NTdHlsZVNlbGVjdG9yLm8iOwogICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIkNhY2hlZEltYWdlLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkNvbG9yTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkRP
TUltcGxlbWVudGF0aW9uLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkRvY3Vt
ZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkV2ZW50SGFuZGxlci5vIjsK
ICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJFdmVudEhhbmRsZXJNYWMubyI7CiAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRlRQRGlyZWN0b3J5RG9jdW1lbnQubyI7CiAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRm9udENhY2hlLm8iOwogICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJGb3JtRGF0YVN0cmVhbU1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJGcmFtZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGcmFtZUxvYWRl
ci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGcmFtZU1hYy5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJHQ0NvbnRyb2xsZXIubyI7CiAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiR3JhcGhpY3NDb250ZXh0TWFjLm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkhUTUxCdXR0b25FbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkhUTUxFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkhUTUxGaWVsZFNldEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiSFRNTElucHV0RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJI
VE1MSW50ZXJjaGFuZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTEtl
eWdlbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTExlZ2Vu
ZEVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTE9wdEdyb3Vw
RWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MT3B0aW9uRWxl
bWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MUGFyc2VyLm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxTZWxlY3RFbGVtZW50Lm8iOwogICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxUYWJsZUVsZW1lbnQubyI7Ci0gICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFRleHRBcmVhRWxlbWVudC5vIjsKICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJJY29uRGF0YWJhc2UubyI7CiAgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiSW1hZ2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SW5kZW50T3V0ZGVudENvbW1hbmQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SW5zcGVjdG9yQ29udHJvbGxlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJK
U0RPTUJpbmRpbmcubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNIVE1MRWxl
bWVudFdyYXBwZXJGYWN0b3J5Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpT
SW5zcGVjdGVkT2JqZWN0V3JhcHBlci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlci5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJKU1NWR0FuaW1hdGVkTGVuZ3RoLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIkpTU1ZHQW5pbWF0ZWRSZWN0Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIkpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkpTU1ZHTGVuZ3RoLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkpTU1ZHUmVjdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKYXZhU2NyaXB0
RGVidWdTZXJ2ZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSmF2YVNjcmlw
dFByb2ZpbGUubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSmF2YVNjcmlwdFBy
b2ZpbGVOb2RlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIktVUkwubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiTG9jYWxTdG9yYWdlLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlBhZ2UubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiUGFzdGVib2FyZE1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJS
ZW5kZXJCbG9jay5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJDb3Vu
dGVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlckZsZXhpYmxlQm94
Lm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlckxheWVyLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlckxpc3RJdGVtLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlclNjcm9sbGJhclRoZW1lLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlJlbmRlclN0eWxlLm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlJlbmRlclRoZW1lTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlJlc291cmNlUmVzcG9uc2VNYWMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiU1ZHQW5pbWF0aW9uRWxlbWVudC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJTVkdMYW5nU3BhY2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiU1ZHUmVzb3VyY2UubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHUmVz
b3VyY2VNYXJrZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU01JTEVs
ZW1lbnQubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU1ZHRWxlbWVudC5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTVkdTdHlsZUVsZW1lbnQubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50Lm8iOwot
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcmlwdEVsZW1lbnQubyI7CiAgICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsVmlldy5vIjsKLSAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJTY3JvbGxiYXJUaGVtZU1hYy5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJTZWN1cml0eU9yaWdpbi5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJTaW1wbGVGb250RGF0YU1hYy5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJTdHlsZVRyYW5zZm9ybURhdGEubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
VGV4dEVuY29kaW5nLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlRoZW1lTWFj
Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlRocmVhZENoZWNrLm8iOwotICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhNTEh0dHBSZXF1ZXN0Lm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoRXhwcmVzc2lvbk5vZGUubyI7Ci0gICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiWFBhdGhQYXJzZXIubyI7Ci0gICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiWFBhdGhWYWx1ZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJiaWRpLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgImh0bWxlZGl0aW5nLm8i
OwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIm1hcmt1cC5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJydW50aW1lX3Jvb3QubyI7CiAgICAgfQogCiAgICAgaWYgKCR0
YXJnZXQgZXEgIldlYktpdCIpIHsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBY2Nl
c3NpYmlsaXR5T2JqZWN0Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYkJh
Y2tGb3J3YXJkTGlzdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJCYXNl
TmV0c2NhcGVQbHVnaW5TdHJlYW0ubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IldlYkhpc3RvcnlJdGVtLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYk5T
UGFzdGVib2FyZEV4dHJhcy5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJQ
YXN0ZWJvYXJkSGVscGVyLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYlN0
cmluZ1RydW5jYXRvci5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJWaWV3
Lm8iOwogICAgIH0KIAogICAgICRzYXdFcnJvciA9IDEgaWYgcHJpbnRGdW5jdGlvbnMoJHNob3J0
TmFtZSwgJGZpbGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25189</attachid>
            <date>2008-11-15 12:51:45 -0800</date>
            <delta_ts>2008-11-16 15:05:19 -0800</delta_ts>
            <desc>WebCore only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;</desc>
            <filename>Bugzilla-21810-WC.patch.txt</filename>
            <type>text/plain</type>
            <size>21509</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDgtMTEtMTUgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisgICAgICAgIFJl
bW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0
IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3Jk
ZXJzRGVjbCk6IG5ldyB0aGUgQXRvbWljU3RyaW5ncworICAgICAgICAqIGxvYWRlci9DYWNoZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpicm9rZW5JbWFnZSk6IFVzZSByZWxlYXNlUmVm
CisgICAgICAgIChXZWJDb3JlOjpudWxsSW1hZ2UpOiBVc2UgcmVsZWFzZVJlZgorICAgICAgICAq
IGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBE
aXJlY3RvcnlUb2tlbml6ZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKTogVXNlIHJlbGVhc2VSZWYK
KyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bG9hZERlZmF1bHRJY29uUmVjb3JkKTogVXNlIHJlbGVhc2VSZWYKKyAgICAgICAgKiBwYWdl
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YWN0aW9uVmVyYik6IFVzZSBERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgICog
cGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjdGlvblZlcmIpOiBVc2UgREVGSU5FX1NUQVRJQ19M
T0NBTAorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmN1cnJlbnRFdmVudCk6IFVzZSBERUZJTkVfU1RBVElDX0xPQ0FMCisgICAgICAgICog
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpw
YWludCk6IFVzZSByZWxlYXNlUmVmCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om51bGxJbWFnZSk6IFVzZSByZWxlYXNlUmVm
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6bnNDb2xvcik6IFVzZSBIYXJkUmV0YWluCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbTogbmV3IHRoZSBTdHJpbmdzCisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWxsaW5nT3JCYWRHcmFtbWFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjp3ZWJGYWxsYmFja0ZvbnRGYW1pbHkpOiBVc2UgSGFyZFJldGFp
bgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6d3JpdGFibGVUeXBlc0ZvclVSTCk6IFVzZSBIYXJkUmV0YWluV2l0aE5TUmVsZWFzZQor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKTogQ3JlYXRlZCBz
byBhY2Nlc3NvciBoYXMgb25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKFdlYkNvcmU6
OndyaXRhYmxlVHlwZXNGb3JJbWFnZSk6IFVzZSBjcmVhdGUgZnVuY3Rpb24gZm9yIG9uZSBsaW5l
IGluaXRpYWxpemF0aW9uCisgICAgICAgIChXZWJDb3JlOjpzdHJpcEF0dGFjaG1lbnRDaGFyYWN0
ZXJzKTogVXNlIEhhcmRSZXRhaW4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6IFVzZSByZWxl
YXNlUmVmCisKIDIwMDgtMTEtMTUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1MjAsOCBAQCB2b2lkIEhUTUxUYWJs
ZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkCiB7CiAgICAgQ2VsbEJvcmRlcnMgYm9yZGVycyA9
IGNlbGxCb3JkZXJzKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nIGNlbGxCb3Jk
ZXJOYW1lc1tdID0geyAibm9uZSIsICJzb2xpZCIsICJpbnNldCIsICJzb2xpZC1jb2xzIiwgInNv
bGlkLXJvd3MiIH07Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBjZWxsYm9yZGVyVmFsdWUgPSBj
ZWxsQm9yZGVyTmFtZXNbYm9yZGVyc107CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyog
Y2VsbEJvcmRlck5hbWVzW10gPSB7IG5ldyBBdG9taWNTdHJpbmcoIm5vbmUiKSwgbmV3IEF0b21p
Y1N0cmluZygic29saWQiKSwgbmV3IEF0b21pY1N0cmluZygiaW5zZXQiKSwgbmV3IEF0b21pY1N0
cmluZygic29saWQtY29scyIpLCBuZXcgQXRvbWljU3RyaW5nKCJzb2xpZC1yb3dzIikgfTsKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGNlbGxib3JkZXJWYWx1ZSA9ICpjZWxsQm9yZGVyTmFtZXNb
Ym9yZGVyc107CiAgICAgQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRpb24qIGRlY2wgPSBnZXRN
YXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbGJvcmRl
clZhbHVlKTsKICAgICBpZiAoIWRlY2wpIHsKICAgICAgICAgZGVjbCA9IENTU01hcHBlZEF0dHJp
YnV0ZURlY2xhcmF0aW9uOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCk7IC8vIFRoaXMgc2luZ2xlIHJl
ZiBwaW5zIHVzIGluIHRoZSB0YWJsZSB1bnRpbCB0aGUgZG9jdW1lbnQgZGllcy4KQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZENlbGxCb3JkCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBzZXRNYXBwZWRBdHRyaWJ1
dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbEJvcmRlck5hbWVzW2JvcmRl
cnNdLCBkZWNsKTsKKyAgICAgICAgc2V0TWFwcGVkQXR0cmlidXRlRGVjbChlUGVyc2lzdGVudCwg
Y2VsbGJvcmRlckF0dHIsICpjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc10sIGRlY2wpOwogICAgICAg
ICBkZWNsLT5zZXRQYXJlbnQoMCk7CiAgICAgICAgIGRlY2wtPnNldE5vZGUoMCk7CiAgICAgICAg
IGRlY2wtPnNldE1hcHBlZFN0YXRlKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0ciwgY2VsbGJv
cmRlclZhbHVlKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDM4NDIzKQor
KysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcs
MTYgKzEwNywxNCBAQCB2b2lkIENhY2hlZEltYWdlOjphbGxDbGllbnRzUmVtb3ZlZCgpCiAKIHN0
YXRpYyBJbWFnZSogYnJva2VuSW1hZ2UoKQogewotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGJy
b2tlbkltYWdlOwotICAgIGlmICghYnJva2VuSW1hZ2UpCi0gICAgICAgIGJyb2tlbkltYWdlID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKTsKLSAgICByZXR1cm4g
YnJva2VuSW1hZ2UuZ2V0KCk7CisgICAgc3RhdGljIEltYWdlKiBicm9rZW5JbWFnZSA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWlzc2luZ0ltYWdlIikucmVsZWFzZVJlZigpOworICAg
IHJldHVybiBicm9rZW5JbWFnZTsKIH0KIAogc3RhdGljIEltYWdlKiBudWxsSW1hZ2UoKQogewot
ICAgIHN0YXRpYyBSZWZQdHI8Qml0bWFwSW1hZ2U+IG51bGxJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoKTsKLSAgICByZXR1cm4gbnVsbEltYWdlLmdldCgpOworICAgIHN0YXRpYyBCaXRtYXBJ
bWFnZSogbnVsbEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsKKyAg
ICByZXR1cm4gbnVsbEltYWdlOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkgY29u
c3QKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDM4NDIzKQorKysgV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBGVFBEaXJlY3RvcnlUb2tlbml6ZXI6
OnBhcnNlQW5kQXBwZQogCiBib29sIEZUUERpcmVjdG9yeVRva2VuaXplcjo6bG9hZERvY3VtZW50
VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0ZW1wbGF0ZURv
Y3VtZW50RGF0YTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0
YSA9IDA7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Ygc3RvcmluZyB0aGUgZGF0YSwgd2UnZCBy
YXRoZXIgYWN0dWFsbHkgcGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUgdGVtcGxhdGUg
RG9jdW1lbnQgb25jZSwKICAgICAvLyBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBp
dCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLiAgVGhlcmUgYXJlIGNv
bXBsZXhpdGllcyB3aXRoIHRoaXMgCiAgICAgLy8gYXBwcm9hY2ggdGhhdCBtYWtlIGl0IHdvcnRo
IHB1dHRpbmcgdGhpcyBvZmYuCkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBGVFBEaXJlY3RvcnlU
b2tlbml6ZXI6OmxvYWREb2N1bWVudAogICAgIGlmICghdGVtcGxhdGVEb2N1bWVudERhdGEpIHsK
ICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9kb2MtPnNldHRpbmdzKCk7CiAgICAgICAg
IGlmIChzZXR0aW5ncykKLSAgICAgICAgICAgIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MtPmZ0cERpcmVjdG9yeVRl
bXBsYXRlUGF0aCgpKTsKKyAgICAgICAgICAgIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MtPmZ0cERpcmVjdG9yeVRl
bXBsYXRlUGF0aCgpKS5yZWxlYXNlUmVmKCk7CiAgICAgICAgIGlmICh0ZW1wbGF0ZURvY3VtZW50
RGF0YSkKICAgICAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUg
b2YgbGVuZ3RoICVpXG4iLCB0ZW1wbGF0ZURvY3VtZW50RGF0YS0+c2l6ZSgpKTsKICAgICB9Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAzODQyMykKKysr
IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgxLDcgKzM4MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2FkRGVmYXVsdEljb25SZWNvcmQK
ICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMSwgMHg1MiwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwOCwgMHgwMCwgMHgwOCwgMHgwMCwg
MHgwQSwgCiAgICAgICAgIDB4RkMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MTAsIDB4MDAs
IDB4MEEsIDB4RkMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MjcsIDB4MTAgfTsKICAgICAgICAgCi0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRlZmF1bHRJY29uQnVmZmVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRlZmF1bHRJY29uRGF0YSwgc2l6ZW9mKGRlZmF1bHRJY29uRGF0YSkpKTsK
KyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiBkZWZhdWx0SWNvbkJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRlZmF1bHRJY29uRGF0YSwgc2l6ZW9mKGRlZmF1bHRJY29uRGF0YSkpLnJlbGVh
c2VSZWYoKTsKICAgICBkZWZhdWx0SWNvblJlY29yZC0+c2V0SW1hZ2VEYXRhKGRlZmF1bHRJY29u
QnVmZmVyKTsKIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMu
aCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTEwMDEsMTMgKzEwMDIsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyZW1v
dmVBWE9iamVjdAogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJi
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdmVyYnMgZm9yIHNlbGVjdCBl
bGVtZW50cy4KLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGJ1dHRvbkFjdGlvbiA9IEFYQnV0dG9u
QWN0aW9uVmVyYigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgdGV4dEZpZWxkQWN0aW9uID0g
QVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyByYWRpb0J1
dHRvbkFjdGlvbiA9IEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyBjaGVja2VkQ2hlY2tCb3hBY3Rpb24gPSBBWENoZWNrZWRDaGVja0JveEFjdGlvblZl
cmIoKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHVuY2hlY2tlZENoZWNrQm94QWN0aW9uID0g
QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGxpbmtBY3Rpb24gPSBBWExpbmtBY3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBub0FjdGlvbjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYnV0dG9uQWN0aW9u
LCAoQVhCdXR0b25BY3Rpb25WZXJiKCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdGV4dEZpZWxkQWN0aW9uLCAoQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFkaW9CdXR0b25BY3Rpb24sIChBWFJhZGlvQnV0dG9u
QWN0aW9uVmVyYigpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNoZWNrZWRD
aGVja0JveEFjdGlvbiwgKEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHVuY2hlY2tlZENoZWNrQm94QWN0aW9uLCAoQVhVbmNo
ZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBsaW5rQWN0aW9uLCAoQVhMaW5rQWN0aW9uVmVyYigpKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIG5vQWN0aW9uLCAoKSk7CiAKICAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgp
KSB7CiAgICAgICAgIGNhc2UgQnV0dG9uUm9sZToKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDM4NDIzKQorKysgV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3
MCw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yMzUxLDEzICsyMzUyLDEzIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3ZlQVgKIGNvbnN0IFN0cmluZyYgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IE5lZWQgdG8gYWRkIHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCi0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyBidXR0b25BY3Rpb24gPSBBWEJ1dHRvbkFjdGlvblZlcmIoKTsKLSAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIHRleHRGaWVsZEFjdGlvbiA9IEFYVGV4dEZpZWxkQWN0aW9uVmVyYigp
OwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgcmFkaW9CdXR0b25BY3Rpb24gPSBBWFJhZGlvQnV0
dG9uQWN0aW9uVmVyYigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgY2hlY2tlZENoZWNrQm94
QWN0aW9uID0gQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0
IFN0cmluZyB1bmNoZWNrZWRDaGVja0JveEFjdGlvbiA9IEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rp
b25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsaW5rQWN0aW9uID0gQVhMaW5rQWN0
aW9uVmVyYigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbm9BY3Rpb247CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGJ1dHRvbkFjdGlvbiwgKEFYQnV0dG9uQWN0aW9uVmVyYigp
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRleHRGaWVsZEFjdGlvbiwgKEFY
VGV4dEZpZWxkQWN0aW9uVmVyYigpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHJhZGlvQnV0dG9uQWN0aW9uLCAoQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjaGVja2VkQ2hlY2tCb3hBY3Rpb24sIChBWENoZWNr
ZWRDaGVja0JveEFjdGlvblZlcmIoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB1bmNoZWNrZWRDaGVja0JveEFjdGlvbiwgKEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
KCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbGlua0FjdGlvbiwgKEFYTGlu
a0FjdGlvblZlcmIoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBub0FjdGlv
biwgKCkpOwogICAgIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICAgICAgY2FzZSBC
dXR0b25Sb2xlOgpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9u
IDM4NDIzKQorKysgV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCw3ICs1MSw3IEBA
IGNvbnN0IGRvdWJsZSBFdmVudEhhbmRsZXI6OlRleHREcmFnRGVsYXkKIAogc3RhdGljIFJldGFp
blB0cjxOU0V2ZW50PiYgY3VycmVudEV2ZW50KCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5T
RXZlbnQ+IGV2ZW50OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TRXZlbnQ+
LCBldmVudCwgKCkpOwogICAgIHJldHVybiBldmVudDsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCShyZXZpc2lvbiAzODQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2OCwxMSArNjY4LDkgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludChHcmFwaGljc0NvbnRleHQqIAogICAgIH0KIAogICAgIC8vIFBhaW50IHRoZSBwYW5T
Y3JvbGwgSWNvbgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHBhblNjcm9sbEljb247CiAgICAg
aWYgKG1fZHJhd1BhblNjcm9sbEljb24pIHsKLSAgICAgICAgaWYgKCFwYW5TY3JvbGxJY29uKQot
ICAgICAgICAgICAgcGFuU2Nyb2xsSWNvbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
cGFuSWNvbiIpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbi5nZXQo
KSwgbV9wYW5TY3JvbGxJY29uUG9pbnQpOworICAgICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9s
bEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5yZWxlYXNlUmVm
KCk7CisgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBtX3BhblNjcm9s
bEljb25Qb2ludCk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBJbWFnZTo6fkltYWdlKCkKIAog
SW1hZ2UqIEltYWdlOjpudWxsSW1hZ2UoKQogewotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IG51
bGxJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gbnVsbEltYWdlLmdl
dCgpOworICAgIHN0YXRpYyBJbWFnZSogbnVsbEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
LnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gbnVsbEltYWdlOwogfQogCiBib29sIEltYWdlOjpz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHJldmlzaW9uIDM4NDIzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ29sb3IuaCIKICNpbXBvcnQgIkNv
bG9yTWFjLmgiCisjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCiAKICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01OSwyMSArNjAsMjEg
QEAgTlNDb2xvciogbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgc3dpdGNoIChjKSB7
CiAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgLy8gTmVlZCB0aGlzIHRvIGF2b2lkIHJl
dHVybmluZyBuaWwgYmVjYXVzZSBjYWNoZWRSR0JBVmFsdWVzIHdpbGwgZGVmYXVsdCB0byAwLgot
ICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBjbGVhckNvbG9yID0gW05TQ29s
b3IgY2xlYXJDb2xvcl07Ci0gICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvci5nZXQoKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICpjbGVhckNvbG9yID0gSGFyZFJldGFpbihbTlNDb2xv
ciBjbGVhckNvbG9yXSk7CisgICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvcjsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENvbG9yOjpibGFjazogewotICAgICAgICAgICAgc3RhdGljIFJldGFp
blB0cjxOU0NvbG9yPiBibGFja0NvbG9yID0gW05TQ29sb3IgYmxhY2tDb2xvcl07Ci0gICAgICAg
ICAgICByZXR1cm4gYmxhY2tDb2xvci5nZXQoKTsKKyAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9y
ICpibGFja0NvbG9yID0gSGFyZFJldGFpbihbTlNDb2xvciBibGFja0NvbG9yXSk7CisgICAgICAg
ICAgICByZXR1cm4gYmxhY2tDb2xvcjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbG9yOjp3
aGl0ZTogewotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiB3aGl0ZUNvbG9y
ID0gW05TQ29sb3Igd2hpdGVDb2xvcl07Ci0gICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xvci5n
ZXQoKTsKKyAgICAgICAgICAgIHN0YXRpYyBOU0NvbG9yICp3aGl0ZUNvbG9yID0gSGFyZFJldGFp
bihbTlNDb2xvciB3aGl0ZUNvbG9yXSk7CisgICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xvcjsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICBjb25zdCBpbnQgY2Fj
aGVTaXplID0gMzI7CiAgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgY2FjaGVkUkdCQVZhbHVl
c1tjYWNoZVNpemVdOwotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBjYWNo
ZWRDb2xvcnNbY2FjaGVTaXplXTsKKyAgICAgICAgICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNDb2xv
cj4qIGNhY2hlZENvbG9ycyA9IG5ldyBSZXRhaW5QdHI8TlNDb2xvcj5bY2FjaGVTaXplXTsKIAog
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gY2FjaGVTaXplOyArK2kpCiAgICAgICAg
ICAgICAgICAgaWYgKGNhY2hlZFJHQkFWYWx1ZXNbaV0gPT0gYykKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9uIDM4NDIzKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmdldFNpbWlsYXJGCiAgICAgY29uc3QgRm9udEZhbWlseSogY3VyckZhbWlseSA9ICZmb250LmZv
bnREZXNjcmlwdGlvbigpLmZhbWlseSgpOwogICAgIHdoaWxlIChjdXJyRmFtaWx5ICYmICFwbGF0
Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICBzdGF0aWMgU3RyaW5nIG1hdGNoV29yZHNbM10gPSB7IFN0cmluZygiQXJh
YmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0cmluZygiVXJkdSIpIH07CisgICAgICAgICAgICBz
dGF0aWMgU3RyaW5nKiBtYXRjaFdvcmRzWzNdID0geyBuZXcgU3RyaW5nKCJBcmFiaWMiKSwgbmV3
IFN0cmluZygiUGFzaHRvIiksIG5ldyBTdHJpbmcoIlVyZHUiKSB9OwogICAgICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGdlZXphU3RyLCAoIkdlZXphIFBybyIpKTsK
ICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMyAmJiAhcGxhdGZvcm1EYXRhOyArK2op
Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmNvbnRhaW5zKG1hdGNo
V29yZHNbal0sIGZhbHNlKSkKKyAgICAgICAgICAgICAgICBpZiAoY3VyckZhbWlseS0+ZmFtaWx5
KCkuY29udGFpbnMoKm1hdGNoV29yZHNbal0sIGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAg
cGxhdGZvcm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlw
dGlvbigpLCBnZWV6YVN0cik7CiAgICAgICAgIH0KICAgICAgICAgY3VyckZhbWlseSA9IGN1cnJG
YW1pbHktPm5leHQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzQ29udGV4dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0JKHJldmlzaW9uIDM4NDIzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkdyYXBoaWNz
Q29udGV4dC5oIgogCisjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICIuLi9j
Zy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgogCiAjaW1wb3J0ICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCkBAIC04NywxMSArODgsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lRm9yTWlzc3BlbAogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIC8v
IENvbnN0YW50cyBmb3Igc3BlbGxpbmcgcGF0dGVybiBjb2xvcgotICAgIHN0YXRpYyBSZXRhaW5Q
dHI8TlNDb2xvcj4gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBuaWw7CisgICAgc3RhdGljIE5TQ29s
b3IgKnNwZWxsaW5nUGF0dGVybkNvbG9yID0gbmlsOwogICAgIHN0YXRpYyBib29sIHVzaW5nRG90
Rm9yU3BlbGxpbmcgPSBmYWxzZTsKIAogICAgIC8vIENvbnN0YW50cyBmb3IgZ3JhbW1hciBwYXR0
ZXJuIGNvbG9yCi0gICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBncmFtbWFyUGF0dGVybkNv
bG9yID0gbmlsOworICAgIHN0YXRpYyBOU0NvbG9yICpncmFtbWFyUGF0dGVybkNvbG9yID0gbmls
OwogICAgIHN0YXRpYyBib29sIHVzaW5nRG90Rm9yR3JhbW1hciA9IGZhbHNlOwogICAgIAogICAg
IC8vIFRoZXNlIGFyZSB0aGUgc2FtZSBmb3IgbWlzc3BlbGxpbmcgb3IgYmFkIGdyYW1tYXIKQEAg
LTEwOCw2ICsxMDksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVs
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gW05TQ29sb3IgcmVkQ29sb3JdOwog
ICAgICAgICBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IGNvbG9yOworICAgICAgICBIYXJkUmV0YWlu
KHNwZWxsaW5nUGF0dGVybkNvbG9yKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGdyYW1tYXIgJiYg
IWdyYW1tYXJQYXR0ZXJuQ29sb3IpIHsKQEAgLTExOSwxNiArMTIxLDE3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZUZvck1pc3NwZWwKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Y29sb3IgPSBbTlNDb2xvciBncmVlbkNvbG9yXTsKICAgICAgICAgZ3JhbW1hclBhdHRlcm5Db2xv
ciA9IGNvbG9yOworICAgICAgICBIYXJkUmV0YWluKGdyYW1tYXJQYXR0ZXJuQ29sb3IpOwogICAg
IH0KICAgICAKICAgICBib29sIHVzaW5nRG90OwogICAgIE5TQ29sb3IgKnBhdHRlcm5Db2xvcjsK
ICAgICBpZiAoZ3JhbW1hcikgewogICAgICAgICB1c2luZ0RvdCA9IHVzaW5nRG90Rm9yR3JhbW1h
cjsKLSAgICAgICAgcGF0dGVybkNvbG9yID0gZ3JhbW1hclBhdHRlcm5Db2xvci5nZXQoKTsKKyAg
ICAgICAgcGF0dGVybkNvbG9yID0gZ3JhbW1hclBhdHRlcm5Db2xvcjsKICAgICB9IGVsc2Ugewog
ICAgICAgICB1c2luZ0RvdCA9IHVzaW5nRG90Rm9yU3BlbGxpbmc7Ci0gICAgICAgIHBhdHRlcm5D
b2xvciA9IHNwZWxsaW5nUGF0dGVybkNvbG9yLmdldCgpOworICAgICAgICBwYXR0ZXJuQ29sb3Ig
PSBzcGVsbGluZ1BhdHRlcm5Db2xvcjsKICAgICB9CiAKICAgICAvLyBNYWtlIHN1cmUgdG8gZHJh
dyBvbmx5IGNvbXBsZXRlIGRvdHMuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TaW1wbGVGb250RGF0YU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRm9udENh
Y2hlLmgiCiAjaW1wb3J0ICJGb250RGVzY3JpcHRpb24uaCIKKyNpbXBvcnQgIkZvdW5kYXRpb25F
eHRyYXMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgogI2ltcG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmg+CkBAIC05MiwxMCArOTMsOCBAQCBib29sIGluaXRGb250RGF0YShTaW1wbGVGb250
RGF0YSogZm9udERhCiAKIHN0YXRpYyBOU1N0cmluZyAqd2ViRmFsbGJhY2tGb250RmFtaWx5KHZv
aWQpCiB7Ci0gICAgc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gd2ViRmFsbGJhY2tGb250RmFt
aWx5ID0gbmlsOwotICAgIGlmICghd2ViRmFsbGJhY2tGb250RmFtaWx5KQotICAgICAgICB3ZWJG
YWxsYmFja0ZvbnRGYW1pbHkgPSBbW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjE2LjBmXSBmYW1p
bHlOYW1lXTsKLSAgICByZXR1cm4gd2ViRmFsbGJhY2tGb250RmFtaWx5LmdldCgpOworICAgIHN0
YXRpYyBOU1N0cmluZyAqd2ViRmFsbGJhY2tGb250RmFtaWx5ID0gSGFyZFJldGFpbihbW05TRm9u
dCBzeXN0ZW1Gb250T2ZTaXplOjE2LjBmXSBmYW1pbHlOYW1lXSk7CisgICAgcmV0dXJuIHdlYkZh
bGxiYWNrRm9udEZhbWlseTsKIH0KIAogI2lmICFFUlJPUl9ESVNBQkxFRApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCShyZXZpc2lvbiAzODQyMykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkVkaXRvci5oIgog
I2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCiAj
aW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiSW1h
Z2UuaCIKQEAgLTc4LDI4ICs3OSwyOCBAQCBzdGF0aWMgTlNBcnJheSogc2VsZWN0aW9uUGFzdGVi
b2FyZFR5cGVzCiAKIHN0YXRpYyBOU0FycmF5KiB3cml0YWJsZVR5cGVzRm9yVVJMKCkKIHsKLSAg
ICBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHR5cGVzID0gbmlsOwotICAgIGlmICghdHlwZXMp
IHsKLSAgICAgICAgdHlwZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAg
ICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSBIYXJkUmV0YWluV2l0aE5TUmVsZWFzZShbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKICAgICAgICAgICAgIFdlYlVSTHNXaXRoVGl0bGVz
UGJvYXJkVHlwZSwKICAgICAgICAgICAgIE5TVVJMUGJvYXJkVHlwZSwKICAgICAgICAgICAgIFdl
YlVSTFBib2FyZFR5cGUsCiAgICAgICAgICAgICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwKICAgICAg
ICAgICAgIE5TU3RyaW5nUGJvYXJkVHlwZSwKLSAgICAgICAgICAgIG5pbF07Ci0gICAgfQotICAg
IHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICAgICAgICAgIG5pbF0pOworICAgIHJldHVybiB0eXBl
czsKK30KKworc3RhdGljIGlubGluZSBOU0FycmF5KiBjcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1h
Z2UoKQoreworICAgIE5TTXV0YWJsZUFycmF5ICp0eXBlcyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czpOU1RJRkZQYm9hcmRUeXBlLCBuaWxdOworICAgIFt0eXBlcyBh
ZGRPYmplY3RzRnJvbUFycmF5OndyaXRhYmxlVHlwZXNGb3JVUkwoKV07CisgICAgW3R5cGVzIGFk
ZE9iamVjdDpOU1JURkRQYm9hcmRUeXBlXTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIHN0YXRp
YyBOU0FycmF5KiB3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKQogewotICAgIHN0YXRpYyBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gbmlsOwotICAgIGlmICghdHlwZXMpIHsKLSAgICAg
ICAgdHlwZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNUSUZG
UGJvYXJkVHlwZSwgbmlsXTsKLSAgICAgICAgW3R5cGVzLmdldCgpIGFkZE9iamVjdHNGcm9tQXJy
YXk6d3JpdGFibGVUeXBlc0ZvclVSTCgpXTsKLSAgICAgICAgW3R5cGVzLmdldCgpIGFkZE9iamVj
dDpOU1JURkRQYm9hcmRUeXBlXTsKLSAgICB9Ci0gICAgcmV0dXJuIHR5cGVzLmdldCgpOworICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKGNyZWF0ZVdy
aXRhYmxlVHlwZXNGb3JJbWFnZSgpKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIFBhc3RlYm9h
cmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkgCkBAIC0xMjEsMTIgKzEyMiwxMiBA
QCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHN0YXRpYyBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmlwQXR0YWNobWVudENoYXJhY3RlcnMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAg
ICAgY29uc3QgdW5pY2hhciBhdHRhY2htZW50Q2hhcmFjdGVyID0gTlNBdHRhY2htZW50Q2hhcmFj
dGVyOwotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGF0dGFjaG1lbnRDaGFyYWN0ZXJT
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyYWN0
ZXIgbGVuZ3RoOjFdOworICAgIHN0YXRpYyBOU1N0cmluZyAqYXR0YWNobWVudENoYXJhY3RlclN0
cmluZyA9IEhhcmRSZXRhaW4oW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZhdHRhY2ht
ZW50Q2hhcmFjdGVyIGxlbmd0aDoxXSk7CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAq
cmVzdWx0ID0gW1tzdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBOU1Jhbmdl
IGF0dGFjaG1lbnRSYW5nZSA9IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2ht
ZW50Q2hhcmFjdGVyU3RyaW5nLmdldCgpXTsKKyAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZSA9
IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5n
XTsKICAgICB3aGlsZSAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsK
ICAgICAgICAgW3Jlc3VsdCByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6YXR0YWNobWVudFJhbmdl
IHdpdGhTdHJpbmc6QCIiXTsKLSAgICAgICAgYXR0YWNobWVudFJhbmdlID0gW1tyZXN1bHQgc3Ry
aW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyYWN0ZXJTdHJpbmcuZ2V0KCldOworICAg
ICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW3Jlc3VsdCBzdHJpbmddIHJhbmdlT2ZTdHJpbmc6YXR0
YWNobWVudENoYXJhY3RlclN0cmluZ107CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAzODQyMykKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNSwxMSAr
MTUxNSw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICB9
CiAKICAgICAvLyBQYWludCB0aGUgcmVzaXplciBjb250cm9sLgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwotICAgIGlmICghcmVzaXplQ29ybmVySW1hZ2UpCi0g
ICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0
ZXh0QXJlYVJlc2l6ZUNvcm5lciIpOworICAgIHN0YXRpYyBJbWFnZSogcmVzaXplQ29ybmVySW1h
Z2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIiku
cmVsZWFzZVJlZigpOwogICAgIEludFBvaW50IGltYWdlUG9pbnQoYWJzUmVjdC5yaWdodCgpIC0g
cmVzaXplQ29ybmVySW1hZ2UtPndpZHRoKCksIGFic1JlY3QuYm90dG9tKCkgLSByZXNpemVDb3Ju
ZXJJbWFnZS0+aGVpZ2h0KCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJ
bWFnZS5nZXQoKSwgaW1hZ2VQb2ludCk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc2l6ZUNv
cm5lckltYWdlLCBpbWFnZVBvaW50KTsKIAogICAgIC8vIERyYXcgYSBmcmFtZSBhcm91bmQgdGhl
IHJlc2l6ZXIgKDFweCBncmV5IGxpbmUpIGlmIHRoZXJlIGFyZSBhbnkgc2Nyb2xsYmFycyBwcmVz
ZW50LgogICAgIC8vIENsaXBwaW5nIHdpbGwgZXhjbHVkZSB0aGUgcmlnaHQgYW5kIGJvdHRvbSBl
ZGdlcyBvZiB0aGlzIGZyYW1lLgo=
</data>
<flag name="review"
          id="11625"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25190</attachid>
            <date>2008-11-15 12:52:44 -0800</date>
            <delta_ts>2008-11-16 15:06:24 -0800</delta_ts>
            <desc>WebKit only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;</desc>
            <filename>Bugzilla-21810-WK.patch.txt</filename>
            <type>text/plain</type>
            <size>7471</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzODQyMykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDgtMTEtMTUgIEdyZWcgQm9sc2luZ2EgIDxib2xz
aW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisg
ICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3ll
ZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIEluIGdlbmVyYWwsIGNoYW5n
ZSBzdGF0aWMgbG9jYWwgUmV0YWluUHRyPD4gdmFyaWFibGVzIHRvIEhhcmRSZXRhaW4gdGhlIG9i
amVjdCBhbmQgbGVhay4KKyAgICAgICAgCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRF
eHRyYXMubW06CisgICAgICAgICgrW05TUGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JV
UkxdKTogVXNlIEhhcmRSZXRhaW5BbmROU1JlbGVhc2UKKyAgICAgICAgKF9jcmVhdGVXcml0YWJs
ZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6IENyZWF0ZWQgc28gYWNjZXNzb3IgaGFzIG9u
ZSBsaW5lIGluaXRpYWxpemF0aW9uCisgICAgICAgIChfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0
aG91dEFyY2hpdmUpOiBVc2UgY3JlYXRlIGZ1bmN0aW9uIGZvciBvbmUgbGluZSBpbml0aWFsaXph
dGlvbgorICAgICAgICAoX2NyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKTog
Q3JlYXRlZCBzbyBhY2Nlc3NvciBoYXMgb25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAg
KF93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSk6IFVzZSBjcmVhdGUgZnVuY3Rpb24g
Zm9yIG9uZSBsaW5lIGluaXRpYWxpemF0aW9uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZEhlbHBlci5tbToKKyAgICAgICAgKFdlYlBhc3RlYm9hcmRIZWxwZXI6Omluc2Vy
dGFibGVQYXN0ZWJvYXJkVHlwZXMpOiBVc2UgSGFyZFJldGFpbkFuZE5TUmVsZWFzZQorICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOiBVc2UgSGFyZFJldGFpbgorICAg
ICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTUlNRVR5cGVzXSk6CisgICAg
ICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10p
OgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXNdKToKKwogMjAwOC0xMS0xNCAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvTWlz
Yy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNj
L1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJLaXQvbWFj
L01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW1wb3J0ICJXZWJVUkxzV2l0aFRpdGxlcy5oIgogI2ltcG9ydCAiV2ViVmlld1By
aXZhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
b3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVySW1hZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRl
bnNpb25zLmg+CkBAIC01OCwzOCArNTksNDEgQEAgTlNTdHJpbmcgKldlYlVSTE5hbWVQYm9hcmRU
eXBlID0gQCJwdWJsaQogCiArIChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5cGVzRm9yVVJMCiB7
Ci0gICAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0eXBlczsKLSAgICBpZiAoIXR5cGVzKSB7
Ci0gICAgICAgIHR5cGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6Ci0gICAg
ICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsCi0gICAgICAgICAgICBOU1VSTFBi
b2FyZFR5cGUsCi0gICAgICAgICAgICBXZWJVUkxQYm9hcmRUeXBlLAotICAgICAgICAgICAgV2Vi
VVJMTmFtZVBib2FyZFR5cGUsCi0gICAgICAgICAgICBOU1N0cmluZ1Bib2FyZFR5cGUsCi0gICAg
ICAgICAgICBuaWxdOwotICAgIH0KLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgc3RhdGlj
IE5TQXJyYXkgKnR5cGVzID0gSGFyZFJldGFpbldpdGhOU1JlbGVhc2UoW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlVS
THNXaXRoVGl0bGVzUGJvYXJkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNVUkxQYm9hcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJVUkxQ
Ym9hcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmdQYm9hcmRU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKKyAgICByZXR1cm4g
dHlwZXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlwZXNG
b3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkKK3sKKyAgICBOU011dGFibGVBcnJheSAqdHlwZXMgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNUSUZGUGJvYXJkVHlwZSwg
bmlsXTsKKyAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93ZWJf
d3JpdGFibGVUeXBlc0ZvclVSTF1dOworICAgIHJldHVybiB0eXBlczsKIH0KIAogc3RhdGljIE5T
QXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKIHsKLSAg
ICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlczsKLSAgICBpZiAodHlwZXMg
PT0gbmlsKSB7Ci0gICAgICAgIHR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzOk5TVElGRlBib2FyZFR5cGUsIG5pbF07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBh
ZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJsZVR5cGVzRm9yVVJM
XV07Ci0gICAgfQotICAgIHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAq
dHlwZXMgPSBIYXJkUmV0YWluV2l0aE5TUmVsZWFzZShfY3JlYXRlV3JpdGFibGVUeXBlc0Zvcklt
YWdlV2l0aG91dEFyY2hpdmUoKSk7CisgICAgcmV0dXJuIHR5cGVzOworfQorCitzdGF0aWMgaW5s
aW5lIE5TQXJyYXkgKl9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgpCit7
CisgICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVzID0gW193cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRo
b3V0QXJjaGl2ZSgpIG11dGFibGVDb3B5XTsKKyAgICBbdHlwZXMgYWRkT2JqZWN0Ok5TUlRGRFBi
b2FyZFR5cGVdOworICAgIFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwor
ICAgIHJldHVybiB0eXBlczsKIH0KIAogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9y
SW1hZ2VXaXRoQXJjaGl2ZSAodm9pZCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiB0eXBlczsKLSAgICBpZiAodHlwZXMgPT0gbmlsKSB7Ci0gICAgICAgIHR5cGVzID0g
W193cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpIG11dGFibGVDb3B5XTsKLSAg
ICAgICAgW3R5cGVzLmdldCgpIGFkZE9iamVjdDpOU1JURkRQYm9hcmRUeXBlXTsKLSAgICAgICAg
W3R5cGVzLmdldCgpIGFkZE9iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV07Ci0gICAgfQotICAg
IHJldHVybiB0eXBlcy5nZXQoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSBIYXJkUmV0
YWluV2l0aE5TUmVsZWFzZShfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUo
KSk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiArIChOU0FycmF5ICopX3dlYl93cml0YWJsZVR5
cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihCT09MKWhhc0FyY2hpdmUKSW5kZXg6IFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZEhlbHBlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRIZWxwZXIubW0JKHJldmlz
aW9uIDM4NDIzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVs
cGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbXBvcnQgPFdlYkNv
cmUvRE9NRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRGcmFnbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BsYXRmb3JtU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTkxLDEx
ICs5MiwxMSBAQCBET01Eb2N1bWVudEZyYWdtZW50ICpXZWJQYXN0ZWJvYXJkSGVscGVyCiAKIE5T
QXJyYXkgKldlYlBhc3RlYm9hcmRIZWxwZXI6Omluc2VydGFibGVQYXN0ZWJvYXJkVHlwZXMoKSBj
b25zdAogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdHlwZXMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgTlNIVE1MUGJvYXJk
VHlwZSwgTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBOU1RJRkZQYm9hcmRUeXBlLAorICAgIHN0YXRp
YyBOU0FycmF5ICp0eXBlcyA9IEhhcmRSZXRhaW5XaXRoTlNSZWxlYXNlKFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOldlYkFyY2hpdmVQYm9hcmRUeXBlLCBOU0hUTUxQYm9hcmRUeXBl
LCBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIE5TVElGRlBib2FyZFR5cGUsCiAjaWYgZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgfHwgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgICAg
ICAgICBOU1BJQ1RQYm9hcmRUeXBlLAogI2VuZGlmCi0gICAgICAgICAgIE5TVVJMUGJvYXJkVHlw
ZSwgTlNSVEZEUGJvYXJkVHlwZSwgTlNSVEZQYm9hcmRUeXBlLCBOU1N0cmluZ1Bib2FyZFR5cGUs
IE5TQ29sb3JQYm9hcmRUeXBlLCBuaWxdOworICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsIE5T
UlRGRFBib2FyZFR5cGUsIE5TUlRGUGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0Nv
bG9yUGJvYXJkVHlwZSwgbmlsXSk7CiAKLSAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CisgICAgcmV0
dXJuIHR5cGVzOwogfQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCShyZXZpc2lvbiAzODQyMykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBv
cnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xp
ZW50Lmg+CkBAIC05MiwyMyArOTMsMjAgQEAgc3RhdGljIE5TQXJyYXkgKmNvbmNhdGVuYXRlQXJy
YXlzKE5TQXJyYQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0gICAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMgPQotICAgICAg
ICBjb25jYXRlbmF0ZUFycmF5cyhbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10sIFtz
ZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk7Ci0gICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRl
ZE1JTUVUeXBlcy5nZXQoKTsKKyAgICBzdGF0aWMgTlNBcnJheSAqc3RhdGljU3VwcG9ydGVkTUlN
RVR5cGVzID0gSGFyZFJldGFpbihjb25jYXRlbmF0ZUFycmF5cyhbc2VsZiBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlc10sIFtzZWxmIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSkpOworICAgIHJl
dHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXM7CiB9CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0
ZWROb25JbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gc3Rh
dGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPQotICAgICAgICBzdHJpbmdBcnJheShNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKTsKLSAgICByZXR1
cm4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuZ2V0KCk7CisgICAgc3RhdGljIE5T
QXJyYXkgKnN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gSGFyZFJldGFpbihzdHJp
bmdBcnJheShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygp
KSk7CisgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzOwogfQogCiAr
IChOU0FycmF5ICopc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0KLSAgICAgICAgc3Ry
aW5nQXJyYXkoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSk7
Ci0gICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpOworICAgIHN0
YXRpYyBOU0FycmF5ICpzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IEhhcmRSZXRhaW4o
c3RyaW5nQXJyYXkoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMo
KSkpOworICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAogLSBp
bml0Cg==
</data>
<flag name="review"
          id="11626"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25191</attachid>
            <date>2008-11-15 12:53:31 -0800</date>
            <delta_ts>2008-11-16 20:21:32 -0800</delta_ts>
            <desc>WebKitTools only patch addressing RetainPtr&lt;&gt;, RefPtr&lt;&gt;</desc>
            <filename>Bugzilla-21810-WKT.patch.txt</filename>
            <type>text/plain</type>
            <size>2976</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4NDIzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTEtMTUgIEdyZWcgQm9sc2luZ2EgIDxi
b2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEw
CisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ry
b3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIFJlbW92ZSAubyBmaWxl
cyBmcm9tIHRoZSBleGNsdWRlIGxpc3QgdGhhdCBoYXZlIGhhZCB0aGVpciBleGl0LXRpbWUgZGVz
dHJ1Y3RvcnMgcmVtb3ZlZC4KKyAgICAgICAgSGFuZGxlIGNhc2Ugd2hlbiB0aGVyZSBpcyBubyBj
dXJyZW50IHN5bWJvbC4KKyAgICAgICAgCisgICAgICAgICogU2NyaXB0cy9jaGVjay1mb3ItZXhp
dC10aW1lLWRlc3RydWN0b3JzOgorCiAyMDA4LTExLTE1ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2lu
Z2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDog
V2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVj
dG9ycwkocmV2aXNpb24gMzg0MjMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1l
eGl0LXRpbWUtZGVzdHJ1Y3RvcnMJKHdvcmtpbmcgY29weSkKQEAgLTkzLDM5ICs5MywxOCBAQCBm
b3IgbXkgJGZpbGUgKHNvcnQgQGZpbGVzKSB7CiAgICAgJHNob3J0TmFtZSA9fiBzLy4qXC8vLzsK
IAogICAgIGlmICgkdGFyZ2V0IGVxICJXZWJDb3JlIikgewotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlPYmplY3QubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5vIjsKICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJDU1NTdHlsZVNlbGVjdG9yLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkNhY2hlZEltYWdlLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkNvbG9yTWFjLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkV2ZW50SGFuZGxl
ck1hYy5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGVFBEaXJlY3RvcnlEb2N1
bWVudC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJGb250Q2FjaGUubyI7Ci0g
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRm9udENhY2hlTWFjLm8iOwotICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgIkdyYXBoaWNzQ29udGV4dE1hYy5vIjsKLSAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MVGFibGVFbGVtZW50Lm8iOwotICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIkljb25EYXRhYmFzZS5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJJbWFnZS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0hUTUxF
bGVtZW50V3JhcHBlckZhY3RvcnkubyI7CiAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAi
SlNTVkdBbmltYXRlZExlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJK
U1NWR0FuaW1hdGVkUmVjdC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NW
R0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJKU1NWR0xlbmd0aC5vIjsKICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR1Jl
Y3QubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUGFzdGVib2FyZE1hYy5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMYXllci5vIjsKLSAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3JvbGxWaWV3Lm8iOwotICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlNlY3VyaXR5T3JpZ2luLm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIlNpbXBsZUZvbnREYXRhTWFjLm8iOwogICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIlN0eWxlVHJhbnNmb3JtRGF0YS5vIjsKICAgICB9CiAKLSAgICBpZiAoJHRhcmdldCBlcSAi
V2ViS2l0IikgewotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIldlYkhUTUxSZXByZXNl
bnRhdGlvbi5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJXZWJOU1Bhc3RlYm9h
cmRFeHRyYXMubyI7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiV2ViUGFzdGVib2Fy
ZEhlbHBlci5vIjsKLSAgICB9Ci0KICAgICAkc2F3RXJyb3IgPSAxIGlmIHByaW50RnVuY3Rpb25z
KCRzaG9ydE5hbWUsICRmaWxlKTsKIH0KIApAQCAtMTY4LDYgKzE0Nyw3IEBAIHN1YiBwcmludEZ1
bmN0aW9ucygkJCkKICAgICBteSAkY3VycmVudFN5bWJvbCA9ICIiOwogICAgIHdoaWxlICg8T1RP
T0w+KSB7CiAgICAgICAgICRjdXJyZW50U3ltYm9sID0gJDEgaWYgL14oXHcrKTokLzsKKyAgICAg
ICAgbmV4dCB1bmxlc3MgJGN1cnJlbnRTeW1ib2w7CiAgICAgICAgICRmdW5jdGlvbnN7ZGVtYW5n
bGUoJGN1cnJlbnRTeW1ib2wpfSA9IDEgaWYgL19fX2N4YV9hdGV4aXQvOwogICAgIH0KICAgICBj
bG9zZSBPVE9PTDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25194</attachid>
            <date>2008-11-15 13:31:05 -0800</date>
            <delta_ts>2008-11-16 15:08:55 -0800</delta_ts>
            <desc>JavaScriptCore patch to workaround buggy compilers only when required</desc>
            <filename>Bugzilla-21810-JSC.patch.txt</filename>
            <type>text/plain</type>
            <size>1787</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4NDI3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDgtMTEtMTUgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxODEwCisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQg
YXJlIGRlc3Ryb3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIENvbmRp
dGlvbmFsbHkgaGF2ZSB0aGUgREVGSU5FX1NUQVRJQ19MT0NBTCB3b3JrYXJvdW5kIDxyZGFyOi8v
cHJvYmxlbS82MzU0Njk2PiAKKyAgICAgICAgKENvZGVnZW4gaXNzdWUgd2l0aCBDKysgc3RhdGlj
IHJlZmVyZW5jZSBpbiBnY2MgYnVpbGQgNTQ2NSkgYmFzZWQgdXBvbiB0aGUgY29tcGlsZXIgCisg
ICAgICAgIGJ1aWxkIHZlcnNpb25zLiBJdCB3aWxsIHVzZSB0aGU6CisgICAgICAgIHN0YXRpYyBU
JiA9ICpuZXcgVDsKKyAgICAgICAgc3R5bGUgZm9yIGFsbCBvdGhlciBjb21waWxlcnMuCisKKyAg
ICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisKIDIwMDgtMTEtMTUgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMzg0MjMpCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDkgKzIz
LDE2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKIC8vIFVzZSB0aGVzZSB0byBkZWNsYXJlIGFuZCBkZWZpbmUgYSBzdGF0aWMgbG9jYWwgdmFy
aWFibGUgKHN0YXRpYyBUOykgc28gdGhhdAogLy8gIGl0IGlzIGxlYWtlZCBzbyB0aGF0IGl0cyBk
ZXN0cnVjdG9ycyBhcmUgbm90IGNhbGxlZCBhdCBleGl0LiBVc2luZyB0aGlzCiAvLyAgbWFjcm8g
YWxzbyBhbGxvd3Mgd29ya2Fyb3VuZHMgZm9yIHZhcmlvdXMgY29tcGlsZXIgYnVncy4KKyNpZiBD
T01QSUxFUihHQ0MpICYmIChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPT0gMCkg
JiYgKF9fR05VQ19QQVRDSExFVkVMX18gPT0gMSkgJiYgKF9fQVBQTEVfQ0NfXyA9PSA1NDY1KQog
I2RlZmluZSBERUZJTkVfU1RBVElDX0xPQ0FMKHR5cGUsIG5hbWUsIGFyZ3VtZW50cykgXAogICAg
IHN0YXRpYyB0eXBlKiBuYW1lIyNQdHIgPSBuZXcgdHlwZSBhcmd1bWVudHM7IFwKICAgICB0eXBl
JiBuYW1lID0gKm5hbWUjI1B0cgorI2Vsc2UKKyNkZWZpbmUgREVGSU5FX1NUQVRJQ19MT0NBTCh0
eXBlLCBuYW1lLCBhcmd1bWVudHMpIFwKKyAgICBzdGF0aWMgdHlwZSYgbmFtZSA9ICpuZXcgdHlw
ZSBhcmd1bWVudHMKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25200</attachid>
            <date>2008-11-16 15:05:19 -0800</date>
            <delta_ts>2008-11-16 17:06:34 -0800</delta_ts>
            <desc>Address Comment 83 for WebCore</desc>
            <filename>Bugzilla-21810-WC.patch.txt</filename>
            <type>text/plain</type>
            <size>23439</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDgtMTEtMTYgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisgICAgICAgIFJl
bW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0
IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIFVzZSBERUZJTkVfU1RBVElDX0xPQ0FMIGZv
ciBzdGF0aWMgUmV0YWluUHRyPFQ+LCBSZWZQdHI8VD4uIEFkZCBhZGRpdGlvbmFsCisgICAgICAg
IHVzZXMgb2YgREVGSU5FX1NUQVRJQ19MT0NBTCB3aGVyZSBhcHByb3ByaWF0ZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVFbGVtZW50OjphZGRTaGFyZWRDZWxsQm9yZGVyc0RlY2wpOiBuZXcgdGhlIEF0b21pY1N0cmlu
Z3MKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBs
b2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6X2NyZWF0
ZVRlbXBsYXRlRG9jdW1lbnREYXRhKTogQ3JlYXRlZCBzbyBhY2Nlc3NvciBoYXMgb25lIGxpbmUg
aW5pdGlhbGl6YXRpb24KKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeVRva2VuaXplcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRGVmYXVsdEljb25SZWNvcmQpOgorICAgICAg
ICAqIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY3Rpb25WZXJiKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWN0aW9uVmVyYik6CisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZTo6bnVsbEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpuc0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOiBuZXcgdGhlIFN0cmluZ3MKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpfY3JlYXRlUGF0dGVybkNvbG9yKTogQ3JlYXRlZCBzbyBhY2Nlc3NvciBoYXMg
b25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
d2ViRmFsbGJhY2tGb250RmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRhYmxlVHlwZXNGb3JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKTogQ3JlYXRlZCBzbyBhY2Nl
c3NvciBoYXMgb25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKFdlYkNvcmU6OndyaXRh
YmxlVHlwZXNGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpcEF0dGFjaG1lbnRDaGFy
YWN0ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisKIDIwMDgtMTEtMTYgIEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAzODQ1NikKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIwLDggKzUyMCw4IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRk
U2hhcmVkQ2VsbEJvcmQKIHsKICAgICBDZWxsQm9yZGVycyBib3JkZXJzID0gY2VsbEJvcmRlcnMo
KTsKIAotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgY2VsbEJvcmRlck5hbWVzW10gPSB7
ICJub25lIiwgInNvbGlkIiwgImluc2V0IiwgInNvbGlkLWNvbHMiLCAic29saWQtcm93cyIgfTsK
LSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNlbGxib3JkZXJWYWx1ZSA9IGNlbGxCb3JkZXJOYW1l
c1tib3JkZXJzXTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nKiBjZWxsQm9yZGVyTmFt
ZXNbXSA9IHsgbmV3IEF0b21pY1N0cmluZygibm9uZSIpLCBuZXcgQXRvbWljU3RyaW5nKCJzb2xp
ZCIpLCBuZXcgQXRvbWljU3RyaW5nKCJpbnNldCIpLCBuZXcgQXRvbWljU3RyaW5nKCJzb2xpZC1j
b2xzIiksIG5ldyBBdG9taWNTdHJpbmcoInNvbGlkLXJvd3MiKSB9OworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgY2VsbGJvcmRlclZhbHVlID0gKmNlbGxCb3JkZXJOYW1lc1tib3JkZXJzXTsKICAg
ICBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZGVjbCA9IGdldE1hcHBlZEF0dHJpYnV0
ZURlY2woZVBlcnNpc3RlbnQsIGNlbGxib3JkZXJBdHRyLCBjZWxsYm9yZGVyVmFsdWUpOwogICAg
IGlmICghZGVjbCkgewogICAgICAgICBkZWNsID0gQ1NTTWFwcGVkQXR0cmlidXRlRGVjbGFyYXRp
b246OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKTsgLy8gVGhpcyBzaW5nbGUgcmVmIHBpbnMgdXMgaW4g
dGhlIHRhYmxlIHVudGlsIHRoZSBkb2N1bWVudCBkaWVzLgpAQCAtNTY1LDcgKzU2NSw3IEBAIHZv
aWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU2hhcmVkQ2VsbEJvcmQKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHNldE1hcHBlZEF0dHJpYnV0ZURlY2woZVBlcnNp
c3RlbnQsIGNlbGxib3JkZXJBdHRyLCBjZWxsQm9yZGVyTmFtZXNbYm9yZGVyc10sIGRlY2wpOwor
ICAgICAgICBzZXRNYXBwZWRBdHRyaWJ1dGVEZWNsKGVQZXJzaXN0ZW50LCBjZWxsYm9yZGVyQXR0
ciwgKmNlbGxCb3JkZXJOYW1lc1tib3JkZXJzXSwgZGVjbCk7CiAgICAgICAgIGRlY2wtPnNldFBh
cmVudCgwKTsKICAgICAgICAgZGVjbC0+c2V0Tm9kZSgwKTsKICAgICAgICAgZGVjbC0+c2V0TWFw
cGVkU3RhdGUoZVBlcnNpc3RlbnQsIGNlbGxib3JkZXJBdHRyLCBjZWxsYm9yZGVyVmFsdWUpOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL2xv
YWRlci9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTeXN0
ZW1UaW1lLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENHKQpAQCAtMTA3LDE1ICsxMDgsMTMgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQogCiBzdGF0aWMgSW1hZ2UqIGJyb2tlbklt
YWdlKCkKIHsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBicm9rZW5JbWFnZTsKLSAgICBpZiAo
IWJyb2tlbkltYWdlKQotICAgICAgICBicm9rZW5JbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlIik7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8
SW1hZ2U+LCBicm9rZW5JbWFnZSwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWlzc2lu
Z0ltYWdlIikpKTsKICAgICByZXR1cm4gYnJva2VuSW1hZ2UuZ2V0KCk7CiB9CiAKIHN0YXRpYyBJ
bWFnZSogbnVsbEltYWdlKCkKIHsKLSAgICBzdGF0aWMgUmVmUHRyPEJpdG1hcEltYWdlPiBudWxs
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChS
ZWZQdHI8Qml0bWFwSW1hZ2U+LCBudWxsSW1hZ2UsIChCaXRtYXBJbWFnZTo6Y3JlYXRlKCkpKTs7
CiAgICAgcmV0dXJuIG51bGxJbWFnZS5nZXQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeURvY3VtZW50LmNwcAkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFU
Rk9STShRVCkKICNpbmNsdWRlIDxRRGF0ZVRpbWU+CkBAIC0zMjMsMjAgKzMyNCwyMiBAQCB2b2lk
IEZUUERpcmVjdG9yeVRva2VuaXplcjo6cGFyc2VBbmRBcHBlCiAgICAgYXBwZW5kRW50cnkoZmls
ZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3VsdC50eXBl
ID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3VsdC5tb2Rp
ZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgU2hhcmVkQnVmZmVyKiBfY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoU2V0dGlu
Z3MgKnNldHRpbmdzKQoreworICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gMDsKKyAgICBpZiAo
c2V0dGluZ3MpCisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNldHRpbmdzLT5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSkucmVsZWFzZVJl
ZigpOworICAgIGlmIChidWZmZXIpCisgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0
b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICVpXG4iLCB0ZW1wbGF0ZURvY3VtZW50RGF0YS0+c2l6ZSgp
KTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorICAgIAogYm9vbCBGVFBEaXJlY3RvcnlUb2tlbml6
ZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdGVtcGxhdGVEb2N1bWVudERhdGE7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgdGVtcGxhdGVEb2N1bWVudERhdGEsIChfY3JlYXRlVGVtcGxhdGVE
b2N1bWVudERhdGEobV9kb2MtPnNldHRpbmdzKCkpKSk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQg
b2Ygc3RvcmluZyB0aGUgZGF0YSwgd2UnZCByYXRoZXIgYWN0dWFsbHkgcGFyc2UgdGhlIHRlbXBs
YXRlIGRhdGEgaW50byB0aGUgdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwKICAgICAvLyBzdG9yZSB0
aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBnZXQgYW4gRlRQIGRpcmVj
dG9yeSBsaXN0aW5nLiAgVGhlcmUgYXJlIGNvbXBsZXhpdGllcyB3aXRoIHRoaXMgCiAgICAgLy8g
YXBwcm9hY2ggdGhhdCBtYWtlIGl0IHdvcnRoIHB1dHRpbmcgdGhpcyBvZmYuCi0KLSAgICBpZiAo
IXRlbXBsYXRlRG9jdW1lbnREYXRhKSB7Ci0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1f
ZG9jLT5zZXR0aW5ncygpOwotICAgICAgICBpZiAoc2V0dGluZ3MpCi0gICAgICAgICAgICB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNldHRpbmdzLT5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7Ci0gICAgICAgIGlmICh0ZW1w
bGF0ZURvY3VtZW50RGF0YSkKLSAgICAgICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0
b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICVpXG4iLCB0ZW1wbGF0ZURvY3VtZW50RGF0YS0+c2l6ZSgp
KTsKLSAgICB9CiAgICAgCiAgICAgaWYgKCF0ZW1wbGF0ZURvY3VtZW50RGF0YSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIHRlbXBsYXRlRGF0YSIpOwpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw3ICszODEs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbG9hZERlZmF1bHRJY29uUmVjb3JkCiAgICAgICAgIDB4
MDAsIDB4MDAsIDB4MDEsIDB4NTIsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEs
IDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MEEsIAogICAg
ICAgICAweEZDLCAweDgwLCAweDAwLCAweDAwLCAweDI3LCAweDEwLCAweDAwLCAweDBBLCAweEZD
LCAweDgwLCAweDAwLCAweDAwLCAweDI3LCAweDEwIH07CiAgICAgICAgIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkZWZhdWx0SWNvbkJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkZWZhdWx0SWNvbkRhdGEsIHNpemVvZihkZWZhdWx0SWNvbkRhdGEpKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8U2hhcmVkQnVmZmVyPiwgZGVmYXVsdEljb25CdWZmZXIsIChT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkZWZhdWx0SWNvbkRhdGEsIHNpemVvZihkZWZhdWx0SWNvbkRh
dGEpKSkpOwogICAgIGRlZmF1bHRJY29uUmVjb3JkLT5zZXRJbWFnZURhdGEoZGVmYXVsdEljb25C
dWZmZXIpOwogfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CShyZXZpc2lvbiAzODQ1NikKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5o
IgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApAQCAtMTAwMSwxMyArMTAwMiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW92
ZUFYT2JqZWN0CiBjb25zdCBTdHJpbmcmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIo
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVs
ZW1lbnRzLgotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgYnV0dG9uQWN0aW9uID0gQVhCdXR0b25B
Y3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyB0ZXh0RmllbGRBY3Rpb24gPSBB
WFRleHRGaWVsZEFjdGlvblZlcmIoKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHJhZGlvQnV0
dG9uQWN0aW9uID0gQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKTsKLSAgICBzdGF0aWMgY29uc3Qg
U3RyaW5nIGNoZWNrZWRDaGVja0JveEFjdGlvbiA9IEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVy
YigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgdW5jaGVja2VkQ2hlY2tCb3hBY3Rpb24gPSBB
WFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
bGlua0FjdGlvbiA9IEFYTGlua0FjdGlvblZlcmIoKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IG5vQWN0aW9uOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBidXR0b25B
Y3Rpb24sIChBWEJ1dHRvbkFjdGlvblZlcmIoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCB0ZXh0RmllbGRBY3Rpb24sIChBWFRleHRGaWVsZEFjdGlvblZlcmIoKSkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCByYWRpb0J1dHRvbkFjdGlv
biwgKEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgY2hlY2tlZENoZWNrQm94QWN0aW9uLCAoQVhDaGVja2VkQ2hlY2tCb3hB
Y3Rpb25WZXJiKCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdW5j
aGVja2VkQ2hlY2tCb3hBY3Rpb24sIChBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGxpbmtBY3Rpb24sIChBWExp
bmtBY3Rpb25WZXJiKCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
bm9BY3Rpb24sICgpKTsKIAogICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICAgICAgY2Fz
ZSBCdXR0b25Sb2xlOgpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZp
c2libGVfdW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKQEAgLTIzNTEsMTMgKzIzNTIsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpyZW1vdmVBWAogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQg
dmVyYnMgZm9yIHNlbGVjdCBlbGVtZW50cy4KLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGJ1dHRv
bkFjdGlvbiA9IEFYQnV0dG9uQWN0aW9uVmVyYigpOwotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
dGV4dEZpZWxkQWN0aW9uID0gQVhUZXh0RmllbGRBY3Rpb25WZXJiKCk7Ci0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyByYWRpb0J1dHRvbkFjdGlvbiA9IEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBjaGVja2VkQ2hlY2tCb3hBY3Rpb24gPSBBWENoZWNr
ZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHVuY2hlY2tl
ZENoZWNrQm94QWN0aW9uID0gQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIGxpbmtBY3Rpb24gPSBBWExpbmtBY3Rpb25WZXJiKCk7Ci0gICAg
c3RhdGljIGNvbnN0IFN0cmluZyBub0FjdGlvbjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFN0cmluZywgYnV0dG9uQWN0aW9uLCAoQVhCdXR0b25BY3Rpb25WZXJiKCkpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdGV4dEZpZWxkQWN0aW9uLCAoQVhUZXh0
RmllbGRBY3Rpb25WZXJiKCkpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgcmFkaW9CdXR0b25BY3Rpb24sIChBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGNoZWNrZWRDaGVja0JveEFjdGlvbiwg
KEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHVuY2hlY2tlZENoZWNrQm94QWN0aW9uLCAoQVhVbmNoZWNrZWRDaGVj
a0JveEFjdGlvblZlcmIoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBsaW5rQWN0aW9uLCAoQVhMaW5rQWN0aW9uVmVyYigpKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIG5vQWN0aW9uLCAoKSk7CiAgICAgCiAgICAgc3dpdGNoIChyb2xl
VmFsdWUoKSkgewogICAgICAgICBjYXNlIEJ1dHRvblJvbGU6CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
bWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL0V2
ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1
ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUwLDcgKzUxLDcgQEAgY29uc3QgZG91YmxlIEV2ZW50SGFuZGxlcjo6VGV4
dERyYWdEZWxheQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRXZlbnQ+JiBjdXJyZW50RXZlbnQoKQog
ewotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNFdmVudD4gZXZlbnQ7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZXRhaW5QdHI8TlNFdmVudD4sIGV2ZW50LCAoKSk7CiAgICAgcmV0dXJuIGV2ZW50
OwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDM4NDU2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiB1c2luZyBzdGQ6Om1heDsKIApAQCAtNjY4LDEwICs2NjksOCBAQCB2b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogCiAgICAgfQogCiAgICAgLy8gUGFp
bnQgdGhlIHBhblNjcm9sbCBJY29uCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gcGFuU2Nyb2xs
SWNvbjsKICAgICBpZiAobV9kcmF3UGFuU2Nyb2xsSWNvbikgewotICAgICAgICBpZiAoIXBhblNj
cm9sbEljb24pCi0gICAgICAgICAgICBwYW5TY3JvbGxJY29uID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJwYW5JY29uIik7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRy
PEltYWdlPiwgcGFuU2Nyb2xsSWNvbiwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgicGFu
SWNvbiIpKSk7CiAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLmdldCgp
LCBtX3BhblNjcm9sbEljb25Qb2ludCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDM4NDU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2luY2x1
ZGUgPG1hdGguaD4KIApAQCAtNTIsNyArNTMsNyBAQCBJbWFnZTo6fkltYWdlKCkKIAogSW1hZ2Uq
IEltYWdlOjpudWxsSW1hZ2UoKQogewotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IG51bGxJbWFn
ZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0
cjxJbWFnZT4sIG51bGxJbWFnZSwgKEJpdG1hcEltYWdlOjpjcmVhdGUoKSkpOzsKICAgICByZXR1
cm4gbnVsbEltYWdlLmdldCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiQ29sb3JNYWMuaCIKIAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGlu
dGVyZmFjZSBXZWJDb3JlQ29udHJvbFRpbnRPYnNlcnZlciA6IE5TT2JqZWN0CkBAIC01OSwyMSAr
NjAsMjEgQEAgTlNDb2xvciogbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgc3dpdGNo
IChjKSB7CiAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgLy8gTmVlZCB0aGlzIHRvIGF2
b2lkIHJldHVybmluZyBuaWwgYmVjYXVzZSBjYWNoZWRSR0JBVmFsdWVzIHdpbGwgZGVmYXVsdCB0
byAwLgotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9yPiBjbGVhckNvbG9yID0g
W05TQ29sb3IgY2xlYXJDb2xvcl07CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJl
dGFpblB0cjxOU0NvbG9yPiwgY2xlYXJDb2xvciwgKFtOU0NvbG9yIGNsZWFyQ29sb3JdKSk7CiAg
ICAgICAgICAgICByZXR1cm4gY2xlYXJDb2xvci5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENvbG9yOjpibGFjazogewotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0NvbG9y
PiBibGFja0NvbG9yID0gW05TQ29sb3IgYmxhY2tDb2xvcl07CisgICAgICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFJldGFpblB0cjxOU0NvbG9yPiwgYmxhY2tDb2xvciwgKFtOU0NvbG9yIGJs
YWNrQ29sb3JdKSk7CiAgICAgICAgICAgICByZXR1cm4gYmxhY2tDb2xvci5nZXQoKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENvbG9yOjp3aGl0ZTogewotICAgICAgICAgICAgc3RhdGljIFJl
dGFpblB0cjxOU0NvbG9yPiB3aGl0ZUNvbG9yID0gW05TQ29sb3Igd2hpdGVDb2xvcl07CisgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxOU0NvbG9yPiwgd2hpdGVDb2xv
ciwgKFtOU0NvbG9yIHdoaXRlQ29sb3JdKSk7CiAgICAgICAgICAgICByZXR1cm4gd2hpdGVDb2xv
ci5nZXQoKTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICBjb25z
dCBpbnQgY2FjaGVTaXplID0gMzI7CiAgICAgICAgICAgICBzdGF0aWMgdW5zaWduZWQgY2FjaGVk
UkdCQVZhbHVlc1tjYWNoZVNpemVdOwotICAgICAgICAgICAgc3RhdGljIFJldGFpblB0cjxOU0Nv
bG9yPiBjYWNoZWRDb2xvcnNbY2FjaGVTaXplXTsKKyAgICAgICAgICAgIHN0YXRpYyBSZXRhaW5Q
dHI8TlNDb2xvcj4qIGNhY2hlZENvbG9ycyA9IG5ldyBSZXRhaW5QdHI8TlNDb2xvcj5bY2FjaGVT
aXplXTsKIAogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gY2FjaGVTaXplOyArK2kp
CiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFJHQkFWYWx1ZXNbaV0gPT0gYykKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0JKHJldmlzaW9u
IDM4NDU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBGb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGCiAgICAgY29uc3QgRm9udEZhbWlseSogY3VyckZhbWlseSA9
ICZmb250LmZvbnREZXNjcmlwdGlvbigpLmZhbWlseSgpOwogICAgIHdoaWxlIChjdXJyRmFtaWx5
ICYmICFwbGF0Zm9ybURhdGEpIHsKICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgU3RyaW5nIG1hdGNoV29yZHNbM10gPSB7IFN0
cmluZygiQXJhYmljIiksIFN0cmluZygiUGFzaHRvIiksIFN0cmluZygiVXJkdSIpIH07CisgICAg
ICAgICAgICBzdGF0aWMgU3RyaW5nKiBtYXRjaFdvcmRzWzNdID0geyBuZXcgU3RyaW5nKCJBcmFi
aWMiKSwgbmV3IFN0cmluZygiUGFzaHRvIiksIG5ldyBTdHJpbmcoIlVyZHUiKSB9OwogICAgICAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGdlZXphU3RyLCAoIkdlZXph
IFBybyIpKTsKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMyAmJiAhcGxhdGZvcm1E
YXRhOyArK2opCi0gICAgICAgICAgICAgICAgaWYgKGN1cnJGYW1pbHktPmZhbWlseSgpLmNvbnRh
aW5zKG1hdGNoV29yZHNbal0sIGZhbHNlKSkKKyAgICAgICAgICAgICAgICBpZiAoY3VyckZhbWls
eS0+ZmFtaWx5KCkuY29udGFpbnMoKm1hdGNoV29yZHNbal0sIGZhbHNlKSkKICAgICAgICAgICAg
ICAgICAgICAgcGxhdGZvcm1EYXRhID0gZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZv
bnREZXNjcmlwdGlvbigpLCBnZWV6YVN0cik7CiAgICAgICAgIH0KICAgICAgICAgY3VyckZhbWls
eSA9IGN1cnJGYW1pbHktPm5leHQoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0JKHJldmlzaW9uIDM4NDU2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
IAogI2ltcG9ydCAiLi4vY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKKyNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oIgogCkBAIC04MCw1MyArODEsNDIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENv
bXBvc2l0ZU9wZXJhdAogICAgIFtwb29sIGRyYWluXTsKIH0KICNlbmRpZgotIAorCitzdGF0aWMg
aW5saW5lIE5TQ29sb3IqIF9jcmVhdGVQYXR0ZXJuQ29sb3IoTlNTdHJpbmcqIG5hbWUsIE5TQ29s
b3IqIGRlZmF1bHRDb2xvciwgYm9vbCYgdXNpbmdEb3QpCit7CisgICAgTlNJbWFnZSAqaW1hZ2Ug
PSBbTlNJbWFnZSBpbWFnZU5hbWVkOm5hbWVdOworICAgIEFTU0VSVChpbWFnZSk7IC8vIGlmIGlt
YWdlIGlzIG5vdCBhdmFpbGFibGUsIHdlIHdhbnQgdG8ga25vdworICAgIE5TQ29sb3IgKmNvbG9y
ID0gKGltYWdlID8gW05TQ29sb3IgY29sb3JXaXRoUGF0dGVybkltYWdlOmltYWdlXSA6IG5pbCk7
CisgICAgaWYgKGNvbG9yKQorICAgICAgICB1c2luZ0RvdCA9IHRydWU7CisgICAgZWxzZQorICAg
ICAgICBjb2xvciA9IGRlZmF1bHRDb2xvcjsKKyAgICByZXR1cm4gY29sb3I7Cit9CisgICAgCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihj
b25zdCBJbnRQb2ludCYgcG9pbnQsIGludCB3aWR0aCwgYm9vbCBncmFtbWFyKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgLy8g
Q29uc3RhbnRzIGZvciBzcGVsbGluZyBwYXR0ZXJuIGNvbG9yCi0gICAgc3RhdGljIFJldGFpblB0
cjxOU0NvbG9yPiBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IG5pbDsKLSAgICBzdGF0aWMgYm9vbCB1
c2luZ0RvdEZvclNwZWxsaW5nID0gZmFsc2U7Ci0KLSAgICAvLyBDb25zdGFudHMgZm9yIGdyYW1t
YXIgcGF0dGVybiBjb2xvcgotICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNDb2xvcj4gZ3JhbW1hclBh
dHRlcm5Db2xvciA9IG5pbDsKLSAgICBzdGF0aWMgYm9vbCB1c2luZ0RvdEZvckdyYW1tYXIgPSBm
YWxzZTsKLSAgICAKICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgZm9yIG1pc3NwZWxsaW5nIG9y
IGJhZCBncmFtbWFyCiAgICAgaW50IHBhdHRlcm5IZWlnaHQgPSBjTWlzc3BlbGxpbmdMaW5lVGhp
Y2tuZXNzOwogICAgIGludCBwYXR0ZXJuV2lkdGggPSBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybldp
ZHRoOwogIAotICAgIC8vIEluaXRpYWxpemUgcGF0dGVybiBjb2xvciBpZiBuZWVkZWQKLSAgICBp
ZiAoIWdyYW1tYXIgJiYgIXNwZWxsaW5nUGF0dGVybkNvbG9yKSB7Ci0gICAgICAgIE5TSW1hZ2Ug
KmltYWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpAIlNwZWxsaW5nRG90Il07Ci0gICAgICAgIEFT
U0VSVChpbWFnZSk7IC8vIGlmIGltYWdlIGlzIG5vdCBhdmFpbGFibGUsIHdlIHdhbnQgdG8ga25v
dwotICAgICAgICBOU0NvbG9yICpjb2xvciA9IChpbWFnZSA/IFtOU0NvbG9yIGNvbG9yV2l0aFBh
dHRlcm5JbWFnZTppbWFnZV0gOiBuaWwpOwotICAgICAgICBpZiAoY29sb3IpCi0gICAgICAgICAg
ICB1c2luZ0RvdEZvclNwZWxsaW5nID0gdHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29sb3IgPSBbTlNDb2xvciByZWRDb2xvcl07Ci0gICAgICAgIHNwZWxsaW5nUGF0dGVybkNvbG9y
ID0gY29sb3I7Ci0gICAgfQotICAgIAotICAgIGlmIChncmFtbWFyICYmICFncmFtbWFyUGF0dGVy
bkNvbG9yKSB7Ci0gICAgICAgIE5TSW1hZ2UgKmltYWdlID0gW05TSW1hZ2UgaW1hZ2VOYW1lZDpA
IkdyYW1tYXJEb3QiXTsKLSAgICAgICAgQVNTRVJUKGltYWdlKTsgLy8gaWYgaW1hZ2UgaXMgbm90
IGF2YWlsYWJsZSwgd2Ugd2FudCB0byBrbm93Ci0gICAgICAgIE5TQ29sb3IgKmNvbG9yID0gKGlt
YWdlID8gW05TQ29sb3IgY29sb3JXaXRoUGF0dGVybkltYWdlOmltYWdlXSA6IG5pbCk7Ci0gICAg
ICAgIGlmIChjb2xvcikKLSAgICAgICAgICAgIHVzaW5nRG90Rm9yR3JhbW1hciA9IHRydWU7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbG9yID0gW05TQ29sb3IgZ3JlZW5Db2xvcl07Ci0g
ICAgICAgIGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSBjb2xvcjsKLSAgICB9Ci0gICAgCiAgICAgYm9v
bCB1c2luZ0RvdDsKICAgICBOU0NvbG9yICpwYXR0ZXJuQ29sb3I7CiAgICAgaWYgKGdyYW1tYXIp
IHsKKyAgICAgICAgLy8gQ29uc3RhbnRzIGZvciBncmFtbWFyIHBhdHRlcm4gY29sb3IKKyAgICAg
ICAgc3RhdGljIGJvb2wgdXNpbmdEb3RGb3JHcmFtbWFyID0gZmFsc2U7CisgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQ29sb3I+LCBncmFtbWFyUGF0dGVybkNvbG9yLCAo
X2NyZWF0ZVBhdHRlcm5Db2xvcihAIkdyYW1tYXJEb3QiLCBbTlNDb2xvciBncmVlbkNvbG9yXSwg
dXNpbmdEb3RGb3JHcmFtbWFyKSkpOworICAgICAgICAKICAgICAgICAgdXNpbmdEb3QgPSB1c2lu
Z0RvdEZvckdyYW1tYXI7CiAgICAgICAgIHBhdHRlcm5Db2xvciA9IGdyYW1tYXJQYXR0ZXJuQ29s
b3IuZ2V0KCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQ29uc3RhbnRzIGZvciBzcGVsbGlu
ZyBwYXR0ZXJuIGNvbG9yCisgICAgICAgIHN0YXRpYyBib29sIHVzaW5nRG90Rm9yU3BlbGxpbmcg
PSBmYWxzZTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNDb2xvcj4s
IHNwZWxsaW5nUGF0dGVybkNvbG9yLCAoX2NyZWF0ZVBhdHRlcm5Db2xvcihAIlNwZWxsaW5nRG90
IiwgW05TQ29sb3IgcmVkQ29sb3JdLCB1c2luZ0RvdEZvclNwZWxsaW5nKSkpOworICAgICAgICAK
ICAgICAgICAgdXNpbmdEb3QgPSB1c2luZ0RvdEZvclNwZWxsaW5nOwogICAgICAgICBwYXR0ZXJu
Q29sb3IgPSBzcGVsbGluZ1BhdHRlcm5Db2xvci5nZXQoKTsKICAgICB9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQkocmV2
aXNpb24gMzg0NTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250
RGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCA8Zmxv
YXQuaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIEBpbnRlcmZhY2UgTlNGb250IChXZWJBcHBLaXRTZWNyZXRBUEkpCkBAIC05Miw5ICs5
Myw3IEBAIGJvb2wgaW5pdEZvbnREYXRhKFNpbXBsZUZvbnREYXRhKiBmb250RGEKIAogc3RhdGlj
IE5TU3RyaW5nICp3ZWJGYWxsYmFja0ZvbnRGYW1pbHkodm9pZCkKIHsKLSAgICBzdGF0aWMgUmV0
YWluUHRyPE5TU3RyaW5nPiB3ZWJGYWxsYmFja0ZvbnRGYW1pbHkgPSBuaWw7Ci0gICAgaWYgKCF3
ZWJGYWxsYmFja0ZvbnRGYW1pbHkpCi0gICAgICAgIHdlYkZhbGxiYWNrRm9udEZhbWlseSA9IFtb
TlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTYuMGZdIGZhbWlseU5hbWVdOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TU3RyaW5nPiwgd2ViRmFsbGJhY2tGb250RmFtaWx5LCAo
W1tOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZToxNi4wZl0gZmFtaWx5TmFtZV0pKTsKICAgICByZXR1
cm4gd2ViRmFsbGJhY2tGb250RmFtaWx5LmdldCgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDM4NDU2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAog
I2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKIAor
I2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CiBAaW50ZXJmYWNlIE5TQXR0cmlidXRlZFN0cmluZyAoQXBwS2l0U2VjcmV0c0lLbm93QWJvdXQp
CkBAIC03OCwyNyArNzksMjcgQEAgc3RhdGljIE5TQXJyYXkqIHNlbGVjdGlvblBhc3RlYm9hcmRU
eXBlcwogCiBzdGF0aWMgTlNBcnJheSogd3JpdGFibGVUeXBlc0ZvclVSTCgpCiB7Ci0gICAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiB0eXBlcyA9IG5pbDsKLSAgICBpZiAoIXR5cGVzKSB7Ci0g
ICAgICAgIHR5cGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNBcnJheT4sIHR5cGVzLCAoW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6CiAgICAgICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2Fy
ZFR5cGUsCiAgICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsCiAgICAgICAgICAgICBXZWJVUkxQ
Ym9hcmRUeXBlLAogICAgICAgICAgICAgV2ViVVJMTmFtZVBib2FyZFR5cGUsCiAgICAgICAgICAg
ICBOU1N0cmluZ1Bib2FyZFR5cGUsCi0gICAgICAgICAgICBuaWxdOwotICAgIH0KKyAgICAgICAg
ICAgIG5pbF0pKTsKICAgICByZXR1cm4gdHlwZXMuZ2V0KCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
TlNBcnJheSogY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlKCkKK3sKKyAgICBOU011dGFibGVB
cnJheSAqdHlwZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNU
SUZGUGJvYXJkVHlwZSwgbmlsXTsKKyAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTp3cml0
YWJsZVR5cGVzRm9yVVJMKCldOworICAgIFt0eXBlcyBhZGRPYmplY3Q6TlNSVEZEUGJvYXJkVHlw
ZV07CisgICAgcmV0dXJuIHR5cGVzOworfQorCiBzdGF0aWMgTlNBcnJheSogd3JpdGFibGVUeXBl
c0ZvckltYWdlKCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBl
cyA9IG5pbDsKLSAgICBpZiAoIXR5cGVzKSB7Ci0gICAgICAgIHR5cGVzID0gW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOk5TVElGRlBib2FyZFR5cGUsIG5pbF07Ci0gICAg
ICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3RzRnJvbUFycmF5OndyaXRhYmxlVHlwZXNGb3JVUkwo
KV07Ci0gICAgICAgIFt0eXBlcy5nZXQoKSBhZGRPYmplY3Q6TlNSVEZEUGJvYXJkVHlwZV07Ci0g
ICAgfQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0eXBlcywg
KGNyZWF0ZVdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpKSk7CiAgICAgcmV0dXJuIHR5cGVzLmdldCgp
OwogfQogCkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiBzdGF0
aWMgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpcEF0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIGNvbnN0IHVuaWNoYXIgYXR0YWNobWVudENoYXJh
Y3RlciA9IE5TQXR0YWNobWVudENoYXJhY3RlcjsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TU3Ry
aW5nPiBhdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFy
YWN0ZXJzOiZhdHRhY2htZW50Q2hhcmFjdGVyIGxlbmd0aDoxXTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJldGFpblB0cjxOU1N0cmluZz4sIGF0dGFjaG1lbnRDaGFyYWN0ZXJTdHJpbmcsIChb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyYWN0ZXIgbGVuZ3Ro
OjFdKSk7CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqcmVzdWx0ID0gW1tzdHJpbmcg
bXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKICAgICBOU1JhbmdlIGF0dGFjaG1lbnRSYW5nZSA9
IFtbcmVzdWx0IHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hhcmFjdGVyU3RyaW5n
LmdldCgpXTsKICAgICB3aGlsZSAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDM4NDU2KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw2ICs3NCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKFNWRykKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTUxOCw5ICsxNTE5LDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQwogICAgIH0KIAogICAgIC8vIFBhaW50IHRoZSByZXNp
emVyIGNvbnRyb2wuCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gcmVzaXplQ29ybmVySW1hZ2U7
Ci0gICAgaWYgKCFyZXNpemVDb3JuZXJJbWFnZSkKLSAgICAgICAgcmVzaXplQ29ybmVySW1hZ2Ug
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIik7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+LCByZXNpemVDb3JuZXJJbWFnZSwg
KEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIiKSkpOwog
ICAgIEludFBvaW50IGltYWdlUG9pbnQoYWJzUmVjdC5yaWdodCgpIC0gcmVzaXplQ29ybmVySW1h
Z2UtPndpZHRoKCksIGFic1JlY3QuYm90dG9tKCkgLSByZXNpemVDb3JuZXJJbWFnZS0+aGVpZ2h0
KCkpOwogICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgaW1h
Z2VQb2ludCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25201</attachid>
            <date>2008-11-16 15:06:24 -0800</date>
            <delta_ts>2008-11-16 20:19:50 -0800</delta_ts>
            <desc>Address Comment 84 for WebKit</desc>
            <filename>Bugzilla-21810-WK.patch.txt</filename>
            <type>text/plain</type>
            <size>7078</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzODQ1NikKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDgtMTEtMTYgIEdyZWcgQm9sc2luZ2EgIDxib2xz
aW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisg
ICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3ll
ZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIFVzZSBERUZJTkVfU1RBVElD
X0xPQ0FMIGZvciBzdGF0aWMgUmV0YWluUHRyPFQ+CisKKyAgICAgICAgKiBNaXNjL1dlYk5TUGFz
dGVib2FyZEV4dHJhcy5tbTogVXNlIERFRklORV9TVEFUSUNfTE9DQUwKKyAgICAgICAgKCtbTlNQ
YXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF0pOgorICAgICAgICAoX2NyZWF0ZVdy
aXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKTogQ3JlYXRlZCBzbyBhY2Nlc3NvciBo
YXMgb25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKF93cml0YWJsZVR5cGVzRm9ySW1h
Z2VXaXRob3V0QXJjaGl2ZSk6IFVzZSBjcmVhdGUgZnVuY3Rpb24gZm9yIG9uZSBsaW5lIGluaXRp
YWxpemF0aW9uCisgICAgICAgIChfY3JlYXRlV3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hp
dmUpOiBDcmVhdGVkIHNvIGFjY2Vzc29yIGhhcyBvbmUgbGluZSBpbml0aWFsaXphdGlvbgorICAg
ICAgICAoX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZlKTogVXNlIGNyZWF0ZSBmdW5j
dGlvbiBmb3Igb25lIGxpbmUgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQYXN0ZWJvYXJkSGVscGVyLm1tOiBVc2UgREVGSU5FX1NUQVRJQ19MT0NBTAorICAgICAg
ICAoV2ViUGFzdGVib2FyZEhlbHBlcjo6aW5zZXJ0YWJsZVBhc3RlYm9hcmRUeXBlcyk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06IFVzZSBERUZJTkVfU1RBVElD
X0xPQ0FMCisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRNSU1FVHlw
ZXNdKToKKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzXSk6CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlc10pOgorCiAyMDA4LTExLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0
L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCShyZXZpc2lvbiAzODQ1NikKKysrIFdl
YktpdC9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0
IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCkBAIC01OCwzNyArNTksNDAgQEAgTlNTdHJp
bmcgKldlYlVSTE5hbWVQYm9hcmRUeXBlID0gQCJwdWJsaQogCiArIChOU0FycmF5ICopX3dlYl93
cml0YWJsZVR5cGVzRm9yVVJMCiB7Ci0gICAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0eXBl
czsKLSAgICBpZiAoIXR5cGVzKSB7Ci0gICAgICAgIHR5cGVzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6Ci0gICAgICAgICAgICBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUs
Ci0gICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsCi0gICAgICAgICAgICBXZWJVUkxQYm9hcmRU
eXBlLAotICAgICAgICAgICAgV2ViVVJMTmFtZVBib2FyZFR5cGUsCi0gICAgICAgICAgICBOU1N0
cmluZ1Bib2FyZFR5cGUsCi0gICAgICAgICAgICBuaWxdOwotICAgIH0KKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFJldGFpblB0cjxOU0FycmF5PiwgdHlwZXMsIChbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1VS
TFBib2FyZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlVSTFBib2Fy
ZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlVSTE5hbWVQYm9hcmRU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZ1Bib2FyZFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0pKTsKICAgICByZXR1cm4gdHlw
ZXMuZ2V0KCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgTlNBcnJheSAqX2NyZWF0ZVdyaXRhYmxlVHlw
ZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkKK3sKKyAgICBOU011dGFibGVBcnJheSAqdHlwZXMg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6TlNUSUZGUGJvYXJkVHlw
ZSwgbmlsXTsKKyAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpbTlNQYXN0ZWJvYXJkIF93
ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF1dOworICAgIHJldHVybiB0eXBlczsKK30KKwogc3RhdGlj
IE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKIHsK
LSAgICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlczsKLSAgICBpZiAodHlw
ZXMgPT0gbmlsKSB7Ci0gICAgICAgIHR5cGVzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOk5TVElGRlBib2FyZFR5cGUsIG5pbF07Ci0gICAgICAgIFt0eXBlcy5nZXQo
KSBhZGRPYmplY3RzRnJvbUFycmF5OltOU1Bhc3RlYm9hcmQgX3dlYl93cml0YWJsZVR5cGVzRm9y
VVJMXV07Ci0gICAgfQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+
LCB0eXBlcywgKF9jcmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpKSk7
CiAgICAgcmV0dXJuIHR5cGVzLmdldCgpOwogfQogCitzdGF0aWMgaW5saW5lIE5TQXJyYXkgKl9j
cmVhdGVXcml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgpCit7CisgICAgTlNNdXRhYmxl
QXJyYXkgKnR5cGVzID0gW193cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpIG11
dGFibGVDb3B5XTsKKyAgICBbdHlwZXMgYWRkT2JqZWN0Ok5TUlRGRFBib2FyZFR5cGVdOworICAg
IFt0eXBlcyBhZGRPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOworICAgIHJldHVybiB0eXBl
czsKK30KKwogc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2
ZSAodm9pZCkKIHsKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlczsK
LSAgICBpZiAodHlwZXMgPT0gbmlsKSB7Ci0gICAgICAgIHR5cGVzID0gW193cml0YWJsZVR5cGVz
Rm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpIG11dGFibGVDb3B5XTsKLSAgICAgICAgW3R5cGVzLmdl
dCgpIGFkZE9iamVjdDpOU1JURkRQYm9hcmRUeXBlXTsKLSAgICAgICAgW3R5cGVzLmdldCgpIGFk
ZE9iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV07Ci0gICAgfQorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCB0eXBlcywgKF9jcmVhdGVXcml0YWJsZVR5cGVzRm9y
SW1hZ2VXaXRoQXJjaGl2ZSgpKSk7CiAgICAgcmV0dXJuIHR5cGVzLmdldCgpOwogfQogCkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRIZWxwZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkSGVscGVyLm1t
CShyZXZpc2lvbiAzODQ1NikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZEhlbHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9ET01Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
U3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05MSwxMSArOTIsMTEg
QEAgRE9NRG9jdW1lbnRGcmFnbWVudCAqV2ViUGFzdGVib2FyZEhlbHBlcgogCiBOU0FycmF5ICpX
ZWJQYXN0ZWJvYXJkSGVscGVyOjppbnNlcnRhYmxlUGFzdGVib2FyZFR5cGVzKCkgY29uc3QKIHsK
LSAgICBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHR5cGVzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6V2ViQXJjaGl2ZVBib2FyZFR5cGUsIE5TSFRNTFBib2FyZFR5cGUsIE5T
RmlsZW5hbWVzUGJvYXJkVHlwZSwgTlNUSUZGUGJvYXJkVHlwZSwKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJldGFpblB0cjxOU0FycmF5PiwgdHlwZXMsIChbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpXZWJBcmNoaXZlUGJvYXJkVHlwZSwgTlNIVE1MUGJvYXJkVHlwZSwgTlNGaWxl
bmFtZXNQYm9hcmRUeXBlLCBOU1RJRkZQYm9hcmRUeXBlLAogI2lmIGRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAgICAgICAgTlNQ
SUNUUGJvYXJkVHlwZSwKICNlbmRpZgotICAgICAgICAgICBOU1VSTFBib2FyZFR5cGUsIE5TUlRG
RFBib2FyZFR5cGUsIE5TUlRGUGJvYXJkVHlwZSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0NvbG9y
UGJvYXJkVHlwZSwgbmlsXTsKKyAgICAgICAgICAgTlNVUkxQYm9hcmRUeXBlLCBOU1JURkRQYm9h
cmRUeXBlLCBOU1JURlBib2FyZFR5cGUsIE5TU3RyaW5nUGJvYXJkVHlwZSwgTlNDb2xvclBib2Fy
ZFR5cGUsIG5pbF0pKTsKIAogICAgIHJldHVybiB0eXBlcy5nZXQoKTsKIH0KSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24gMzg0NTYp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURl
Y29kZXIuaD4KICNpbXBvcnQgPFdlYktpdC9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05Miwy
MiArOTMsMTkgQEAgc3RhdGljIE5TQXJyYXkgKmNvbmNhdGVuYXRlQXJyYXlzKE5TQXJyYQogCiAr
IChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMgPQotICAgICAgICBjb25jYXRlbmF0ZUFy
cmF5cyhbc2VsZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10sIFtzZWxmIHN1cHBvcnRlZElt
YWdlTUlNRVR5cGVzXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXRhaW5QdHI8TlNBcnJh
eT4sIHN0YXRpY1N1cHBvcnRlZE1JTUVUeXBlcywgKGNvbmNhdGVuYXRlQXJyYXlzKFtzZWxmIHN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSwgW3NlbGYgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNd
KSkpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRNSU1FVHlwZXMuZ2V0KCk7CiB9CiAKICsg
KE5TQXJyYXkgKilzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPQotICAgICAg
ICBzdHJpbmdBcnJheShNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcygpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxOU0FycmF5Piwgc3Rh
dGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMsIChzdHJpbmdBcnJheShNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKSkpOwogICAgIHJldHVybiBzdGF0
aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBz
dGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9Ci0gICAgICAgIHN0cmluZ0FycmF5KE1JTUVU
eXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmV0YWluUHRyPE5TQXJyYXk+LCBzdGF0aWNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcywgKHN0cmluZ0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OmdldFN1cHBvcnRlZEltYWdlTUlN
RVR5cGVzKCkpKSk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdl
dCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25207</attachid>
            <date>2008-11-16 22:02:08 -0800</date>
            <delta_ts>2008-11-17 09:12:19 -0800</delta_ts>
            <desc>This gets the last of them in WebCore</desc>
            <filename>Bugzilla-21810-WC.patch.txt</filename>
            <type>text/plain</type>
            <size>5554</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDgtMTEtMTYgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEwCisgICAgICAgIFJl
bW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ryb3llZCBhdCBleGl0
IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIEZpbmQgc29tZSBtaXNzaW5nIERFRklORV9T
VEFUSUNfTE9DQUwgdXNlIGNhc2VzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1NWR1BPRFR5cGVXcmFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQT0RUeXBlV3JhcHBlckNh
Y2hlSW5mb1RyYWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0R5bmFt
aWNQT0RUeXBlV3JhcHBlckNhY2hlOjpkeW5hbWljV3JhcHBlckhhc2hNYXApOgorICAgICAgICAq
IGRvbS9tYWtlX25hbWVzLnBsOiBHZW5lcmF0ZSBjb2RlIHRvIHVzZSBERUZJTkVfU1RBVElDX0xP
Q0FMLgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSb2xlRW50cnk6Oik6IFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIG9u
Y2UsIHNvIHRoZSBhcnJheSBkb2VzIG5vdCBoYXZlIHRvIGJlIHN0YXRpYy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzOjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnREYXRhQ2FjaGVLZXlUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OmluaXRpYWxUcmFuc2Zvcm0pOgorCiAyMDA4LTExLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCShyZXZpc2lvbiAz
ODQ3NykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzM0LDcgKzMzNSw3IEBAIHN0cnVj
dCBQT0RUeXBlV3JhcHBlckNhY2hlSW5mb1RyYWl0cyA6IFcKIAogICAgIHN0YXRpYyBjb25zdCBD
YWNoZUluZm8mIGVtcHR5VmFsdWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIENhY2hlSW5mbyBr
ZXk7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ2FjaGVJbmZvLCBrZXksICgpKTsKICAg
ICAgICAgcmV0dXJuIGtleTsKICAgICB9CiAKQEAgLTM2Niw3ICszNjcsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgRHluYW1pY1dyYXBwZXJIYXNoTWFwJiBkeW5hbWljV3JhcHBlckhhc2hNYXAo
KQogICAgIHsKLSAgICAgICAgc3RhdGljIER5bmFtaWNXcmFwcGVySGFzaE1hcCBzX2R5bmFtaWNX
cmFwcGVySGFzaE1hcDsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChEeW5hbWljV3JhcHBl
ckhhc2hNYXAsIHNfZHluYW1pY1dyYXBwZXJIYXNoTWFwLCAoKSk7CiAgICAgICAgIHJldHVybiBz
X2R5bmFtaWNXcmFwcGVySGFzaE1hcDsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkocmV2aXNp
b24gMzg0NzcpCisrKyBXZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBA
IC03NzQsNiArNzc0LDggQEAgc3ViIHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlCiAKICAgICBw
cmludEVsZW1lbnRJbmNsdWRlcygkRiwgXCV0YWdzLCAxKTsKIAorICAgIHByaW50IEYgIlxuI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD5cblxuIjsKKyAgICAKICAgICBwcmludCBGIDw8RU5E
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC03OTEsNyArNzkzLDggQEAgRU5ECiAgICAgcHJp
bnQgRiA8PEVORAogSlNOb2RlKiBjcmVhdGVKUyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfVdyYXBw
ZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVs
ZW1lbnQ+IGVsZW1lbnQpCiB7ICAgCi0gICAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWlj
U3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRXcmFwcGVy
RnVuY3Rpb24+IG1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWljU3RyaW5n
SW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24+IEZ1bmN0aW9uTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1h
cCwgKCkpOwogICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CiBFTkQKIDsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDM4NDc3KQorKysg
V2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTg2LDcgKzE5ODYsNyBAQCBzdGF0aWMgY29uc3QgQVJJQVJvbGVNYXAmIGNyZWF0ZUFS
SUFSb2xlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHdlYmNvcmVSb2xlOwogICAgIH07CiAK
LSAgICBzdGF0aWMgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7CisgICAgY29uc3QgUm9sZUVu
dHJ5IHJvbGVzW10gPSB7CiAgICAgICAgIHsgImJ1dHRvbiIsIEJ1dHRvblJvbGUgfSwKICAgICAg
ICAgeyAiY2hlY2tib3giLCBDaGVja0JveFJvbGUgfSwKICAgICAgICAgeyAiZ3JvdXAiLCBHcm91
cFJvbGUgfSwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHJl
dmlzaW9uIDM4NDc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RydWN0IEZvbnRQbGF0Zm9ybURh
dGFDYWNoZUtleVRyYWl0cyA6IAogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1pl
cm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIGVt
cHR5VmFsdWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eSBrZXkobnVsbEF0b20pOworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnRQbGF0Zm9y
bURhdGFDYWNoZUtleSwga2V5LCAobnVsbEF0b20pKTsKICAgICAgICAgcmV0dXJuIGtleTsKICAg
ICB9CiAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvbnRQbGF0Zm9ybURh
dGFDYWNoZUtleSYgc2xvdCkKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdHJ1Y3QgRm9udERhdGFDYWNo
ZUtleVRyYWl0cyA6IFdURjo6R2VuCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGVtcHR5VmFs
dWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEga2V5OworICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnRQbGF0Zm9ybURhdGEsIGtleSwgKCkpOwogICAgICAg
ICByZXR1cm4ga2V5OwogICAgIH0KICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoRm9udFBsYXRmb3JtRGF0YSYgc2xvdCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAkocmV2aXNpb24gMzg0NzcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAi
VHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0x
MDk5LDcgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFZpc3VhbGx5
T3JkZXJlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxUZXh0
U3Ryb2tlV2lkdGgoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGlu
aXRpYWxDb2x1bW5Db3VudCgpIHsgcmV0dXJuIDE7IH0KLSAgICBzdGF0aWMgY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9ucyYgaW5pdGlhbFRyYW5zZm9ybSgpIHsgc3RhdGljIFRyYW5zZm9ybU9wZXJh
dGlvbnMgb3BzOyByZXR1cm4gb3BzOyB9CisgICAgc3RhdGljIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMmIGluaXRpYWxUcmFuc2Zvcm0oKSB7IERFRklORV9TVEFUSUNfTE9DQUwoVHJhbnNmb3Jt
T3BlcmF0aW9ucywgb3BzLCAoKSk7IHJldHVybiBvcHM7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9
CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExl
bmd0aCg1MC4wLCBQZXJjZW50KTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25208</attachid>
            <date>2008-11-16 22:03:24 -0800</date>
            <delta_ts>2008-11-19 10:10:34 -0800</delta_ts>
            <desc>Tool now has no exceptions</desc>
            <filename>Bugzilla-21810-WKT.patch.txt</filename>
            <type>text/plain</type>
            <size>1911</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM4NDg0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTEtMTYgIEdyZWcgQm9sc2luZ2EgIDxi
b2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODEw
CisgICAgICAgIFJlbW92ZSB1c2Ugb2Ygc3RhdGljIEMrKyBvYmplY3RzIHRoYXQgYXJlIGRlc3Ry
b3llZCBhdCBleGl0IHRpbWUgKGRlc3RydWN0b3JzKQorCisgICAgICAgIEFsbCBzdGF0aWMgQysr
IG9iamVjdHMgdGhhdCBjcmVhdGUgYXRleGl0IGNhbGxzIGFyZSBnb25lLiBVcGRhdGUgc2NyaXB0
CisgICAgICAgIHRvIGluZGljYXRlIGhvdyB0byBmaXggdGhlIHByb2JsZW0gc2hvdWxkIGEgbmV3
IG9uZSBhcHBlYXIuCisgICAgICAgIAorICAgICAgICAqIFNjcmlwdHMvY2hlY2stZm9yLWV4aXQt
dGltZS1kZXN0cnVjdG9yczoKKwogMjAwOC0xMS0xNiAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3Rv
cnMJKHJldmlzaW9uIDM4NDc3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZXhp
dC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC05MiwyMyArOTIsMTEgQEAgZm9y
IG15ICRmaWxlIChzb3J0IEBmaWxlcykgewogICAgIG15ICRzaG9ydE5hbWUgPSAkZmlsZTsKICAg
ICAkc2hvcnROYW1lID1+IHMvLipcLy8vOwogCi0gICAgaWYgKCR0YXJnZXQgZXEgIldlYkNvcmUi
KSB7Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5vIjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDU1NTdHlsZVNlbGVjdG9y
Lm8iOwotICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkubyI7
Ci0gICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNTVkdBbmltYXRlZExlbmd0aC5vIjsK
LSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0FuaW1hdGVkUmVjdC5vIjsKLSAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5v
IjsKLSAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR0xlbmd0aC5vIjsKLSAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU1NWR1JlY3QubyI7Ci0gICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiU3R5bGVUcmFuc2Zvcm1EYXRhLm8iOwotICAgIH0KLQogICAgICRzYXdF
cnJvciA9IDEgaWYgcHJpbnRGdW5jdGlvbnMoJHNob3J0TmFtZSwgJGZpbGUpOwogfQogCiBpZiAo
JHNhd0Vycm9yIGFuZCAhJGNvdmVyYWdlQnVpbGQpIHsKKyAgICBwcmludCAiVXNlIERFRklORV9T
VEFUSUNfTE9DQUwgZnJvbSA8d3RmL1N0ZExpYkV4dHJhcy5oPlxuIjsKICAgICB1bmxpbmsgJGV4
ZWN1dGFibGVQYXRoOwogICAgIGV4aXQgMTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>