<?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>67819</bug_id>
          
          <creation_ts>2011-09-08 16:48:50 -0700</creation_ts>
          <short_desc>Use high resolution platform images when the deviceScaleFactor &gt; 1</short_desc>
          <delta_ts>2011-09-10 17:08:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>67898</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>464498</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-08 16:48:50 -0700</bug_when>
    <thetext>We should use high resolution platform images when the deviceScaleFactor &gt; 1. I will soon post a patch that does just that. 

&lt;rdar://problem/10003098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464507</commentid>
    <comment_count>1</comment_count>
      <attachid>106816</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-08 17:08:00 -0700</bug_when>
    <thetext>Created attachment 106816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464510</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 17:10:22 -0700</bug_when>
    <thetext>Attachment 106816 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/loader/cache/CachedImage.cpp:123:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464512</commentid>
    <comment_count>3</comment_count>
      <attachid>106818</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-08 17:12:32 -0700</bug_when>
    <thetext>Created attachment 106818
Patch with style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464571</commentid>
    <comment_count>4</comment_count>
      <attachid>106818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 18:48:50 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

Attachment 106818 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9624432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464576</commentid>
    <comment_count>5</comment_count>
      <attachid>106818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 18:50:46 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

Attachment 106818 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9623495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464609</commentid>
    <comment_count>6</comment_count>
      <attachid>106818</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-08 20:22:19 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2467
&gt; +        cornerResizerWidth = resizeCornerImageHiRes-&gt;width() / 2;
&gt; +        cornerResizerHeight = resizeCornerImageHiRes-&gt;height() / 2;

Isn&apos;t this assuming that a non-1 deviceScaleFactor is always 2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464718</commentid>
    <comment_count>7</comment_count>
      <attachid>106818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 03:56:36 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

Attachment 106818 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9624597

New failing tests:
fast/encoding/utf-16-big-endian.html
fast/text/whitespace/normal-after-nowrap-breaking.html
tables/mozilla/bugs/bug215629.html
tables/mozilla/bugs/bug3977.html
fast/encoding/utf-16-little-endian.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464870</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 10:20:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 106818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106818&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2467
&gt; &gt; +        cornerResizerWidth = resizeCornerImageHiRes-&gt;width() / 2;
&gt; &gt; +        cornerResizerHeight = resizeCornerImageHiRes-&gt;height() / 2;
&gt; 
&gt; Isn&apos;t this assuming that a non-1 deviceScaleFactor is always 2?

Ah, yes that&apos;s dumb. I can just divide by the devicePixelRatio and that will actually be the correct thing. I will post a new patch that does that and attempts to fix the broken builds shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464879</commentid>
    <comment_count>9</comment_count>
      <attachid>106818</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 10:29:42 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

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

Do we have code that will cause us to update to the right image when the page&apos;s device scale factor changes?

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-575
&gt; -		1C14E76B0AD8C81C00B6158B /* deleteButtonPressed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E7690AD8C81C00B6158B /* deleteButtonPressed.tiff */; };
&gt; -		1C14E76C0AD8C81C00B6158B /* deleteButton.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E76A0AD8C81C00B6158B /* deleteButton.tiff */; };

Are these files still used by other ports? Or can we delete them?

&gt; Source/WebCore/editing/DeleteButtonController.cpp:244
&gt; +    unsigned deviceScaleFactor = 1;

Since we use float everywhere else, I&apos;d recommend using it here, too.

&gt; Source/WebCore/editing/DeleteButtonController.cpp:252
&gt; +    RefPtr&lt;Image&gt; buttonImage;
&gt; +    if (deviceScaleFactor == 1)
&gt; +        buttonImage = Image::loadPlatformResource(&quot;deleteButton&quot;);
&gt; +    else
&gt; +        buttonImage = Image::loadPlatformResource(&quot;deleteButton@2x&quot;);

I think our normal practice has been to use @2x images when the scale factor is &gt;= 2. So I&apos;d write it like this:

if (deviceScaleFactor &gt;= 2)
    use @2x
else
    use normal image

&gt; Source/WebCore/loader/cache/CachedImage.cpp:117
&gt; +static Image* brokenImage(unsigned deviceScaleFactor)

Again, I think you should use float here.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:122
&gt; +    // If deviceScaleFactor is 0, that means we couldn&apos;t access the Page through m_request this time,
&gt; +    // so use the lastDeviceScaleFactor to determine the appropriate resolution.

In what kinds of cases will we be unable to get to a Page?

I think you can make the logic in this function simpler by doing this:

static float lastDeviceScaleFactor = 1;

if (!deviceScaleFactor)
    deviceScaleFactor = lastDeviceScaleFactor;
else
    lastDeviceScaleFactor = deviceScaleFactor;

// From here on you just use deviceScaleFactor and never mention lastDeviceScaleFactor again.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:123
&gt; +    if (deviceScaleFactor == 1 || (!deviceScaleFactor &amp;&amp; lastDeviceScaleFactor == 1)) {

Again, I think you should use the &gt;= 2 logic as above.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:125
&gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, brokenImageLoRes, (Image::loadPlatformResource(&quot;missingImage&quot;)));

You can make this a bare pointer if you add a .leakRef() to the loadPlatformResource expression.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2458
&gt; +    if (deviceScaleFactor == 1) {

Again, I recommend you use the &gt;= 2 logic as above.

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2467
&gt;&gt;&gt; +        cornerResizerHeight = resizeCornerImageHiRes-&gt;height() / 2;
&gt;&gt; 
&gt;&gt; Isn&apos;t this assuming that a non-1 deviceScaleFactor is always 2?
&gt; 
&gt; Ah, yes that&apos;s dumb. I can just divide by the devicePixelRatio and that will actually be the correct thing. I will post a new patch that does that and attempts to fix the broken builds shortly.

If we were using IntSize instead of two ints you could even use cornerResizerSize.scale(1 / devicePixelRatio).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464898</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 10:50:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 106818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106818&amp;action=review
&gt; 
&gt; Do we have code that will cause us to update to the right image when the page&apos;s device scale factor changes?

There are some follow-up bugs in this area. The RenderLayer resize corner image does everything correctly, so no follow-up bugs there. The delete button does not update correctly when the scale factor changes, so that&apos;s follow-up bug #1. And the high-res broken-image image always draws at 2x the size it should, so that&apos;s follow-up #2. 

&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-575
&gt; &gt; -		1C14E76B0AD8C81C00B6158B /* deleteButtonPressed.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E7690AD8C81C00B6158B /* deleteButtonPressed.tiff */; };
&gt; &gt; -		1C14E76C0AD8C81C00B6158B /* deleteButton.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1C14E76A0AD8C81C00B6158B /* deleteButton.tiff */; };
&gt; 
&gt; Are these files still used by other ports? Or can we delete them?
&gt; 

Not sure. I thought I would be conservative for now and just leave them around. I will do a quick grep to see if I can answer that though.

&gt; &gt; Source/WebCore/editing/DeleteButtonController.cpp:244
&gt; &gt; +    unsigned deviceScaleFactor = 1;
&gt; 
&gt; Since we use float everywhere else, I&apos;d recommend using it here, too.
&gt; 

Ah, silly. Will fix.

&gt; &gt; Source/WebCore/editing/DeleteButtonController.cpp:252
&gt; &gt; +    RefPtr&lt;Image&gt; buttonImage;
&gt; &gt; +    if (deviceScaleFactor == 1)
&gt; &gt; +        buttonImage = Image::loadPlatformResource(&quot;deleteButton&quot;);
&gt; &gt; +    else
&gt; &gt; +        buttonImage = Image::loadPlatformResource(&quot;deleteButton@2x&quot;);
&gt; 
&gt; I think our normal practice has been to use @2x images when the scale factor is &gt;= 2. So I&apos;d write it like this:
&gt; 
&gt; if (deviceScaleFactor &gt;= 2)
&gt;     use @2x
&gt; else
&gt;     use normal image
&gt; 

Sounds good. Will fix.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:117
&gt; &gt; +static Image* brokenImage(unsigned deviceScaleFactor)
&gt; 
&gt; Again, I think you should use float here.
&gt; 

Silly again. Will fix.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:122
&gt; &gt; +    // If deviceScaleFactor is 0, that means we couldn&apos;t access the Page through m_request this time,
&gt; &gt; +    // so use the lastDeviceScaleFactor to determine the appropriate resolution.
&gt; 
&gt; In what kinds of cases will we be unable to get to a Page?
&gt; 

I never actually set a breakpoint to get a backtrace, but I was doing printf debugging and saw that this function would be called about 4 times on any load or re-load of the page. The first 3 times there was a Page. The last, there was never a Page.

&gt; I think you can make the logic in this function simpler by doing this:
&gt; 
&gt; static float lastDeviceScaleFactor = 1;
&gt; 
&gt; if (!deviceScaleFactor)
&gt;     deviceScaleFactor = lastDeviceScaleFactor;
&gt; else
&gt;     lastDeviceScaleFactor = deviceScaleFactor;
&gt; 
&gt; // From here on you just use deviceScaleFactor and never mention lastDeviceScaleFactor again.
&gt; 

Okay.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:123
&gt; &gt; +    if (deviceScaleFactor == 1 || (!deviceScaleFactor &amp;&amp; lastDeviceScaleFactor == 1)) {
&gt; 
&gt; Again, I think you should use the &gt;= 2 logic as above.
&gt; 

Will do.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:125
&gt; &gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, brokenImageLoRes, (Image::loadPlatformResource(&quot;missingImage&quot;)));
&gt; 
&gt; You can make this a bare pointer if you add a .leakRef() to the loadPlatformResource expression.
&gt; 

Will do.

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2458
&gt; &gt; +    if (deviceScaleFactor == 1) {
&gt; 
&gt; Again, I recommend you use the &gt;= 2 logic as above.
&gt; 

Will do.

&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2467
&gt; &gt;&gt;&gt; +        cornerResizerHeight = resizeCornerImageHiRes-&gt;height() / 2;
&gt; &gt;&gt; 
&gt; &gt;&gt; Isn&apos;t this assuming that a non-1 deviceScaleFactor is always 2?
&gt; &gt; 
&gt; &gt; Ah, yes that&apos;s dumb. I can just divide by the devicePixelRatio and that will actually be the correct thing. I will post a new patch that does that and attempts to fix the broken builds shortly.
&gt; 
&gt; If we were using IntSize instead of two ints you could even use cornerResizerSize.scale(1 / devicePixelRatio).

That works!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464963</commentid>
    <comment_count>11</comment_count>
      <attachid>106897</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 12:03:36 -0700</bug_when>
    <thetext>Created attachment 106897
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464968</commentid>
    <comment_count>12</comment_count>
      <attachid>106897</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 12:12:56 -0700</bug_when>
    <thetext>Comment on attachment 106897
Updated Patch

Attachment 106897 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9622941</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464973</commentid>
    <comment_count>13</comment_count>
      <attachid>106818</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 12:25:27 -0700</bug_when>
    <thetext>Comment on attachment 106818
Patch with style fix

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

&gt;&gt;&gt; Source/WebCore/loader/cache/CachedImage.cpp:122
&gt;&gt;&gt; +    // so use the lastDeviceScaleFactor to determine the appropriate resolution.
&gt;&gt; 
&gt;&gt; In what kinds of cases will we be unable to get to a Page?
&gt;&gt; 
&gt;&gt; I think you can make the logic in this function simpler by doing this:
&gt;&gt; 
&gt;&gt; static float lastDeviceScaleFactor = 1;
&gt;&gt; 
&gt;&gt; if (!deviceScaleFactor)
&gt;&gt;     deviceScaleFactor = lastDeviceScaleFactor;
&gt;&gt; else
&gt;&gt;     lastDeviceScaleFactor = deviceScaleFactor;
&gt;&gt; 
&gt;&gt; // From here on you just use deviceScaleFactor and never mention lastDeviceScaleFactor again.
&gt; 
&gt; I never actually set a breakpoint to get a backtrace, but I was doing printf debugging and saw that this function would be called about 4 times on any load or re-load of the page. The first 3 times there was a Page. The last, there was never a Page.

It would be nice to know why it&apos;s called so much. Maybe we can call it less.

Using a static for this isn&apos;t super-great, since if two Pages with different device scale factors are loading concurrently you could end up with the calls to brokenImage() from each Page being interleaved, which could eventually result in the wrong image being shown in a Page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464979</commentid>
    <comment_count>14</comment_count>
      <attachid>106897</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 12:33:30 -0700</bug_when>
    <thetext>Comment on attachment 106897
Updated Patch

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

Is there any way to write a test for this? Perhaps a pixel test that uses your setCustomBackingScaleFactor API?

&gt; Source/WebCore/loader/cache/CachedImage.cpp:126
&gt; +    if (!deviceScaleFactor)
&gt; +        deviceScaleFactor = lastDeviceScaleFactor;
&gt; +    else
&gt; +        lastDeviceScaleFactor = deviceScaleFactor;

Even though I suggested it, I guess the &quot;else&quot; technically isn&apos;t needed here. I can&apos;t decide whether it&apos;s clearer with it or without it!

&gt; Source/WebCore/loader/cache/CachedImage.cpp:148
&gt; +        float deviceScaleFactor = 0;
&gt; +        Frame* frame = m_request ? m_request-&gt;cachedResourceLoader()-&gt;frame() : 0;
&gt; +        if (frame) {
&gt; +            if (Page* page = frame-&gt;page())
&gt; +                deviceScaleFactor = page-&gt;deviceScaleFactor();
&gt; +        }

It would be a little clearer to split this logic out into a helper function.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2461
&gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, resizeCornerImageHiRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;)));
&gt; +        resizeCornerImage = resizeCornerImageHiRes;
&gt; +    } else {
&gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, resizeCornerImageLoRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;)));

You can use bare pointers here, too, using the same trick as in CachedImage.cpp.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2468
&gt; +    IntRect imageRect(absRect.maxX() - cornerResizerSize.width(), absRect.maxY() - cornerResizerSize.height(), cornerResizerSize.width(), cornerResizerSize.height());

I think this can be further simplified so:

IntRect imageRect(absRect.maxXmaxYCorner() - cornerResizerSize, cornerResizerSize);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464993</commentid>
    <comment_count>15</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 13:06:30 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; 
&gt; It would be nice to know why it&apos;s called so much. Maybe we can call it less.
&gt; 
&gt; Using a static for this isn&apos;t super-great, since if two Pages with different device scale factors are loading concurrently you could end up with the calls to brokenImage() from each Page being interleaved, which could eventually result in the wrong image being shown in a Page.

Okay, so I debugged this a bit. As you may recall from the patch, the Page is accessed through m_request.  When m_request is non-null, we can always get to Page (in my debugging anyway). When it is null, my patch doesn&apos;t do anything else to get to Page, and I don&apos;t think there is another way there with what is available in the class.

So, when is m_request null and when is it non-null you ask? It seems to be non-null in the first bunch of calls to CachedImage::image() because those happen through the loader while the load is still happening. Once the load is complete, m_request is cleared. But then CachedImage::image() is accessed through painting code paths, and that&apos;s when we can&apos;t get to Page because m_request is null. (Specifically, RenderImage::paintReplaced() calls RenderImageResource::image() which calls CachedImage::image().) 

To improve this, I can see stashing the imageScaleFactor as a member variable on CachedImage. It would represent the CachedImage&apos;s current deviceScaleFactor, and it could update itself in CachedImage::image() if the Page has a different deviceScaleFactor. Of course this has some limitations still. And it&apos;s a member variable that&apos;s only currently relevant to the brokenImage-image, which is kind of strange. But it might come in handy fixing the follow-up bug I mentioned before (where the broken-image-image in hi-res draws at double the size it should). We could also have CachedImage::image() take the deviceScaleFactor as an optional parameter. Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464994</commentid>
    <comment_count>16</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 13:08:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 106897 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106897&amp;action=review
&gt; 
&gt; Is there any way to write a test for this? Perhaps a pixel test that uses your setCustomBackingScaleFactor API?
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:126
&gt; &gt; +    if (!deviceScaleFactor)
&gt; &gt; +        deviceScaleFactor = lastDeviceScaleFactor;
&gt; &gt; +    else
&gt; &gt; +        lastDeviceScaleFactor = deviceScaleFactor;
&gt; 
&gt; Even though I suggested it, I guess the &quot;else&quot; technically isn&apos;t needed here. I can&apos;t decide whether it&apos;s clearer with it or without it!
&gt; 

Haha, I considered removing it too! Maybe it is clearer without it… I&apos;ll think on it a little more.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:148
&gt; &gt; +        float deviceScaleFactor = 0;
&gt; &gt; +        Frame* frame = m_request ? m_request-&gt;cachedResourceLoader()-&gt;frame() : 0;
&gt; &gt; +        if (frame) {
&gt; &gt; +            if (Page* page = frame-&gt;page())
&gt; &gt; +                deviceScaleFactor = page-&gt;deviceScaleFactor();
&gt; &gt; +        }
&gt; 
&gt; It would be a little clearer to split this logic out into a helper function.
&gt; 

Okay!

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2461
&gt; &gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, resizeCornerImageHiRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;)));
&gt; &gt; +        resizeCornerImage = resizeCornerImageHiRes;
&gt; &gt; +    } else {
&gt; &gt; +        DEFINE_STATIC_LOCAL(RefPtr&lt;Image&gt;, resizeCornerImageLoRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;)));
&gt; 
&gt; You can use bare pointers here, too, using the same trick as in CachedImage.cpp.
&gt; 

Ah, right.

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2468
&gt; &gt; +    IntRect imageRect(absRect.maxX() - cornerResizerSize.width(), absRect.maxY() - cornerResizerSize.height(), cornerResizerSize.width(), cornerResizerSize.height());
&gt; 
&gt; I think this can be further simplified so:
&gt; 
&gt; IntRect imageRect(absRect.maxXmaxYCorner() - cornerResizerSize, cornerResizerSize);

Cool. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464996</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 13:14:55 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; 
&gt; &gt; It would be nice to know why it&apos;s called so much. Maybe we can call it less.
&gt; &gt; 
&gt; &gt; Using a static for this isn&apos;t super-great, since if two Pages with different device scale factors are loading concurrently you could end up with the calls to brokenImage() from each Page being interleaved, which could eventually result in the wrong image being shown in a Page.
&gt; 
&gt; Okay, so I debugged this a bit. As you may recall from the patch, the Page is accessed through m_request.  When m_request is non-null, we can always get to Page (in my debugging anyway). When it is null, my patch doesn&apos;t do anything else to get to Page, and I don&apos;t think there is another way there with what is available in the class.
&gt; 
&gt; So, when is m_request null and when is it non-null you ask? It seems to be non-null in the first bunch of calls to CachedImage::image() because those happen through the loader while the load is still happening. Once the load is complete, m_request is cleared. But then CachedImage::image() is accessed through painting code paths, and that&apos;s when we can&apos;t get to Page because m_request is null. (Specifically, RenderImage::paintReplaced() calls RenderImageResource::image() which calls CachedImage::image().) 

Thanks for debugging this!

&gt; We could also have CachedImage::image() take the deviceScaleFactor as an optional parameter.

That sounds like it might be the cleanest option, if the caller always has access to the device scale factor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465000</commentid>
    <comment_count>18</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 13:22:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; 
&gt; Thanks for debugging this!
&gt; 
&gt; &gt; We could also have CachedImage::image() take the deviceScaleFactor as an optional parameter.
&gt; 
&gt; That sounds like it might be the cleanest option, if the caller always has access to the device scale factor.

I think you are right. I will do this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465019</commentid>
    <comment_count>19</comment_count>
      <attachid>106921</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 14:22:17 -0700</bug_when>
    <thetext>Created attachment 106921
More patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465024</commentid>
    <comment_count>20</comment_count>
      <attachid>106921</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 14:28:10 -0700</bug_when>
    <thetext>Comment on attachment 106921
More patch

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

Looking pretty close! I still think it would be good to have a test case for this.

&gt; Source/WebCore/editing/DeleteButtonController.cpp:250
&gt; +    RefPtr&lt;Image&gt; buttonImage;
&gt; +    if (deviceScaleFactor &gt;= 2)
&gt; +        buttonImage = Image::loadPlatformResource(&quot;deleteButton@2x&quot;);

Is it a problem that this code is compiled on all platforms but only Mac has the @2x images for now?

&gt; Source/WebCore/loader/cache/CachedImage.h:47
&gt; +    Image* image(float deviceScaleFactor = 1) const; // Returns the nullImage() if the image is not available yet.

How many callers would have to change if this were made non-optional? Having it be optional makes it seem easy to introduce bugs by forgetting to pass a scale factor.

&gt; Source/WebCore/rendering/RenderImage.cpp:88
&gt; +    if (frame) {
&gt; +        if (Page* page = frame-&gt;page())
&gt; +            deviceScaleFactor = page-&gt;deviceScaleFactor();
&gt; +    }

This might be clearer if it used early returns.

&gt; Source/WebCore/rendering/RenderImageResource.cpp:105
&gt; +    float deviceScaleFactor = 1;
&gt; +    if (m_renderer) {
&gt; +        if (Frame* frame = m_renderer-&gt;frame()) {
&gt; +            if (Page* page = frame-&gt;page())
&gt; +                deviceScaleFactor = page-&gt;deviceScaleFactor();
&gt; +        }
&gt; +    }

This might be clearer as a helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465027</commentid>
    <comment_count>21</comment_count>
      <attachid>106921</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-09 14:35:28 -0700</bug_when>
    <thetext>Comment on attachment 106921
More patch

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

&gt; Source/WebCore/rendering/RenderImage.cpp:101
&gt; +    return IntSize(paddingWidth + newImage-&gt;image(scaleFactor)-&gt;width() * style()-&gt;effectiveZoom(), paddingHeight + newImage-&gt;image(scaleFactor)-&gt;height() * style()-&gt;effectiveZoom());

Seems like you could just grab brokenImage directly, and then you wouldn&apos;t have to patch the generic image accessor.

&gt; Source/WebCore/rendering/RenderImage.cpp:109
&gt; +    if (newImage &amp;&amp; newImage-&gt;image(deviceScaleFactor(frame())))

Scale factor here doesn&apos;t matter does it? You&apos;re just null checking?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465028</commentid>
    <comment_count>22</comment_count>
      <attachid>106921</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-09 14:37:39 -0700</bug_when>
    <thetext>Comment on attachment 106921
More patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2469
&gt; +    float deviceScaleFactor = 1;
&gt; +    if (Frame* frame = renderer()-&gt;frame()) {
&gt; +        if (Page* page = frame-&gt;page())
&gt; +            deviceScaleFactor = page-&gt;deviceScaleFactor();
&gt; +    }
&gt; +
&gt; +    RefPtr&lt;Image&gt; resizeCornerImage;
&gt; +    if (deviceScaleFactor &gt;= 2) {
&gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageHiRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef()));
&gt; +        resizeCornerImage = resizeCornerImageHiRes;
&gt; +    } else {
&gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageLoRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;).leakRef()));
&gt; +        resizeCornerImage = resizeCornerImageLoRes;
&gt; +    }
&gt; +
&gt; +    IntSize cornerResizerSize = resizeCornerImage-&gt;size();
&gt; +    cornerResizerSize.scale(1 / deviceScaleFactor);
&gt; +
&gt; +    IntRect imageRect(absRect.maxXMaxYCorner() - cornerResizerSize, cornerResizerSize);
&gt; +    context-&gt;drawImage(resizeCornerImage.get(), box-&gt;style()-&gt;colorSpace(), imageRect);

Also, pull this into a helper now that it&apos;s gotten this big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465075</commentid>
    <comment_count>23</comment_count>
      <attachid>106921</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 15:57:20 -0700</bug_when>
    <thetext>Comment on attachment 106921
More patch

Attachment 106921 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9624872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465111</commentid>
    <comment_count>24</comment_count>
      <attachid>106942</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 16:57:12 -0700</bug_when>
    <thetext>Created attachment 106942
Another new patch

This patch should address all of Adam&apos;s and Hyatt&apos;s comments except for the request for a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465124</commentid>
    <comment_count>25</comment_count>
      <attachid>106942</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-09 17:11:35 -0700</bug_when>
    <thetext>Comment on attachment 106942
Another new patch

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

&gt; Source/WebCore/loader/cache/CachedImage.cpp:124
&gt; +    if (deviceScaleFactor &gt;= 2) {
&gt; +        DEFINE_STATIC_LOCAL(Image*, brokenImageHiRes, (Image::loadPlatformResource(&quot;missingImage@2x&quot;).leakRef()));
&gt; +        return brokenImageHiRes;
&gt; +    }
&gt; +
&gt; +    DEFINE_STATIC_LOCAL(Image*, brokenImageLoRes, (Image::loadPlatformResource(&quot;missingImage&quot;).leakRef()));
&gt; +    return brokenImageLoRes;

I think we need a comment here explaining that these two images need to be the same size, because the 1x image will be used for layout even if the 2x image is the one actually drawn.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:132
&gt; -        return brokenImage();
&gt; +        return brokenImage(1);

Why is this 1 OK? Don’t we need the correct image? I’m guessing it’s OK because of the code in RenderReplaced::paintReplaced. If that’s so, then a comment is required here to explain that.

I think we are in a situation where there is an image returned by this function that simply indicates “this is a broken image, not intended to be drawn”. It might be better to be clearer about that and even report an error if we draw it, rather than just always using the 1x image for that purpose?

&gt; Source/WebCore/loader/cache/CachedImage.h:50
&gt; +    Image* brokenImage(float deviceScaleFactor = 1) const;

Why is the default still here?

&gt; Source/WebCore/rendering/RenderImage.cpp:82
&gt; +static float deviceScaleFactor(Frame* frame)

Too bad we can’t share this with RenderLayer::drawPlatformResizerImage. Maybe we can find a place to put this where it can be shared.

&gt; Source/WebCore/rendering/RenderImage.cpp:84
&gt; +    if (!frame)

Can frame be 0 here? If not, can we leave this check out?

&gt; Source/WebCore/rendering/RenderImage.cpp:101
&gt; +    return IntSize(paddingWidth + newImage-&gt;brokenImage(scaleFactor)-&gt;width() * style()-&gt;effectiveZoom(), paddingHeight + newImage-&gt;brokenImage(scaleFactor)-&gt;height() * style()-&gt;effectiveZoom());

Seems unfortunate to fetch the image twice. A local variable would be better. The old code was different because image() was just an inlined getter function.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2430
&gt; +    if (Frame* frame = renderer()-&gt;frame()) {

Can frame be 0 here? If not, can we leave this check out?

&gt; Source/WebCore/rendering/RenderLayer.cpp:2445
&gt; +    RefPtr&lt;Image&gt; resizeCornerImage;
&gt; +    if (deviceScaleFactor &gt;= 2) {
&gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageHiRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef()));
&gt; +        resizeCornerImage = resizeCornerImageHiRes;
&gt; +    } else {
&gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageLoRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;).leakRef()));
&gt; +        resizeCornerImage = resizeCornerImageLoRes;
&gt; +    }
&gt; +
&gt; +    IntSize cornerResizerSize = resizeCornerImage-&gt;size();
&gt; +    cornerResizerSize.scale(1 / deviceScaleFactor);

This seems too generally written. The 2X image’s size should be divided by 2, and the 1-pixel image not divided at all. There’s no good reason to do the math with the actual scale factor. Also, rounding to an integer would be a problem in the general case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465139</commentid>
    <comment_count>26</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 17:32:11 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 106942 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106942&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:124
&gt; &gt; +    if (deviceScaleFactor &gt;= 2) {
&gt; &gt; +        DEFINE_STATIC_LOCAL(Image*, brokenImageHiRes, (Image::loadPlatformResource(&quot;missingImage@2x&quot;).leakRef()));
&gt; &gt; +        return brokenImageHiRes;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    DEFINE_STATIC_LOCAL(Image*, brokenImageLoRes, (Image::loadPlatformResource(&quot;missingImage&quot;).leakRef()));
&gt; &gt; +    return brokenImageLoRes;
&gt; 
&gt; I think we need a comment here explaining that these two images need to be the same size, because the 1x image will be used for layout even if the 2x image is the one actually drawn.
&gt; 

I&apos;m not sure I agree that is necessary here. There is no similar comment in the other places where we load a 2X image. 

&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:132
&gt; &gt; -        return brokenImage();
&gt; &gt; +        return brokenImage(1);
&gt; 
&gt; Why is this 1 OK? Don’t we need the correct image? I’m guessing it’s OK because of the code in RenderReplaced::paintReplaced. If that’s so, then a comment is required here to explain that.
&gt; 

I think you are right about a comment being in order.

&gt; I think we are in a situation where there is an image returned by this function that simply indicates “this is a broken image, not intended to be drawn”. It might be better to be clearer about that and even report an error if we draw it, rather than just always using the 1x image for that purpose?
&gt; 

Hyatt thinks it&apos;s weird that the broken image is entangled in all of this anyway. He didn&apos;t want CachedImage::image() to take a parameter for the deviceScaleFactor, which is why I re-wrote the code this way. The code could fetch the deviceScaleFactor from the Page itself, but it would only get it right sometimes, which Adam didn&apos;t care for. I&apos;m feeling a bit of strain here from 3 reviewers wanting 3 different things. I feel like I am being pulled in many directions here. 


&gt; &gt; Source/WebCore/loader/cache/CachedImage.h:50
&gt; &gt; +    Image* brokenImage(float deviceScaleFactor = 1) const;
&gt; 
&gt; Why is the default still here?

It shouldn&apos;t be. I will remove this.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderImage.cpp:82
&gt; &gt; +static float deviceScaleFactor(Frame* frame)
&gt; 
&gt; Too bad we can’t share this with RenderLayer::drawPlatformResizerImage. Maybe we can find a place to put this where it can be shared.
&gt; 

I agree that would be nice.

&gt; &gt; Source/WebCore/rendering/RenderImage.cpp:84
&gt; &gt; +    if (!frame)
&gt; 
&gt; Can frame be 0 here? If not, can we leave this check out?
&gt; 

Frame is often null-checked in rendering code. If frame can be null during painting or loading, then this check needs to be here. Other painting code null-checks Frame, but I am not sure it needs to.

&gt; &gt; Source/WebCore/rendering/RenderImage.cpp:101
&gt; &gt; +    return IntSize(paddingWidth + newImage-&gt;brokenImage(scaleFactor)-&gt;width() * style()-&gt;effectiveZoom(), paddingHeight + newImage-&gt;brokenImage(scaleFactor)-&gt;height() * style()-&gt;effectiveZoom());
&gt; 
&gt; Seems unfortunate to fetch the image twice. A local variable would be better. The old code was different because image() was just an inlined getter function.
&gt; 

The old image function was not an inlined getter. Please see CachedImage::image().

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2430
&gt; &gt; +    if (Frame* frame = renderer()-&gt;frame()) {
&gt; 
&gt; Can frame be 0 here? If not, can we leave this check out?
&gt; 

Same comment as above.

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2445
&gt; &gt; +    RefPtr&lt;Image&gt; resizeCornerImage;
&gt; &gt; +    if (deviceScaleFactor &gt;= 2) {
&gt; &gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageHiRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner@2x&quot;).leakRef()));
&gt; &gt; +        resizeCornerImage = resizeCornerImageHiRes;
&gt; &gt; +    } else {
&gt; &gt; +        DEFINE_STATIC_LOCAL(Image*, resizeCornerImageLoRes, (Image::loadPlatformResource(&quot;textAreaResizeCorner&quot;).leakRef()));
&gt; &gt; +        resizeCornerImage = resizeCornerImageLoRes;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    IntSize cornerResizerSize = resizeCornerImage-&gt;size();
&gt; &gt; +    cornerResizerSize.scale(1 / deviceScaleFactor);
&gt; 
&gt; This seems too generally written. The 2X image’s size should be divided by 2, and the 1-pixel image not divided at all. There’s no good reason to do the math with the actual scale factor. Also, rounding to an integer would be a problem in the general case.

Adam requested using the actual scale factor instead of 2, which I did in my original patch.

As I expressed earlier, this patch is feeling very over-reviewed to me at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465143</commentid>
    <comment_count>27</comment_count>
      <attachid>106942</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-09 17:40:37 -0700</bug_when>
    <thetext>Comment on attachment 106942
Another new patch

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

&gt;&gt;&gt; Source/WebCore/loader/cache/CachedImage.cpp:124
&gt;&gt;&gt; +    return brokenImageLoRes;
&gt;&gt; 
&gt;&gt; I think we need a comment here explaining that these two images need to be the same size, because the 1x image will be used for layout even if the 2x image is the one actually drawn.
&gt; 
&gt; I&apos;m not sure I agree that is necessary here. There is no similar comment in the other places where we load a 2X image.

As I understand it, in the other places we just use the 2x image. But in this case, the layout code uses the 1x image and then drawing code substitutes the 2x image. That&apos;s a bit different. But maybe a comment will just be confusing.

&gt;&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:82
&gt;&gt;&gt; +static float deviceScaleFactor(Frame* frame)
&gt;&gt; 
&gt;&gt; Too bad we can’t share this with RenderLayer::drawPlatformResizerImage. Maybe we can find a place to put this where it can be shared.
&gt; 
&gt; I agree that would be nice.

I’m thinking that Page.h would be a reasonable place for the helper function.

&gt;&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:101
&gt;&gt;&gt; +    return IntSize(paddingWidth + newImage-&gt;brokenImage(scaleFactor)-&gt;width() * style()-&gt;effectiveZoom(), paddingHeight + newImage-&gt;brokenImage(scaleFactor)-&gt;height() * style()-&gt;effectiveZoom());
&gt;&gt; 
&gt;&gt; Seems unfortunate to fetch the image twice. A local variable would be better. The old code was different because image() was just an inlined getter function.
&gt; 
&gt; The old image function was not an inlined getter. Please see CachedImage::image().

OK, then even the old code should have used a local variable!

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2445
&gt;&gt;&gt; +    cornerResizerSize.scale(1 / deviceScaleFactor);
&gt;&gt; 
&gt;&gt; This seems too generally written. The 2X image’s size should be divided by 2, and the 1-pixel image not divided at all. There’s no good reason to do the math with the actual scale factor. Also, rounding to an integer would be a problem in the general case.
&gt; 
&gt; Adam requested using the actual scale factor instead of 2, which I did in my original patch.
&gt; 
&gt; As I expressed earlier, this patch is feeling very over-reviewed to me at this point.

I missed your over-reviewed comment; I’m not sure I agree.

If Adam suggested that, then I believe he was wrong. If the scale factor was 4 we would load the 2x image and then scale its size down by 4, so so display a half-sized resized. Not good! It would just get worse at higher resolutions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465147</commentid>
    <comment_count>28</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 17:52:53 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 106942 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106942&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/loader/cache/CachedImage.cpp:124
&gt; &gt;&gt;&gt; +    return brokenImageLoRes;
&gt; &gt;&gt; 
&gt; &gt;&gt; I think we need a comment here explaining that these two images need to be the same size, because the 1x image will be used for layout even if the 2x image is the one actually drawn.
&gt; &gt; 
&gt; &gt; I&apos;m not sure I agree that is necessary here. There is no similar comment in the other places where we load a 2X image.
&gt; 
&gt; As I understand it, in the other places we just use the 2x image. But in this case, the layout code uses the 1x image and then drawing code substitutes the 2x image. That&apos;s a bit different. But maybe a comment will just be confusing.
&gt; 

I don&apos;t think that is accurate. Based on my (admittedly limited) debugging, the 1x image is only being returned for things like null-checks.

&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:82
&gt; &gt;&gt;&gt; +static float deviceScaleFactor(Frame* frame)
&gt; &gt;&gt; 
&gt; &gt;&gt; Too bad we can’t share this with RenderLayer::drawPlatformResizerImage. Maybe we can find a place to put this where it can be shared.
&gt; &gt; 
&gt; &gt; I agree that would be nice.
&gt; 
&gt; I’m thinking that Page.h would be a reasonable place for the helper function.
&gt; 

Okay! I will add that.

&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderImage.cpp:101
&gt; &gt;&gt;&gt; +    return IntSize(paddingWidth + newImage-&gt;brokenImage(scaleFactor)-&gt;width() * style()-&gt;effectiveZoom(), paddingHeight + newImage-&gt;brokenImage(scaleFactor)-&gt;height() * style()-&gt;effectiveZoom());
&gt; &gt;&gt; 
&gt; &gt;&gt; Seems unfortunate to fetch the image twice. A local variable would be better. The old code was different because image() was just an inlined getter function.
&gt; &gt; 
&gt; &gt; The old image function was not an inlined getter. Please see CachedImage::image().
&gt; 
&gt; OK, then even the old code should have used a local variable!
&gt; 

That I can agree with!

&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2445
&gt; &gt;&gt;&gt; +    cornerResizerSize.scale(1 / deviceScaleFactor);
&gt; &gt;&gt; 
&gt; &gt;&gt; This seems too generally written. The 2X image’s size should be divided by 2, and the 1-pixel image not divided at all. There’s no good reason to do the math with the actual scale factor. Also, rounding to an integer would be a problem in the general case.
&gt; &gt; 
&gt; &gt; Adam requested using the actual scale factor instead of 2, which I did in my original patch.
&gt; &gt; 
&gt; &gt; As I expressed earlier, this patch is feeling very over-reviewed to me at this point.
&gt; 
&gt; I missed your over-reviewed comment; I’m not sure I agree.
&gt; 

You are probably right. It can just be frustrating when reviewers have conflicting suggestions. Especially when I feel a strong case could be made for either side and there is not an obviously better choice. Anyway, I do feel like the patch has continued to get better, so as I initially said…you are probably right.

&gt; If Adam suggested that, then I believe he was wrong. If the scale factor was 4 we would load the 2x image and then scale its size down by 4, so so display a half-sized resized. Not good! It would just get worse at higher resolutions.

Yeah, I hear that. Back to 2 it is!

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465159</commentid>
    <comment_count>29</comment_count>
      <attachid>106942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 18:28:40 -0700</bug_when>
    <thetext>Comment on attachment 106942
Another new patch

Attachment 106942 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9625871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465165</commentid>
    <comment_count>30</comment_count>
      <attachid>106942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-09 18:40:52 -0700</bug_when>
    <thetext>Comment on attachment 106942
Another new patch

Attachment 106942 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9632054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465181</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-09-09 18:57:45 -0700</bug_when>
    <thetext>Sorry for sending things in the wrong direction here. I&apos;m glad Hyatt and Darin and Simon have been looking at this; they are more qualified to review a patch like this than I am.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465215</commentid>
    <comment_count>32</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 21:22:06 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Sorry for sending things in the wrong direction here. I&apos;m glad Hyatt and Darin and Simon have been looking at this; they are more qualified to review a patch like this than I am.

No, you were really very helpful Adam!! Reconciling all of the different opinions was challenging for me, but in the end, I am glad to have them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465244</commentid>
    <comment_count>33</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-09-09 23:42:13 -0700</bug_when>
    <thetext>I committed the change with revision 94900. 

Follow-up bugs:
https://bugs.webkit.org/show_bug.cgi?id=67884 Delete button icon does not properly update when the device resolution changes dynamically
https://bugs.webkit.org/show_bug.cgi?id=67885 Outline for the high-resolution broken image icon draws at 2x

Adam, I promise to add test infrastructure with those patches as well!

And this is a follow-up for Chrome folks:
https://bugs.webkit.org/show_bug.cgi?id=67886 Chromium: Need to add high resolution platform images to Chrome WebCore bundle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465306</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-10 11:42:19 -0700</bug_when>
    <thetext>10 tests started failing on Snow Leopard after this patch:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r94900%20(2089)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94900%20(32987)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465309</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-10 11:45:28 -0700</bug_when>
    <thetext>And that&apos;s because you&apos;ve added a printf:

 	2417	void RenderLayer::drawPlatformResizerImage(GraphicsContext* context, LayoutRect resizerCornerRect) 
 	2418	{ 
 	2419	    float deviceScaleFactor = Page::deviceScaleFactor(renderer()-&gt;frame()); 
 	2420	    printf(&quot;RenderLayer deviceScaleFactor=%f\n&quot;, deviceScaleFactor);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465310</commentid>
    <comment_count>36</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-10 11:55:14 -0700</bug_when>
    <thetext>Removed printf in http://trac.webkit.org/changeset/94910 for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465334</commentid>
    <comment_count>37</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-10 14:52:53 -0700</bug_when>
    <thetext>fast/images/support-broken-image-delegate.html is still failing on Leopard, Snow Leopard, &amp; Lion:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r94911%20(2096)/results.html
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r94909%20(33500)/results.html
http://build.webkit.org/results/Lion%20Intel%20Debug%20(Tests)/r94910%20(535)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465349</commentid>
    <comment_count>38</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-10 17:08:33 -0700</bug_when>
    <thetext>Per Darin&apos;s suggestion, I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=67898. I&apos;m going to temporarily skip the test on the bots for the sake of keeping them green while Beth &amp; Darin investigate the issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106816</attachid>
            <date>2011-09-08 17:08:00 -0700</date>
            <delta_ts>2011-09-08 17:12:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>32011</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMDggIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODE5CisgICAgICAgIFVzZSBoaWdoIHJlc29sdXRp
b24gcGxhdGZvcm0gaW1hZ2VzIHdoZW4gdGhlIGRldmljZVNjYWxlRmFjdG9yID4gMQorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDAwMzA5OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWxs
IG9mIHRoZSBuZXcgaGlnaCByZXNvbHV0aW9uIGltYWdlcy4gSSBhbHNvIHJlbW92ZWQgc29tZSB0
aWZmcyBmcm9tIHRoZSAKKyAgICAgICAgcHJvamVjdCBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIHBu
ZyBlcXVpdmFsZW50cyAodGhhdCBhcmUgYWxyZWFkeSBjaGVja2VkIGludG8gCisgICAgICAgIFdl
YkNvcmUgYW55d2F5KS4gU2luY2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiBpbWFnZXMgYXJlIHBuZ3Ms
IGl0IG1ha2VzIHNlbnNlIHRvIHVzZSAKKyAgICAgICAgcG5ncyBmb3IgYWxsIG9mIHRoZSBpbWFn
ZXMgdGhhdCBsb2FkIHRocm91Z2ggSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCkKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKToKKworICAgICAgICBMb2FkIHRoZSBAMnggcmVzb3VyY2UgZm9y
IGRldmljZVNjYWxlRmFjdG9ycyA+IDEuCisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6
OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpicm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKwogMjAxMS0w
OS0wOCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBLVVJMOjpjb3B5IGRvZXNuJ3QgcHJvZHVjZSBzb21ldGhpbmcgdXNhYmxlIG9uIGFub3Ro
ZXIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAy
eC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAyeC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWxldGVCdXR0b25QcmVzc2Vk
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1h
Z2VAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1hZ2VAMngu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbnVsbFBsdWdpbkAyeC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL251bGxQbHVnaW5AMngucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdGV4dEFyZWFSZXNpemVDb3JuZXJAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lckAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsOCAr
NTcxLDYgQEAKIAkJMUMxMUNDQzYwQUE2MDkzNzAwREFEQjIwIC8qIERPTURvY3VtZW50RnJhZ21l
bnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
LmggKi87IH07CiAJCTFDMTFDQ0M3MEFBNjA5MzcwMERBREIyMCAvKiBET01DREFUQVNlY3Rpb24u
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDg5Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsg
fTsKIAkJMUMxMUNDQzgwQUE2MDkzNzAwREFEQjIwIC8qIERPTUhUTUxFbGVtZW50LmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NURGMkVFQjBBQTM4N0NCMDBBRDY0QzUgLyogRE9NSFRNTEVsZW1lbnQuaCAqLzsgfTsKLQkJMUMx
NEU3NkIwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxNEU3NjkwQUQ4Qzgx
QzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLzsgfTsKLQkJMUMxNEU3NkMw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50aWZmIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyog
ZGVsZXRlQnV0dG9uLnRpZmYgKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0Uy
NEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CiAJCTFDNEM4RjAyMEFEODVEODcwMDk0
NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTcwMSw3ICsxNjk5LDYgQEAKIAkJNzI2MjZF
MDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyog
Rm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJl
bmRlcklucHV0U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5j
cHAgKi87IH07CiAJCTc1MEQwMjk0MTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUwRDAy
OTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi87IH07Ci0JCTc1MEQw
MkMxMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcg
LyogaW5wdXRTcGVlY2gudGlmZiAqLzsgfTsKIAkJNzUzNUJDOTQxMjAyMENGRjAwMzdFQzQ1IC8q
IFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTM1QkM5MjEyMDIwQ0ZGMDAzN0VDNDUgLyogU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcCAqLzsgfTsKIAkJNzUzNUJDOTUxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVj
aElucHV0Q2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVjaElucHV0Q2xpZW50TW9j
ay5oICovOyB9OwogCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsg
fTsKQEAgLTI5MjQsNiArMjkyMSwxNCBAQAogCQk5MzA3RjFEODBBRjJENTkwMDBEQkEzMUEgLyog
SGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMwN0YxRDYwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA5MDg5MTBBRjdF
REU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDkwODkwMEFGN0VERTQwMDgxREYwMSAvKiBIaXRUZXN0
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMEZDNjhBMTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwRkM2ODkxMDcyQjky
ODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxNTNCQ0QxNDE3RkJCRjAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvbkAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMTUzQkNDMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngucG5n
ICovOyB9OworCQk5MzE1M0JDRjE0MTdGQkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMTUzQkNFMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyAq
LzsgfTsKKwkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkQ5
MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovOyB9OworCQk5MzE1M0JE
QzE0MTk1OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEQjE0MTk1OUJCMDBG
Q0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovOyB9OworCQk5MzE1M0JERTE0MTk1
OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0
ZUJ1dHRvbi5wbmcgKi87IH07CisJCTkzMTUzQkUwMTQxOTVBMjgwMEZDRjVCRSAvKiBkZWxldGVC
dXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQu
cG5nICovOyB9OworCQk5MzE1M0JFMjE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBu
ZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNC
RTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi87IH07CisJCTkzMTUzQkU0
MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkUzMTQxOTVCMjkwMEZDRjVCRSAvKiBp
bnB1dFNwZWVjaC5wbmcgKi87IH07CiAJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
MzI2REMwQzA5REFENUQ2MDBBRkM4NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3
IC8qIENoYXJzZXREYXRhLmNwcCAqLzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8q
IEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTMwNDIsNiArMzA0Nyw3IEBACiAJCTkzNjI2NDBCMERF
MTEzN0QwMDlENUEwMCAvKiBDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAg
LyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNjNCNjJDMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5
UHJvcGVydHlMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNjNCNjJBMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmNw
cCAqLzsgfTsKIAkJOTM2M0I2MkQwRjhFOEZFMDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjNC
NjJCMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTM3MDkxOEQxNDE2RDg2QjAw
NDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLzsgfTsKIAkJOTM3OTlFRjgwQkYyNzQzNjAw
RDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29y
ZEJyZWFrLmNwcCAqLzsgfTsKIAkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldv
cmRCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM3OTlFRjcwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovOyB9OwogCQk5
MzgwRjQ3MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBX
aWRnZXQuY3BwICovOyB9OwpAQCAtNDA4MSw3ICs0MDg3LDYgQEAKIAkJQUIyNDdBNkMwQUZENjM4
MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQjI0N0E2QTBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xp
ZGVyLmNwcCAqLzsgfTsKIAkJQUIyNDdBNkQwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyNDdB
NkIwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oICovOyB9OwogCQlBQjMxQzkxRTEw
QUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMzFDOTFEMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5l
Q2xhbXBWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUFCNDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0MjYxRDcwQTJG
NkM5NzAwQkREMTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmICovOyB9OwogCQlBQjRDQjRFQjBCOEJE
QTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIw
IC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLzsgfTsKIAkJQUI2N0QxQTgwOTdGM0FF
MzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5k
ZXJUZXh0Q29udHJvbC5jcHAgKi87IH07CiAJCUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUI2N0QxQTcwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmgg
Ki87IH07CkBAIC01Njg0LDcgKzU2ODksNiBAQAogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5Nzgg
LyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmgg
Ki87IH07CiAJCUU0RUVGRkM4MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFRUZG
QzYwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUU0
RUVGRkM5MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUVGRkM3MEQzNDU1MEMwMDQ2
OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCAqLzsgfTsKLQkJRUQwNDhBQkMwODMzRjEzMjAw
NkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0
ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBB
QzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVENTAx
REM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRp
dG9yTWFjLm1tICovOyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MTAwLDggKzcxMDQsNiBAQAogCQkxQUZFMTE4QzBD
QkZGQzRFMDAzMDE3RkEgLyogU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU1FMUmVzdWx0U2V0Um93TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRS
b3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkND
NDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUMxNEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNz
ZWQudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmY7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDMTRFNzZBMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0
b24udGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b24udGlmZjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5N0IwRDdFMjRFQzAw
QkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNEM4RUZGMEFE
ODVEODcwMDk0NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTgz
NjcsNyArODM2OSw2IEBACiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUwRDAyOTExMUQwRTdGMzAwQkQx
QjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzUwRDAyOTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1MEQwMkMwMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1
dFNwZWVjaC50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9IGlucHV0U3BlZWNoLnRpZmY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1MzVCQzkyMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1
IC8qIFNwZWVjaElucHV0Q2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTcGVlY2hJbnB1dENsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E3MTAyRTAwRTgw
MDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk1NjIsNiArOTU2MywxNCBAQAogCQk5MzA3RjFENjBBRjJENTkwMDBEQkEz
MUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA5MDg5MDBB
RjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhpdFRlc3RSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMEZDNjg5MTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJkZWxldGVCdXR0b25AMngucG5nIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1
dHRvblByZXNzZWRAMngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gImRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRDkxNDE4MUY3QTAwRkNGNUJF
IC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibWlzc2luZ0ltYWdlQDJ4LnBuZyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAv
KiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5l
ci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkREMTQxOTU5RjQwMEZD
RjVCRSAvKiBkZWxldGVCdXR0b24ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uLnBuZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvblByZXNzZWQucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAv
KiBtaXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRTMxNDE5NUIyOTAwRkNGNUJFIC8qIGlucHV0U3Bl
ZWNoLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBuZzsgcGF0aCA9IGlucHV0U3BlZWNoLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyN0E5NDEwOTk2OEQxQTAwNjhB
NTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVz
Y3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjgxLDYgKzk2
OTAsNyBAQAogCQk5MzYzQjYyQTBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5UHJvcGVy
dHlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2M0I2MkIwRjhFOEZF
MDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGlzdG9yeVByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzZERDAzQTA5Q0VBQzI3MDA1NkFFOEMgLyogUmFuZ2UuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3
MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsg
cGF0aCA9ICJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzk5RUY3MEJGMjc0MzYwMEQwRjIz
MCAvKiBSZW5kZXJXb3JkQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyV29yZEJyZWFrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODBGNDcx
MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDYzNSw3ICsxMDY0NSw2IEBACiAJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJT
bGlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNs
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjQ3QTZCMEFGRDYzODMw
MDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjMxQzkx
RDEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGluZUNsYW1wVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0xpbmVDbGFtcFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFCNDI2MUQ3MEEyRjZDOTcwMEJE
RDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBtaXNzaW5nSW1hZ2UudGlmZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIwIC8q
IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUI2N0QxQTYwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJv
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNjdEMUE3MDk3RjNBRTMwMEY5
MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyVGV4dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNDY0LDcgKzEyNDczLDYgQEAKIAkJRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdl
YWJsZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZWFibGVC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFRUZGQzYwRDM0NTUwQzAw
NDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Db25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcg
LyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNv
cm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0Qjkx
MDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQ1
MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgzLDE1ICsxMzE5MSwxOCBA
QAogCQkJCTQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLywKIAkJ
CQk0NkQ0RjI0NzBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJzb3IucG5nICovLAog
CQkJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLywKLQkJCQkx
QzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgKi8sCi0JCQkJMUMx
NEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLywKKwkJ
CQk5MzE1M0JERDE0MTk1OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyAqLywKKwkJCQk5
MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uQDJ4LnBuZyAqLywKKwkJCQk5
MzE1M0JERjE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgKi8sCisJ
CQkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
ICovLAogCQkJCTg1MTM2Qzg5MEFFRDY2NTgwMEY5MEEzRCAvKiBlYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM4QTBBRUQ2NjU4MDBGOTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJz
b3IucG5nICovLAogCQkJCTg1MTM2QzhCMEFFRDY2NTgwMEY5MEEzRCAvKiBoZWxwQ3Vyc29yLnBu
ZyAqLywKLQkJCQk3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiAq
LywKKwkJCQk5MzE1M0JFMzE0MTk1QjI5MDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nICovLAog
CQkJCTg1MTM2QzhDMEFFRDY2NTgwMEY5MEEzRCAvKiBsaW5rQ3Vyc29yLnBuZyAqLywKIAkJCQlC
Q0FEMTgwODEzMUM3QTBEMDA5OTA0MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyAqLywKLQkJCQlB
QjQyNjFENzBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2luZ0ltYWdlLnRpZmYgKi8sCisJCQkJOTMx
NTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi8sCisJCQkJOTMxNTNC
RDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8sCiAJCQkJODUxMzZD
OEQwQUVENjY1ODAwRjkwQTNEIC8qIG1vdmVDdXJzb3IucG5nICovLAogCQkJCTQ2RjlENURCMEIw
RDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nICovLAogCQkJCTQ2QkQxNkUyMEIyNzk0
NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLywKQEAgLTEzMjA1LDcgKzEzMjE2LDggQEAK
IAkJCQk4NTEzNkM5NDBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhFYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM5NTBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhSZXNpemVDdXJzb3Iu
cG5nICovLAogCQkJCTg1MTM2Qzk2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RSZXNpemVD
dXJzb3IucG5nICovLAotCQkJCUVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJl
c2l6ZUNvcm5lci50aWZmICovLAorCQkJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0
QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8sCisJCQkJOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLywKIAkJCQk0NkQ0RjI0ODBBRjk3RTgxMDAz
NTM4NUEgLyogdmVydGljYWxUZXh0Q3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM5NzBBRUQ2NjU5
MDBGOTBBM0QgLyogd2FpdEN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTgwQUVENjY1OTAwRjkw
QTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nICovLApAQCAtMjM1OTcsMTYgKzIzNjA5LDEyIEBA
CiAJCQkJNDZENEYyNDkwQUY5N0U4MTAwMzUzODVBIC8qIGNlbGxDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQk0NkQ0RjI0QTBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NjE0QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyog
Y29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTFDMTRFNzZDMEFEOEM4MUMwMEI2
MTU4QiAvKiBkZWxldGVCdXR0b24udGlmZiBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJMUMxNEU3NkIw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJODUxMzZDOTkwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RSZXNpemVDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5MDBGOTBBM0QgLyogZWFzdFdl
c3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QjBBRUQ2NjU5
MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTc1MEQwMkMx
MTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLywKIAkJ
CQk4NTEzNkM5QzBBRUQ2NjU5MDBGOTBBM0QgLyogbGlua0N1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUJDQUQxODBBMTMxQzdBMEQwMDk5MDQwNiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdz
IGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0RDMTQwNTBERDM5MzRDMDA2RUFDRDMgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQUI0MjYxRDgwQTJGNkM5NzAwQkRE
MTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5RDBB
RUQ2NjU5MDBGOTBBM0QgLyogbW92ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2
RjlENURFMEIwRDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQk0NkJEMTZFMzBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLApAQCAtMjM2MjAsMTIgKzIzNjI4LDIwIEBACiAJCQkJODUxMzZDQTQwQUVENjY1
OTAwRjkwQTNEIC8qIHNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTg1MTM2Q0E1MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFJlc2l6ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTg1MTM2Q0E2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQlFRDA0OEFCQzA4MzNGMTMyMDA2
RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
NDZENEYyNEIwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLAogCQkJCTg1MTM2Q0E3MEFFRDY2NTkwMEY5MEEzRCAvKiB3YWl0Q3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0Iw
QzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJ
CQk5MzcwOTE4RDE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5n
IGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1M0JDRDE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCQ0YxNDE3RkJEQjAwRkNG
NUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5
MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8q
IGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkUwMTQxOTVBMjgw
MEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
OTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTkzMTUzQkU0MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpA
QCAtMjQwLDcgKzI0MSwxNiBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURl
bGV0CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51
bWJlcihidXR0b25IZWlnaHQpICsgInB4Iik7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVWaXNpYmxlKTsKIAotICAgIFJlZlB0cjxJbWFnZT4g
YnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIp
OworICAgIHVuc2lnbmVkIGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpOworCisgICAgUmVmUHRyPEltYWdlPiBidXR0b25JbWFnZTsKKyAg
ICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPT0gMSkKKyAgICAgICAgYnV0dG9uSW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIpOworICAgIGVsc2UKKyAgICAg
ICAgYnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRv
bkAyeCIpOworCiAgICAgaWYgKGJ1dHRvbkltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJ
KHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtMTEzLDE4ICsxMTQsMzYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQo
KQogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2
YWwpOwogfQogCi1zdGF0aWMgSW1hZ2UqIGJyb2tlbkltYWdlKCkKK3N0YXRpYyBJbWFnZSogYnJv
a2VuSW1hZ2UodW5zaWduZWQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWZQdHI8SW1hZ2U+LCBicm9rZW5JbWFnZSwgKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlIikpKTsKLSAgICByZXR1cm4gYnJva2VuSW1hZ2UuZ2V0KCk7
CisgICAgc3RhdGljIHVuc2lnbmVkIGxhc3REZXZpY2VTY2FsZUZhY3RvciA9IDA7CisKKyAgICAv
LyBJZiBkZXZpY2VTY2FsZUZhY3RvciBpcyAwLCB0aGF0IG1lYW5zIHdlIGNvdWxkbid0IGFjY2Vz
cyB0aGUgUGFnZSB0aHJvdWdoIG1fcmVxdWVzdCB0aGlzIHRpbWUsCisgICAgLy8gc28gdXNlIHRo
ZSBsYXN0RGV2aWNlU2NhbGVGYWN0b3IgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByZXNv
bHV0aW9uLgorICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA9PSAxIHx8IChkZXZpY2VTY2FsZUZh
Y3RvciA9PSAwICYmIGxhc3REZXZpY2VTY2FsZUZhY3RvciA9PSAxKSkgeworICAgICAgICBsYXN0
RGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+LCBicm9rZW5JbWFnZUxvUmVzLCAoSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2UiKSkpOworICAgICAgICByZXR1cm4gYnJva2Vu
SW1hZ2VMb1Jlcy5nZXQoKTsKKyAgICB9CisKKyAgICBsYXN0RGV2aWNlU2NhbGVGYWN0b3IgPSBk
ZXZpY2VTY2FsZUZhY3RvcjsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4s
IGJyb2tlbkltYWdlSGlSZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJ
bWFnZUAyeCIpKSk7CisgICAgcmV0dXJuIGJyb2tlbkltYWdlSGlSZXMuZ2V0KCk7CiB9CiAKIElt
YWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNQdXJnZWFi
bGUoKSk7CiAKLSAgICBpZiAoZXJyb3JPY2N1cnJlZCgpICYmIG1fc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSkKLSAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdlKCk7CisgICAgaWYgKGVycm9yT2NjdXJy
ZWQoKSAmJiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UpIHsKKyAgICAgICAgdW5zaWduZWQgZGV2
aWNlU2NhbGVGYWN0b3IgPSAwOworICAgICAgICBGcmFtZSogZnJhbWUgPSBtX3JlcXVlc3QgPyBt
X3JlcXVlc3QtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmZyYW1lKCkgOiAwOworICAgICAgICBp
ZiAoZnJhbWUpIHsKKyAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkK
KyAgICAgICAgICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IHBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdlKGRldmljZVNjYWxl
RmFjdG9yKTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1faW1h
Z2UuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ltYWdlTWFjLm1tCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiBQYXNzUmVmUHRy
PEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsK
ICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3Jl
QnVuZGxlRmluZGVyIGNsYXNzXV07Ci0gICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUg
cGF0aEZvclJlc291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5
cGU6QCJ0aWZmIl07CisgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJl
c291cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJwbmci
XTsKICAgICBOU0RhdGEgKm5hbWVkSW1hZ2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRz
T2ZGaWxlOmltYWdlUGF0aF07CiAgICAgaWYgKG5hbWVkSW1hZ2VEYXRhKSB7CiAgICAgICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDk0NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0NywxMCArMjQ0NywyOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhp
Y3NDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBQYWludCB0aGUgcmVzaXplciBj
b250cm9sLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPEltYWdlPiwgcmVzaXplQ29y
bmVySW1hZ2UsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29y
bmVyIikpKTsKLSAgICBMYXlvdXRQb2ludCBpbWFnZVBvaW50KGFic1JlY3QubWF4WCgpIC0gcmVz
aXplQ29ybmVySW1hZ2UtPndpZHRoKCksIGFic1JlY3QubWF4WSgpIC0gcmVzaXplQ29ybmVySW1h
Z2UtPmhlaWdodCgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2Uu
Z2V0KCksIGJveC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBpbWFnZVBvaW50KTsKKyAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVy
KCktPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQor
ICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OworICAgIH0KKworICAgIFJlZlB0cjxJbWFnZT4gcmVzaXplQ29ybmVySW1hZ2U7CisgICAgaW50
IGNvcm5lclJlc2l6ZXJXaWR0aCwgY29ybmVyUmVzaXplckhlaWdodDsKKyAgICBpZiAoZGV2aWNl
U2NhbGVGYWN0b3IgPT0gMSkgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJ
bWFnZT4sIHJlc2l6ZUNvcm5lckltYWdlTG9SZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikpKTsKKyAgICAgICAgcmVzaXplQ29ybmVySW1hZ2Ug
PSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOworICAgICAgICBjb3JuZXJSZXNpemVyV2lkdGggPSBy
ZXNpemVDb3JuZXJJbWFnZUxvUmVzLT53aWR0aCgpOworICAgICAgICBjb3JuZXJSZXNpemVySGVp
Z2h0ID0gcmVzaXplQ29ybmVySW1hZ2VMb1Jlcy0+aGVpZ2h0KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+LCByZXNpemVDb3JuZXJJbWFn
ZUhpUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5l
ckAyeCIpKSk7CisgICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1hZ2VI
aVJlczsKKyAgICAgICAgY29ybmVyUmVzaXplcldpZHRoID0gcmVzaXplQ29ybmVySW1hZ2VIaVJl
cy0+d2lkdGgoKSAvIDI7CisgICAgICAgIGNvcm5lclJlc2l6ZXJIZWlnaHQgPSByZXNpemVDb3Ju
ZXJJbWFnZUhpUmVzLT5oZWlnaHQoKSAvIDI7CisgICAgfQorCisgICAgSW50UmVjdCBpbWFnZVJl
Y3QoYWJzUmVjdC5tYXhYKCkgLSBjb3JuZXJSZXNpemVyV2lkdGgsIGFic1JlY3QubWF4WSgpIC0g
Y29ybmVyUmVzaXplckhlaWdodCwgY29ybmVyUmVzaXplcldpZHRoLCBjb3JuZXJSZXNpemVySGVp
Z2h0KTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIGJv
eC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOwogCiAgICAgLy8gRHJhdyBhIGZy
YW1lIGFyb3VuZCB0aGUgcmVzaXplciAoMXB4IGdyZXkgbGluZSkgaWYgdGhlcmUgYXJlIGFueSBz
Y3JvbGxiYXJzIHByZXNlbnQuCiAgICAgLy8gQ2xpcHBpbmcgd2lsbCBleGNsdWRlIHRoZSByaWdo
dCBhbmQgYm90dG9tIGVkZ2VzIG9mIHRoaXMgZnJhbWUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106818</attachid>
            <date>2011-09-08 17:12:32 -0700</date>
            <delta_ts>2011-09-09 12:25:27 -0700</delta_ts>
            <desc>Patch with style fix</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>32007</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMDggIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODE5CisgICAgICAgIFVzZSBoaWdoIHJlc29sdXRp
b24gcGxhdGZvcm0gaW1hZ2VzIHdoZW4gdGhlIGRldmljZVNjYWxlRmFjdG9yID4gMQorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDAwMzA5OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWxs
IG9mIHRoZSBuZXcgaGlnaCByZXNvbHV0aW9uIGltYWdlcy4gSSBhbHNvIHJlbW92ZWQgc29tZSB0
aWZmcyBmcm9tIHRoZSAKKyAgICAgICAgcHJvamVjdCBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIHBu
ZyBlcXVpdmFsZW50cyAodGhhdCBhcmUgYWxyZWFkeSBjaGVja2VkIGludG8gCisgICAgICAgIFdl
YkNvcmUgYW55d2F5KS4gU2luY2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiBpbWFnZXMgYXJlIHBuZ3Ms
IGl0IG1ha2VzIHNlbnNlIHRvIHVzZSAKKyAgICAgICAgcG5ncyBmb3IgYWxsIG9mIHRoZSBpbWFn
ZXMgdGhhdCBsb2FkIHRocm91Z2ggSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCkKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKToKKworICAgICAgICBMb2FkIHRoZSBAMnggcmVzb3VyY2UgZm9y
IGRldmljZVNjYWxlRmFjdG9ycyA+IDEuCisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6
OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpicm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKwogMjAxMS0w
OS0wOCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBLVVJMOjpjb3B5IGRvZXNuJ3QgcHJvZHVjZSBzb21ldGhpbmcgdXNhYmxlIG9uIGFub3Ro
ZXIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAy
eC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAyeC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWxldGVCdXR0b25QcmVzc2Vk
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1h
Z2VAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1hZ2VAMngu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbnVsbFBsdWdpbkAyeC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL251bGxQbHVnaW5AMngucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdGV4dEFyZWFSZXNpemVDb3JuZXJAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lckAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsOCAr
NTcxLDYgQEAKIAkJMUMxMUNDQzYwQUE2MDkzNzAwREFEQjIwIC8qIERPTURvY3VtZW50RnJhZ21l
bnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
LmggKi87IH07CiAJCTFDMTFDQ0M3MEFBNjA5MzcwMERBREIyMCAvKiBET01DREFUQVNlY3Rpb24u
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDg5Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsg
fTsKIAkJMUMxMUNDQzgwQUE2MDkzNzAwREFEQjIwIC8qIERPTUhUTUxFbGVtZW50LmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NURGMkVFQjBBQTM4N0NCMDBBRDY0QzUgLyogRE9NSFRNTEVsZW1lbnQuaCAqLzsgfTsKLQkJMUMx
NEU3NkIwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxNEU3NjkwQUQ4Qzgx
QzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLzsgfTsKLQkJMUMxNEU3NkMw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50aWZmIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyog
ZGVsZXRlQnV0dG9uLnRpZmYgKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0Uy
NEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CiAJCTFDNEM4RjAyMEFEODVEODcwMDk0
NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTcwMSw3ICsxNjk5LDYgQEAKIAkJNzI2MjZF
MDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyog
Rm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJl
bmRlcklucHV0U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5j
cHAgKi87IH07CiAJCTc1MEQwMjk0MTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUwRDAy
OTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi87IH07Ci0JCTc1MEQw
MkMxMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcg
LyogaW5wdXRTcGVlY2gudGlmZiAqLzsgfTsKIAkJNzUzNUJDOTQxMjAyMENGRjAwMzdFQzQ1IC8q
IFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTM1QkM5MjEyMDIwQ0ZGMDAzN0VDNDUgLyogU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcCAqLzsgfTsKIAkJNzUzNUJDOTUxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVj
aElucHV0Q2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVjaElucHV0Q2xpZW50TW9j
ay5oICovOyB9OwogCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsg
fTsKQEAgLTI5MjQsNiArMjkyMSwxNCBAQAogCQk5MzA3RjFEODBBRjJENTkwMDBEQkEzMUEgLyog
SGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMwN0YxRDYwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA5MDg5MTBBRjdF
REU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDkwODkwMEFGN0VERTQwMDgxREYwMSAvKiBIaXRUZXN0
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMEZDNjhBMTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwRkM2ODkxMDcyQjky
ODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxNTNCQ0QxNDE3RkJCRjAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvbkAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMTUzQkNDMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngucG5n
ICovOyB9OworCQk5MzE1M0JDRjE0MTdGQkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMTUzQkNFMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyAq
LzsgfTsKKwkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkQ5
MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovOyB9OworCQk5MzE1M0JE
QzE0MTk1OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEQjE0MTk1OUJCMDBG
Q0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovOyB9OworCQk5MzE1M0JERTE0MTk1
OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0
ZUJ1dHRvbi5wbmcgKi87IH07CisJCTkzMTUzQkUwMTQxOTVBMjgwMEZDRjVCRSAvKiBkZWxldGVC
dXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQu
cG5nICovOyB9OworCQk5MzE1M0JFMjE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBu
ZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNC
RTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi87IH07CisJCTkzMTUzQkU0
MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkUzMTQxOTVCMjkwMEZDRjVCRSAvKiBp
bnB1dFNwZWVjaC5wbmcgKi87IH07CiAJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
MzI2REMwQzA5REFENUQ2MDBBRkM4NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3
IC8qIENoYXJzZXREYXRhLmNwcCAqLzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8q
IEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTMwNDIsNiArMzA0Nyw3IEBACiAJCTkzNjI2NDBCMERF
MTEzN0QwMDlENUEwMCAvKiBDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAg
LyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNjNCNjJDMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5
UHJvcGVydHlMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNjNCNjJBMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmNw
cCAqLzsgfTsKIAkJOTM2M0I2MkQwRjhFOEZFMDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjNC
NjJCMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTM3MDkxOEQxNDE2RDg2QjAw
NDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLzsgfTsKIAkJOTM3OTlFRjgwQkYyNzQzNjAw
RDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29y
ZEJyZWFrLmNwcCAqLzsgfTsKIAkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldv
cmRCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM3OTlFRjcwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovOyB9OwogCQk5
MzgwRjQ3MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBX
aWRnZXQuY3BwICovOyB9OwpAQCAtNDA4MSw3ICs0MDg3LDYgQEAKIAkJQUIyNDdBNkMwQUZENjM4
MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQjI0N0E2QTBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xp
ZGVyLmNwcCAqLzsgfTsKIAkJQUIyNDdBNkQwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyNDdB
NkIwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oICovOyB9OwogCQlBQjMxQzkxRTEw
QUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMzFDOTFEMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5l
Q2xhbXBWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUFCNDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0MjYxRDcwQTJG
NkM5NzAwQkREMTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmICovOyB9OwogCQlBQjRDQjRFQjBCOEJE
QTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIw
IC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLzsgfTsKIAkJQUI2N0QxQTgwOTdGM0FF
MzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5k
ZXJUZXh0Q29udHJvbC5jcHAgKi87IH07CiAJCUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUI2N0QxQTcwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmgg
Ki87IH07CkBAIC01Njg0LDcgKzU2ODksNiBAQAogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5Nzgg
LyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmgg
Ki87IH07CiAJCUU0RUVGRkM4MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFRUZG
QzYwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUU0
RUVGRkM5MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUVGRkM3MEQzNDU1MEMwMDQ2
OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCAqLzsgfTsKLQkJRUQwNDhBQkMwODMzRjEzMjAw
NkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0
ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBB
QzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVENTAx
REM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRp
dG9yTWFjLm1tICovOyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MTAwLDggKzcxMDQsNiBAQAogCQkxQUZFMTE4QzBD
QkZGQzRFMDAzMDE3RkEgLyogU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU1FMUmVzdWx0U2V0Um93TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRS
b3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkND
NDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUMxNEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNz
ZWQudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmY7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDMTRFNzZBMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0
b24udGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b24udGlmZjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5N0IwRDdFMjRFQzAw
QkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNEM4RUZGMEFE
ODVEODcwMDk0NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTgz
NjcsNyArODM2OSw2IEBACiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUwRDAyOTExMUQwRTdGMzAwQkQx
QjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzUwRDAyOTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1MEQwMkMwMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1
dFNwZWVjaC50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9IGlucHV0U3BlZWNoLnRpZmY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1MzVCQzkyMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1
IC8qIFNwZWVjaElucHV0Q2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTcGVlY2hJbnB1dENsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E3MTAyRTAwRTgw
MDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk1NjIsNiArOTU2MywxNCBAQAogCQk5MzA3RjFENjBBRjJENTkwMDBEQkEz
MUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA5MDg5MDBB
RjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhpdFRlc3RSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMEZDNjg5MTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJkZWxldGVCdXR0b25AMngucG5nIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1
dHRvblByZXNzZWRAMngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gImRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRDkxNDE4MUY3QTAwRkNGNUJF
IC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibWlzc2luZ0ltYWdlQDJ4LnBuZyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAv
KiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5l
ci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkREMTQxOTU5RjQwMEZD
RjVCRSAvKiBkZWxldGVCdXR0b24ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uLnBuZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvblByZXNzZWQucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAv
KiBtaXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRTMxNDE5NUIyOTAwRkNGNUJFIC8qIGlucHV0U3Bl
ZWNoLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBuZzsgcGF0aCA9IGlucHV0U3BlZWNoLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyN0E5NDEwOTk2OEQxQTAwNjhB
NTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVz
Y3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjgxLDYgKzk2
OTAsNyBAQAogCQk5MzYzQjYyQTBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5UHJvcGVy
dHlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2M0I2MkIwRjhFOEZF
MDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGlzdG9yeVByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzZERDAzQTA5Q0VBQzI3MDA1NkFFOEMgLyogUmFuZ2UuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3
MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsg
cGF0aCA9ICJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzk5RUY3MEJGMjc0MzYwMEQwRjIz
MCAvKiBSZW5kZXJXb3JkQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyV29yZEJyZWFrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODBGNDcx
MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDYzNSw3ICsxMDY0NSw2IEBACiAJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJT
bGlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNs
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjQ3QTZCMEFGRDYzODMw
MDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjMxQzkx
RDEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGluZUNsYW1wVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0xpbmVDbGFtcFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFCNDI2MUQ3MEEyRjZDOTcwMEJE
RDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBtaXNzaW5nSW1hZ2UudGlmZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIwIC8q
IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUI2N0QxQTYwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJv
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNjdEMUE3MDk3RjNBRTMwMEY5
MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyVGV4dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNDY0LDcgKzEyNDczLDYgQEAKIAkJRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdl
YWJsZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZWFibGVC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFRUZGQzYwRDM0NTUwQzAw
NDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Db25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcg
LyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNv
cm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0Qjkx
MDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQ1
MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgzLDE1ICsxMzE5MSwxOCBA
QAogCQkJCTQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLywKIAkJ
CQk0NkQ0RjI0NzBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJzb3IucG5nICovLAog
CQkJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLywKLQkJCQkx
QzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgKi8sCi0JCQkJMUMx
NEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLywKKwkJ
CQk5MzE1M0JERDE0MTk1OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyAqLywKKwkJCQk5
MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uQDJ4LnBuZyAqLywKKwkJCQk5
MzE1M0JERjE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgKi8sCisJ
CQkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
ICovLAogCQkJCTg1MTM2Qzg5MEFFRDY2NTgwMEY5MEEzRCAvKiBlYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM4QTBBRUQ2NjU4MDBGOTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJz
b3IucG5nICovLAogCQkJCTg1MTM2QzhCMEFFRDY2NTgwMEY5MEEzRCAvKiBoZWxwQ3Vyc29yLnBu
ZyAqLywKLQkJCQk3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiAq
LywKKwkJCQk5MzE1M0JFMzE0MTk1QjI5MDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nICovLAog
CQkJCTg1MTM2QzhDMEFFRDY2NTgwMEY5MEEzRCAvKiBsaW5rQ3Vyc29yLnBuZyAqLywKIAkJCQlC
Q0FEMTgwODEzMUM3QTBEMDA5OTA0MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyAqLywKLQkJCQlB
QjQyNjFENzBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2luZ0ltYWdlLnRpZmYgKi8sCisJCQkJOTMx
NTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi8sCisJCQkJOTMxNTNC
RDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8sCiAJCQkJODUxMzZD
OEQwQUVENjY1ODAwRjkwQTNEIC8qIG1vdmVDdXJzb3IucG5nICovLAogCQkJCTQ2RjlENURCMEIw
RDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nICovLAogCQkJCTQ2QkQxNkUyMEIyNzk0
NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLywKQEAgLTEzMjA1LDcgKzEzMjE2LDggQEAK
IAkJCQk4NTEzNkM5NDBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhFYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM5NTBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhSZXNpemVDdXJzb3Iu
cG5nICovLAogCQkJCTg1MTM2Qzk2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RSZXNpemVD
dXJzb3IucG5nICovLAotCQkJCUVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJl
c2l6ZUNvcm5lci50aWZmICovLAorCQkJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0
QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8sCisJCQkJOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLywKIAkJCQk0NkQ0RjI0ODBBRjk3RTgxMDAz
NTM4NUEgLyogdmVydGljYWxUZXh0Q3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM5NzBBRUQ2NjU5
MDBGOTBBM0QgLyogd2FpdEN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTgwQUVENjY1OTAwRjkw
QTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nICovLApAQCAtMjM1OTcsMTYgKzIzNjA5LDEyIEBA
CiAJCQkJNDZENEYyNDkwQUY5N0U4MTAwMzUzODVBIC8qIGNlbGxDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQk0NkQ0RjI0QTBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NjE0QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyog
Y29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTFDMTRFNzZDMEFEOEM4MUMwMEI2
MTU4QiAvKiBkZWxldGVCdXR0b24udGlmZiBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJMUMxNEU3NkIw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJODUxMzZDOTkwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RSZXNpemVDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5MDBGOTBBM0QgLyogZWFzdFdl
c3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QjBBRUQ2NjU5
MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTc1MEQwMkMx
MTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLywKIAkJ
CQk4NTEzNkM5QzBBRUQ2NjU5MDBGOTBBM0QgLyogbGlua0N1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUJDQUQxODBBMTMxQzdBMEQwMDk5MDQwNiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdz
IGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0RDMTQwNTBERDM5MzRDMDA2RUFDRDMgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQUI0MjYxRDgwQTJGNkM5NzAwQkRE
MTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5RDBB
RUQ2NjU5MDBGOTBBM0QgLyogbW92ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2
RjlENURFMEIwRDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQk0NkJEMTZFMzBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLApAQCAtMjM2MjAsMTIgKzIzNjI4LDIwIEBACiAJCQkJODUxMzZDQTQwQUVENjY1
OTAwRjkwQTNEIC8qIHNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTg1MTM2Q0E1MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFJlc2l6ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTg1MTM2Q0E2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQlFRDA0OEFCQzA4MzNGMTMyMDA2
RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
NDZENEYyNEIwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLAogCQkJCTg1MTM2Q0E3MEFFRDY2NTkwMEY5MEEzRCAvKiB3YWl0Q3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0Iw
QzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJ
CQk5MzcwOTE4RDE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5n
IGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1M0JDRDE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCQ0YxNDE3RkJEQjAwRkNG
NUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5
MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8q
IGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkUwMTQxOTVBMjgw
MEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
OTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTkzMTUzQkU0MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpA
QCAtMjQwLDcgKzI0MSwxNiBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURl
bGV0CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51
bWJlcihidXR0b25IZWlnaHQpICsgInB4Iik7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVWaXNpYmxlKTsKIAotICAgIFJlZlB0cjxJbWFnZT4g
YnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIp
OworICAgIHVuc2lnbmVkIGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpOworCisgICAgUmVmUHRyPEltYWdlPiBidXR0b25JbWFnZTsKKyAg
ICBpZiAoZGV2aWNlU2NhbGVGYWN0b3IgPT0gMSkKKyAgICAgICAgYnV0dG9uSW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIpOworICAgIGVsc2UKKyAgICAg
ICAgYnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRv
bkAyeCIpOworCiAgICAgaWYgKGJ1dHRvbkltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJ
KHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtMTEzLDE4ICsxMTQsMzYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQo
KQogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2
YWwpOwogfQogCi1zdGF0aWMgSW1hZ2UqIGJyb2tlbkltYWdlKCkKK3N0YXRpYyBJbWFnZSogYnJv
a2VuSW1hZ2UodW5zaWduZWQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWZQdHI8SW1hZ2U+LCBicm9rZW5JbWFnZSwgKEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgibWlzc2luZ0ltYWdlIikpKTsKLSAgICByZXR1cm4gYnJva2VuSW1hZ2UuZ2V0KCk7
CisgICAgc3RhdGljIHVuc2lnbmVkIGxhc3REZXZpY2VTY2FsZUZhY3RvciA9IDA7CisKKyAgICAv
LyBJZiBkZXZpY2VTY2FsZUZhY3RvciBpcyAwLCB0aGF0IG1lYW5zIHdlIGNvdWxkbid0IGFjY2Vz
cyB0aGUgUGFnZSB0aHJvdWdoIG1fcmVxdWVzdCB0aGlzIHRpbWUsCisgICAgLy8gc28gdXNlIHRo
ZSBsYXN0RGV2aWNlU2NhbGVGYWN0b3IgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByZXNv
bHV0aW9uLgorICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA9PSAxIHx8ICghZGV2aWNlU2NhbGVG
YWN0b3IgJiYgbGFzdERldmljZVNjYWxlRmFjdG9yID09IDEpKSB7CisgICAgICAgIGxhc3REZXZp
Y2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yOworICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFJlZlB0cjxJbWFnZT4sIGJyb2tlbkltYWdlTG9SZXMsIChJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZSIpKSk7CisgICAgICAgIHJldHVybiBicm9rZW5JbWFn
ZUxvUmVzLmdldCgpOworICAgIH0KKworICAgIGxhc3REZXZpY2VTY2FsZUZhY3RvciA9IGRldmlj
ZVNjYWxlRmFjdG9yOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPEltYWdlPiwgYnJv
a2VuSW1hZ2VIaVJlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibWlzc2luZ0ltYWdl
QDJ4IikpKTsKKyAgICByZXR1cm4gYnJva2VuSW1hZ2VIaVJlcy5nZXQoKTsKIH0KIAogSW1hZ2Uq
IENhY2hlZEltYWdlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc1B1cmdlYWJsZSgp
KTsKIAotICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9zaG91bGRQYWludEJyb2tlbkltYWdl
KQotICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoKTsKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCgp
ICYmIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkgeworICAgICAgICB1bnNpZ25lZCBkZXZpY2VT
Y2FsZUZhY3RvciA9IDA7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVx
dWVzdC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6IDA7CisgICAgICAgIGlmIChm
cmFtZSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAg
ICAgICAgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoZGV2aWNlU2NhbGVGYWN0
b3IpOworICAgIH0KIAogICAgIGlmIChtX2ltYWdlKQogICAgICAgICByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0JKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEKIFBhc3NSZWZQdHI8SW1h
Z2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogewogICAg
IE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVCdW5k
bGVGaW5kZXIgY2xhc3NdXTsKLSAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRo
Rm9yUmVzb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpA
InRpZmYiXTsKKyAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3Vy
Y2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJdOwog
ICAgIE5TRGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6aW1hZ2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKICAgICAgICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gOTQ1NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQ3
LDEwICsyNDQ3LDI4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFBhaW50IHRoZSByZXNpemVyIGNvbnRy
b2wuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+LCByZXNpemVDb3JuZXJJ
bWFnZSwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3JuZXIi
KSkpOwotICAgIExheW91dFBvaW50IGltYWdlUG9pbnQoYWJzUmVjdC5tYXhYKCkgLSByZXNpemVD
b3JuZXJJbWFnZS0+d2lkdGgoKSwgYWJzUmVjdC5tYXhZKCkgLSByZXNpemVDb3JuZXJJbWFnZS0+
aGVpZ2h0KCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQo
KSwgYm94LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGltYWdlUG9pbnQpOworICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+
ZnJhbWUoKSkgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAg
ICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Cisg
ICAgfQorCisgICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKKyAgICBpbnQgY29y
bmVyUmVzaXplcldpZHRoLCBjb3JuZXJSZXNpemVySGVpZ2h0OworICAgIGlmIChkZXZpY2VTY2Fs
ZUZhY3RvciA9PSAxKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPEltYWdl
PiwgcmVzaXplQ29ybmVySW1hZ2VMb1JlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
dGV4dEFyZWFSZXNpemVDb3JuZXIiKSkpOworICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJl
c2l6ZUNvcm5lckltYWdlTG9SZXM7CisgICAgICAgIGNvcm5lclJlc2l6ZXJXaWR0aCA9IHJlc2l6
ZUNvcm5lckltYWdlTG9SZXMtPndpZHRoKCk7CisgICAgICAgIGNvcm5lclJlc2l6ZXJIZWlnaHQg
PSByZXNpemVDb3JuZXJJbWFnZUxvUmVzLT5oZWlnaHQoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4sIHJlc2l6ZUNvcm5lckltYWdlSGlS
ZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4
IikpKTsKKyAgICAgICAgcmVzaXplQ29ybmVySW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUhpUmVz
OworICAgICAgICBjb3JuZXJSZXNpemVyV2lkdGggPSByZXNpemVDb3JuZXJJbWFnZUhpUmVzLT53
aWR0aCgpIC8gMjsKKyAgICAgICAgY29ybmVyUmVzaXplckhlaWdodCA9IHJlc2l6ZUNvcm5lcklt
YWdlSGlSZXMtPmhlaWdodCgpIC8gMjsKKyAgICB9CisKKyAgICBJbnRSZWN0IGltYWdlUmVjdChh
YnNSZWN0Lm1heFgoKSAtIGNvcm5lclJlc2l6ZXJXaWR0aCwgYWJzUmVjdC5tYXhZKCkgLSBjb3Ju
ZXJSZXNpemVySGVpZ2h0LCBjb3JuZXJSZXNpemVyV2lkdGgsIGNvcm5lclJlc2l6ZXJIZWlnaHQp
OworICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgYm94LT5z
dHlsZSgpLT5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiAKICAgICAvLyBEcmF3IGEgZnJhbWUg
YXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3JleSBsaW5lKSBpZiB0aGVyZSBhcmUgYW55IHNjcm9s
bGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlwcGluZyB3aWxsIGV4Y2x1ZGUgdGhlIHJpZ2h0IGFu
ZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFtZS4K
</data>
<flag name="review"
          id="103339"
          type_id="1"
          status="-"
          setter="aroben"
    />
    <flag name="commit-queue"
          id="103350"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106897</attachid>
            <date>2011-09-09 12:03:36 -0700</date>
            <delta_ts>2011-09-09 14:22:17 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>31811</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMDkgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODE5CisgICAgICAgIFVzZSBoaWdoIHJlc29sdXRp
b24gcGxhdGZvcm0gaW1hZ2VzIHdoZW4gdGhlIGRldmljZVNjYWxlRmFjdG9yID4gMQorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDAwMzA5OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWxs
IG9mIHRoZSBuZXcgaGlnaCByZXNvbHV0aW9uIGltYWdlcy4gSSBhbHNvIHJlbW92ZWQgc29tZSB0
aWZmcyBmcm9tIHRoZSAKKyAgICAgICAgcHJvamVjdCBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIHBu
ZyBlcXVpdmFsZW50cyAodGhhdCBhcmUgYWxyZWFkeSBjaGVja2VkIGludG8gCisgICAgICAgIFdl
YkNvcmUgYW55d2F5KS4gU2luY2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiBpbWFnZXMgYXJlIHBuZ3Ms
IGl0IG1ha2VzIHNlbnNlIHRvIHVzZSAKKyAgICAgICAgcG5ncyBmb3IgYWxsIG9mIHRoZSBpbWFn
ZXMgdGhhdCBsb2FkIHRocm91Z2ggSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCkKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKToKKworICAgICAgICBMb2FkIHRoZSBAMnggcmVzb3VyY2UgZm9y
IGRldmljZVNjYWxlRmFjdG9ycyA+IDEuCisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6
OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpicm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKwogMjAxMS0w
OS0wOCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBLVVJMOjpjb3B5IGRvZXNuJ3QgcHJvZHVjZSBzb21ldGhpbmcgdXNhYmxlIG9uIGFub3Ro
ZXIgdGhyZWFkLgpJbmRleDogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAy
eC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvbkAyeC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWxldGVCdXR0b25QcmVzc2Vk
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1h
Z2VAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9taXNzaW5nSW1hZ2VAMngu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbnVsbFBsdWdpbkAyeC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL251bGxQbHVnaW5AMngucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdGV4dEFyZWFSZXNpemVDb3JuZXJAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy90ZXh0QXJlYVJlc2l6ZUNvcm5lckAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsOCAr
NTcxLDYgQEAKIAkJMUMxMUNDQzYwQUE2MDkzNzAwREFEQjIwIC8qIERPTURvY3VtZW50RnJhZ21l
bnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50
LmggKi87IH07CiAJCTFDMTFDQ0M3MEFBNjA5MzcwMERBREIyMCAvKiBET01DREFUQVNlY3Rpb24u
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDg5Q0NGMEE5OEM0MjcwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24uaCAqLzsg
fTsKIAkJMUMxMUNDQzgwQUE2MDkzNzAwREFEQjIwIC8qIERPTUhUTUxFbGVtZW50LmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NURGMkVFQjBBQTM4N0NCMDBBRDY0QzUgLyogRE9NSFRNTEVsZW1lbnQuaCAqLzsgfTsKLQkJMUMx
NEU3NkIwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxNEU3NjkwQUQ4Qzgx
QzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLzsgfTsKLQkJMUMxNEU3NkMw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50aWZmIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyog
ZGVsZXRlQnV0dG9uLnRpZmYgKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0Uy
NEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CiAJCTFDNEM4RjAyMEFEODVEODcwMDk0
NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzRDOEYwMDBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTcwMSw3ICsxNjk5LDYgQEAKIAkJNzI2MjZF
MDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyog
Rm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJl
bmRlcklucHV0U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5j
cHAgKi87IH07CiAJCTc1MEQwMjk0MTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUwRDAy
OTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi87IH07Ci0JCTc1MEQw
MkMxMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcg
LyogaW5wdXRTcGVlY2gudGlmZiAqLzsgfTsKIAkJNzUzNUJDOTQxMjAyMENGRjAwMzdFQzQ1IC8q
IFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTM1QkM5MjEyMDIwQ0ZGMDAzN0VDNDUgLyogU3BlZWNoSW5wdXRD
bGllbnRNb2NrLmNwcCAqLzsgfTsKIAkJNzUzNUJDOTUxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVj
aElucHV0Q2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVjaElucHV0Q2xpZW50TW9j
ay5oICovOyB9OwogCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLzsg
fTsKQEAgLTI5MjQsNiArMjkyMSwxNCBAQAogCQk5MzA3RjFEODBBRjJENTkwMDBEQkEzMUEgLyog
SGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMwN0YxRDYwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzA5MDg5MTBBRjdF
REU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDkwODkwMEFGN0VERTQwMDgxREYwMSAvKiBIaXRUZXN0
UmVxdWVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzMEZDNjhBMTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMwRkM2ODkxMDcyQjky
ODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxNTNCQ0QxNDE3RkJCRjAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvbkAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMTUzQkNDMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngucG5n
ICovOyB9OworCQk5MzE1M0JDRjE0MTdGQkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3Nl
ZEAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMTUzQkNFMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyAq
LzsgfTsKKwkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkQ5
MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovOyB9OworCQk5MzE1M0JE
QzE0MTk1OUJDMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEQjE0MTk1OUJCMDBG
Q0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovOyB9OworCQk5MzE1M0JERTE0MTk1
OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0
ZUJ1dHRvbi5wbmcgKi87IH07CisJCTkzMTUzQkUwMTQxOTVBMjgwMEZDRjVCRSAvKiBkZWxldGVC
dXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQu
cG5nICovOyB9OworCQk5MzE1M0JFMjE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBu
ZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNC
RTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi87IH07CisJCTkzMTUzQkU0
MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkUzMTQxOTVCMjkwMEZDRjVCRSAvKiBp
bnB1dFNwZWVjaC5wbmcgKi87IH07CiAJCTkzMUJDQzYxMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
MzI2REMwQzA5REFENUQ2MDBBRkM4NDcgLyogQ2hhcnNldERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUMwOUQxNEVFNjAwMEU2MUQ3
IC8qIENoYXJzZXREYXRhLmNwcCAqLzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8q
IEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTMwNDIsNiArMzA0Nyw3IEBACiAJCTkzNjI2NDBCMERF
MTEzN0QwMDlENUEwMCAvKiBDU1NSZWZsZWN0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYyNjQwQTBERTExMzdEMDA5RDVBMDAg
LyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNjNCNjJDMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5
UHJvcGVydHlMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNjNCNjJBMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmNw
cCAqLzsgfTsKIAkJOTM2M0I2MkQwRjhFOEZFMDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjNC
NjJCMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTM3MDkxOEQxNDE2RDg2QjAw
NDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLzsgfTsKIAkJOTM3OTlFRjgwQkYyNzQzNjAw
RDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29y
ZEJyZWFrLmNwcCAqLzsgfTsKIAkJOTM3OTlFRjkwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldv
cmRCcmVhay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM3OTlFRjcwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5oICovOyB9OwogCQk5
MzgwRjQ3MzA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzODBGNDcxMDlBMTFBQjQwMDFGREIzNCAvKiBX
aWRnZXQuY3BwICovOyB9OwpAQCAtNDA4MSw3ICs0MDg3LDYgQEAKIAkJQUIyNDdBNkMwQUZENjM4
MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBQjI0N0E2QTBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xp
ZGVyLmNwcCAqLzsgfTsKIAkJQUIyNDdBNkQwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyNDdB
NkIwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5oICovOyB9OwogCQlBQjMxQzkxRTEw
QUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMzFDOTFEMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5l
Q2xhbXBWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCUFCNDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0MjYxRDcwQTJG
NkM5NzAwQkREMTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmICovOyB9OwogCQlBQjRDQjRFQjBCOEJE
QTNEMDA5RjQwQjAgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIw
IC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLzsgfTsKIAkJQUI2N0QxQTgwOTdGM0FF
MzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5k
ZXJUZXh0Q29udHJvbC5jcHAgKi87IH07CiAJCUFCNjdEMUE5MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUI2N0QxQTcwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmgg
Ki87IH07CkBAIC01Njg0LDcgKzU2ODksNiBAQAogCQlFNEQ2ODc3OTBFRDdBRTRGMDA2RUE5Nzgg
LyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmgg
Ki87IH07CiAJCUU0RUVGRkM4MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFRUZG
QzYwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUU0
RUVGRkM5MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUVGRkM3MEQzNDU1MEMwMDQ2
OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuaCAqLzsgfTsKLQkJRUQwNDhBQkMwODMzRjEzMjAw
NkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0
ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBB
QzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVENTAx
REM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRp
dG9yTWFjLm1tICovOyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVERTNBNEZG
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MTAwLDggKzcxMDQsNiBAQAogCQkxQUZFMTE4QzBD
QkZGQzRFMDAzMDE3RkEgLyogU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU1FMUmVzdWx0U2V0Um93TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBRkUxMTk3MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRS
b3dMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGRTExOTgwQ0JGRkND
NDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUMxNEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNz
ZWQudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmY7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTFDMTRFNzZBMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0
b24udGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnRpZmY7IHBhdGggPSBkZWxldGVCdXR0b24udGlmZjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5N0IwRDdFMjRFQzAw
QkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNEM4RUZGMEFE
ODVEODcwMDk0NzVDRSAvKiBEZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTgz
NjcsNyArODM2OSw2IEBACiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUwRDAyOTExMUQwRTdGMzAwQkQx
QjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzUwRDAyOTIxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklucHV0U3BlZWNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcklucHV0U3BlZWNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1MEQwMkMwMTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1
dFNwZWVjaC50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9IGlucHV0U3BlZWNoLnRpZmY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1MzVCQzkyMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BlZWNo
SW5wdXRDbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzUzNUJDOTMxMjAyMENGRjAwMzdFQzQ1
IC8qIFNwZWVjaElucHV0Q2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTcGVlY2hJbnB1dENsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svU3BlZWNoSW5wdXRDbGll
bnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E3MTAyRTAwRTgw
MDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk1NjIsNiArOTU2MywxNCBAQAogCQk5MzA3RjFENjBBRjJENTkwMDBEQkEz
MUEgLyogSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA5MDg5MDBB
RjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhpdFRlc3RSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzMEZDNjg5MTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJkZWxldGVCdXR0b25AMngucG5nIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1
dHRvblByZXNzZWRAMngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gImRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRDkxNDE4MUY3QTAwRkNGNUJF
IC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibWlzc2luZ0ltYWdlQDJ4LnBuZyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAv
KiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5l
ci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkREMTQxOTU5RjQwMEZD
RjVCRSAvKiBkZWxldGVCdXR0b24ucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uLnBuZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRl
bGV0ZUJ1dHRvblByZXNzZWQucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAv
KiBtaXNzaW5nSW1hZ2UucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbWlzc2luZ0ltYWdlLnBuZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCRTMxNDE5NUIyOTAwRkNGNUJFIC8qIGlucHV0U3Bl
ZWNoLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBuZzsgcGF0aCA9IGlucHV0U3BlZWNoLnBuZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyN0E5NDEwOTk2OEQxQTAwNjhB
NTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVz
Y3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NjgxLDYgKzk2
OTAsNyBAQAogCQk5MzYzQjYyQTBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5UHJvcGVy
dHlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2M0I2MkIwRjhFOEZF
MDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGlzdG9yeVByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzZERDAzQTA5Q0VBQzI3MDA1NkFFOEMgLyogUmFuZ2UuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJhbmdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM3
MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsg
cGF0aCA9ICJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Mzc5OUVGNjBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNzk5RUY3MEJGMjc0MzYwMEQwRjIz
MCAvKiBSZW5kZXJXb3JkQnJlYWsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyV29yZEJyZWFrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzODBGNDcx
MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRnZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpZGdldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDYzNSw3ICsxMDY0NSw2IEBACiAJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJT
bGlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNs
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjQ3QTZCMEFGRDYzODMw
MDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjMxQzkx
RDEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTGluZUNsYW1wVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0xpbmVDbGFtcFZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFCNDI2MUQ3MEEyRjZDOTcwMEJE
RDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBtaXNzaW5nSW1hZ2UudGlmZjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUI0Q0I0RUEwQjhCREEzRDAwOUY0MEIwIC8q
IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQUI2N0QxQTYwOTdGM0FFMzAwRjkzOTJFIC8qIFJlbmRlclRleHRDb250cm9sLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJv
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNjdEMUE3MDk3RjNBRTMwMEY5
MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyVGV4dENvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyNDY0LDcgKzEyNDczLDYgQEAKIAkJRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdl
YWJsZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZWFibGVC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFRUZGQzYwRDM0NTUwQzAw
NDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXVkaW9Db25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcg
LyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNv
cm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0Qjkx
MDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQ1
MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBFZGl0b3JNYWMubW07IHBhdGggPSBtYWMvRWRpdG9yTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgzLDE1ICsxMzE5MSwxOCBA
QAogCQkJCTQ2RDRGMjQ2MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyAqLywKIAkJ
CQk0NkQ0RjI0NzBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJzb3IucG5nICovLAog
CQkJCTQ2MTRBMUZEMEIyM0E4RDYwMDQ0NkUxQyAvKiBjb3B5Q3Vyc29yLnBuZyAqLywKLQkJCQkx
QzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgKi8sCi0JCQkJMUMx
NEU3NjkwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiAqLywKKwkJ
CQk5MzE1M0JERDE0MTk1OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyAqLywKKwkJCQk5
MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uQDJ4LnBuZyAqLywKKwkJCQk5
MzE1M0JERjE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgKi8sCisJ
CQkJOTMxNTNCQ0UxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5n
ICovLAogCQkJCTg1MTM2Qzg5MEFFRDY2NTgwMEY5MEEzRCAvKiBlYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM4QTBBRUQ2NjU4MDBGOTBBM0QgLyogZWFzdFdlc3RSZXNpemVDdXJz
b3IucG5nICovLAogCQkJCTg1MTM2QzhCMEFFRDY2NTgwMEY5MEEzRCAvKiBoZWxwQ3Vyc29yLnBu
ZyAqLywKLQkJCQk3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiAq
LywKKwkJCQk5MzE1M0JFMzE0MTk1QjI5MDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nICovLAog
CQkJCTg1MTM2QzhDMEFFRDY2NTgwMEY5MEEzRCAvKiBsaW5rQ3Vyc29yLnBuZyAqLywKIAkJCQlC
Q0FEMTgwODEzMUM3QTBEMDA5OTA0MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyAqLywKLQkJCQlB
QjQyNjFENzBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2luZ0ltYWdlLnRpZmYgKi8sCisJCQkJOTMx
NTNCRTExNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgKi8sCisJCQkJOTMxNTNC
RDkxNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgKi8sCiAJCQkJODUxMzZD
OEQwQUVENjY1ODAwRjkwQTNEIC8qIG1vdmVDdXJzb3IucG5nICovLAogCQkJCTQ2RjlENURCMEIw
RDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nICovLAogCQkJCTQ2QkQxNkUyMEIyNzk0
NzMwMDFGMDgzOSAvKiBub25lQ3Vyc29yLnBuZyAqLywKQEAgLTEzMjA1LDcgKzEzMjE2LDggQEAK
IAkJCQk4NTEzNkM5NDBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhFYXN0UmVzaXplQ3Vyc29yLnBu
ZyAqLywKIAkJCQk4NTEzNkM5NTBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhSZXNpemVDdXJzb3Iu
cG5nICovLAogCQkJCTg1MTM2Qzk2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RSZXNpemVD
dXJzb3IucG5nICovLAotCQkJCUVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJl
c2l6ZUNvcm5lci50aWZmICovLAorCQkJCTkzMTUzQkRCMTQxOTU5QkIwMEZDRjVCRSAvKiB0ZXh0
QXJlYVJlc2l6ZUNvcm5lci5wbmcgKi8sCisJCQkJOTM3MDkxOEMxNDE2RDg2QjAwNDc3MzMzIC8q
IHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyAqLywKIAkJCQk0NkQ0RjI0ODBBRjk3RTgxMDAz
NTM4NUEgLyogdmVydGljYWxUZXh0Q3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM5NzBBRUQ2NjU5
MDBGOTBBM0QgLyogd2FpdEN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTgwQUVENjY1OTAwRjkw
QTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nICovLApAQCAtMjM1OTcsMTYgKzIzNjA5LDEyIEBA
CiAJCQkJNDZENEYyNDkwQUY5N0U4MTAwMzUzODVBIC8qIGNlbGxDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQk0NkQ0RjI0QTBBRjk3RTgxMDAzNTM4NUEgLyogY29udGV4dE1lbnVDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NjE0QTFGRTBCMjNBOEQ2MDA0NDZFMUMgLyog
Y29weUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTFDMTRFNzZDMEFEOEM4MUMwMEI2
MTU4QiAvKiBkZWxldGVCdXR0b24udGlmZiBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJMUMxNEU3NkIw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQudGlmZiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJODUxMzZDOTkwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RSZXNpemVDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QTBBRUQ2NjU5MDBGOTBBM0QgLyogZWFzdFdl
c3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5QjBBRUQ2NjU5
MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAotCQkJCTc1MEQwMkMx
MTFEMEVFN0QwMEJEMUIyNyAvKiBpbnB1dFNwZWVjaC50aWZmIGluIFJlc291cmNlcyAqLywKIAkJ
CQk4NTEzNkM5QzBBRUQ2NjU5MDBGOTBBM0QgLyogbGlua0N1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCUJDQUQxODBBMTMxQzdBMEQwMDk5MDQwNiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdz
IGluIFJlc291cmNlcyAqLywKIAkJCQkxQ0RDMTQwNTBERDM5MzRDMDA2RUFDRDMgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQUI0MjYxRDgwQTJGNkM5NzAwQkRE
MTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkM5RDBB
RUQ2NjU5MDBGOTBBM0QgLyogbW92ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2
RjlENURFMEIwRDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQk0NkJEMTZFMzBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLApAQCAtMjM2MjAsMTIgKzIzNjI4LDIwIEBACiAJCQkJODUxMzZDQTQwQUVENjY1
OTAwRjkwQTNEIC8qIHNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTg1MTM2Q0E1MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFJlc2l6ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTg1MTM2Q0E2MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aFdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQlFRDA0OEFCQzA4MzNGMTMyMDA2
RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
NDZENEYyNEIwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLAogCQkJCTg1MTM2Q0E3MEFFRDY2NTkwMEY5MEEzRCAvKiB3YWl0Q3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0Iw
QzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJ
CQk5MzcwOTE4RDE0MTZEODZCMDA0NzczMzMgLyogdGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5n
IGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1M0JDRDE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCQ0YxNDE3RkJEQjAwRkNG
NUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5
MzE1M0JEQTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8q
IGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkUwMTQxOTVBMjgw
MEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
OTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4gUmVzb3VyY2Vz
ICovLAorCQkJCTkzMTUzQkU0MTQxOTVCMkEwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
ICNpbmNsdWRlICJSZW1vdmVOb2RlQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgpA
QCAtMjQwLDcgKzI0MSwxNiBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURl
bGV0CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51
bWJlcihidXR0b25IZWlnaHQpICsgInB4Iik7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgQ1NTVmFsdWVWaXNpYmxlKTsKIAotICAgIFJlZlB0cjxJbWFnZT4g
YnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbiIp
OworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOworCisgICAgUmVmUHRyPEltYWdlPiBidXR0b25JbWFnZTsKKyAgICBp
ZiAoZGV2aWNlU2NhbGVGYWN0b3IgPj0gMikKKyAgICAgICAgYnV0dG9uSW1hZ2UgPSBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRvbkAyeCIpOworICAgIGVsc2UKKyAgICAg
ICAgYnV0dG9uSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRlbGV0ZUJ1dHRv
biIpOworCiAgICAgaWYgKGJ1dHRvbkltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAt
MTEzLDE4ICsxMTQsNDAgQEAgdm9pZCBDYWNoZWRJbWFnZTo6YWxsQ2xpZW50c1JlbW92ZWQoKQog
ICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwp
OwogfQogCi1zdGF0aWMgSW1hZ2UqIGJyb2tlbkltYWdlKCkKK3N0YXRpYyBJbWFnZSogYnJva2Vu
SW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChSZWZQdHI8SW1hZ2U+LCBicm9rZW5JbWFnZSwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgibWlzc2luZ0ltYWdlIikpKTsKLSAgICByZXR1cm4gYnJva2VuSW1hZ2UuZ2V0KCk7CisgICAg
c3RhdGljIGZsb2F0IGxhc3REZXZpY2VTY2FsZUZhY3RvciA9IDE7CisKKyAgICAvLyBJZiBkZXZp
Y2VTY2FsZUZhY3RvciBpcyAwLCB0aGF0IG1lYW5zIHdlIGNvdWxkbid0IGFjY2VzcyB0aGUgUGFn
ZSB0aHJvdWdoIG1fcmVxdWVzdCB0aGlzIHRpbWUsCisgICAgLy8gc28gdXNlIHRoZSBsYXN0RGV2
aWNlU2NhbGVGYWN0b3IgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByZXNvbHV0aW9uLgor
ICAgIGlmICghZGV2aWNlU2NhbGVGYWN0b3IpCisgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0g
bGFzdERldmljZVNjYWxlRmFjdG9yOworICAgIGVsc2UKKyAgICAgICAgbGFzdERldmljZVNjYWxl
RmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7CisKKworICAgIGlmIChkZXZpY2VTY2FsZUZhY3Rv
ciA+PSAyKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCBicm9rZW5JbWFn
ZUxvUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJtaXNzaW5nSW1hZ2VAMngiKS5s
ZWFrUmVmKCkpKTsKKyAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdlTG9SZXM7CisgICAgfQorCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIGJyb2tlbkltYWdlSGlSZXMsIChJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZSIpLmxlYWtSZWYoKSkpOworICAgIHJl
dHVybiBicm9rZW5JbWFnZUhpUmVzOwogfQogCiBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwogCi0gICAgaWYgKGVycm9yT2Nj
dXJyZWQoKSAmJiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UpCi0gICAgICAgIHJldHVybiBicm9r
ZW5JbWFnZSgpOworICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9zaG91bGRQYWludEJyb2tl
bkltYWdlKSB7CisgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMDsKKyAgICAgICAg
RnJhbWUqIGZyYW1lID0gbV9yZXF1ZXN0ID8gbV9yZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLT5mcmFtZSgpIDogMDsKKyAgICAgICAgaWYgKGZyYW1lKSB7CisgICAgICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgZGV2aWNlU2NhbGVG
YWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBicm9rZW5JbWFnZShkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgfQogCiAgICAgaWYgKG1f
aW1hZ2UpCiAgICAgICAgIHJldHVybiBtX2ltYWdlLmdldCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQkocmV2aXNpb24gOTQ1
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6aW52YWxp
ZGF0ZVBsYXRmb3JtRGF0YQogUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1
bmRsZSBidW5kbGVGb3JDbGFzczpbV2ViQ29yZUJ1bmRsZUZpbmRlciBjbGFzc11dOwotICAgIE5T
U3RyaW5nICppbWFnZVBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6bmFtZV0gb2ZUeXBlOkAidGlmZiJdOworICAgIE5TU3RyaW5nICpp
bWFnZVBhdGggPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6bmFtZV0gb2ZUeXBlOkAicG5nIl07CiAgICAgTlNEYXRhICpuYW1lZEltYWdlRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTppbWFnZVBhdGhdOwogICAgIGlmIChu
YW1lZEltYWdlRGF0YSkgewogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1h
Z2U6OmNyZWF0ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NDcsMTAgKzI0NDcsMjYgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gUGFpbnQgdGhlIHJlc2l6ZXIgY29udHJvbC4KLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFJlZlB0cjxJbWFnZT4sIHJlc2l6ZUNvcm5lckltYWdlLCAoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpKSk7Ci0gICAgTGF5b3V0UG9pbnQgaW1h
Z2VQb2ludChhYnNSZWN0Lm1heFgoKSAtIHJlc2l6ZUNvcm5lckltYWdlLT53aWR0aCgpLCBhYnNS
ZWN0Lm1heFkoKSAtIHJlc2l6ZUNvcm5lckltYWdlLT5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC0+
ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCBib3gtPnN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgaW1hZ2VQb2ludCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAg
IGlmIChGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChQ
YWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRldmljZVNjYWxlRmFjdG9y
ID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1hZ2U+
IHJlc2l6ZUNvcm5lckltYWdlOworICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA+PSAyKSB7Cisg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPEltYWdlPiwgcmVzaXplQ29ybmVySW1h
Z2VIaVJlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGV4dEFyZWFSZXNpemVDb3Ju
ZXJAMngiKSkpOworICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdl
SGlSZXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8
SW1hZ2U+LCByZXNpemVDb3JuZXJJbWFnZUxvUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpKSk7CisgICAgICAgIHJlc2l6ZUNvcm5lckltYWdl
ID0gcmVzaXplQ29ybmVySW1hZ2VMb1JlczsKKyAgICB9CisKKyAgICBJbnRTaXplIGNvcm5lclJl
c2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNpemUoKTsKKyAgICBjb3JuZXJSZXNpemVy
U2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgSW50UmVjdCBpbWFnZVJl
Y3QoYWJzUmVjdC5tYXhYKCkgLSBjb3JuZXJSZXNpemVyU2l6ZS53aWR0aCgpLCBhYnNSZWN0Lm1h
eFkoKSAtIGNvcm5lclJlc2l6ZXJTaXplLmhlaWdodCgpLCBjb3JuZXJSZXNpemVyU2l6ZS53aWR0
aCgpLCBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdl
KHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCBib3gtPnN0eWxlKCktPmNvbG9yU3BhY2UoKSwgaW1h
Z2VSZWN0KTsKIAogICAgIC8vIERyYXcgYSBmcmFtZSBhcm91bmQgdGhlIHJlc2l6ZXIgKDFweCBn
cmV5IGxpbmUpIGlmIHRoZXJlIGFyZSBhbnkgc2Nyb2xsYmFycyBwcmVzZW50LgogICAgIC8vIENs
aXBwaW5nIHdpbGwgZXhjbHVkZSB0aGUgcmlnaHQgYW5kIGJvdHRvbSBlZGdlcyBvZiB0aGlzIGZy
YW1lLgo=
</data>
<flag name="commit-queue"
          id="103448"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106921</attachid>
            <date>2011-09-09 14:22:17 -0700</date>
            <delta_ts>2011-09-09 17:00:09 -0700</delta_ts>
            <desc>More patch</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>36409</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDktMDkgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODE5CisgICAgICAgIFVzZSBoaWdoIHJlc29sdXRp
b24gcGxhdGZvcm0gaW1hZ2VzIHdoZW4gdGhlIGRldmljZVNjYWxlRmFjdG9yID4gMQorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDAwMzA5OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWxs
IG9mIHRoZSBuZXcgaGlnaCByZXNvbHV0aW9uIGltYWdlcy4gSSBhbHNvIHJlbW92ZWQgc29tZSB0
aWZmcyBmcm9tIHRoZSAKKyAgICAgICAgcHJvamVjdCBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIHBu
ZyBlcXVpdmFsZW50cyAodGhhdCBhcmUgYWxyZWFkeSBjaGVja2VkIGludG8gCisgICAgICAgIFdl
YkNvcmUgYW55d2F5KS4gU2luY2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiBpbWFnZXMgYXJlIHBuZ3Ms
IGl0IG1ha2VzIHNlbnNlIHRvIHVzZSAKKyAgICAgICAgcG5ncyBmb3IgYWxsIG9mIHRoZSBpbWFn
ZXMgdGhhdCBsb2FkIHRocm91Z2ggSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCkKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgTG9hZCB0
aGUgQDJ4IHJlc291cmNlIGZvciBkZXZpY2VTY2FsZUZhY3RvcnMgPj0gMi4KKyAgICAgICAgKiBl
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRpb25VSSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJyb2tlbkltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisKKyAgICAg
ICAgQ2FjaGVkSW1hZ2U6OmltYWdlKCkgbm93IHRha2VzIHRoZSBkZXZpY2VTY2FsZUZhY3RvciBh
cyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZVNpemVGb3JFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2VSZXNvdXJjZTo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bWFnZVJlc291cmNlLmg6CisKIDIwMTEtMDktMDkgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5pdGlhbGl6ZSBFeGNlcHRpb25Db2RlIGluIEVsZW1lbnQ6OnJl
bW92ZUF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDk0NTc3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEwNzAs
NyArMTA3MCw3IEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNmNvbnRlbnRzVG9XaW4KIF9f
Wk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxNmNvbnRlbnRzVG9XaW5kb3dFUktOU184SW50UG9pbnRF
CiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTZ3aW5kb3dUb0NvbnRlbnRzRVJLTlNfOEludFBv
aW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4dmlzaWJsZUNvbnRlbnRSZWN0RWIKLV9f
Wk5LN1dlYkNvcmUxMUNhY2hlZEltYWdlNWltYWdlRXYKK19fWk5LN1dlYkNvcmUxMUNhY2hlZElt
YWdlNWltYWdlRWYKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTBpc0NvbXBsZXRlRXYKIF9f
Wk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRjYW5jZWxsZWRFcnJvckVSS05TXzE1UmVzb3VyY2VS
ZXF1ZXN0RQogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxNGZyYW1lSGFzTG9hZGVkRXYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWxldGVCdXR0b25AMngucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9kZWxldGVCdXR0b25AMngucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvZGVsZXRlQnV0dG9uUHJlc3NlZEAyeC5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
U291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL2RlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0K
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbWlzc2luZ0ltYWdlQDJ4LnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvbWlzc2luZ0ltYWdlQDJ4LnBuZwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRl
eDogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL251bGxQbHVnaW5AMngucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL1Jlc291cmNlcy9udWxsUGx1Z2luQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL3RleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9SZXNvdXJjZXMvdGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5nCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTcxLDggKzU3MSw2IEBACiAJCTFD
MTFDQ0M2MEFBNjA5MzcwMERBREIyMCAvKiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gQ29weSBH
ZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4
OUNEMzBBOThDNDI4MDBBMjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5oICovOyB9OwogCQkx
QzExQ0NDNzBBQTYwOTM3MDBEQURCMjAgLyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gQ29weSBHZW5l
cmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUND
RjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi87IH07CiAJCTFDMTFDQ0M4
MEFBNjA5MzcwMERBREIyMCAvKiBET01IVE1MRWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVERjJFRUIwQUEzODdD
QjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50LmggKi87IH07Ci0JCTFDMTRFNzZCMEFEOEM4MUMw
MEI2MTU4QiAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTRFNzY5MEFEOEM4MUMwMEI2MTU4QiAvKiBk
ZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgKi87IH07Ci0JCTFDMTRFNzZDMEFEOEM4MUMwMEI2MTU4
QiAvKiBkZWxldGVCdXR0b24udGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUMxNEU3NkEwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50
aWZmICovOyB9OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMy
NjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJ
MUMyNjQ5N0MwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8q
IFBhZ2VNYWMuY3BwICovOyB9OwogCQkxQzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM0QzhGMDAwQUQ4NUQ4NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIuaCAqLzsgfTsKQEAgLTE3MDEsNyArMTY5OSw2IEBACiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEw
N0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5j
cHAgKi87IH07CiAJCTc1MEQwMjkzMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBE
MDI5MTExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guY3BwICovOyB9OwogCQk3
NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcgLyogUmVuZGVySW5wdXRTcGVlY2guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MEQwMjkyMTFEMEU3RjMwMEJE
MUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oICovOyB9OwotCQk3NTBEMDJDMTExRDBFRTdEMDBC
RDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzUwRDAyQzAxMUQwRUU3RDAwQkQxQjI3IC8qIGlucHV0U3BlZWNo
LnRpZmYgKi87IH07CiAJCTc1MzVCQzk0MTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENs
aWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzUzNUJDOTIxMjAyMENGRjAwMzdFQzQ1IC8qIFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHAg
Ki87IH07CiAJCTc1MzVCQzk1MTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENsaWVudE1v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MzVC
QzkzMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENsaWVudE1vY2suaCAqLzsgfTsKIAkJ
NzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAw
RTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CkBAIC0yOTI0LDYg
KzI5MjEsMTQgQEAKIAkJOTMwN0YxRDgwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDdGMUQ2
MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMwOTA4OTEwQUY3RURFNDAwODFERjAxIC8q
IEhpdFRlc3RSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzA5MDg5MDBBRjdFREU0MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzBGQzY4QTEw
NzJCOTI4MDA0NTI5M0UgLyogVGV4dFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEZDNjg5MTA3MkI5MjgwMDQ1MjkzRSAvKiBU
ZXh0UmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTkzMTUzQkNEMTQxN0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngu
cG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1
M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uQDJ4LnBuZyAqLzsgfTsKKwkJOTMx
NTNCQ0YxNDE3RkJEQjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JDRTE0MTdG
QkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZEAyeC5wbmcgKi87IH07CisJCTkzMTUz
QkRBMTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1
QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBuZyAqLzsgfTsKKwkJOTMxNTNCREMxNDE5NTlCQzAwRkNG
NUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRleHRB
cmVhUmVzaXplQ29ybmVyLnBuZyAqLzsgfTsKKwkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8q
IGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzMTUzQkREMTQxOTU5RjQwMEZDRjVCRSAvKiBkZWxldGVCdXR0b24ucG5nICov
OyB9OworCQk5MzE1M0JFMDE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5w
bmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUz
QkRGMTQxOTVBMjgwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnBuZyAqLzsgfTsKKwkJ
OTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkUxMTQxOTVBNTcwMEZD
RjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovOyB9OworCQk5MzE1M0JFNDE0MTk1QjJBMDBGQ0Y1
QkUgLyogaW5wdXRTcGVlY2gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzE1M0JFMzE0MTk1QjI5MDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5n
ICovOyB9OwogCQk5MzFCQ0M2MTExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFC
Q0M2MDExMjRERkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyNkRDMEMwOURBRDVE
NjAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUFDMDlEMTRFRTYwMDBFNjFENyAvKiBDaGFyc2V0RGF0
YS5jcHAgKi87IH07CiAJCTkzMjdBOTQyMDk5NjhEMUEwMDY4QTU0NiAvKiBIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMyN0E5NDEwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAg
Ki87IH07CkBAIC0zMDQyLDYgKzMwNDcsNyBAQAogCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAg
LyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM2MjY0MEEwREUxMTM3RDAwOUQ1QTAwIC8qIENTU1JlZmxlY3Rp
b25EaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5MzYzQjYyQzBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYzQjYy
QTBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5jcHAgKi87IH07CiAJCTkz
NjNCNjJEMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYzQjYyQjBGOEU4RkUwMDA4
MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNzA5MThEMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0
QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNzA5MThDMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6
ZUNvcm5lckAyeC5wbmcgKi87IH07CiAJCTkzNzk5RUY4MEJGMjc0MzYwMEQwRjIzMCAvKiBSZW5k
ZXJXb3JkQnJlYWsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM3OTlFRjYwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgKi87
IH07CiAJCTkzNzk5RUY5MEJGMjc0MzYwMEQwRjIzMCAvKiBSZW5kZXJXb3JkQnJlYWsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzk5RUY3MEJGMjc0
MzYwMEQwRjIzMCAvKiBSZW5kZXJXb3JkQnJlYWsuaCAqLzsgfTsKIAkJOTM4MEY0NzMwOUExMUFC
NDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLzsg
fTsKQEAgLTQwODEsNyArNDA4Nyw2IEBACiAJCUFCMjQ3QTZDMEFGRDYzODMwMDNGQTVGRCAvKiBS
ZW5kZXJTbGlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQUIyNDdBNkEwQUZENjM4MzAwM0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgKi87IH07
CiAJCUFCMjQ3QTZEMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjQ3QTZCMEFGRDYzODMwMDNG
QTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAqLzsgfTsKIAkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3Qjky
IC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQjMxQzkxRDEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBQjQyNjFE
ODBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2luZ0ltYWdlLnRpZmYgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNDI2MUQ3MEEyRjZDOTcwMEJERDE3RCAv
KiBtaXNzaW5nSW1hZ2UudGlmZiAqLzsgfTsKIAkJQUI0Q0I0RUIwQjhCREEzRDAwOUY0MEIwIC8q
IEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFCNENCNEVBMEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxl
Y3RFbGVtZW50Q3VzdG9tLmggKi87IH07CiAJCUFCNjdEMUE4MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQjY3RDFBNjA5N0YzQUUzMDBGOTM5MkUgLyogUmVuZGVyVGV4dENvbnRyb2wu
Y3BwICovOyB9OwogCQlBQjY3RDFBOTA5N0YzQUUzMDBGOTM5MkUgLyogUmVuZGVyVGV4dENvbnRy
b2wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNjdE
MUE3MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5oICovOyB9OwpAQCAtNTY4
NCw3ICs1Njg5LDYgQEAKIAkJRTRENjg3NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRE
Njg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovOyB9OwogCQlFNEVF
RkZDODBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUVGRkM2MEQzNDU1MEMwMDQ2
OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQlFNEVFRkZDOTBEMzQ1NTBD
MDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRp
b0NvbnN0cnVjdG9yLmggKi87IH07Ci0JCUVEMDQ4QUJDMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0
QXJlYVJlc2l6ZUNvcm5lci50aWZmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFyZWFSZXNpemVD
b3JuZXIudGlmZiAqLzsgfTsKIAkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50
TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
RDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBB
RTE4RDkgLyogRWRpdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsg
fTsKIAkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREUzQTRGRjBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzEwMCw4ICs3MTA0LDYgQEAKIAkJMUFGRTExOEMwQ0JGRkM0RTAwMzAxN0ZB
IC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNRTFJl
c3VsdFNldFJvd0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUZFMTE5
NzBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBK
U1NRTFJlc3VsdFNldFJvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFD
MTRFNzY5MEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBw
YXRoID0gZGVsZXRlQnV0dG9uUHJlc3NlZC50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQzE0RTc2QTBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBw
YXRoID0gZGVsZXRlQnV0dG9uLnRpZmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdl
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzRDOEVGRjBBRDg1RDg3MDA5NDc1Q0Ug
LyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZWxldGVCdXR0b25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC04MzY3LDcgKzgzNjksNiBA
QAogCQk3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJ
bnB1dFNwZWVjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJJbnB1dFNwZWVjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MEQwMjky
MTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJJbnB1dFNwZWVjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3NTBEMDJDMDExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRp
ZmY7IHBhdGggPSBpbnB1dFNwZWVjaC50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTM1QkM5MjEyMDIwQ0ZGMDAzN0VDNDUgLyogU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwZWVjaElucHV0Q2xpZW50TW9j
ay5jcHA7IHBhdGggPSBtb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc1MzVCQzkzMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1
dENsaWVudE1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3BlZWNoSW5w
dXRDbGllbnRNb2NrLmg7IHBhdGggPSBtb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NTYyLDYgKzk1NjMsMTQgQEAKIAkJOTMwN0YxRDYwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RS
ZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpdFRlc3RSZXN1bHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwOTA4OTAwQUY3RURFNDAwODFERjAx
IC8qIEhpdFRlc3RSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
aXRUZXN0UmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBGQzY4OTEw
NzJCOTI4MDA0NTI5M0UgLyogVGV4dFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTMxNTNCQ0MxNDE3RkJCRjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbkAyeC5wbmcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5w
bmc7IHBhdGggPSAiZGVsZXRlQnV0dG9uQDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTUzQkNFMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9ICJkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkQ5MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1h
Z2VAMngucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gaW1hZ2UucG5nOyBwYXRoID0gIm1pc3NpbmdJbWFnZUAyeC5wbmciOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MzE1M0JEQjE0MTk1OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNp
emVDb3JuZXIucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gaW1hZ2UucG5nOyBwYXRoID0gdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JERDE0MTk1OUY0MDBGQ0Y1QkUgLyogZGVsZXRl
QnV0dG9uLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLnBuZzsgcGF0aCA9IGRlbGV0ZUJ1dHRvbi5wbmc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTkzMTUzQkRGMTQxOTVBMjgwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVz
c2VkLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBuZzsgcGF0aCA9IGRlbGV0ZUJ1dHRvblByZXNzZWQucG5nOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MzE1M0JFMTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdl
LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGlt
YWdlLnBuZzsgcGF0aCA9IG1pc3NpbmdJbWFnZS5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTUzQkUzMTQxOTVCMjkwMEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBh
dGggPSBpbnB1dFNwZWVjaC5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUJD
QzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDYW5TdGFydExpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjdBOTQxMDk5NjhEMUEwMDY4QTU0NiAvKiBIVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTMyODcxQkYwQjIwREVCNzAwNDkwMzVBIC8qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTY4MSw2ICs5NjkwLDcgQEAKIAkJOTM2
M0I2MkEwRjhFOEZFMDAwODAzODEwIC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeVByb3BlcnR5TGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNjNCNjJCMEY4RThGRTAwMDgwMzgxMCAvKiBI
aXN0b3J5UHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhp
c3RvcnlQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2REQw
M0EwOUNFQUMyNzAwNTZBRThDIC8qIFJhbmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
YW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNzA5MThDMTQxNkQ4NkIw
MDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAidGV4dEFy
ZWFSZXNpemVDb3JuZXJAMngucG5nIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3
OTlFRjYwQkYyNzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJXb3JkQnJlYWsuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5Mzc5OUVGNzBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29y
ZEJyZWFrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcldvcmRCcmVh
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
aWRnZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2MzUsNyArMTA2NDUs
NiBAQAogCQlBQjI0N0E2QTBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTbGlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjI0N0E2QjBBRkQ2MzgzMDAzRkE1RkQgLyogUmVu
ZGVyU2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTbGlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUIzMUM5MUQxMEFFMUI4RTAwMEM3
QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExpbmVDbGFtcFZhbHVlLmg7IHBhdGggPSBzdHlsZS9MaW5lQ2xhbXBWYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBQjQyNjFENzBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2lu
Z0ltYWdlLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gbWlzc2luZ0ltYWdlLnRpZmY7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFCNENCNEVBMEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxlY3RF
bGVtZW50Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNjdE
MUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVGV4dENvbnRyb2wuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQjY3RDFBNzA5N0YzQUUzMDBGOTM5MkUgLyogUmVuZGVy
VGV4dENvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRl
eHRDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ2NCw3ICsxMjQ3
Myw2IEBACiAJCUU0RDY4Nzc4MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VhYmxlQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1
ZGlvQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdWRpb0NvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRF
RUZGQzcwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRUQwNDhBQkIwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVz
aXplQ29ybmVyLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERv
Y3VtZW50TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50
TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVENTAxREM1MEIyNDlGMjkw
MEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzE4MywxNSArMTMxOTEsMTggQEAKIAkJCQk0NkQ0RjI0
NjBBRjk3RTgxMDAzNTM4NUEgLyogY2VsbEN1cnNvci5wbmcgKi8sCiAJCQkJNDZENEYyNDcwQUY5
N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyAqLywKIAkJCQk0NjE0QTFGRDBC
MjNBOEQ2MDA0NDZFMUMgLyogY29weUN1cnNvci5wbmcgKi8sCi0JCQkJMUMxNEU3NkEwQUQ4Qzgx
QzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50aWZmICovLAotCQkJCTFDMTRFNzY5MEFEOEM4MUMw
MEI2MTU4QiAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgKi8sCisJCQkJOTMxNTNCREQxNDE5
NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbi5wbmcgKi8sCisJCQkJOTMxNTNCQ0MxNDE3RkJC
RjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbkAyeC5wbmcgKi8sCisJCQkJOTMxNTNCREYxNDE5NUEy
ODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvblByZXNzZWQucG5nICovLAorCQkJCTkzMTUzQkNFMTQx
N0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyAqLywKIAkJCQk4NTEz
NkM4OTBBRUQ2NjU4MDBGOTBBM0QgLyogZWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUx
MzZDOEEwQUVENjY1ODAwRjkwQTNEIC8qIGVhc3RXZXN0UmVzaXplQ3Vyc29yLnBuZyAqLywKIAkJ
CQk4NTEzNkM4QjBBRUQ2NjU4MDBGOTBBM0QgLyogaGVscEN1cnNvci5wbmcgKi8sCi0JCQkJNzUw
RDAyQzAxMUQwRUU3RDAwQkQxQjI3IC8qIGlucHV0U3BlZWNoLnRpZmYgKi8sCisJCQkJOTMxNTNC
RTMxNDE5NUIyOTAwRkNGNUJFIC8qIGlucHV0U3BlZWNoLnBuZyAqLywKIAkJCQk4NTEzNkM4QzBB
RUQ2NjU4MDBGOTBBM0QgLyogbGlua0N1cnNvci5wbmcgKi8sCiAJCQkJQkNBRDE4MDgxMzFDN0Ew
RDAwOTkwNDA2IC8qIExvY2FsaXphYmxlLnN0cmluZ3MgKi8sCi0JCQkJQUI0MjYxRDcwQTJGNkM5
NzAwQkREMTdEIC8qIG1pc3NpbmdJbWFnZS50aWZmICovLAorCQkJCTkzMTUzQkUxMTQxOTVBNTcw
MEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nICovLAorCQkJCTkzMTUzQkQ5MTQxODFGN0EwMEZD
RjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovLAogCQkJCTg1MTM2QzhEMEFFRDY2NTgwMEY5
MEEzRCAvKiBtb3ZlQ3Vyc29yLnBuZyAqLywKIAkJCQk0NkY5RDVEQjBCMEQ2MDE3MDAyOEVFMzYg
Lyogbm9Ecm9wQ3Vyc29yLnBuZyAqLywKIAkJCQk0NkJEMTZFMjBCMjc5NDczMDAxRjA4MzkgLyog
bm9uZUN1cnNvci5wbmcgKi8sCkBAIC0xMzIwNSw3ICsxMzIxNiw4IEBACiAJCQkJODUxMzZDOTQw
QUVENjY1OTAwRjkwQTNEIC8qIHNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUx
MzZDOTUwQUVENjY1OTAwRjkwQTNEIC8qIHNvdXRoUmVzaXplQ3Vyc29yLnBuZyAqLywKIAkJCQk4
NTEzNkM5NjBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhXZXN0UmVzaXplQ3Vyc29yLnBuZyAqLywK
LQkJCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlm
ZiAqLywKKwkJCQk5MzE1M0JEQjE0MTk1OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3Ju
ZXIucG5nICovLAorCQkJCTkzNzA5MThDMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6
ZUNvcm5lckAyeC5wbmcgKi8sCiAJCQkJNDZENEYyNDgwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRp
Y2FsVGV4dEN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTcwQUVENjY1OTAwRjkwQTNEIC8qIHdh
aXRDdXJzb3IucG5nICovLAogCQkJCTg1MTM2Qzk4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVz
aXplQ3Vyc29yLnBuZyAqLywKQEAgLTIzNTk3LDE2ICsyMzYwOSwxMiBAQAogCQkJCTQ2RDRGMjQ5
MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxsQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
NDZENEYyNEEwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJNDYxNEExRkUwQjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKLQkJCQkxQzE0RTc2QzBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRl
QnV0dG9uLnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFDMTRFNzZCMEFEOEM4MUMwMEI2MTU4
QiAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTg1MTM2
Qzk5MEFFRDY2NTkwMEY5MEEzRCAvKiBlYXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJODUxMzZDOUEwQUVENjY1OTAwRjkwQTNEIC8qIGVhc3RXZXN0UmVzaXplQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUIwQUVENjY1OTAwRjkwQTNEIC8qIGhl
bHBDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQk3NTBEMDJDMTExRDBFRTdEMDBCRDFC
MjcgLyogaW5wdXRTcGVlY2gudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUMwQUVE
NjY1OTAwRjkwQTNEIC8qIGxpbmtDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0FE
MTgwQTEzMUM3QTBEMDA5OTA0MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUNEQzE0MDUwREQzOTM0QzAwNkVBQ0QzIC8qIGxvY2FsaXplZFN0cmluZ3MuanMg
aW4gUmVzb3VyY2VzICovLAotCQkJCUFCNDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5n
SW1hZ2UudGlmZiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUQwQUVENjY1OTAwRjkwQTNE
IC8qIG1vdmVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NkY5RDVERTBCMEQ2MDE3
MDAyOEVFMzYgLyogbm9Ecm9wQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDZCRDE2
RTMwQjI3OTQ3MzAwMUYwODM5IC8qIG5vbmVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKQEAg
LTIzNjIwLDEyICsyMzYyOCwyMCBAQAogCQkJCTg1MTM2Q0E0MEFFRDY2NTkwMEY5MEEzRCAvKiBz
b3V0aEVhc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkNBNTBB
RUQ2NjU5MDBGOTBBM0QgLyogc291dGhSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywK
IAkJCQk4NTEzNkNBNjBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhXZXN0UmVzaXplQ3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRB
cmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2RDRGMjRCMEFGOTdF
ODEwMDM1Mzg1QSAvKiB2ZXJ0aWNhbFRleHRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQk4NTEzNkNBNzBBRUQ2NjU5MDBGOTBBM0QgLyogd2FpdEN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCTg1MTM2Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBu
ZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21J
bkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTM3MDkxOEQxNDE2
RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJOTMxNTNCQ0QxNDE3RkJCRjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbkAyeC5wbmcg
aW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkNGMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVC
dXR0b25QcmVzc2VkQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCREExNDE4MUY3
QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFnZUAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkz
MTUzQkRDMTQxOTU5QkMwMEZDRjVCRSAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgaW4gUmVz
b3VyY2VzICovLAorCQkJCTkzMTUzQkRFMTQxOTU5RjQwMEZDRjVCRSAvKiBkZWxldGVCdXR0b24u
cG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1M0JFMDE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVs
ZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkUyMTQxOTVB
NTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1
M0JFNDE0MTk1QjJBMDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nIGluIFJlc291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gOTQ1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVt
b3ZlTm9kZUNvbW1hbmQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTI0MCw3ICsyNDEs
MTYgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldAogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoYnV0dG9uSGVp
Z2h0KSArICJweCIpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxp
dHksIENTU1ZhbHVlVmlzaWJsZSk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGJ1dHRvbkltYWdlID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJkZWxldGVCdXR0b24iKTsKKyAgICBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpCisgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKKworICAgIFJlZlB0cjxJbWFnZT4gYnV0dG9uSW1hZ2U7CisgICAgaWYgKGRldmljZVNjYWxl
RmFjdG9yID49IDIpCisgICAgICAgIGJ1dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJkZWxldGVCdXR0b25AMngiKTsKKyAgICBlbHNlCisgICAgICAgIGJ1dHRvbkltYWdl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJkZWxldGVCdXR0b24iKTsKKwogICAgIGlm
IChidXR0b25JbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA5NDU3NykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMywxOCArMTEzLDIzIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmFsbENsaWVudHNS
ZW1vdmVkKCkKICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90
KGludGVydmFsKTsKIH0KIAotc3RhdGljIEltYWdlKiBicm9rZW5JbWFnZSgpCitzdGF0aWMgSW1h
Z2UqIGJyb2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmVmUHRyPEltYWdlPiwgYnJva2VuSW1hZ2UsIChJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZSIpKSk7Ci0gICAgcmV0dXJuIGJyb2tlbkltYWdlLmdl
dCgpOworICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA+PSAyKSB7CisgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoSW1hZ2UqLCBicm9rZW5JbWFnZUxvUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJtaXNzaW5nSW1hZ2VAMngiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgcmV0dXJu
IGJyb2tlbkltYWdlTG9SZXM7CisgICAgfQorCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFn
ZSosIGJyb2tlbkltYWdlSGlSZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3Np
bmdJbWFnZSIpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBicm9rZW5JbWFnZUhpUmVzOwogfQog
Ci1JbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkgY29uc3QKK0ltYWdlKiBDYWNoZWRJbWFnZTo6
aW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc1B1
cmdlYWJsZSgpKTsKIAogICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9zaG91bGRQYWludEJy
b2tlbkltYWdlKQotICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoKTsKKyAgICAgICAgcmV0dXJu
IGJyb2tlbkltYWdlKGRldmljZVNjYWxlRmFjdG9yKTsKIAogICAgIGlmIChtX2ltYWdlKQogICAg
ICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogCi0gICAgSW1hZ2UqIGltYWdlKCkgY29uc3Q7IC8v
IFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHll
dC4KKyAgICBJbWFnZSogaW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxKSBjb25zdDsg
Ly8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUg
eWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9
CiAKICAgICBib29sIGNhblJlbmRlcihmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJldHVybiAh
ZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZVNpemUobXVsdGlwbGllcikuaXNFbXB0eSgpOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhCiBQYXNzUmVmUHRyPEltYWdlPiBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBOU0J1bmRs
ZSAqYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJDb3JlQnVuZGxlRmluZGVy
IGNsYXNzXV07Ci0gICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291
cmNlOltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJ0aWZmIl07
CisgICAgTlNTdHJpbmcgKmltYWdlUGF0aCA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOltOU1N0
cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpuYW1lXSBvZlR5cGU6QCJwbmciXTsKICAgICBOU0Rh
dGEgKm5hbWVkSW1hZ2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmltYWdl
UGF0aF07CiAgICAgaWYgKG5hbWVkSW1hZ2VEYXRhKSB7CiAgICAgICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTQgKzc5LDI2
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nSGVpZ2gKIHN0YXRpYyBjb25z
dCBmbG9hdCBtYXhBbHRUZXh0V2lkdGggPSAxMDI0Owogc3RhdGljIGNvbnN0IGludCBtYXhBbHRU
ZXh0SGVpZ2h0ID0gMjU2OwogCitzdGF0aWMgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoRnJhbWUq
IGZyYW1lKQoreworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoZnJh
bWUpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAg
ICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIH0K
KyAgICByZXR1cm4gZGV2aWNlU2NhbGVGYWN0b3I7Cit9CisKIEludFNpemUgUmVuZGVySW1hZ2U6
OmltYWdlU2l6ZUZvckVycm9yKENhY2hlZEltYWdlKiBuZXdJbWFnZSkgY29uc3QKIHsKICAgICBB
U1NFUlRfQVJHKG5ld0ltYWdlLCBuZXdJbWFnZSk7CiAgICAgQVNTRVJUX0FSRyhuZXdJbWFnZSwg
bmV3SW1hZ2UtPmltYWdlKCkpOwogCisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBkZXZpY2VTY2Fs
ZUZhY3RvcihmcmFtZSgpKTsKKwogICAgIC8vIGltYWdlU2l6ZSgpIHJldHVybnMgMCBmb3IgdGhl
IGVycm9yIGltYWdlLiBXZSBuZWVkIHRoZSB0cnVlIHNpemUgb2YgdGhlCiAgICAgLy8gZXJyb3Ig
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gZ2V0IGl0IGJ5IGdyYWJiaW5nIGltYWdlKCkgZGlyZWN0bHku
Ci0gICAgcmV0dXJuIEludFNpemUocGFkZGluZ1dpZHRoICsgbmV3SW1hZ2UtPmltYWdlKCktPndp
ZHRoKCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCksIHBhZGRpbmdIZWlnaHQgKyBuZXdJbWFn
ZS0+aW1hZ2UoKS0+aGVpZ2h0KCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgIHJl
dHVybiBJbnRTaXplKHBhZGRpbmdXaWR0aCArIG5ld0ltYWdlLT5pbWFnZShzY2FsZUZhY3Rvcikt
PndpZHRoKCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCksIHBhZGRpbmdIZWlnaHQgKyBuZXdJ
bWFnZS0+aW1hZ2Uoc2NhbGVGYWN0b3IpLT5oZWlnaHQoKSAqIHN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSk7CiB9CiAKIC8vIFNldHMgdGhlIGltYWdlIGhlaWdodCBhbmQgd2lkdGggdG8gZml0IHRo
ZSBhbHQgdGV4dC4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKQEAgLTk0LDcgKzEwNiw3IEBAIEludFNp
emUgUmVuZGVySW1hZ2U6OmltYWdlU2l6ZUZvckVycm9yKEMKIGJvb2wgUmVuZGVySW1hZ2U6OnNl
dEltYWdlU2l6ZUZvckFsdFRleHQoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlIC8qID0gMCAqLykKIHsK
ICAgICBJbnRTaXplIGltYWdlU2l6ZTsKLSAgICBpZiAobmV3SW1hZ2UgJiYgbmV3SW1hZ2UtPmlt
YWdlKCkpCisgICAgaWYgKG5ld0ltYWdlICYmIG5ld0ltYWdlLT5pbWFnZShkZXZpY2VTY2FsZUZh
Y3RvcihmcmFtZSgpKSkpCiAgICAgICAgIGltYWdlU2l6ZSA9IGltYWdlU2l6ZUZvckVycm9yKG5l
d0ltYWdlKTsKICAgICBlbHNlIGlmICghbV9hbHRUZXh0LmlzRW1wdHkoKSB8fCBuZXdJbWFnZSkg
ewogICAgICAgICAvLyBJZiB3ZSdsbCBiZSBkaXNwbGF5aW5nIGVpdGhlciB0ZXh0IG9yIGFuIGlt
YWdlLCBhZGQgYSBsaXR0bGUgcGFkZGluZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDk0NTc3KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2VSZXNvdXJjZS5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCkBAIC04OSw2ICs5MSwyMiBA
QCB2b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OnJlc2V0QW5pbWF0aW9uCiAgICAgICAgIG1fcmVu
ZGVyZXItPnJlcGFpbnQoKTsKIH0KIAorUGFzc1JlZlB0cjxJbWFnZT4gUmVuZGVySW1hZ2VSZXNv
dXJjZTo6aW1hZ2UoaW50LCBpbnQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlKQor
ICAgICAgICByZXR1cm4gbnVsbEltYWdlKCk7CisKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IDE7CisgICAgaWYgKG1fcmVuZGVyZXIpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IG1fcmVuZGVyZXItPmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IHBhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbV9jYWNo
ZWRJbWFnZS0+aW1hZ2UoZGV2aWNlU2NhbGVGYWN0b3IpOworfQorCiB2b2lkIFJlbmRlckltYWdl
UmVzb3VyY2U6OnNldEltYWdlQ29udGFpbmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBjb25z
dAogewogICAgIEFTU0VSVChtX3JlbmRlcmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaAkocmV2aXNpb24gOTQ1NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKTsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoaW50IC8qIHdpZHRoICovID0g
MCwgaW50IC8qIGhlaWdodCAqLyA9IDApIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBt
X2NhY2hlZEltYWdlLT5pbWFnZSgpIDogbnVsbEltYWdlKCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKGludCAvKiB3aWR0aCAqLyA9IDAsIGludCAvKiBoZWlnaHQgKi8g
PSAwKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkSW1hZ2UgJiYgbV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SW1hZ2VDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIHNp
emUpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NDcsMTAgKzI0NDcsMjYgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gUGFpbnQgdGhlIHJlc2l6ZXIgY29udHJvbC4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFJlZlB0cjxJbWFnZT4sIHJlc2l6ZUNvcm5lckltYWdlLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lciIpKSk7Ci0gICAgTGF5b3V0UG9pbnQgaW1hZ2VQ
b2ludChhYnNSZWN0Lm1heFgoKSAtIHJlc2l6ZUNvcm5lckltYWdlLT53aWR0aCgpLCBhYnNSZWN0
Lm1heFkoKSAtIHJlc2l6ZUNvcm5lckltYWdlLT5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC0+ZHJh
d0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCBib3gtPnN0eWxlKCktPmNvbG9yU3BhY2Uo
KSwgaW1hZ2VQb2ludCk7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGlm
IChGcmFtZSogZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7CisgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0g
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1hZ2U+IHJl
c2l6ZUNvcm5lckltYWdlOworICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA+PSAyKSB7CisgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2UqLCByZXNpemVDb3JuZXJJbWFnZUhpUmVzLCAo
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeCIpLmxl
YWtSZWYoKSkpOworICAgICAgICByZXNpemVDb3JuZXJJbWFnZSA9IHJlc2l6ZUNvcm5lckltYWdl
SGlSZXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSos
IHJlc2l6ZUNvcm5lckltYWdlTG9SZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRl
eHRBcmVhUmVzaXplQ29ybmVyIikubGVha1JlZigpKSk7CisgICAgICAgIHJlc2l6ZUNvcm5lcklt
YWdlID0gcmVzaXplQ29ybmVySW1hZ2VMb1JlczsKKyAgICB9CisKKyAgICBJbnRTaXplIGNvcm5l
clJlc2l6ZXJTaXplID0gcmVzaXplQ29ybmVySW1hZ2UtPnNpemUoKTsKKyAgICBjb3JuZXJSZXNp
emVyU2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgSW50UmVjdCBpbWFn
ZVJlY3QoYWJzUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5l
clJlc2l6ZXJTaXplKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXplQ29ybmVySW1hZ2Uu
Z2V0KCksIGJveC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOwogCiAgICAgLy8g
RHJhdyBhIGZyYW1lIGFyb3VuZCB0aGUgcmVzaXplciAoMXB4IGdyZXkgbGluZSkgaWYgdGhlcmUg
YXJlIGFueSBzY3JvbGxiYXJzIHByZXNlbnQuCiAgICAgLy8gQ2xpcHBpbmcgd2lsbCBleGNsdWRl
IHRoZSByaWdodCBhbmQgYm90dG9tIGVkZ2VzIG9mIHRoaXMgZnJhbWUuCg==
</data>
<flag name="commit-queue"
          id="103487"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106942</attachid>
            <date>2011-09-09 16:57:12 -0700</date>
            <delta_ts>2011-09-09 18:40:52 -0700</delta_ts>
            <desc>Another new patch</desc>
            <filename>for-review-5.txt</filename>
            <type>text/plain</type>
            <size>35450</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0ODg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDktMDkgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3ODE5CisgICAgICAgIFVzZSBoaWdoIHJlc29sdXRp
b24gcGxhdGZvcm0gaW1hZ2VzIHdoZW4gdGhlIGRldmljZVNjYWxlRmFjdG9yID4gMQorICAgICAg
ICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDAwMzA5OD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWxs
IG9mIHRoZSBuZXcgaGlnaCByZXNvbHV0aW9uIGltYWdlcy4gSSBhbHNvIHJlbW92ZWQgc29tZSB0
aWZmcyBmcm9tIHRoZSAKKyAgICAgICAgcHJvamVjdCBhbmQgcmVwbGFjZWQgdGhlbSB3aXRoIHBu
ZyBlcXVpdmFsZW50cyAodGhhdCBhcmUgYWxyZWFkeSBjaGVja2VkIGludG8gCisgICAgICAgIFdl
YkNvcmUgYW55d2F5KS4gU2luY2UgdGhlIGhpZ2ggcmVzb2x1dGlvbiBpbWFnZXMgYXJlIHBuZ3Ms
IGl0IG1ha2VzIHNlbnNlIHRvIHVzZSAKKyAgICAgICAgcG5ncyBmb3IgYWxsIG9mIHRoZSBpbWFn
ZXMgdGhhdCBsb2FkIHRocm91Z2ggSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCkKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKToKKworICAgICAgICBMb2FkIHRoZSBAMnggcmVzb3VyY2UgZm9y
IGRldmljZVNjYWxlRmFjdG9ycyA+PSAyLgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVy
OjpjcmVhdGVEZWxldGlvblVJKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgCisgICAgICAgIENhY2hlZElt
YWdlOjpicm9rZW5JbWFnZSgpIGlzIG5vIGxvbmdlciBhIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb24s
IGJ1dCBhIHJlYWwgCisgICAgICAgIG1lbWJlciBmdW5jdGlvbi4gSXQgYWxzbyBub3cgbG9hZHMg
dGhlIEAyeCByZXNvdXJjZSBmb3IgZGV2aWNlU2NhbGVGYWN0b3JzID49IDIgCisgICAgICAgIGFu
ZCB0YWtlcyBhIHBhcmFtZXRlciBmb3IgdGhlIGRldmljZVNjYWxlRmFjdG9yLiBXaGVuIENhY2hl
ZEltYWdlOjppbWFnZSgpIHJldHVybnMgCisgICAgICAgIHRoZSBicm9rZW5JbWFnZSgpLCBpdCBq
dXN0IHJldHVybnMgdGhlIDF4IHZlcnNpb24uIGJyb2tlbkltYWdlKCkgaGFzIHRvIGJlIGNhbGxl
ZCAKKyAgICAgICAgZGlyZWN0bHkgdG8gcmVsaWFibHkgcmV0dXJuIHRoZSBkZXZpY2VTY2FsZUZh
Y3Rvci1hcHByb3ByaWF0ZSByZXNvdXJjZS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmJyb2tlbkltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisKKyAgICAgICAgQ2FsbCBDYWNoZWRJbWFnZTo6YnJva2Vu
SW1hZ2UoKSBmb3IgdGhlIGJyb2tlbi1pbWFnZSBpbWFnZSBhdCBhbiBhY2N1cmF0ZSAKKyAgICAg
ICAgcmVzb2x1dGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmltYWdlU2l6ZUZvckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludFJlcGxhY2VkKToKKwogMjAxMS0wOS0wOSAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIHBhZ2VTY2FsZUZhY3RvciBjb2RlIGZyb20g
RnJhbWUue2h8Y3BwfSB0byBQYWdlLntofGNwcH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9kZWxldGVCdXR0b25AMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9k
ZWxldGVCdXR0b25AMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKICAgKyBh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
ZGVsZXRlQnV0dG9uUHJlc3NlZEAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvUmVzb3VyY2Vz
L2RlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5
cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvbWlzc2luZ0ltYWdlQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvbWlzc2luZ0ltYWdlQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAg
ICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL251bGxQbHVnaW5AMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9udWxs
UGx1Z2luQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3RleHRB
cmVhUmVzaXplQ29ybmVyQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvdGV4
dEFyZWFSZXNpemVDb3JuZXJAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUK
ICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NDU3NykKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNTcxLDggKzU3MSw2IEBACiAJCTFDMTFDQ0M2MEFBNjA5MzcwMERBREIyMCAv
KiBET01Eb2N1bWVudEZyYWdtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNEMzBBOThDNDI4MDBBMjc1QUEgLyog
RE9NRG9jdW1lbnRGcmFnbWVudC5oICovOyB9OwogCQkxQzExQ0NDNzBBQTYwOTM3MDBEQURCMjAg
LyogRE9NQ0RBVEFTZWN0aW9uLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9N
Q0RBVEFTZWN0aW9uLmggKi87IH07CiAJCTFDMTFDQ0M4MEFBNjA5MzcwMERBREIyMCAvKiBET01I
VE1MRWxlbWVudC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODVERjJFRUIwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVt
ZW50LmggKi87IH07Ci0JCTFDMTRFNzZCMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b25Q
cmVzc2VkLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMTRFNzY5MEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYg
Ki87IH07Ci0JCTFDMTRFNzZDMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b24udGlmZiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxNEU3NkEw
QUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRvbi50aWZmICovOyB9OwogCQkxQzI2NDk3QTBE
N0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8q
IERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0MwRDdFMjRFQzAwQkQxMEYy
IC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovOyB9OwogCQkx
QzRDOEYwMjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM0QzhGMDAwQUQ4NUQ4
NzAwOTQ3NUNFIC8qIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTE3MDEsNyAr
MTY5OSw2IEBACiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEw
RUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CiAJCTc1MEQwMjkzMTFE
MEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTBEMDI5MTExRDBFN0YzMDBCRDFCMjcgLyog
UmVuZGVySW5wdXRTcGVlY2guY3BwICovOyB9OwogCQk3NTBEMDI5NDExRDBFN0YzMDBCRDFCMjcg
LyogUmVuZGVySW5wdXRTcGVlY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1MEQwMjkyMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVj
aC5oICovOyB9OwotCQk3NTBEMDJDMTExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlm
ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUwRDAy
QzAxMUQwRUU3RDAwQkQxQjI3IC8qIGlucHV0U3BlZWNoLnRpZmYgKi87IH07CiAJCTc1MzVCQzk0
MTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzUzNUJDOTIxMjAyMENGRjAwMzdF
QzQ1IC8qIFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgKi87IH07CiAJCTc1MzVCQzk1MTIwMjBD
RkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MzVCQzkzMTIwMjBDRkYwMDM3RUM0NSAvKiBT
cGVlY2hJbnB1dENsaWVudE1vY2suaCAqLzsgfTsKIAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAw
IC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmggKi87IH07CkBAIC0yOTI0LDYgKzI5MjEsMTQgQEAKIAkJOTMwN0YxRDgw
QUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDdGMUQ2MEFGMkQ1OTAwMERCQTMxQSAvKiBIaXRU
ZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTMwOTA4OTEwQUY3RURFNDAwODFERjAxIC8qIEhpdFRlc3RSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA5MDg5MDBBRjdFREU0
MDA4MURGMDEgLyogSGl0VGVzdFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzBGQzY4QTEwNzJCOTI4MDA0NTI5M0UgLyogVGV4dFJl
bmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMEZDNjg5MTA3MkI5MjgwMDQ1MjkzRSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzMTUzQkNEMTQx
N0ZCQkYwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25AMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JDQzE0MTdGQkJGMDBGQ0Y1QkUgLyog
ZGVsZXRlQnV0dG9uQDJ4LnBuZyAqLzsgfTsKKwkJOTMxNTNCQ0YxNDE3RkJEQjAwRkNGNUJFIC8q
IGRlbGV0ZUJ1dHRvblByZXNzZWRAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JDRTE0MTdGQkRCMDBGQ0Y1QkUgLyogZGVsZXRlQnV0
dG9uUHJlc3NlZEAyeC5wbmcgKi87IH07CisJCTkzMTUzQkRBMTQxODFGN0EwMEZDRjVCRSAvKiBt
aXNzaW5nSW1hZ2VAMngucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzE1M0JEOTE0MTgxRjdBMDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlQDJ4LnBu
ZyAqLzsgfTsKKwkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29y
bmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMxNTNCREIxNDE5NTlCQjAwRkNGNUJFIC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnBuZyAqLzsg
fTsKKwkJOTMxNTNCREUxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbi5wbmcgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkREMTQxOTU5
RjQwMEZDRjVCRSAvKiBkZWxldGVCdXR0b24ucG5nICovOyB9OworCQk5MzE1M0JFMDE0MTk1QTI4
MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTUzQkRGMTQxOTVBMjgwMEZDRjVCRSAvKiBk
ZWxldGVCdXR0b25QcmVzc2VkLnBuZyAqLzsgfTsKKwkJOTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJF
IC8qIG1pc3NpbmdJbWFnZS5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2UucG5n
ICovOyB9OworCQk5MzE1M0JFNDE0MTk1QjJBMDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzE1M0JFMzE0
MTk1QjI5MDBGQ0Y1QkUgLyogaW5wdXRTcGVlY2gucG5nICovOyB9OwogCQk5MzFCQ0M2MTExMjRE
RkNCMDBCRTcwREQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFCQ0M2MDExMjRERkNCMDBCRTcwREQgLyog
TWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTMyNkRDMEMwOURBRDVENjAwQUZDODQ3IC8qIENoYXJzZXREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4
MUFDMDlEMTRFRTYwMDBFNjFENyAvKiBDaGFyc2V0RGF0YS5jcHAgKi87IH07CiAJCTkzMjdBOTQy
MDk5NjhEMUEwMDY4QTU0NiAvKiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyN0E5NDEwOTk2OEQxQTAwNjhB
NTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi87IH07CkBAIC0zMDQyLDYgKzMwNDcs
NyBAQAogCQk5MzYyNjQwQjBERTExMzdEMDA5RDVBMDAgLyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2MjY0
MEEwREUxMTM3RDAwOUQ1QTAwIC8qIENTU1JlZmxlY3Rpb25EaXJlY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzYzQjYyQzBGOEU4RkUw
MDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzYzQjYyQTBGOEU4RkUwMDA4MDM4MTAgLyogSGlz
dG9yeVByb3BlcnR5TGlzdC5jcHAgKi87IH07CiAJCTkzNjNCNjJEMEY4RThGRTAwMDgwMzgxMCAv
KiBIaXN0b3J5UHJvcGVydHlMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzYzQjYyQjBGOEU4RkUwMDA4MDM4MTAgLyogSGlzdG9yeVByb3BlcnR5
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTkzNzA5MThEMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmcg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzA5MThD
MTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmcgKi87IH07CiAJ
CTkzNzk5RUY4MEJGMjc0MzYwMEQwRjIzMCAvKiBSZW5kZXJXb3JkQnJlYWsuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3OTlFRjYwQkYyNzQzNjAw
RDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgKi87IH07CiAJCTkzNzk5RUY5MEJGMjc0MzYw
MEQwRjIzMCAvKiBSZW5kZXJXb3JkQnJlYWsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzk5RUY3MEJGMjc0MzYwMEQwRjIzMCAvKiBSZW5kZXJXb3Jk
QnJlYWsuaCAqLzsgfTsKIAkJOTM4MEY0NzMwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzgwRjQ3MTA5
QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLzsgfTsKQEAgLTQwODEsNyArNDA4Nyw2IEBA
CiAJCUFCMjQ3QTZDMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUIyNDdBNkEwQUZENjM4MzAw
M0ZBNUZEIC8qIFJlbmRlclNsaWRlci5jcHAgKi87IH07CiAJCUFCMjQ3QTZEMEFGRDYzODMwMDNG
QTVGRCAvKiBSZW5kZXJTbGlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCMjQ3QTZCMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCAq
LzsgfTsKIAkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjMxQzkxRDEwQUUx
QjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBQjQyNjFEODBBMkY2Qzk3MDBCREQxN0QgLyogbWlz
c2luZ0ltYWdlLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFCNDI2MUQ3MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiAqLzsg
fTsKIAkJQUI0Q0I0RUIwQjhCREEzRDAwOUY0MEIwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNENC
NEVBMEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggKi87IH07
CiAJCUFCNjdEMUE4MDk3RjNBRTMwMEY5MzkyRSAvKiBSZW5kZXJUZXh0Q29udHJvbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjY3RDFBNjA5N0Yz
QUUzMDBGOTM5MkUgLyogUmVuZGVyVGV4dENvbnRyb2wuY3BwICovOyB9OwogCQlBQjY3RDFBOTA5
N0YzQUUzMDBGOTM5MkUgLyogUmVuZGVyVGV4dENvbnRyb2wuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCNjdEMUE3MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5oICovOyB9OwpAQCAtNTY4NCw3ICs1Njg5LDYgQEAKIAkJRTRENjg3
NzkwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8q
IFB1cmdlYWJsZUJ1ZmZlci5oICovOyB9OwogCQlFNEVFRkZDODBEMzQ1NTBDMDA0NjlBNTggLyog
SlNBdWRpb0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0
b3IuY3BwICovOyB9OwogCQlFNEVFRkZDOTBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEVFRkZDNzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmggKi87IH07Ci0J
CUVEMDQ4QUJDMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmIGlu
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDA0OEFCQjA4
MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLzsgfTsKIAkJRUQy
QkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQg
LyogRG9jdW1lbnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ1MDFEQzUwQjI0
OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsgfTsKIAkJRURFM0E1MDAwQzdBNDMwNjAw
OTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzEwMCw4ICs3MTA0
LDYgQEAKIAkJMUFGRTExOEMwQ0JGRkM0RTAwMzAxN0ZBIC8qIFNRTFJlc3VsdFNldFJvd0xpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUZFMTE5NzBDQkZGQ0M0MDAzMDE3RkEgLyogSlNT
UUxSZXN1bHRTZXRSb3dMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBRkUxMTk4MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTUUxSZXN1bHRTZXRSb3dMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDMTRFNzY5MEFEOEM4MUMwMEI2MTU4QiAv
KiBkZWxldGVCdXR0b25QcmVzc2VkLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gZGVsZXRlQnV0dG9uUHJlc3Nl
ZC50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzE0RTc2QTBBRDhDODFDMDBC
NjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gZGVsZXRlQnV0dG9uLnRpZmY7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAv
KiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzRDOEVGRjBBRDg1RDg3MDA5NDc1Q0UgLyogRGVsZXRlQnV0dG9uQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCdXR0b25D
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC04MzY3LDcgKzgzNjksNiBAQAogCQk3MjYyNkUwMTBFRjAyMkZFMDBB
MDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1
MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbnB1dFNwZWVjaC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MEQwMjkyMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5k
ZXJJbnB1dFNwZWVjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJJ
bnB1dFNwZWVjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NTBEMDJDMDExRDBF
RTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBpbnB1dFNwZWVjaC50
aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTM1QkM5MjEyMDIwQ0ZGMDAzN0VD
NDUgLyogU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNwZWVjaElucHV0Q2xpZW50TW9jay5jcHA7IHBhdGggPSBtb2NrL1NwZWVj
aElucHV0Q2xpZW50TW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MzVC
QzkzMTIwMjBDRkYwMDM3RUM0NSAvKiBTcGVlY2hJbnB1dENsaWVudE1vY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3BlZWNoSW5wdXRDbGllbnRNb2NrLmg7IHBhdGggPSBt
b2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTYyLDYgKzk1NjMsMTQgQEAKIAkJOTMw
N0YxRDYwQUYyRDU5MDAwREJBMzFBIC8qIEhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTMwOTA4OTAwQUY3RURFNDAwODFERjAxIC8qIEhpdFRlc3RSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaXRUZXN0UmVxdWVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBGQzY4OTEwNzJCOTI4MDA0NTI5M0UgLyogVGV4dFJl
bmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFJlbmRl
cmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMxNTNCQ0MxNDE3RkJC
RjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbkAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAiZGVsZXRlQnV0dG9u
QDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkNFMTQxN0ZCREIw
MEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJkZWxldGVC
dXR0b25QcmVzc2VkQDJ4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUz
QkQ5MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIm1p
c3NpbmdJbWFnZUAyeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JE
QjE0MTk1OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0g
dGV4dEFyZWFSZXNpemVDb3JuZXIucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
MzE1M0JERDE0MTk1OUY0MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uLnBuZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGRl
bGV0ZUJ1dHRvbi5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkRGMTQx
OTVBMjgwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkLnBuZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IGRlbGV0
ZUJ1dHRvblByZXNzZWQucG5nOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE1M0JF
MTE0MTk1QTU3MDBGQ0Y1QkUgLyogbWlzc2luZ0ltYWdlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG1pc3NpbmdJ
bWFnZS5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTUzQkUzMTQxOTVCMjkw
MEZDRjVCRSAvKiBpbnB1dFNwZWVjaC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBpbnB1dFNwZWVjaC5wbmc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFDYW5TdGFydExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MjdBOTQxMDk5NjhEMUEwMDY4QTU0NiAvKiBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyODcxQkYwQjIwREVCNzAwNDkwMzVB
IC8qIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTY4MSw2ICs5NjkwLDcgQEAKIAkJOTM2M0I2MkEwRjhFOEZFMDAwODAzODEwIC8q
IEhpc3RvcnlQcm9wZXJ0eUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSGlzdG9yeVByb3BlcnR5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzNjNCNjJCMEY4RThGRTAwMDgwMzgxMCAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlQcm9wZXJ0eUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM2REQwM0EwOUNFQUMyNzAwNTZBRThDIC8qIFJh
bmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSYW5nZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzNzA5MThDMTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6
ZUNvcm5lckAyeC5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAidGV4dEFyZWFSZXNpemVDb3JuZXJAMngucG5nIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM3OTlFRjYwQkYyNzQzNjAwRDBGMjMwIC8q
IFJlbmRlcldvcmRCcmVhay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJXb3JkQnJlYWsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzc5
OUVGNzBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcldvcmRCcmVhay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWRnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA2MzUsNyArMTA2NDUsNiBAQAogCQlBQjI0N0E2QTBBRkQ2Mzgz
MDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJTbGlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBQjI0N0E2QjBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQUIzMUM5MUQxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpbmVDbGFtcFZhbHVlLmg7IHBhdGgg
PSBzdHlsZS9MaW5lQ2xhbXBWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlB
QjQyNjFENzBBMkY2Qzk3MDBCREQxN0QgLyogbWlzc2luZ0ltYWdlLnRpZmYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0g
bWlzc2luZ0ltYWdlLnRpZmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNENCNEVB
MEI4QkRBM0QwMDlGNDBCMCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCNjdEMUE2MDk3RjNBRTMwMEY5MzkyRSAvKiBS
ZW5kZXJUZXh0Q29udHJvbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyVGV4dENvbnRyb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
QjY3RDFBNzA5N0YzQUUzMDBGOTM5MkUgLyogUmVuZGVyVGV4dENvbnRyb2wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRDb250cm9sLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ2NCw3ICsxMjQ3Myw2IEBACiAJCUU0RDY4Nzc4MEVEN0FF
NEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHVyZ2VhYmxlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdWRpb0NvbnN0cnVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFRUZGQzcwRDM0NTUwQzAwNDY5QTU4IC8q
IEpTQXVkaW9Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0F1ZGlvQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRUQwNDhB
QkIwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRo
ID0gdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBw
YXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURF
M0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MzE4MywxNSArMTMxOTEsMTggQEAKIAkJCQk0NkQ0RjI0NjBBRjk3RTgxMDAzNTM4NUEgLyogY2Vs
bEN1cnNvci5wbmcgKi8sCiAJCQkJNDZENEYyNDcwQUY5N0U4MTAwMzUzODVBIC8qIGNvbnRleHRN
ZW51Q3Vyc29yLnBuZyAqLywKIAkJCQk0NjE0QTFGRDBCMjNBOEQ2MDA0NDZFMUMgLyogY29weUN1
cnNvci5wbmcgKi8sCi0JCQkJMUMxNEU3NkEwQUQ4QzgxQzAwQjYxNThCIC8qIGRlbGV0ZUJ1dHRv
bi50aWZmICovLAotCQkJCTFDMTRFNzY5MEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b25Q
cmVzc2VkLnRpZmYgKi8sCisJCQkJOTMxNTNCREQxNDE5NTlGNDAwRkNGNUJFIC8qIGRlbGV0ZUJ1
dHRvbi5wbmcgKi8sCisJCQkJOTMxNTNCQ0MxNDE3RkJCRjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRv
bkAyeC5wbmcgKi8sCisJCQkJOTMxNTNCREYxNDE5NUEyODAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRv
blByZXNzZWQucG5nICovLAorCQkJCTkzMTUzQkNFMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVC
dXR0b25QcmVzc2VkQDJ4LnBuZyAqLywKIAkJCQk4NTEzNkM4OTBBRUQ2NjU4MDBGOTBBM0QgLyog
ZWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOEEwQUVENjY1ODAwRjkwQTNEIC8q
IGVhc3RXZXN0UmVzaXplQ3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM4QjBBRUQ2NjU4MDBGOTBB
M0QgLyogaGVscEN1cnNvci5wbmcgKi8sCi0JCQkJNzUwRDAyQzAxMUQwRUU3RDAwQkQxQjI3IC8q
IGlucHV0U3BlZWNoLnRpZmYgKi8sCisJCQkJOTMxNTNCRTMxNDE5NUIyOTAwRkNGNUJFIC8qIGlu
cHV0U3BlZWNoLnBuZyAqLywKIAkJCQk4NTEzNkM4QzBBRUQ2NjU4MDBGOTBBM0QgLyogbGlua0N1
cnNvci5wbmcgKi8sCiAJCQkJQkNBRDE4MDgxMzFDN0EwRDAwOTkwNDA2IC8qIExvY2FsaXphYmxl
LnN0cmluZ3MgKi8sCi0JCQkJQUI0MjYxRDcwQTJGNkM5NzAwQkREMTdEIC8qIG1pc3NpbmdJbWFn
ZS50aWZmICovLAorCQkJCTkzMTUzQkUxMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2Uu
cG5nICovLAorCQkJCTkzMTUzQkQ5MTQxODFGN0EwMEZDRjVCRSAvKiBtaXNzaW5nSW1hZ2VAMngu
cG5nICovLAogCQkJCTg1MTM2QzhEMEFFRDY2NTgwMEY5MEEzRCAvKiBtb3ZlQ3Vyc29yLnBuZyAq
LywKIAkJCQk0NkY5RDVEQjBCMEQ2MDE3MDAyOEVFMzYgLyogbm9Ecm9wQ3Vyc29yLnBuZyAqLywK
IAkJCQk0NkJEMTZFMjBCMjc5NDczMDAxRjA4MzkgLyogbm9uZUN1cnNvci5wbmcgKi8sCkBAIC0x
MzIwNSw3ICsxMzIxNiw4IEBACiAJCQkJODUxMzZDOTQwQUVENjY1OTAwRjkwQTNEIC8qIHNvdXRo
RWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTUwQUVENjY1OTAwRjkwQTNEIC8q
IHNvdXRoUmVzaXplQ3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM5NjBBRUQ2NjU5MDBGOTBBM0Qg
Lyogc291dGhXZXN0UmVzaXplQ3Vyc29yLnBuZyAqLywKLQkJCQlFRDA0OEFCQjA4MzNGMTMyMDA2
RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLywKKwkJCQk5MzE1M0JEQjE0MTk1
OUJCMDBGQ0Y1QkUgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIucG5nICovLAorCQkJCTkzNzA5MThD
MTQxNkQ4NkIwMDQ3NzMzMyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lckAyeC5wbmcgKi8sCiAJCQkJ
NDZENEYyNDgwQUY5N0U4MTAwMzUzODVBIC8qIHZlcnRpY2FsVGV4dEN1cnNvci5wbmcgKi8sCiAJ
CQkJODUxMzZDOTcwQUVENjY1OTAwRjkwQTNEIC8qIHdhaXRDdXJzb3IucG5nICovLAogCQkJCTg1
MTM2Qzk4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyAqLywKQEAgLTIz
NTk3LDE2ICsyMzYwOSwxMiBAQAogCQkJCTQ2RDRGMjQ5MEFGOTdFODEwMDM1Mzg1QSAvKiBjZWxs
Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDZENEYyNEEwQUY5N0U4MTAwMzUzODVB
IC8qIGNvbnRleHRNZW51Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDYxNEExRkUw
QjIzQThENjAwNDQ2RTFDIC8qIGNvcHlDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQkx
QzE0RTc2QzBBRDhDODFDMDBCNjE1OEIgLyogZGVsZXRlQnV0dG9uLnRpZmYgaW4gUmVzb3VyY2Vz
ICovLAotCQkJCTFDMTRFNzZCMEFEOEM4MUMwMEI2MTU4QiAvKiBkZWxldGVCdXR0b25QcmVzc2Vk
LnRpZmYgaW4gUmVzb3VyY2VzICovLAogCQkJCTg1MTM2Qzk5MEFFRDY2NTkwMEY5MEEzRCAvKiBl
YXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUEwQUVENjY1
OTAwRjkwQTNEIC8qIGVhc3RXZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJODUxMzZDOUIwQUVENjY1OTAwRjkwQTNEIC8qIGhlbHBDdXJzb3IucG5nIGluIFJlc291cmNl
cyAqLywKLQkJCQk3NTBEMDJDMTExRDBFRTdEMDBCRDFCMjcgLyogaW5wdXRTcGVlY2gudGlmZiBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJODUxMzZDOUMwQUVENjY1OTAwRjkwQTNEIC8qIGxpbmtDdXJz
b3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlCQ0FEMTgwQTEzMUM3QTBEMDA5OTA0MDYgLyog
TG9jYWxpemFibGUuc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUNEQzE0MDUwREQzOTM0
QzAwNkVBQ0QzIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgaW4gUmVzb3VyY2VzICovLAotCQkJCUFC
NDI2MUQ4MEEyRjZDOTcwMEJERDE3RCAvKiBtaXNzaW5nSW1hZ2UudGlmZiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJODUxMzZDOUQwQUVENjY1OTAwRjkwQTNEIC8qIG1vdmVDdXJzb3IucG5nIGluIFJl
c291cmNlcyAqLywKIAkJCQk0NkY5RDVERTBCMEQ2MDE3MDAyOEVFMzYgLyogbm9Ecm9wQ3Vyc29y
LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDZCRDE2RTMwQjI3OTQ3MzAwMUYwODM5IC8qIG5v
bmVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKQEAgLTIzNjIwLDEyICsyMzYyOCwyMCBAQAog
CQkJCTg1MTM2Q0E0MEFFRDY2NTkwMEY5MEEzRCAvKiBzb3V0aEVhc3RSZXNpemVDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkNBNTBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhS
ZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkNBNjBBRUQ2NjU5MDBG
OTBBM0QgLyogc291dGhXZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJ
RUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4g
UmVzb3VyY2VzICovLAogCQkJCTQ2RDRGMjRCMEFGOTdFODEwMDM1Mzg1QSAvKiB2ZXJ0aWNhbFRl
eHRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk4NTEzNkNBNzBBRUQ2NjU5MDBGOTBB
M0QgLyogd2FpdEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTg1MTM2Q0E4MEFFRDY2
NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJ
MUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBp
biBSZXNvdXJjZXMgKi8sCisJCQkJOTM3MDkxOEQxNDE2RDg2QjAwNDc3MzMzIC8qIHRleHRBcmVh
UmVzaXplQ29ybmVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCQ0QxNDE3RkJC
RjAwRkNGNUJFIC8qIGRlbGV0ZUJ1dHRvbkAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkz
MTUzQkNGMTQxN0ZCREIwMEZDRjVCRSAvKiBkZWxldGVCdXR0b25QcmVzc2VkQDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCisJCQkJOTMxNTNCREExNDE4MUY3QTAwRkNGNUJFIC8qIG1pc3NpbmdJbWFn
ZUAyeC5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkRDMTQxOTU5QkMwMEZDRjVCRSAv
KiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkRF
MTQxOTU5RjQwMEZDRjVCRSAvKiBkZWxldGVCdXR0b24ucG5nIGluIFJlc291cmNlcyAqLywKKwkJ
CQk5MzE1M0JFMDE0MTk1QTI4MDBGQ0Y1QkUgLyogZGVsZXRlQnV0dG9uUHJlc3NlZC5wbmcgaW4g
UmVzb3VyY2VzICovLAorCQkJCTkzMTUzQkUyMTQxOTVBNTcwMEZDRjVCRSAvKiBtaXNzaW5nSW1h
Z2UucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk5MzE1M0JFNDE0MTk1QjJBMDBGQ0Y1QkUgLyog
aW5wdXRTcGVlY2gucG5nIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gOTQ1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVtb3ZlTm9kZUNvbW1hbmQuaCIKICNpbmNs
dWRlICJSZW5kZXJCb3guaCIKQEAgLTI0MCw3ICsyNDEsMTYgQEAgdm9pZCBEZWxldGVCdXR0b25D
b250cm9sbGVyOjpjcmVhdGVEZWxldAogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoYnV0dG9uSGVpZ2h0KSArICJweCIpOwogICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIENTU1ZhbHVlVmlzaWJsZSk7CiAK
LSAgICBSZWZQdHI8SW1hZ2U+IGJ1dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJkZWxldGVCdXR0b24iKTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Cisg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIGRldmljZVNjYWxl
RmFjdG9yID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKworICAgIFJlZlB0cjxJbWFnZT4g
YnV0dG9uSW1hZ2U7CisgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpCisgICAgICAgIGJ1
dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJkZWxldGVCdXR0b25AMngi
KTsKKyAgICBlbHNlCisgICAgICAgIGJ1dHRvbkltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJl
c291cmNlKCJkZWxldGVCdXR0b24iKTsKKwogICAgIGlmIChidXR0b25JbWFnZS0+aXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA5NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMCArMTEzLDE1
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmFsbENsaWVudHNSZW1vdmVkKCkKICAgICAgICAgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKIH0KIAotc3RhdGlj
IEltYWdlKiBicm9rZW5JbWFnZSgpCitJbWFnZSogQ2FjaGVkSW1hZ2U6OmJyb2tlbkltYWdlKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdAogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmVmUHRyPEltYWdlPiwgYnJva2VuSW1hZ2UsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
Im1pc3NpbmdJbWFnZSIpKSk7Ci0gICAgcmV0dXJuIGJyb2tlbkltYWdlLmdldCgpOworICAgIGlm
IChkZXZpY2VTY2FsZUZhY3RvciA+PSAyKSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SW1hZ2UqLCBicm9rZW5JbWFnZUhpUmVzLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJt
aXNzaW5nSW1hZ2VAMngiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdl
SGlSZXM7CisgICAgfQorCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIGJyb2tlbklt
YWdlTG9SZXMsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoIm1pc3NpbmdJbWFnZSIpLmxl
YWtSZWYoKSkpOworICAgIHJldHVybiBicm9rZW5JbWFnZUxvUmVzOwogfQogCiBJbWFnZSogQ2Fj
aGVkSW1hZ2U6OmltYWdlKCkgY29uc3QKQEAgLTEyNCw3ICsxMjksNyBAQCBJbWFnZSogQ2FjaGVk
SW1hZ2U6OmltYWdlKCkgY29uc3QKICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwogCiAgICAg
aWYgKGVycm9yT2NjdXJyZWQoKSAmJiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UpCi0gICAgICAg
IHJldHVybiBicm9rZW5JbWFnZSgpOworICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoMSk7CiAK
ICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gOTQ1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCkgY29uc3Q7
IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxl
IHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fQogCisgICAgSW1hZ2UqIGJyb2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMSkg
Y29uc3Q7CisKICAgICBib29sIGNhblJlbmRlcihmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCB7IHJl
dHVybiAhZXJyb3JPY2N1cnJlZCgpICYmICFpbWFnZVNpemUobXVsdGlwbGllcikuaXNFbXB0eSgp
OyB9CiAKICAgICAvLyBUaGVzZSBhcmUgb25seSB1c2VkIGZvciBTVkdJbWFnZSByaWdodCBub3cK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0JKHJldmlzaW9uIDk0NTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmludmFsaWRhdGVQbGF0Zm9ybURhdGEKIFBhc3NSZWZQdHI8SW1hZ2U+IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogewogICAgIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYkNvcmVCdW5kbGVGaW5k
ZXIgY2xhc3NdXTsKLSAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVz
b3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInRpZmYi
XTsKKyAgICBOU1N0cmluZyAqaW1hZ2VQYXRoID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6W05T
U3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOm5hbWVdIG9mVHlwZTpAInBuZyJdOwogICAgIE5T
RGF0YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6aW1h
Z2VQYXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKICAgICAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gOTQ1NzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCArNzks
MjYgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHBhZGRpbmdIZWlnaAogc3RhdGljIGNv
bnN0IGZsb2F0IG1heEFsdFRleHRXaWR0aCA9IDEwMjQ7CiBzdGF0aWMgY29uc3QgaW50IG1heEFs
dFRleHRIZWlnaHQgPSAyNTY7CiAKK3N0YXRpYyBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcihGcmFt
ZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgUGFn
ZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4g
MTsKKyAgICByZXR1cm4gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KKwogSW50U2l6ZSBS
ZW5kZXJJbWFnZTo6aW1hZ2VTaXplRm9yRXJyb3IoQ2FjaGVkSW1hZ2UqIG5ld0ltYWdlKSBjb25z
dAogewogICAgIEFTU0VSVF9BUkcobmV3SW1hZ2UsIG5ld0ltYWdlKTsKICAgICBBU1NFUlRfQVJH
KG5ld0ltYWdlLCBuZXdJbWFnZS0+aW1hZ2UoKSk7CiAKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IGRldmljZVNjYWxlRmFjdG9yKGZyYW1lKCkpOworCiAgICAgLy8gaW1hZ2VTaXplKCkgcmV0dXJu
cyAwIGZvciB0aGUgZXJyb3IgaW1hZ2UuIFdlIG5lZWQgdGhlIHRydWUgc2l6ZSBvZiB0aGUKICAg
ICAvLyBlcnJvciBpbWFnZSwgc28gd2UgaGF2ZSB0byBnZXQgaXQgYnkgZ3JhYmJpbmcgaW1hZ2Uo
KSBkaXJlY3RseS4KLSAgICByZXR1cm4gSW50U2l6ZShwYWRkaW5nV2lkdGggKyBuZXdJbWFnZS0+
aW1hZ2UoKS0+d2lkdGgoKSAqIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSwgcGFkZGluZ0hlaWdo
dCArIG5ld0ltYWdlLT5pbWFnZSgpLT5oZWlnaHQoKSAqIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20o
KSk7CisgICAgcmV0dXJuIEludFNpemUocGFkZGluZ1dpZHRoICsgbmV3SW1hZ2UtPmJyb2tlbklt
YWdlKHNjYWxlRmFjdG9yKS0+d2lkdGgoKSAqIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSwgcGFk
ZGluZ0hlaWdodCArIG5ld0ltYWdlLT5icm9rZW5JbWFnZShzY2FsZUZhY3RvciktPmhlaWdodCgp
ICogc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKIH0KIAogLy8gU2V0cyB0aGUgaW1hZ2UgaGVp
Z2h0IGFuZCB3aWR0aCB0byBmaXQgdGhlIGFsdCB0ZXh0LiAgUmV0dXJucyB0cnVlIGlmIHRoZQpA
QCAtMjY4LDYgKzI4MCw4IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJ
bmYKICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKCk7CiAKICAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQo
KSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgpICYm
IHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBD
YWxsIGJyb2tlbkltYWdlKCkgZXhwbGljaXRseSB0byBlbnN1cmUgd2UgZ2V0IHRoZSBicm9rZW4g
aW1hZ2UgaWNvbiBhdCB0aGUgYXBwcm9wcmlhdGUgcmVzb2x1dGlvbi4KKyAgICAgICAgICAgICAg
ICBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+Y2FjaGVkSW1hZ2UoKS0+YnJva2VuSW1hZ2UoZGV2
aWNlU2NhbGVGYWN0b3IoZnJhbWUoKSkpOwogICAgICAgICAgICAgICAgIC8vIENlbnRlciB0aGUg
ZXJyb3IgaW1hZ2UsIGFjY291bnRpbmcgZm9yIGJvcmRlciBhbmQgcGFkZGluZy4KICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IGNlbnRlclggPSAodXNhYmxlV2lkdGggLSBpbWFnZS0+d2lkdGgo
KSkgLyAyOwogICAgICAgICAgICAgICAgIGlmIChjZW50ZXJYIDwgMCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gOTQ1NzcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDI0LDYgKzI0MjQsMzAgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cAogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+
c3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKIH0KIAordm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRm
b3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5b3V0UmVjdCByZXNp
emVyQ29ybmVyUmVjdCkKK3sKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIH0KKworICAgIFJlZlB0cjxJbWFnZT4g
cmVzaXplQ29ybmVySW1hZ2U7CisgICAgaWYgKGRldmljZVNjYWxlRmFjdG9yID49IDIpIHsKKyAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZSosIHJlc2l6ZUNvcm5lckltYWdlSGlSZXMs
IChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyQDJ4Iiku
bGVha1JlZigpKSk7CisgICAgICAgIHJlc2l6ZUNvcm5lckltYWdlID0gcmVzaXplQ29ybmVySW1h
Z2VIaVJlczsKKyAgICB9IGVsc2UgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEltYWdl
KiwgcmVzaXplQ29ybmVySW1hZ2VMb1JlcywgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
dGV4dEFyZWFSZXNpemVDb3JuZXIiKS5sZWFrUmVmKCkpKTsKKyAgICAgICAgcmVzaXplQ29ybmVy
SW1hZ2UgPSByZXNpemVDb3JuZXJJbWFnZUxvUmVzOworICAgIH0KKworICAgIEludFNpemUgY29y
bmVyUmVzaXplclNpemUgPSByZXNpemVDb3JuZXJJbWFnZS0+c2l6ZSgpOworICAgIGNvcm5lclJl
c2l6ZXJTaXplLnNjYWxlKDEgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBJbnRSZWN0IGlt
YWdlUmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXpl
clNpemUsIGNvcm5lclJlc2l6ZXJTaXplKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UocmVzaXpl
Q29ybmVySW1hZ2UuZ2V0KCksIHJlbmRlcmVyKCktPnN0eWxlKCktPmNvbG9yU3BhY2UoKSwgaW1h
Z2VSZWN0KTsKK30KKwogdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNp
emUoKSA9PSBSRVNJWkVfTk9ORSkKQEAgLTI0NDcsMTAgKzI0NzEsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBQYWludCB0aGUgcmVzaXplciBjb250cm9sLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmVmUHRyPEltYWdlPiwgcmVzaXplQ29ybmVySW1hZ2UsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoInRleHRBcmVhUmVzaXplQ29ybmVyIikpKTsKLSAgICBMYXlvdXRQb2ludCBpbWFnZVBv
aW50KGFic1JlY3QubWF4WCgpIC0gcmVzaXplQ29ybmVySW1hZ2UtPndpZHRoKCksIGFic1JlY3Qu
bWF4WSgpIC0gcmVzaXplQ29ybmVySW1hZ2UtPmhlaWdodCgpKTsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2UocmVzaXplQ29ybmVySW1hZ2UuZ2V0KCksIGJveC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBpbWFnZVBvaW50KTsKKyAgICBkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoY29udGV4dCwgYWJz
UmVjdCk7CiAKICAgICAvLyBEcmF3IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3Jl
eSBsaW5lKSBpZiB0aGVyZSBhcmUgYW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlw
cGluZyB3aWxsIGV4Y2x1ZGUgdGhlIHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFt
ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA5
NDU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MTEsNiArNjExLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNjcm9s
bENvcm5lclN0eWxlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNpemVyU3R5bGUoKTsKIAorICAgIHZv
aWQgZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCosIExheW91dFJlY3Qg
cmVzaXplckNvcm5lclJlY3QpOworCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0aW9uKCk7CiAgICAg
Ym9vbCBpc1BhZ2luYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdpbmF0ZWQ7IH0KIAo=
</data>
<flag name="review"
          id="103504"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="103511"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>