<?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>31169</bug_id>
          
          <creation_ts>2009-11-05 10:30:02 -0800</creation_ts>
          <short_desc>Need to implement WebGLContextAttributes</short_desc>
          <delta_ts>2010-01-14 12:07:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33416</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>160865</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-05 10:30:02 -0800</bug_when>
    <thetext>This object allows characteristics of the drawing buffer to be passed to getContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178925</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-08 19:13:59 -0800</bug_when>
    <thetext>*** Bug 31176 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178932</commentid>
    <comment_count>2</comment_count>
      <attachid>46194</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-08 19:54:20 -0800</bug_when>
    <thetext>Created attachment 46194
Patch

Added the WebGLContextAttributes class and custom JavaScript bindings to accept a native object as the second argument to getContext(&quot;experimental-webgl&quot;) per the WebGL specification. Passed new attributes object down through HTMLCanvasElement::getContext to WebGLRenderingContext and GraphicsContext3D. Added getContextAttributes() to WebGLRenderingContext. Added test case ensuring that context attributes can be passed down and returned.  Tested in Safari and Chromium. The attributes will be hooked up to the creation of the OpenGL context in bug 33416.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178935</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-08 20:00:27 -0800</bug_when>
    <thetext>Attachment 46194 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/html/HTMLCanvasElement.h:72:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178940</commentid>
    <comment_count>4</comment_count>
      <attachid>46195</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-08 20:53:17 -0800</bug_when>
    <thetext>Created attachment 46195
Revised patch

Revised patch fixing style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178941</commentid>
    <comment_count>5</comment_count>
      <attachid>46195</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-01-08 21:06:26 -0800</bug_when>
    <thetext>Comment on attachment 46195
Revised patch

&gt; Index: WebCore/platform/graphics/GraphicsContext3D.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/GraphicsContext3D.h	(revision 53013)
&gt; +++ WebCore/platform/graphics/GraphicsContext3D.h	(working copy)
&gt; @@ -55,6 +55,7 @@ namespace WebCore {
&gt;      class WebGLActiveInfo;
&gt;      class WebGLArray;
&gt;      class WebGLBuffer;
&gt; +    class WebGLContextAttributes;
&gt;      class WebGLUnsignedByteArray;
&gt;      class WebGLFloatArray;
&gt;      class WebGLFramebuffer;
&gt; @@ -382,7 +383,7 @@ namespace WebCore {
&gt;              INVALID_FRAMEBUFFER_OPERATION = 0x0506
&gt;          };
&gt;          
&gt; -        static PassOwnPtr&lt;GraphicsContext3D&gt; create();
&gt; +        static PassOwnPtr&lt;GraphicsContext3D&gt; create(WebGLContextAttributes* attrs);
&gt;          virtual ~GraphicsContext3D();
&gt;  
&gt;  #if PLATFORM(MAC)
&gt; @@ -459,6 +460,12 @@ namespace WebCore {
&gt;  
&gt;          void getBufferParameteriv(unsigned long target, unsigned long pname, int* value);
&gt;  
&gt; +        void getContextAttributes(bool&amp; alpha,
&gt; +                                  bool&amp; depth,
&gt; +                                  bool&amp; stencil,
&gt; +                                  bool&amp; antialias,
&gt; +                                  bool&amp; premultipliedAlpha);
&gt; +
&gt;          unsigned long getError();
&gt;  
&gt;          void getFloatv(unsigned long pname, float* value);
&gt; @@ -602,11 +609,16 @@ namespace WebCore {
&gt;          void synthesizeGLError(unsigned long error);
&gt;  
&gt;      private:        
&gt; -        GraphicsContext3D();
&gt; +        GraphicsContext3D(WebGLContextAttributes* attrs);
&gt;  
&gt;          int m_currentWidth, m_currentHeight;
&gt;          
&gt;  #if PLATFORM(MAC)
&gt; +        bool m_alphaAttr;
&gt; +        bool m_depthAttr;
&gt; +        bool m_stencilAttr;
&gt; +        bool m_antialiasAttr;
&gt; +        bool m_premultipliedAlphaAttr;
&gt;          Vector&lt;Vector&lt;float&gt; &gt; m_vertexArray;

It might be better to put these into a little helper class to make it easier to pass them in and out. It would make it easier to expand in the future as well.In fact you could use an instance of this class to hold the data in the WebGLContextAttributes object to avoid a lot of copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178997</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-09 08:42:28 -0800</bug_when>
    <thetext>Attachment 46195 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/176398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179040</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-09 14:04:45 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It might be better to put these into a little helper class to make it easier to
&gt; pass them in and out. It would make it easier to expand in the future as
&gt; well.In fact you could use an instance of this class to hold the data in the
&gt; WebGLContextAttributes object to avoid a lot of copying.

I agree, but do you have a suggestion on where that class should go? It seems that putting it in WebCore/html/canvas is not allowed, because headers in WebCore/platform/graphics are not supposed to refer upward. I suppose it could be a nested class of GraphicsContext3D, such as GraphicsContext3D::Attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179074</commentid>
    <comment_count>8</comment_count>
      <attachid>46195</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-09 15:55:43 -0800</bug_when>
    <thetext>Comment on attachment 46195
Revised patch

I think a problem here is that you&apos;re making GraphicsContext3D depend on the DOM type WebGLContextAttributes -- it should not be.  The dependence on DOM types in GraphicsContext3D is a serious design bug that we need to fix, adding yyet more dependencies is a bad thing.

I would suggest that these arguments simply be passed as either bool or enum parameters to GraphicsContext3D constructor.  I&apos;d also like to get shared storage and implementation of these attributes, rather than having platform ifdefs scattered throughout the code.  We spent a lot of time rectifying this in the 2d context, doing it in the 3d context seems bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179137</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-01-10 08:03:42 -0800</bug_when>
    <thetext>Put the class in GraphicsContext3D.h and use it in WebGLContextAttributes. Then you can pass the class to GraphicsContext3D APIs and avoid any WebGLContextAttributes dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179565</commentid>
    <comment_count>10</comment_count>
      <attachid>46313</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-11 15:05:36 -0800</bug_when>
    <thetext>Created attachment 46313
Revised patch

Added GraphicsContext3D::Attributes struct as the bridge between the DOM and graphics layers to avoid abstraction violations. Revised ChangeLog descriptions. Also fixed up build failures on qt and gtk bots from last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179568</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-11 15:12:46 -0800</bug_when>
    <thetext>Attachment 46313 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/html/HTMLCanvasElement.h:72:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179577</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-01-11 15:38:33 -0800</bug_when>
    <thetext>It might be better to use a class for GraphicsContext3D so it can have proper initializers and you don&apos;t have to worry about the members having a rational value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179650</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-11 18:46:06 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; It might be better to use a class for GraphicsContext3D so it can have proper
&gt; initializers and you don&apos;t have to worry about the members having a rational
&gt; value.

I considered that, but that will duplicate the setter/getter code in WebGLContextAttributes. It&apos;s simpler to leave it as a struct since at the top level these values come in via WebGLContextAttributes.

I&apos;ll upload a new patch fixing the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179651</commentid>
    <comment_count>14</comment_count>
      <attachid>46330</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-11 18:47:23 -0800</bug_when>
    <thetext>Created attachment 46330
Revised patch

Fixed style issue in previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179882</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-01-12 10:46:52 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; It might be better to use a class for GraphicsContext3D so it can have proper
&gt; &gt; initializers and you don&apos;t have to worry about the members having a rational
&gt; &gt; value.
&gt; 
&gt; I considered that, but that will duplicate the setter/getter code in
&gt; WebGLContextAttributes. It&apos;s simpler to leave it as a struct since at the top
&gt; level these values come in via WebGLContextAttributes.

I&apos;m not sure what you mean. You can keep the member variables public and just add a ctor which will init them to the correct default. In fact, you can just leave it as a struct and add a ctor, since the only difference between the struct and class keywords is that everything in a struct is implicitly public.

I just like to avoid the possibility of uninitialized variables when we have the mechanisms to avoid it, mostly for free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179886</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-12 10:51:56 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; It might be better to use a class for GraphicsContext3D so it can have proper
&gt; &gt; &gt; initializers and you don&apos;t have to worry about the members having a rational
&gt; &gt; &gt; value.
&gt; &gt; 
&gt; &gt; I considered that, but that will duplicate the setter/getter code in
&gt; &gt; WebGLContextAttributes. It&apos;s simpler to leave it as a struct since at the top
&gt; &gt; level these values come in via WebGLContextAttributes.
&gt; 
&gt; I&apos;m not sure what you mean. You can keep the member variables public and just
&gt; add a ctor which will init them to the correct default. In fact, you can just
&gt; leave it as a struct and add a ctor, since the only difference between the
&gt; struct and class keywords is that everything in a struct is implicitly public.
&gt; 
&gt; I just like to avoid the possibility of uninitialized variables when we have
&gt; the mechanisms to avoid it, mostly for free.

I assumed it would be bad form to add a constructor to a struct. Since it isn&apos;t I&apos;ll make this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179911</commentid>
    <comment_count>17</comment_count>
      <attachid>46385</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-12 11:36:05 -0800</bug_when>
    <thetext>Created attachment 46385
Revised patch

Moved initialization of attribute flags into constructor on GraphicsContext3D::Attributes struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180308</commentid>
    <comment_count>18</comment_count>
      <attachid>46385</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-13 11:24:49 -0800</bug_when>
    <thetext>Comment on attachment 46385
Revised patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180538</commentid>
    <comment_count>19</comment_count>
      <attachid>46385</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-13 21:50:56 -0800</bug_when>
    <thetext>Comment on attachment 46385
Revised patch

Clearing flags on attachment: 46385

Committed r53238: &lt;http://trac.webkit.org/changeset/53238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180539</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-13 21:51:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180578</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 00:01:57 -0800</bug_when>
    <thetext>This checkin broke Tiger.  Sadly the commit-queue can&apos;t detect that yet.
http://build.webkit.org/builders/Tiger%20Intel%20Release/builds/7737/steps/compile-webkit/logs/stdio

I&apos;ll fix it.  It should be a very simple fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180579</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 00:04:28 -0800</bug_when>
    <thetext>(This, btw, is no negative reflection on you kbr.  Simply logging everything in the bug for posterity.  The commit-queue should be bullet-proof and know how to clean up after itself when it break things.  I&apos;m working on teaching it how to roll out its own commits when it can be sure they broke things.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180585</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 00:21:50 -0800</bug_when>
    <thetext>Committed r53243: &lt;http://trac.webkit.org/changeset/53243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180835</commentid>
    <comment_count>24</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-01-14 12:02:47 -0800</bug_when>
    <thetext>Sorry about that. I&apos;m surprised the qt/gtk bots didn&apos;t catch that mistake since they caught other areas where I hadn&apos;t built with ENABLE(3D_CANVAS) turned off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180838</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 12:07:09 -0800</bug_when>
    <thetext>The EWS bots don&apos;t build debug yet.  They should.  We&apos;ll make them do so as soon as they&apos;re fast enough. :)  I&apos;ve filed bug 33681 about this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46194</attachid>
            <date>2010-01-08 19:54:20 -0800</date>
            <delta_ts>2010-01-08 20:53:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>context-attributes.patch</filename>
            <type>text/plain</type>
            <size>58309</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzAzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDEtMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gaW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhl
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGJpbmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1
bWVudCB0bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhl
IFdlYkdMIHNwZWNpZmljYXRpb24uCisgICAgICAgIFBhc3NlZCBuZXcgYXR0cmlidXRlcyBvYmpl
Y3QgZG93biB0aHJvdWdoCisgICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0IHRv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QuIEFk
ZGVkIGdldENvbnRleHRBdHRyaWJ1dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0LiBBZGRlZCB0ZXN0IGNhc2UgZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJp
YnV0ZXMgY2FuIGJlIHBhc3NlZCBkb3duIGFuZCByZXR1cm5lZC4gIFRlc3RlZCBpbiBTYWZhcmkg
YW5kCisgICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tlZCB1cCB0
byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1ZyAzMzQx
Ni4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMu
aHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKToK
KyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOjpDYW52YXNDb250ZXh0QXR0
cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDb250ZXh0QXR0cmlidXRlczo6fkNh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNDb250
ZXh0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0QXR0cmli
dXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjpkZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzOjpzZXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpzdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0dHJp
YnV0ZXM6OnNldFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0QXR0cmli
dXRlczo6YW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0dHJpYnV0
ZXM6OnNldEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1
dGVzOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMpOgorCiAyMDEwLTAxLTA4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFdlYkdMQXJyYXlC
dWZmZXIgXAogICAgIFdlYkdMQnVmZmVyIFwKICAgICBXZWJHTEJ5dGVBcnJheSBcCisgICAgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBcCiAgICAgV2ViR0xGbG9hdEFycmF5IFwKICAgICBXZWJHTEZy
YW1lYnVmZmVyIFwKICAgICBDYW52YXNHcmFkaWVudCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTMwMTMp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBA
QAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaWRsJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMQnl0ZUFycmF5LmlkbCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
RmxvYXRBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwnLApA
QCAtMTMwMiwxMiArMTMwMywxNiBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnl0ZUFycmF5LmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAnLAorICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xGbG9hdEFycmF5LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGbG9hdEFycmF5LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9D
YW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0Nh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZh
c0dyYWRpZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xJbnRBcnJheS5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUzMDEz
KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMjQsNiArMTIyNCwxMyBAQAogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdl
YkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLzsgfTsKKwkJNkU0
RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE3MTBGN0ZC
MzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CisJCTZFNEU5
MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTgxMEY3RkIzMTAw
QTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNEU5MUFFMTBG
N0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKKwkJNkU0RTkxQUYxMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNEU5MUIwMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUIxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaWRsICovOyB9OworCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OworCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBG
b250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87IH07
CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBNzEw
MkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovOyB9OwogCQk3NTQx
MzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBOTEwMkUwMEY0
MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi87IH07CkBAIC02NTgwLDYg
KzY1ODcsMTMgQEAKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5j
cHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZh
cy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTcx
MEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcDsg
cGF0aCA9IGNhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFNEU5MUE4MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0
QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYW52YXNDb250
ZXh0QXR0cmlidXRlcy5oOyBwYXRoID0gY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAv
KiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTRF
OTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7IHBhdGgg
PSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw7
IHBhdGggPSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIw
IC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNB
NzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA3MzYsNiArMTA3NTAsOCBAQAogCQk0OTQ4NEZBRTEwMkNGMDFFMDAxODdERDMgLyogY2Fu
dmFzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2RTRF
OTFBNzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAor
CQkJCTZFNEU5MUE4MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5o
ICovLAogCQkJCUE3RDIwRjZCMTA3RjQzOEIwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8uaCAq
LywKIAkJCQlBN0QyMEYzQjEwN0YzNzM4MDBBODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmlkbCAq
LywKIAkJCQk0OUVFQ0RDNzEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xBcnJheS5jcHAgKi8sCkBA
IC0xMDc1MCw2ICsxMDc2Niw5IEBACiAJCQkJNDlDN0I5QUIxMDQyRDMyRTAwMDlENDQ3IC8qIFdl
YkdMQnl0ZUFycmF5LmNwcCAqLywKIAkJCQk0OUM3QjlBQzEwNDJEMzJFMDAwOUQ0NDcgLyogV2Vi
R0xCeXRlQXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xC
eXRlQXJyYXkuaWRsICovLAorCQkJCTZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKKwkJCQk2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovLAorCQkJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCAqLywKIAkJCQk0OUVFQ0RDRDEwNTAzQzIz
MDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0RDRTEwNTAzQzIz
MDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmggKi8sCiAJCQkJNDlFRUNEQ0YxMDUwM0MyMzAw
MDk5RkFCIC8qIFdlYkdMRmxvYXRBcnJheS5pZGwgKi8sCkBAIC0xMjk0OSw2ICsxMjk2OCw4IEBA
CiAJCQkJNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLywKIAkJ
CQk0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ5dGVBcnJheS5jcHAgKi8sCiAJ
CQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCeXRlQXJyYXkuaCAqLywKKwkJ
CQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCAqLywKKwkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggKi8sCiAJCQkJNDlFRUNFRjQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTV2ViR0xGbG9h
dEFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0VGNTEwNTA3MEM0MDAwOTlGQUIgLyogSlNXZWJHTEZs
b2F0QXJyYXkuaCAqLywKIAkJCQk0OUM3Qjk4NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZy
YW1lYnVmZmVyLmNwcCAqLywKQEAgLTE4MzI3LDYgKzE4MzQ4LDkgQEAKIAkJCQkzN0MyOEE2ODEw
RjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1QjdBNTUxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTRDMDBFNjEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8q
IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTRFOTFBRjEw
RjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODQyNyw2ICsxODQ1MSw3IEBACiAJCQkJODUxMzZDQTgw
QUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywK
IAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk2RTRFOTFCMDEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjA0ODksNiArMjA1
MTQsOSBAQAogCQkJCTUxMTIyNDc4MTBDRkI4RjQwMDgwOTlENyAvKiBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdB
MDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNkU0RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFRThB
NzcyMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaWYgRU5B
QkxFKDNEX0NBTlZBUykKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KIApAQCAtNDcsNCArNDgsMzYgQEAgdm9pZCBKU0hUTUxDYW52YXNFbGVtZW50Ojpt
YXJrQ2hpbGRyZW4oTQogICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFs
RGF0YSwgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpOwogfQogCitKU1ZhbHVlIEpTSFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQoreworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1M
Q2FudmFzRWxlbWVudCo+KGltcGwoKSk7CisgICAgY29uc3QgVVN0cmluZyYgY29udGV4dElkID0g
YXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJp
YnV0ZXM+IGF0dHJzOworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisgICAgaWYgKGNvbnRleHRJZCA9
PSAiZXhwZXJpbWVudGFsLXdlYmdsIiB8fCBjb250ZXh0SWQgPT0gIndlYmtpdC0zZCIpIHsKKyAg
ICAgICAgYXR0cnMgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUoKTsKKyAgICAgICAg
V2ViR0xDb250ZXh0QXR0cmlidXRlcyogd2ViR0xBdHRycyA9IHN0YXRpY19jYXN0PFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMqPihhdHRycy5nZXQoKSk7CisgICAgICAgIGlmIChhcmdzLnNpemUoKSA+
IDEgJiYgYXJncy5hdCgxKS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCoganNB
dHRycyA9IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCk7CisgICAgICAgICAgICBJZGVudGlmaWVyIGFs
cGhhKGV4ZWMsICJhbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5
KGV4ZWMsIGFscGhhKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRBbHBoYShqc0F0
dHJzLT5nZXQoZXhlYywgYWxwaGEpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIGRlcHRoKGV4ZWMsICJkZXB0aCIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhh
c1Byb3BlcnR5KGV4ZWMsIGRlcHRoKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRE
ZXB0aChqc0F0dHJzLT5nZXQoZXhlYywgZGVwdGgpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAg
ICAgICBJZGVudGlmaWVyIHN0ZW5jaWwoZXhlYywgInN0ZW5jaWwiKTsKKyAgICAgICAgICAgIGlm
IChqc0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3
ZWJHTEF0dHJzLT5zZXRTdGVuY2lsKGpzQXR0cnMtPmdldChleGVjLCBzdGVuY2lsKS50b0Jvb2xl
YW4oZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBhbnRpYWxpYXMoZXhlYywgImFudGlh
bGlhcyIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5KGV4ZWMsIGFudGlh
bGlhcykpCisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0QW50aWFsaWFzKGpzQXR0cnMt
PmdldChleGVjLCBhbnRpYWxpYXMpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIHByZW11bHRpcGxpZWRBbHBoYShleGVjLCAicHJlbXVsdGlwbGllZEFscGhhIik7Cisg
ICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgcHJlbXVsdGlwbGllZEFs
cGhhKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEo
anNBdHRycy0+Z2V0KGV4ZWMsIHByZW11bHRpcGxpZWRBbHBoYSkudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihjYW52YXMtPmdldENvbnRleHQoY29udGV4dElkLCBhdHRycy5n
ZXQoKSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1MzAxMykKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMzksNiArMjEzOSw3IEBAIHN1YiBJc1JlZlB0clR5cGUKICAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiV2ViR0xBcnJheUJ1ZmZlciI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIldl
YkdMQnl0ZUFycmF5IjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiV2ViR0xCdWZmZXIiOwor
ICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzIjsKICAgICBy
ZXR1cm4gMSBpZiAkdHlwZSBlcSAiV2ViR0xGbG9hdEFycmF5IjsKICAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiV2ViR0xGcmFtZWJ1ZmZlciI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIldl
YkdMSW50QXJyYXkiOwpAQCAtMjI0Miw2ICsyMjQzLDcgQEAgbXkgJXR5cGVDYW5GYWlsQ29udmVy
c2lvbiA9ICgKICAgICAiV2ViR0xBcnJheSIgPT4gMCwKICAgICAiV2ViR0xCdWZmZXIiID0+IDAs
CiAgICAgIldlYkdMQnl0ZUFycmF5IiA9PiAwLAorICAgICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
IiA9PiAwLAogICAgICJXZWJHTEZsb2F0QXJyYXkiID0+IDAsCiAgICAgIldlYkdMRnJhbWVidWZm
ZXIiID0+IDAsCiAgICAgIkNhbnZhc0dyYWRpZW50IiA9PiAwLApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTM3MSw3ICszNzEsOSBA
QCBzdWIgRGV0ZXJtaW5lUGFyc2VNb2RlCiAgICAgICAgICRtb2RlID0gTU9ERV9JTlRFUkZBQ0U7
CiAgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8pIHsKICAgICAgICAgJG1vZGUgPSBNT0RF
X0VYQ0VQVElPTjsKLSAgICB9IGVsc2lmICgkXyA9fiAvYWxpYXMvKSB7CisgICAgfSBlbHNpZiAo
JF8gPX4gLyhcQXxcYilhbGlhcy8pIHsKKyAgICAgICAgIyBUaGUgKFxBfFxiKSBhYm92ZSBpcyBu
ZWVkZWQgc28gd2UgZG9uJ3QgbWF0Y2ggYXR0cmlidXRlcworICAgICAgICAjIHdob3NlIG5hbWVz
IGNvbnRhaW4gdGhlIHN1YnN0cmluZyAiYWxpYXMiLgogICAgICAgICAkbW9kZSA9IE1PREVfQUxJ
QVM7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAJKHJldmlzaW9uIDUzMDEz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCiAjaW5jbHVk
ZSAiTWFpblRocmVhZERPTURhdGEuaCIKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNv
dXJjZXNBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNs
dWRlICJiaW5kaW5ncy9WOFdlYkdMQXJyYXlCdWZmZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdz
L1Y4V2ViR0xCdWZmZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xCeXRlQXJyYXku
Y3BwIgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAiCiAj
aW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTEZsb2F0QXJyYXkuY3BwIgogI2luY2x1ZGUgImJpbmRp
bmdzL1Y4V2ViR0xGcmFtZWJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhDYW52YXNH
cmFkaWVudC5jcHAiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZp
c2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR0xBcnJheS5oIgorI2luY2x1ZGUgIldl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyLDYgKzQwMiw3IEBACiAjaW5jbHVk
ZSAiVjhXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEJ5dGVBcnJheS5oIgogI2luY2x1
ZGUgIlY4V2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJWOFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCIKICNpbmNsdWRlICJWOFdlYkdMRmxvYXRBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xGcmFt
ZWJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xJbnRBcnJheS5oIgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluZGV4LmgJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw2ICs0NTQsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihXRUJHTEFSUkFZQlVGRkVSLCBXZWJHTEFycmF5
QnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEJVRkZF
UiwgV2ViR0xCdWZmZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgVihXRUJHTEJZVEVBUlJBWSwgV2ViR0xCeXRlQXJyYXkpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgVihXRUJHTENPTlRFWFRBVFRSSUJVVEVTLCBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzKSAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEZMT0FUQVJS
QVksIFdlYkdMRmxvYXRBcnJheSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihXRUJHTEZSQU1FQlVGRkVSLCBXZWJHTEZyYW1lYnVmZmVyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTElOVEFSUkFZLCBXZWJHTEludEFycmF5KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52
YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNF
bGVtZW50LmgiCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
Tm9kZS5oIgpAQCAtNDYsNyArNDcsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xk
ZXIoKTsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTm9kZTxIVE1MQ2FudmFzRWxlbWVudD4oaG9sZGVyKTsKICAgICBTdHJpbmcg
Y29udGV4dElkID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIHJlc3VsdCA9IGltcC0+Z2V0Q29udGV4dChjb250ZXh0SWQpOworICAgIFJlZlB0
cjxDYW52YXNDb250ZXh0QXR0cmlidXRlcz4gYXR0cnM7CisjaWYgRU5BQkxFKDNEX0NBTlZBUykK
KyAgICBpZiAoY29udGV4dElkID09ICJleHBlcmltZW50YWwtd2ViZ2wiIHx8IGNvbnRleHRJZCA9
PSAid2Via2l0LTNkIikgeworICAgICAgICBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6
OmNyZWF0ZSgpOworICAgICAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiB3ZWJHTEF0dHJzID0g
c3RhdGljX2Nhc3Q8V2ViR0xDb250ZXh0QXR0cmlidXRlcyo+KGF0dHJzLmdldCgpKTsKKyAgICAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmIGFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4ganNBdHRycyA9IGFyZ3NbMV0tPlRvT2JqZWN0
KCk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGFscGhhID0gdjg6OlN0cmlu
Zzo6TmV3KCJhbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbHBoYSkpCisg
ICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0QWxwaGEoanNBdHRycy0+R2V0KGFscGhhKS0+
Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBkZXB0
aCA9IHY4OjpTdHJpbmc6Ok5ldygiZGVwdGgiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5I
YXMoZGVwdGgpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldERlcHRoKGpzQXR0cnMt
PkdldChkZXB0aCktPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gc3RlbmNpbCA9IHY4OjpTdHJpbmc6Ok5ldygic3RlbmNpbCIpOworICAgICAgICAg
ICAgaWYgKGpzQXR0cnMtPkhhcyhzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJz
LT5zZXRTdGVuY2lsKGpzQXR0cnMtPkdldChzdGVuY2lsKS0+Qm9vbGVhblZhbHVlKCkpOworICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBhbnRpYWxpYXMgPSB2ODo6U3RyaW5nOjpO
ZXcoImFudGlhbGlhcyIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbnRpYWxpYXMp
KQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldEFudGlhbGlhcyhqc0F0dHJzLT5HZXQo
YW50aWFsaWFzKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiBwcmVtdWx0aXBsaWVkQWxwaGEgPSB2ODo6U3RyaW5nOjpOZXcoInByZW11bHRpcGxp
ZWRBbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhwcmVtdWx0aXBsaWVkQWxw
aGEpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShq
c0F0dHJzLT5HZXQocHJlbXVsdGlwbGllZEFscGhhKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVzdWx0ID0g
aW1wLT5nZXRDb250ZXh0KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGlmIChyZXN1bHQtPmlzMmQo
KSkKQEAgLTYwLDQgKzg2LDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0Vs
ZW1lbgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogCisjaW5jbHVkZSAi
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaCIKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpbmNsdWRlICJXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5k
aWYKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgpAQCAtMTQ3LDcgKzE0OSw3IEBAIFN0cmluZyBI
VE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNvbnMKICAgICByZXR1cm4gYnVmZmVyKCktPnRv
RGF0YVVSTChtaW1lVHlwZSk7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKK0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlw
ZSwgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogewogICAgIC8vIEEgQ2FudmFzIGNh
biBlaXRoZXIgYmUgIjJEIiBvciAid2ViZ2wiIGJ1dCBuZXZlciBib3RoLiBJZiB5b3UgcmVxdWVz
dCBhIDJEIGNhbnZhcyBhbmQgdGhlIGV4aXN0aW5nCiAgICAgLy8gY29udGV4dCBpcyBhbHJlYWR5
IDJELCBqdXN0IHJldHVybiB0aGF0LiBJZiB0aGUgZXhpc3RpbmcgY29udGV4dCBpcyBXZWJHTCwg
dGhlbiBkZXN0cm95IGl0CkBAIC0xNzQsNyArMTc2LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogSFRNTENhbnZhc0VsZW1lbgogICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250
ZXh0LT5pczNkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpZiAo
IW1fY29udGV4dCkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKHRoaXMpOworICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMqPihhdHRycykpOwogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQg
Y29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKICAgICAgICAgICAg
ICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOwog
Y2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
bG9hdFJlY3Q7CkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gTlVMTCk7CiAKICAgICBjb25zdCBJbnRTaXplJiBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHJldmlzaW9uIDUz
MDEzKQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFO
R1VBR0VfT0JKRUNUSVZFX0MKLSAgICAgICAgW1Y4Q3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4
dChpbiBET01TdHJpbmcgY29udGV4dElkKTsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBiaW5kaW5n
IGlzIG5lZWRlZCB0byBoYW5kbGUgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgorICAgICAg
ICBbQ3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcgY29udGV4dElkKTsK
ICNlbmRpZgogCiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
Q29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5j
bHVkZSAiQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitDYW52YXNDb250ZXh0QXR0cmlidXRlczo6Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoKQorewor
fQorCitDYW52YXNDb250ZXh0QXR0cmlidXRlczo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbnZhc0NvbnRl
eHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNfaAorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGJh
c2UgY2xhc3MgZm9yIGFueSBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5lZWRlZCB3aGljaCB3b3VsZCBh
ZmZlY3QKKy8vIHRoZSBjcmVhdGlvbiBvZiB0aGUgQ2FudmFzJ3MgcmVuZGVyaW5nIGNvbnRleHQu
IEN1cnJlbnRseSBvbmx5IHRoZQorLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0IHVzZXMgdGhpcyBt
ZWNoYW5pc20uCisKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwg
fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBDYW52YXNDb250ZXh0QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250
ZXh0QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3Jl
YXRlKGNvbnN0IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR0xDb250ZXh0QXR0cmlidXRlcyhhdHRycykpOworfQorCitXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzKCkKKyAgICA6IENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzKCkKKyAgICAsIG1fYWxwaGEodHJ1ZSkKKyAgICAsIG1fZGVwdGgodHJ1
ZSkKKyAgICAsIG1fc3RlbmNpbCh0cnVlKQorICAgICwgbV9hbnRpYWxpYXModHJ1ZSkKKyAgICAs
IG1fcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCit7Cit9CisKK1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXM6OldlYkdMQ29udGV4dEF0dHJpYnV0ZXMoY29uc3QgV2ViR0xDb250ZXh0QXR0cmlidXRlcyog
YXR0cnMpCisgICAgOiBDYW52YXNDb250ZXh0QXR0cmlidXRlcygpCisgICAgLCBtX2FscGhhKGF0
dHJzLT5hbHBoYSgpKQorICAgICwgbV9kZXB0aChhdHRycy0+ZGVwdGgoKSkKKyAgICAsIG1fc3Rl
bmNpbChhdHRycy0+c3RlbmNpbCgpKQorICAgICwgbV9hbnRpYWxpYXMoYXR0cnMtPmFudGlhbGlh
cygpKQorICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEoYXR0cnMtPnByZW11bHRpcGxpZWRBbHBo
YSgpKQoreworfQorCitXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmli
dXRlcygpCit7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6YWxwaGEoKSBjb25z
dAoreworICAgIHJldHVybiBtX2FscGhhOworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXM6OnNldEFscGhhKGJvb2wgYWxwaGEpCit7CisgICAgbV9hbHBoYSA9IGFscGhhOworfQorCiti
b29sIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kZXB0aDsKK30KKwordm9pZCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXREZXB0aChib29s
IGRlcHRoKQoreworICAgIG1fZGVwdGggPSBkZXB0aDsKK30KKworYm9vbCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpzdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGVuY2lsOworfQor
Cit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNldFN0ZW5jaWwoYm9vbCBzdGVuY2lsKQor
eworICAgIG1fc3RlbmNpbCA9IHN0ZW5jaWw7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmli
dXRlczo6YW50aWFsaWFzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbnRpYWxpYXM7Cit9CisK
K3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0QW50aWFsaWFzKGJvb2wgYW50aWFsaWFz
KQoreworICAgIG1fYW50aWFsaWFzID0gYW50aWFsaWFzOworfQorCitib29sIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6OnByZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJlbXVsdGlwbGllZEFscGhhOworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNl
dFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBtX3By
ZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUgV2ViR0xDb250ZXh0QXR0cmlidXRlc19oCisK
KyNpbmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xDb250ZXh0QXR0
cmlidXRlcyA6IHB1YmxpYyBDYW52YXNDb250ZXh0QXR0cmlidXRlcyB7CisgIHB1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5XZWJHTENvbnRleHRBdHRyaWJ1dGVzKCk7CisKKyAgICAvLyBDcmVhdGUgYSBu
ZXcgYXR0cmlidXRlcyBvYmplY3QKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTENvbnRleHRB
dHRyaWJ1dGVzPiBjcmVhdGUoKTsKKworICAgIC8vIE1ha2UgYSBjb3B5IG9mIGFuIGV4aXN0aW5n
IGF0dHJpYnV0ZXMgb2JqZWN0CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0
cmlidXRlcz4gY3JlYXRlKGNvbnN0IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKKworICAgIC8v
IFdoZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYW4gYWxwaGEgY2hhbm5lbDsg
ZGVmYXVsdD10cnVlCisgICAgYm9vbCBhbHBoYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWxwaGEo
Ym9vbCBhbHBoYSk7CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIg
aGFzIGEgZGVwdGggYnVmZmVyOyBkZWZhdWx0PXRydWUKKyAgICBib29sIGRlcHRoKCkgY29uc3Q7
CisgICAgdm9pZCBzZXREZXB0aChib29sIGRlcHRoKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90
IHRoZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYSBzdGVuY2lsIGJ1ZmZlcjsgZGVmYXVsdD10cnVlCisg
ICAgYm9vbCBzdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGVuY2lsKGJvb2wgc3RlbmNp
bCk7CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaXMgYW50aWFs
aWFzZWQ7IGRlZmF1bHQ9dHJ1ZQorICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRBbnRpYWxpYXMoYm9vbCBhbnRpYWxpYXMpOworCisgICAgLy8gV2hldGhlciBvciBub3Qg
dG8gdHJlYXQgdGhlIHZhbHVlcyBpbiB0aGUgZHJhd2luZyBidWZmZXIgYXMKKyAgICAvLyB0aG91
Z2ggdGhlaXIgYWxwaGEgY2hhbm5lbCBoYXMgYWxyZWFkeSBiZWVuIG11bHRpcGxpZWQgaW50byB0
aGUKKyAgICAvLyBjb2xvciBjaGFubmVsczsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBwcmVtdWx0
aXBsaWVkQWxwaGEoKSBjb25zdDsKKyAgICB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29s
IHByZW11bHRpcGxpZWRBbHBoYSk7CisKKyAgcHJvdGVjdGVkOgorICAgIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMoKTsKKyAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMqKTsKKworICBwcml2YXRlOgorICAgIGJvb2wgbV9hbHBoYTsKKyAgICBib29s
IG1fZGVwdGg7CisgICAgYm9vbCBtX3N0ZW5jaWw7CisgICAgYm9vbCBtX2FudGlhbGlhczsKKyAg
ICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gV2ViR0xDb250ZXh0QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBo
dG1sIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD0zRF9DQU5WQVMsCisg
ICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gV2ViR0xDb250ZXh0QXR0cmlidXRlcyB7Cisg
ICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGFscGhhOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVh
biBkZXB0aDsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gc3RlbmNpbDsKKyAgICAgICAgYXR0
cmlidXRlIGJvb2xlYW4gYW50aWFsaWFzOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBwcmVt
dWx0aXBsaWVkQWxwaGE7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJHTEFj
dGl2ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVk
ZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKQEAgLTc1
LDkgKzc2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZDsKIH07CiAKLVBhc3NPd25Q
dHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQorUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52
YXMsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogewotICAgIE93blB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKCkpOworICAgIE93
blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KGF0dHJzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
CkBAIC04NzcsNiArODc4LDI1IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEIKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPih2YWx1ZSkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQoreworICAgIC8vIFdl
IGFsd2F5cyBuZWVkIHRvIHJldHVybiBhIG5ldyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIG9iamVj
dCB0bworICAgIC8vIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBtdXRhdGluZyBhbnkgY2FjaGVkIHZl
cnNpb24uCisgICAgYm9vbCBhbHBoYTsKKyAgICBib29sIGRlcHRoOworICAgIGJvb2wgc3RlbmNp
bDsKKyAgICBib29sIGFudGlhbGlhczsKKyAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKKyAg
ICBtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKGFscGhhLCBkZXB0aCwgc3RlbmNpbCwg
YW50aWFsaWFzLCBwcmVtdWx0aXBsaWVkQWxwaGEpOworICAgIFJlZlB0cjxXZWJHTENvbnRleHRB
dHRyaWJ1dGVzPiBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpOworICAg
IGF0dHJzLT5zZXRBbHBoYShhbHBoYSk7CisgICAgYXR0cnMtPnNldERlcHRoKGRlcHRoKTsKKyAg
ICBhdHRycy0+c2V0U3RlbmNpbChzdGVuY2lsKTsKKyAgICBhdHRycy0+c2V0QW50aWFsaWFzKGFu
dGlhbGlhcyk7CisgICAgYXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVk
QWxwaGEpOworICAgIHJldHVybiBhdHRyczsKK30KKwogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEVycm9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJv
cigpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
CShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1ZmZlcjsKK2NsYXNz
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3Mg
Q2FudmFzT2JqZWN0OwogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtNTMsNyArNTQsNyBAQCBjbGFz
cyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBw
dWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxl
bWVudCopOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKICAg
ICAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzM2QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzQsNiArMTM1LDggQEAg
Y2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQ
YXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+
IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJv
cigpOwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gNTMwMTMpCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTU0MSw2ICs1NDEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIGFueSBnZXRC
dWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcigpOwogCisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgZ2V0Q29u
dGV4dEF0dHJpYnV0ZXMoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAK
ICAgICAgICAgLy8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDUzMDEzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXZWJH
TEFjdGl2ZUluZm87CiAgICAgY2xhc3MgV2ViR0xBcnJheTsKICAgICBjbGFzcyBXZWJHTEJ1ZmZl
cjsKKyAgICBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogICAgIGNsYXNzIFdlYkdMVW5z
aWduZWRCeXRlQXJyYXk7CiAgICAgY2xhc3MgV2ViR0xGbG9hdEFycmF5OwogICAgIGNsYXNzIFdl
YkdMRnJhbWVidWZmZXI7CkBAIC0zODIsNyArMzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1MDYKICAgICAg
ICAgfTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjcmVhdGUoKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IGNyZWF0ZShXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycyk7CiAgICAgICAgIHZpcnR1
YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NTksNiAr
NDYwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQq
IHZhbHVlKTsKIAorICAgICAgICB2b2lkIGdldENvbnRleHRBdHRyaWJ1dGVzKGJvb2wmIGFscGhh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGRlcHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0ZW5jaWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCYgYW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wmIHByZW11bHRpcGxpZWRBbHBoYSk7CisKICAgICAgICAgdW5z
aWduZWQgbG9uZyBnZXRFcnJvcigpOwogCiAgICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVk
IGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CkBAIC02MDIsMTEgKzYwOSwxNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9u
ZyBlcnJvcik7CiAKICAgICBwcml2YXRlOiAgICAgICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMq
IGF0dHJzKTsKIAogICAgICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsK
ICAgICAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBib29sIG1fYWxwaGFBdHRyOwor
ICAgICAgICBib29sIG1fZGVwdGhBdHRyOworICAgICAgICBib29sIG1fc3RlbmNpbEF0dHI7Cisg
ICAgICAgIGJvb2wgbV9hbnRpYWxpYXNBdHRyOworICAgICAgICBib29sIG1fcHJlbXVsdGlwbGll
ZEFscGhhQXR0cjsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFycmF5
OwogICAgICAgICAKICAgICAgICAgQ0dMQ29udGV4dE9iaiBtX2NvbnRleHRPYmo7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMuY3BwCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldlYkdMQXJyYXku
aCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xG
bG9hdEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgpAQCAtNzUsMTggKzc2LDI5
IEBAIHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxDR0xQaXgKICAgICBhdHRyaWJz
LmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkpOwogfQogCi1Q
YXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKCkK
K1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
V2ViR0xDb250ZXh0QXR0cmlidXRlcyogYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKSk7CiAg
ICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFzZSgpIDogMDsK
IH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKCkKLSAgICA6IG1fY29u
dGV4dE9iaigwKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQorICAgIDogbV9hbHBoYUF0dHIodHJ1ZSkKKyAgICAsIG1f
ZGVwdGhBdHRyKHRydWUpCisgICAgLCBtX3N0ZW5jaWxBdHRyKGZhbHNlKQorICAgICwgbV9hbnRp
YWxpYXNBdHRyKGZhbHNlKQorICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGFBdHRyKHRydWUpCisg
ICAgLCBtX2NvbnRleHRPYmooMCkKICAgICAsIG1fdGV4dHVyZSgwKQogICAgICwgbV9mYm8oMCkK
ICAgICAsIG1fZGVwdGhCdWZmZXIoMCkKIHsKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0YWtl
IGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZAorICAgIC8vIGNvbnRleHQgY3JlYXRp
b24gYXR0cmlidXRlcywgaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZAorICAgIC8vIGFudGlhbGlh
cywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQgbm90IGJlIGhvbm9yZWQKKyAg
ICAvLyBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRp
b24uCisgICAgVU5VU0VEX1BBUkFNKGF0dHJzKTsKKwogICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1h
dEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9i
aiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsKQEAgLTU0MCw2ICs1NTIsMTkg
QEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiA6
OmdsR2V0QXR0cmliTG9jYXRpb24oKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIG5hbWUudXRm
OCgpLmRhdGEoKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRy
aWJ1dGVzKGJvb2wmIGFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCYgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sJiBzdGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCYgYW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCYgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIGFs
cGhhID0gbV9hbHBoYUF0dHI7CisgICAgZGVwdGggPSBtX2RlcHRoQXR0cjsKKyAgICBzdGVuY2ls
ID0gbV9zdGVuY2lsQXR0cjsKKyAgICBhbnRpYWxpYXMgPSBtX2FudGlhbGlhc0F0dHI7CisgICAg
cHJlbXVsdGlwbGllZEFscGhhID0gbV9wcmVtdWx0aXBsaWVkQWxwaGFBdHRyOworfQorCiB1bnNp
Z25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7CiAgICAgaWYgKG1fc3lu
dGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTMw
MzMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTAtMDEtMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgdG8g
aW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhlIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAgICAgIGJp
bmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0
bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhlIFdlYkdM
IHNwZWNpZmljYXRpb24uCisgICAgICAgIFBhc3NlZCBuZXcgYXR0cmlidXRlcyBvYmplY3QgZG93
biB0aHJvdWdoCisgICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0IHRvIFdlYkdM
UmVuZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QuIEFkZGVkIGdl
dENvbnRleHRBdHRyaWJ1dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBB
ZGRlZCB0ZXN0IGNhc2UgZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMg
Y2FuIGJlIHBhc3NlZCBkb3duIGFuZCByZXR1cm5lZC4gIFRlc3RlZCBpbiBTYWZhcmkgYW5kCisg
ICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tlZCB1cCB0byB0aGUg
Y3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1ZyAzMzQxNi4KKwor
ICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldENvbnRleHRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRl
cyk6CisKIDIwMTAtMDEtMDggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTEJ5dGVBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKICNpbmNsdWRl
ICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgpAQCAtNTUs
NiArNTYsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiAjaWYgT1MoV0lORE9XUykKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CkBAIC05OCw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgewogcHVibGljOgotICAgIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCgpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTEyNCw2ICsxMjYs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVk
IGxvbmcgaW5kZXgpOwogICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQg
bG9uZyBpbmRleCk7CiAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOworICAgIHZvaWQgZ2V0
Q29udGV4dEF0dHJpYnV0ZXMoYm9vbCYgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sJiBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0
ZW5jaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBhbnRpYWxpYXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBwcmVtdWx0aXBsaWVkQWxwaGEpOwog
ICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXpl
LCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgIHZvaWQg
dmlld3BvcnRJbXBsKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCk7CkBAIC0xMzEsNiArMTM4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5
bnRoZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiBwcml2YXRlOgorICAgIGJv
b2wgbV9hbHBoYUF0dHI7CisgICAgYm9vbCBtX2RlcHRoQXR0cjsKKyAgICBib29sIG1fc3RlbmNp
bEF0dHI7CisgICAgYm9vbCBtX2FudGlhbGlhc0F0dHI7CisgICAgYm9vbCBtX3ByZW11bHRpcGxp
ZWRBbHBoYUF0dHI7CisKICAgICB1bnNpZ25lZCBpbnQgbV90ZXh0dXJlOwogICAgIHVuc2lnbmVk
IGludCBtX2ZibzsKICAgICB1bnNpZ25lZCBpbnQgbV9kZXB0aEJ1ZmZlcjsKQEAgLTM2Niw4ICsz
NzksMTMgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6VmVydGV4QXR0cmliUAogewogfQog
Ci1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKCkK
LSAgICA6IG1fdGV4dHVyZSgwKQorR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbChXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKKyAgICA6IG1f
YWxwaGFBdHRyKHRydWUpCisgICAgLCBtX2RlcHRoQXR0cih0cnVlKQorICAgICwgbV9zdGVuY2ls
QXR0cihmYWxzZSkKKyAgICAsIG1fYW50aWFsaWFzQXR0cihmYWxzZSkKKyAgICAsIG1fcHJlbXVs
dGlwbGllZEFscGhhQXR0cih0cnVlKQorICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2Zibygw
KQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9ib3VuZEZCTygwKQpAQCAtMzkzLDYg
KzQxMSwxMiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAjZXJy
b3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogeworICAgIC8vIEZJWE1FOiB3
ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisgICAgLy8g
Y29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kCisg
ICAgLy8gYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZCBub3Qg
YmUgaG9ub3JlZAorICAgIC8vIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5H
TCBpbXBsZW1lbnRhdGlvbi4KKyAgICBVTlVTRURfUEFSQU0oYXR0cnMpOworCiAjaWYgT1MoV0lO
RE9XUykKICAgICBXTkRDTEFTUyB3YzsKICAgICBpZiAoIUdldENsYXNzSW5mbyhHZXRNb2R1bGVI
YW5kbGUoMCksIEwiQ0FOVkFTR0wiLCAmd2MpKSB7CkBAIC05ODIsNiArMTAwNiwxOSBAQCB1bnNp
Z25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6CiAgICAgcmV0dXJuIGdsR2V0RXJy
b3IoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRDb250ZXh0QXR0
cmlidXRlcyhib29sJiBhbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCYgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0ZW5jaWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGFudGlhbGlhcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCYgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIGFscGhhID0gbV9hbHBoYUF0dHI7CisgICAg
ZGVwdGggPSBtX2RlcHRoQXR0cjsKKyAgICBzdGVuY2lsID0gbV9zdGVuY2lsQXR0cjsKKyAgICBh
bnRpYWxpYXMgPSBtX2FudGlhbGlhc0F0dHI7CisgICAgcHJlbXVsdGlwbGllZEFscGhhID0gbV9w
cmVtdWx0aXBsaWVkQWxwaGFBdHRyOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50
IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBv
ZmZzZXQpCiB7CkBAIC0xMTMwLDE3ICsxMTY3LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
Om5hbWUodDEgYTEsIHQyIGEKICAgICBnbCMjZ2xuYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYs
IGE3LCBhOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLVBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKQorUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHTENv
bnRleHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgUGFzc093blB0cjxH
cmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycyk7
CiAgICAgLy8gRklYTUU6IGFkZCBlcnJvciBjaGVja2luZwogICAgIHJldHVybiBjb250ZXh0Owog
fQogCi1HcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoKQorR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQog
ICAgIDogbV9jdXJyZW50V2lkdGgoMCkKICAgICAsIG1fY3VycmVudEhlaWdodCgwKQotICAgICwg
bV9pbnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpKQorICAgICwgbV9pbnRl
cm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycykpCiB7CiB9CiAKQEAgLTE1
NjksNiArMTYwNiwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0
CiAgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKGJvb2wmIGFscGhh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBz
dGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCYgYW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCYgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIG1faW50ZXJuYWwtPmdldENvbnRl
eHRBdHRyaWJ1dGVzKGFscGhhLCBkZXB0aCwgc3RlbmNpbCwgYW50aWFsaWFzLCBwcmVtdWx0aXBs
aWVkQWxwaGEpOworfQorCiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJv
cigpCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldEVycm9yKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1MzAzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI2IEBACisyMDEwLTAxLTA4ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVk
IHRvIGltcGxlbWVudCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE2OQorCisgICAgICAgIEFkZGVkIHRoZSBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzIGNsYXNzIGFuZCBjdXN0b20gSmF2YVNjcmlwdAorICAgICAg
ICBiaW5kaW5ncyB0byBhY2NlcHQgYSBuYXRpdmUgb2JqZWN0IGFzIHRoZSBzZWNvbmQgYXJndW1l
bnQgdG8KKyAgICAgICAgZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIikgcGVyIHRoZSBX
ZWJHTCBzcGVjaWZpY2F0aW9uLgorICAgICAgICBQYXNzZWQgbmV3IGF0dHJpYnV0ZXMgb2JqZWN0
IGRvd24gdGhyb3VnaAorICAgICAgICBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCB0byBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNELiBBZGRl
ZCBnZXRDb250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dC4gQWRkZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAgICBhdHRyaWJ1
dGVzIGNhbiBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuICBUZXN0ZWQgaW4gU2FmYXJpIGFu
ZAorICAgICAgICBDaHJvbWl1bS4gVGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBob29rZWQgdXAgdG8g
dGhlIGNyZWF0aW9uIG9mIHRoZQorICAgICAgICBPcGVuR0wgY29udGV4dCBpbiBidWcgMzM0MTYu
CisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanM6CisgICAgICAgIChjcmVhdGUzRENvbnRleHQpOgorCiAyMDEwLTAxLTA4
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9j
b250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitUZXN0IHBhc3Np
bmcgZG93biBhbmQgZmV0Y2hpbmcgb2YgV2ViR0xDb250ZXh0QXR0cmlidXRlcworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK1Rlc3QgZGVmYXVsdCB2YWx1ZXMKK1BBU1MgY29udGV4dCA9
IGNyZWF0ZTNEQ29udGV4dCgpIGlzIG5vbi1udWxsLgorUEFTUyBhdHRyaWJzID0gY29udGV4dC5n
ZXRDb250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBhdHRyaWJzLmRlcHRoIGlz
IHRydWUKK1BBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCitQQVNTIChhdHRyaWJzLnN0ZW5jaWwg
PT0gdHJ1ZSB8fCBhdHRyaWJzLnN0ZW5jaWwgPT0gZmFsc2UpIGlzIHRydWUKK1BBU1MgKGF0dHJp
YnMuYW50aWFsaWFzID09IHRydWUgfHwgYXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UpIGlzIHRy
dWUKK1BBU1MgYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQorVGVzdCBjdXN0b21p
emVkIHZhbHVlcworUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgc3RlbmNpbDogZmFs
c2UsIGFudGlhbGlhczogZmFsc2UgfSkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMgPSBjb250
ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMuZGVw
dGggaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUKK1BBU1MgYXR0cmlicy5zdGVu
Y2lsIGlzIGZhbHNlCitQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCitQQVNTIGF0dHJp
YnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBwYXNzaW5nIGRvd24gYW5k
IGZldGNoaW5nIG9mIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMiKTsKKworZGVidWcoIlRlc3QgZGVm
YXVsdCB2YWx1ZXMiKTsKK3ZhciBjb250ZXh0OwordmFyIGF0dHJpYnM7CitzaG91bGRCZU5vbk51
bGwoImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25OdWxsKCJhdHRy
aWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CitzaG91bGRCZSgiYXR0cmli
cy5kZXB0aCIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0cnVlIik7Cisv
LyBUaGUgZm9sbG93aW5nIHR3byBkZXBlbmQgb24gd2hldGhlciB0aGUgaW1wbGVtZW50YXRpb24g
YWN0dWFsbHkgc3VwcG9ydHMgdGhlbQorc2hvdWxkQmUoIihhdHRyaWJzLnN0ZW5jaWwgPT0gdHJ1
ZSB8fCBhdHRyaWJzLnN0ZW5jaWwgPT0gZmFsc2UpIiwgInRydWUiKTsKK3Nob3VsZEJlKCIoYXR0
cmlicy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSkiLCAi
dHJ1ZSIpOworc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsK
KworZGVidWcgKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CitzaG91bGRCZU5vbk51bGwoImNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxz
ZSB9KSIpOworc2hvdWxkQmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0
cmlidXRlcygpIik7CitzaG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CitzaG91bGRC
ZSgiYXR0cmlicy5hbHBoYSIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwg
ImZhbHNlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMiLCAiZmFsc2UiKTsKK3Nob3Vs
ZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSIsICJ0cnVlIik7CisKK3N1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmds
LXRlc3QuanMJKHJldmlzaW9uIDUzMDEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsMTIgKzgsMTIg
QEAgZnVuY3Rpb24gZ2V0U2hhZGVyU291cmNlKGZpbGUpIHsKICAgICByZXR1cm4geGhyLnJlc3Bv
bnNlVGV4dDsKIH0KIAotZnVuY3Rpb24gY3JlYXRlM0RDb250ZXh0KCkgeworZnVuY3Rpb24gY3Jl
YXRlM0RDb250ZXh0KGF0dHJzKSB7CiAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOwogICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29u
dGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7CisgICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29u
dGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIiwgYXR0cnMpOwogICAgIH0gY2F0Y2goZSkge30KLSAg
ICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoIm1vei13ZWJnbCIpOworICAgIHJldHVybiBjYW52
YXMuZ2V0Q29udGV4dCgibW96LXdlYmdsIiwgYXR0cnMpOwogfQogCiBmdW5jdGlvbiBjcmVhdGVH
TEVycm9yV3JhcHBlcihjb250ZXh0LCBmbmFtZSkgewpAQCAtMjYsOCArMjYsOCBAQCBmdW5jdGlv
biBjcmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBmCiAgICAgfTsKIH0KIAotZnVuY3Rpb24g
Y3JlYXRlM0REZWJ1Z0NvbnRleHQoKSB7Ci0gICAgdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRl
eHQoKTsKK2Z1bmN0aW9uIGNyZWF0ZTNERGVidWdDb250ZXh0KGF0dHJzKSB7CisgICAgdmFyIGNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoYXR0cnMpOwogICAgIC8vIFRoYW5rcyB0byBJbG1hcmkg
SGVpa2tpbmVuIGZvciB0aGUgaWRlYSBvbiBob3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2Fu
dGx5LgogICAgIHZhciB3cmFwID0ge307CiAgICAgZm9yICh2YXIgaSBpbiBjb250ZXh0KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46195</attachid>
            <date>2010-01-08 20:53:17 -0800</date>
            <delta_ts>2010-01-11 15:05:36 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>context-attributes.patch</filename>
            <type>text/plain</type>
            <size>58306</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzAzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDEtMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gaW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhl
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGJpbmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1
bWVudCB0bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhl
IFdlYkdMIHNwZWNpZmljYXRpb24uCisgICAgICAgIFBhc3NlZCBuZXcgYXR0cmlidXRlcyBvYmpl
Y3QgZG93biB0aHJvdWdoCisgICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0IHRv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QuIEFk
ZGVkIGdldENvbnRleHRBdHRyaWJ1dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0LiBBZGRlZCB0ZXN0IGNhc2UgZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJp
YnV0ZXMgY2FuIGJlIHBhc3NlZCBkb3duIGFuZCByZXR1cm5lZC4gIFRlc3RlZCBpbiBTYWZhcmkg
YW5kCisgICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tlZCB1cCB0
byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1ZyAzMzQx
Ni4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMu
aHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKToK
KyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52
YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOjpDYW52YXNDb250ZXh0QXR0
cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDb250ZXh0QXR0cmlidXRlczo6fkNh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNDb250
ZXh0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0QXR0cmli
dXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjpkZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzOjpzZXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpzdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0dHJp
YnV0ZXM6OnNldFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0QXR0cmli
dXRlczo6YW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0dHJpYnV0
ZXM6OnNldEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1
dGVzOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMpOgorCiAyMDEwLTAxLTA4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFdlYkdMQXJyYXlC
dWZmZXIgXAogICAgIFdlYkdMQnVmZmVyIFwKICAgICBXZWJHTEJ5dGVBcnJheSBcCisgICAgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBcCiAgICAgV2ViR0xGbG9hdEFycmF5IFwKICAgICBXZWJHTEZy
YW1lYnVmZmVyIFwKICAgICBDYW52YXNHcmFkaWVudCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTMwMTMp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBA
QAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQXJyYXlCdWZmZXIuaWRsJywKICAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMQnl0ZUFycmF5LmlkbCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
RmxvYXRBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5pZGwnLApA
QCAtMTMwMiwxMiArMTMwMywxNiBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnl0ZUFycmF5LmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAnLAorICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xGbG9hdEFycmF5LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGbG9hdEFycmF5LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9D
YW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0Nh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZh
c0dyYWRpZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xJbnRBcnJheS5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUzMDEz
KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMjQsNiArMTIyNCwxMyBAQAogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdl
YkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLzsgfTsKKwkJNkU0
RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE3MTBGN0ZC
MzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CisJCTZFNEU5
MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTgxMEY3RkIzMTAw
QTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNEU5MUFFMTBG
N0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKKwkJNkU0RTkxQUYxMEY3RkIz
MTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJCTZFNEU5MUIwMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUIxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuaWRsICovOyB9OworCQk2RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OworCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQg
LyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBG
b250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87IH07
CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBNzEw
MkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovOyB9OwogCQk3NTQx
MzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBOTEwMkUwMEY0
MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi87IH07CkBAIC02NTgwLDYg
KzY1ODcsMTMgQEAKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5j
cHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZh
cy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTcx
MEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcDsg
cGF0aCA9IGNhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFNEU5MUE4MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0
QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDYW52YXNDb250
ZXh0QXR0cmlidXRlcy5oOyBwYXRoID0gY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAv
KiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTRF
OTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7IHBhdGgg
PSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw7
IHBhdGggPSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIw
IC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNB
NzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA3MzYsNiArMTA3NTAsOCBAQAogCQk0OTQ4NEZBRTEwMkNGMDFFMDAxODdERDMgLyogY2Fu
dmFzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2RTRF
OTFBNzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAor
CQkJCTZFNEU5MUE4MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5o
ICovLAogCQkJCUE3RDIwRjZCMTA3RjQzOEIwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8uaCAq
LywKIAkJCQlBN0QyMEYzQjEwN0YzNzM4MDBBODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmlkbCAq
LywKIAkJCQk0OUVFQ0RDNzEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xBcnJheS5jcHAgKi8sCkBA
IC0xMDc1MCw2ICsxMDc2Niw5IEBACiAJCQkJNDlDN0I5QUIxMDQyRDMyRTAwMDlENDQ3IC8qIFdl
YkdMQnl0ZUFycmF5LmNwcCAqLywKIAkJCQk0OUM3QjlBQzEwNDJEMzJFMDAwOUQ0NDcgLyogV2Vi
R0xCeXRlQXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xC
eXRlQXJyYXkuaWRsICovLAorCQkJCTZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKKwkJCQk2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovLAorCQkJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCAqLywKIAkJCQk0OUVFQ0RDRDEwNTAzQzIz
MDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0RDRTEwNTAzQzIz
MDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmggKi8sCiAJCQkJNDlFRUNEQ0YxMDUwM0MyMzAw
MDk5RkFCIC8qIFdlYkdMRmxvYXRBcnJheS5pZGwgKi8sCkBAIC0xMjk0OSw2ICsxMjk2OCw4IEBA
CiAJCQkJNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLywKIAkJ
CQk0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ5dGVBcnJheS5jcHAgKi8sCiAJ
CQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCeXRlQXJyYXkuaCAqLywKKwkJ
CQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCAqLywKKwkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggKi8sCiAJCQkJNDlFRUNFRjQxMDUwNzBDNDAwMDk5RkFCIC8qIEpTV2ViR0xGbG9h
dEFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0VGNTEwNTA3MEM0MDAwOTlGQUIgLyogSlNXZWJHTEZs
b2F0QXJyYXkuaCAqLywKIAkJCQk0OUM3Qjk4NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZy
YW1lYnVmZmVyLmNwcCAqLywKQEAgLTE4MzI3LDYgKzE4MzQ4LDkgQEAKIAkJCQkzN0MyOEE2ODEw
RjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY1QjdBNTUxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTRDMDBFNjEwRjZGN0MxMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8q
IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTRFOTFBRjEw
RjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNkVFOEE3NzMxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODQyNyw2ICsxODQ1MSw3IEBACiAJCQkJODUxMzZDQTgw
QUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywK
IAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKKwkJCQk2RTRFOTFCMDEwRjdGQjMxMDBBMjc3OUMgLyogV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjA0ODksNiArMjA1
MTQsOSBAQAogCQkJCTUxMTIyNDc4MTBDRkI4RjQwMDgwOTlENyAvKiBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjVCN0E1NDEwRjY1RDdB
MDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNkU0RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFRThB
NzcyMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCiAjaWYgRU5B
QkxFKDNEX0NBTlZBUykKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KIApAQCAtNDcsNCArNDgsMzYgQEAgdm9pZCBKU0hUTUxDYW52YXNFbGVtZW50Ojpt
YXJrQ2hpbGRyZW4oTQogICAgIG1hcmtET01PYmplY3RXcmFwcGVyKG1hcmtTdGFjaywgZ2xvYmFs
RGF0YSwgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpOwogfQogCitKU1ZhbHVlIEpTSFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQoreworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1M
Q2FudmFzRWxlbWVudCo+KGltcGwoKSk7CisgICAgY29uc3QgVVN0cmluZyYgY29udGV4dElkID0g
YXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBSZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJp
YnV0ZXM+IGF0dHJzOworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisgICAgaWYgKGNvbnRleHRJZCA9
PSAiZXhwZXJpbWVudGFsLXdlYmdsIiB8fCBjb250ZXh0SWQgPT0gIndlYmtpdC0zZCIpIHsKKyAg
ICAgICAgYXR0cnMgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUoKTsKKyAgICAgICAg
V2ViR0xDb250ZXh0QXR0cmlidXRlcyogd2ViR0xBdHRycyA9IHN0YXRpY19jYXN0PFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMqPihhdHRycy5nZXQoKSk7CisgICAgICAgIGlmIChhcmdzLnNpemUoKSA+
IDEgJiYgYXJncy5hdCgxKS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCoganNB
dHRycyA9IGFyZ3MuYXQoMSkuZ2V0T2JqZWN0KCk7CisgICAgICAgICAgICBJZGVudGlmaWVyIGFs
cGhhKGV4ZWMsICJhbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5
KGV4ZWMsIGFscGhhKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRBbHBoYShqc0F0
dHJzLT5nZXQoZXhlYywgYWxwaGEpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIGRlcHRoKGV4ZWMsICJkZXB0aCIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhh
c1Byb3BlcnR5KGV4ZWMsIGRlcHRoKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRE
ZXB0aChqc0F0dHJzLT5nZXQoZXhlYywgZGVwdGgpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAg
ICAgICBJZGVudGlmaWVyIHN0ZW5jaWwoZXhlYywgInN0ZW5jaWwiKTsKKyAgICAgICAgICAgIGlm
IChqc0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3
ZWJHTEF0dHJzLT5zZXRTdGVuY2lsKGpzQXR0cnMtPmdldChleGVjLCBzdGVuY2lsKS50b0Jvb2xl
YW4oZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBhbnRpYWxpYXMoZXhlYywgImFudGlh
bGlhcyIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5KGV4ZWMsIGFudGlh
bGlhcykpCisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0QW50aWFsaWFzKGpzQXR0cnMt
PmdldChleGVjLCBhbnRpYWxpYXMpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIHByZW11bHRpcGxpZWRBbHBoYShleGVjLCAicHJlbXVsdGlwbGllZEFscGhhIik7Cisg
ICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgcHJlbXVsdGlwbGllZEFs
cGhhKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEo
anNBdHRycy0+Z2V0KGV4ZWMsIHByZW11bHRpcGxpZWRBbHBoYSkudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihjYW52YXMtPmdldENvbnRleHQoY29udGV4dElkLCBhdHRycy5n
ZXQoKSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1MzAxMykKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMzksNiArMjEzOSw3IEBAIHN1YiBJc1JlZlB0clR5cGUKICAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiV2ViR0xBcnJheUJ1ZmZlciI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIldl
YkdMQnl0ZUFycmF5IjsKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiV2ViR0xCdWZmZXIiOwor
ICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzIjsKICAgICBy
ZXR1cm4gMSBpZiAkdHlwZSBlcSAiV2ViR0xGbG9hdEFycmF5IjsKICAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiV2ViR0xGcmFtZWJ1ZmZlciI7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIldl
YkdMSW50QXJyYXkiOwpAQCAtMjI0Miw2ICsyMjQzLDcgQEAgbXkgJXR5cGVDYW5GYWlsQ29udmVy
c2lvbiA9ICgKICAgICAiV2ViR0xBcnJheSIgPT4gMCwKICAgICAiV2ViR0xCdWZmZXIiID0+IDAs
CiAgICAgIldlYkdMQnl0ZUFycmF5IiA9PiAwLAorICAgICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
IiA9PiAwLAogICAgICJXZWJHTEZsb2F0QXJyYXkiID0+IDAsCiAgICAgIldlYkdMRnJhbWVidWZm
ZXIiID0+IDAsCiAgICAgIkNhbnZhc0dyYWRpZW50IiA9PiAwLApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTM3MSw3ICszNzEsOSBA
QCBzdWIgRGV0ZXJtaW5lUGFyc2VNb2RlCiAgICAgICAgICRtb2RlID0gTU9ERV9JTlRFUkZBQ0U7
CiAgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8pIHsKICAgICAgICAgJG1vZGUgPSBNT0RF
X0VYQ0VQVElPTjsKLSAgICB9IGVsc2lmICgkXyA9fiAvYWxpYXMvKSB7CisgICAgfSBlbHNpZiAo
JF8gPX4gLyhcQXxcYilhbGlhcy8pIHsKKyAgICAgICAgIyBUaGUgKFxBfFxiKSBhYm92ZSBpcyBu
ZWVkZWQgc28gd2UgZG9uJ3QgbWF0Y2ggYXR0cmlidXRlcworICAgICAgICAjIHdob3NlIG5hbWVz
IGNvbnRhaW4gdGhlIHN1YnN0cmluZyAiYWxpYXMiLgogICAgICAgICAkbW9kZSA9IE1PREVfQUxJ
QVM7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAJKHJldmlzaW9uIDUzMDEz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRUaHJlYWRET01EYXRhLmgiCiAjaW5jbHVk
ZSAiTWFpblRocmVhZERPTURhdGEuaCIKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNv
dXJjZXNBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNs
dWRlICJiaW5kaW5ncy9WOFdlYkdMQXJyYXlCdWZmZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdz
L1Y4V2ViR0xCdWZmZXIuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xCeXRlQXJyYXku
Y3BwIgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAiCiAj
aW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTEZsb2F0QXJyYXkuY3BwIgogI2luY2x1ZGUgImJpbmRp
bmdzL1Y4V2ViR0xGcmFtZWJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhDYW52YXNH
cmFkaWVudC5jcHAiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShyZXZp
c2lvbiA1MzAxMykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR0xBcnJheS5oIgorI2luY2x1ZGUgIldl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgogCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJbmRleC5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyLDYgKzQwMiw3IEBACiAjaW5jbHVk
ZSAiVjhXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEJ5dGVBcnJheS5oIgogI2luY2x1
ZGUgIlY4V2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJWOFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCIKICNpbmNsdWRlICJWOFdlYkdMRmxvYXRBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xGcmFt
ZWJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xJbnRBcnJheS5oIgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEluZGV4LmgJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw2ICs0NTQsNyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihXRUJHTEFSUkFZQlVGRkVSLCBXZWJHTEFycmF5
QnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEJVRkZF
UiwgV2ViR0xCdWZmZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgVihXRUJHTEJZVEVBUlJBWSwgV2ViR0xCeXRlQXJyYXkpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgVihXRUJHTENPTlRFWFRBVFRSSUJVVEVTLCBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzKSAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEZMT0FUQVJS
QVksIFdlYkdMRmxvYXRBcnJheSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgVihXRUJHTEZSQU1FQlVGRkVSLCBXZWJHTEZyYW1lYnVmZmVyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTElOVEFSUkFZLCBXZWJHTEludEFycmF5KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAko
cmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52
YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNF
bGVtZW50LmgiCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUg
IlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4
Tm9kZS5oIgpAQCAtNDYsNyArNDcsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xk
ZXIoKTsKICAgICBIVE1MQ2FudmFzRWxlbWVudCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTm9kZTxIVE1MQ2FudmFzRWxlbWVudD4oaG9sZGVyKTsKICAgICBTdHJpbmcg
Y29udGV4dElkID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIHJlc3VsdCA9IGltcC0+Z2V0Q29udGV4dChjb250ZXh0SWQpOworICAgIFJlZlB0
cjxDYW52YXNDb250ZXh0QXR0cmlidXRlcz4gYXR0cnM7CisjaWYgRU5BQkxFKDNEX0NBTlZBUykK
KyAgICBpZiAoY29udGV4dElkID09ICJleHBlcmltZW50YWwtd2ViZ2wiIHx8IGNvbnRleHRJZCA9
PSAid2Via2l0LTNkIikgeworICAgICAgICBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6
OmNyZWF0ZSgpOworICAgICAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiB3ZWJHTEF0dHJzID0g
c3RhdGljX2Nhc3Q8V2ViR0xDb250ZXh0QXR0cmlidXRlcyo+KGF0dHJzLmdldCgpKTsKKyAgICAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmIGFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4ganNBdHRycyA9IGFyZ3NbMV0tPlRvT2JqZWN0
KCk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGFscGhhID0gdjg6OlN0cmlu
Zzo6TmV3KCJhbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbHBoYSkpCisg
ICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0QWxwaGEoanNBdHRycy0+R2V0KGFscGhhKS0+
Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBkZXB0
aCA9IHY4OjpTdHJpbmc6Ok5ldygiZGVwdGgiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5I
YXMoZGVwdGgpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldERlcHRoKGpzQXR0cnMt
PkdldChkZXB0aCktPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gc3RlbmNpbCA9IHY4OjpTdHJpbmc6Ok5ldygic3RlbmNpbCIpOworICAgICAgICAg
ICAgaWYgKGpzQXR0cnMtPkhhcyhzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJz
LT5zZXRTdGVuY2lsKGpzQXR0cnMtPkdldChzdGVuY2lsKS0+Qm9vbGVhblZhbHVlKCkpOworICAg
ICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBhbnRpYWxpYXMgPSB2ODo6U3RyaW5nOjpO
ZXcoImFudGlhbGlhcyIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbnRpYWxpYXMp
KQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldEFudGlhbGlhcyhqc0F0dHJzLT5HZXQo
YW50aWFsaWFzKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiBwcmVtdWx0aXBsaWVkQWxwaGEgPSB2ODo6U3RyaW5nOjpOZXcoInByZW11bHRpcGxp
ZWRBbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhwcmVtdWx0aXBsaWVkQWxw
aGEpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShq
c0F0dHJzLT5HZXQocHJlbXVsdGlwbGllZEFscGhhKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVzdWx0ID0g
aW1wLT5nZXRDb250ZXh0KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICghcmVzdWx0
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGlmIChyZXN1bHQtPmlzMmQo
KSkKQEAgLTYwLDQgKzg2LDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0Vs
ZW1lbgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogCisjaW5jbHVkZSAi
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaCIKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpbmNsdWRlICJXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5k
aWYKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgpAQCAtMTQ3LDcgKzE0OSw3IEBAIFN0cmluZyBI
VE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKGNvbnMKICAgICByZXR1cm4gYnVmZmVyKCktPnRv
RGF0YVVSTChtaW1lVHlwZSk7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKK0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlw
ZSwgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogewogICAgIC8vIEEgQ2FudmFzIGNh
biBlaXRoZXIgYmUgIjJEIiBvciAid2ViZ2wiIGJ1dCBuZXZlciBib3RoLiBJZiB5b3UgcmVxdWVz
dCBhIDJEIGNhbnZhcyBhbmQgdGhlIGV4aXN0aW5nCiAgICAgLy8gY29udGV4dCBpcyBhbHJlYWR5
IDJELCBqdXN0IHJldHVybiB0aGF0LiBJZiB0aGUgZXhpc3RpbmcgY29udGV4dCBpcyBXZWJHTCwg
dGhlbiBkZXN0cm95IGl0CkBAIC0xNzQsNyArMTc2LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogSFRNTENhbnZhc0VsZW1lbgogICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250
ZXh0LT5pczNkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpZiAo
IW1fY29udGV4dCkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKHRoaXMpOworICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMqPihhdHRycykpOwogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQg
Y29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKICAgICAgICAgICAg
ICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOwog
Y2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
bG9hdFJlY3Q7CkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b0RhdGFV
UkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzKiBhdHRyaWJ1dGVzID0gMCk7CiAKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHJldmlzaW9uIDUzMDEz
KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VB
R0VfT0JKRUNUSVZFX0MKLSAgICAgICAgW1Y4Q3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4dChp
biBET01TdHJpbmcgY29udGV4dElkKTsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBiaW5kaW5nIGlz
IG5lZWRlZCB0byBoYW5kbGUgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgorICAgICAgICBb
Q3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcgY29udGV4dElkKTsKICNl
bmRpZgogCiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0
dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29u
dGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
YW52YXNDb250ZXh0QXR0cmlidXRlczo6Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoKQoreworfQor
CitDYW52YXNDb250ZXh0QXR0cmlidXRlczo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCkKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNDb250ZXh0QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzX2gKKyNkZWZpbmUgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNfaAorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGJhc2Ug
Y2xhc3MgZm9yIGFueSBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5lZWRlZCB3aGljaCB3b3VsZCBhZmZl
Y3QKKy8vIHRoZSBjcmVhdGlvbiBvZiB0aGUgQ2FudmFzJ3MgcmVuZGVyaW5nIGNvbnRleHQuIEN1
cnJlbnRseSBvbmx5IHRoZQorLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0IHVzZXMgdGhpcyBtZWNo
YW5pc20uCisKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfkNh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIENhbnZhc0NvbnRl
eHRBdHRyaWJ1dGVzKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBDYW52YXNDb250ZXh0QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250ZXh0
QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRl
KGNvbnN0IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViR0xDb250ZXh0QXR0cmlidXRlcyhhdHRycykpOworfQorCitXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzKCkKKyAgICA6IENhbnZhc0NvbnRl
eHRBdHRyaWJ1dGVzKCkKKyAgICAsIG1fYWxwaGEodHJ1ZSkKKyAgICAsIG1fZGVwdGgodHJ1ZSkK
KyAgICAsIG1fc3RlbmNpbCh0cnVlKQorICAgICwgbV9hbnRpYWxpYXModHJ1ZSkKKyAgICAsIG1f
cHJlbXVsdGlwbGllZEFscGhhKHRydWUpCit7Cit9CisKK1dlYkdMQ29udGV4dEF0dHJpYnV0ZXM6
OldlYkdMQ29udGV4dEF0dHJpYnV0ZXMoY29uc3QgV2ViR0xDb250ZXh0QXR0cmlidXRlcyogYXR0
cnMpCisgICAgOiBDYW52YXNDb250ZXh0QXR0cmlidXRlcygpCisgICAgLCBtX2FscGhhKGF0dHJz
LT5hbHBoYSgpKQorICAgICwgbV9kZXB0aChhdHRycy0+ZGVwdGgoKSkKKyAgICAsIG1fc3RlbmNp
bChhdHRycy0+c3RlbmNpbCgpKQorICAgICwgbV9hbnRpYWxpYXMoYXR0cnMtPmFudGlhbGlhcygp
KQorICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEoYXR0cnMtPnByZW11bHRpcGxpZWRBbHBoYSgp
KQoreworfQorCitXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRl
cygpCit7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6YWxwaGEoKSBjb25zdAor
eworICAgIHJldHVybiBtX2FscGhhOworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6
OnNldEFscGhhKGJvb2wgYWxwaGEpCit7CisgICAgbV9hbHBoYSA9IGFscGhhOworfQorCitib29s
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmRlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9k
ZXB0aDsKK30KKwordm9pZCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXREZXB0aChib29sIGRl
cHRoKQoreworICAgIG1fZGVwdGggPSBkZXB0aDsKK30KKworYm9vbCBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzOjpzdGVuY2lsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGVuY2lsOworfQorCit2
b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNldFN0ZW5jaWwoYm9vbCBzdGVuY2lsKQorewor
ICAgIG1fc3RlbmNpbCA9IHN0ZW5jaWw7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRl
czo6YW50aWFsaWFzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbnRpYWxpYXM7Cit9CisKK3Zv
aWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0QW50aWFsaWFzKGJvb2wgYW50aWFsaWFzKQor
eworICAgIG1fYW50aWFsaWFzID0gYW50aWFsaWFzOworfQorCitib29sIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXM6OnByZW11bHRpcGxpZWRBbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJl
bXVsdGlwbGllZEFscGhhOworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNldFBy
ZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBtX3ByZW11
bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUgV2ViR0xDb250ZXh0QXR0cmlidXRlc19oCisKKyNp
bmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyA6IHB1YmxpYyBDYW52YXNDb250ZXh0QXR0cmlidXRlcyB7CisgIHB1YmxpYzoKKyAgICB2
aXJ0dWFsIH5XZWJHTENvbnRleHRBdHRyaWJ1dGVzKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcg
YXR0cmlidXRlcyBvYmplY3QKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTENvbnRleHRBdHRy
aWJ1dGVzPiBjcmVhdGUoKTsKKworICAgIC8vIE1ha2UgYSBjb3B5IG9mIGFuIGV4aXN0aW5nIGF0
dHJpYnV0ZXMgb2JqZWN0CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmli
dXRlcz4gY3JlYXRlKGNvbnN0IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKKworICAgIC8vIFdo
ZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYW4gYWxwaGEgY2hhbm5lbDsgZGVm
YXVsdD10cnVlCisgICAgYm9vbCBhbHBoYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWxwaGEoYm9v
bCBhbHBoYSk7CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaGFz
IGEgZGVwdGggYnVmZmVyOyBkZWZhdWx0PXRydWUKKyAgICBib29sIGRlcHRoKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXREZXB0aChib29sIGRlcHRoKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRo
ZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYSBzdGVuY2lsIGJ1ZmZlcjsgZGVmYXVsdD10cnVlCisgICAg
Ym9vbCBzdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGVuY2lsKGJvb2wgc3RlbmNpbCk7
CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaXMgYW50aWFsaWFz
ZWQ7IGRlZmF1bHQ9dHJ1ZQorICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRBbnRpYWxpYXMoYm9vbCBhbnRpYWxpYXMpOworCisgICAgLy8gV2hldGhlciBvciBub3QgdG8g
dHJlYXQgdGhlIHZhbHVlcyBpbiB0aGUgZHJhd2luZyBidWZmZXIgYXMKKyAgICAvLyB0aG91Z2gg
dGhlaXIgYWxwaGEgY2hhbm5lbCBoYXMgYWxyZWFkeSBiZWVuIG11bHRpcGxpZWQgaW50byB0aGUK
KyAgICAvLyBjb2xvciBjaGFubmVsczsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEoKSBjb25zdDsKKyAgICB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSk7CisKKyAgcHJvdGVjdGVkOgorICAgIFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXMoKTsKKyAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKGNvbnN0IFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMqKTsKKworICBwcml2YXRlOgorICAgIGJvb2wgbV9hbHBoYTsKKyAgICBib29sIG1f
ZGVwdGg7CisgICAgYm9vbCBtX3N0ZW5jaWw7CisgICAgYm9vbCBtX2FudGlhbGlhczsKKyAgICBi
b29sIG1fcHJlbXVsdGlwbGllZEFscGhhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gV2ViR0xDb250ZXh0QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1s
IHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD0zRF9DQU5WQVMsCisgICAg
ICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0gV2ViR0xDb250ZXh0QXR0cmlidXRlcyB7CisgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuIGFscGhhOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBk
ZXB0aDsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gc3RlbmNpbDsKKyAgICAgICAgYXR0cmli
dXRlIGJvb2xlYW4gYW50aWFsaWFzOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBwcmVtdWx0
aXBsaWVkQWxwaGE7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDUzMDEzKQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAi
V2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKQEAgLTc1LDkg
Kzc2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hhbmdlZDsKIH07CiAKLVBhc3NPd25QdHI8
V2ViR0xSZW5kZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzKQorUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMs
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogewotICAgIE93blB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKCkpOworICAgIE93blB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0
dHJzKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCkBA
IC04NzcsNiArODc4LDI1IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEIKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
Pih2YWx1ZSkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQoreworICAgIC8vIFdlIGFs
d2F5cyBuZWVkIHRvIHJldHVybiBhIG5ldyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIG9iamVjdCB0
bworICAgIC8vIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBtdXRhdGluZyBhbnkgY2FjaGVkIHZlcnNp
b24uCisgICAgYm9vbCBhbHBoYTsKKyAgICBib29sIGRlcHRoOworICAgIGJvb2wgc3RlbmNpbDsK
KyAgICBib29sIGFudGlhbGlhczsKKyAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICBt
X2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKGFscGhhLCBkZXB0aCwgc3RlbmNpbCwgYW50
aWFsaWFzLCBwcmVtdWx0aXBsaWVkQWxwaGEpOworICAgIFJlZlB0cjxXZWJHTENvbnRleHRBdHRy
aWJ1dGVzPiBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpOworICAgIGF0
dHJzLT5zZXRBbHBoYShhbHBoYSk7CisgICAgYXR0cnMtPnNldERlcHRoKGRlcHRoKTsKKyAgICBh
dHRycy0+c2V0U3RlbmNpbChzdGVuY2lsKTsKKyAgICBhdHRycy0+c2V0QW50aWFsaWFzKGFudGlh
bGlhcyk7CisgICAgYXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxw
aGEpOworICAgIHJldHVybiBhdHRyczsKK30KKwogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEVycm9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJvcigp
OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShy
ZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1ZmZlcjsKK2NsYXNzIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgQ2Fu
dmFzT2JqZWN0OwogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtNTMsNyArNTQsNyBAQCBjbGFzcyBX
ZWJLaXRDU1NNYXRyaXg7CiAKICAgICBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJs
aWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVu
dCopOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNy
ZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKICAgICAg
ICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIGlzM2QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzQsNiArMTM1LDggQEAgY2xh
c3MgV2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGdl
dENvbnRleHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigp
OwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTU0MSw2ICs1NDEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIGFueSBnZXRCdWZm
ZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5h
bWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1ZmZl
clBhcmFtZXRlcigpOwogCisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgZ2V0Q29udGV4
dEF0dHJpYnV0ZXMoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKICAg
ICAgICAgLy8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBs
b25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDUzMDEzKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBXZWJHTEFj
dGl2ZUluZm87CiAgICAgY2xhc3MgV2ViR0xBcnJheTsKICAgICBjbGFzcyBXZWJHTEJ1ZmZlcjsK
KyAgICBjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOwogICAgIGNsYXNzIFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXk7CiAgICAgY2xhc3MgV2ViR0xGbG9hdEFycmF5OwogICAgIGNsYXNzIFdlYkdM
RnJhbWVidWZmZXI7CkBAIC0zODIsNyArMzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1MDYKICAgICAgICAg
fTsKICAgICAgICAgCi0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjcmVhdGUoKTsKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IGNyZWF0ZShXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycyk7CiAgICAgICAgIHZpcnR1YWwg
fkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00NTksNiArNDYw
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZh
bHVlKTsKIAorICAgICAgICB2b2lkIGdldENvbnRleHRBdHRyaWJ1dGVzKGJvb2wmIGFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0ZW5jaWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCYgYW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wmIHByZW11bHRpcGxpZWRBbHBoYSk7CisKICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBnZXRFcnJvcigpOwogCiAgICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxv
bmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CkBAIC02MDIsMTEgKzYwOSwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBl
cnJvcik7CiAKICAgICBwcml2YXRlOiAgICAgICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0
dHJzKTsKIAogICAgICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKICAg
ICAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBib29sIG1fYWxwaGFBdHRyOworICAg
ICAgICBib29sIG1fZGVwdGhBdHRyOworICAgICAgICBib29sIG1fc3RlbmNpbEF0dHI7CisgICAg
ICAgIGJvb2wgbV9hbnRpYWxpYXNBdHRyOworICAgICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFs
cGhhQXR0cjsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFycmF5Owog
ICAgICAgICAKICAgICAgICAgQ0dMQ29udGV4dE9iaiBtX2NvbnRleHRPYmo7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMuY3BwCShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldlYkdMQXJyYXkuaCIK
ICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xGbG9h
dEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgpAQCAtNzUsMTggKzc2LDI5IEBA
IHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxDR0xQaXgKICAgICBhdHRyaWJzLmFw
cGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkpOwogfQogCi1QYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKCkKK1Bh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyogYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKSk7CiAgICAg
cmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFzZSgpIDogMDsKIH0K
IAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKCkKLSAgICA6IG1fY29udGV4
dE9iaigwKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMqIGF0dHJzKQorICAgIDogbV9hbHBoYUF0dHIodHJ1ZSkKKyAgICAsIG1fZGVw
dGhBdHRyKHRydWUpCisgICAgLCBtX3N0ZW5jaWxBdHRyKGZhbHNlKQorICAgICwgbV9hbnRpYWxp
YXNBdHRyKGZhbHNlKQorICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGFBdHRyKHRydWUpCisgICAg
LCBtX2NvbnRleHRPYmooMCkKICAgICAsIG1fdGV4dHVyZSgwKQogICAgICwgbV9mYm8oMCkKICAg
ICAsIG1fZGVwdGhCdWZmZXIoMCkKIHsKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0YWtlIGlu
dG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZAorICAgIC8vIGNvbnRleHQgY3JlYXRpb24g
YXR0cmlidXRlcywgaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZAorICAgIC8vIGFudGlhbGlhcywg
YW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBhbmQgY291bGQgbm90IGJlIGhvbm9yZWQKKyAgICAv
LyBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRpb24u
CisgICAgVU5VU0VEX1BBUkFNKGF0dHJzKTsKKwogICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0
dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9
IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsKQEAgLTU0MCw2ICs1NTIsMTkgQEAg
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiA6Omds
R2V0QXR0cmliTG9jYXRpb24oKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIG5hbWUudXRmOCgp
LmRhdGEoKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1
dGVzKGJvb2wmIGFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCYgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sJiBzdGVuY2lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCYgYW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCYgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIGFscGhh
ID0gbV9hbHBoYUF0dHI7CisgICAgZGVwdGggPSBtX2RlcHRoQXR0cjsKKyAgICBzdGVuY2lsID0g
bV9zdGVuY2lsQXR0cjsKKyAgICBhbnRpYWxpYXMgPSBtX2FudGlhbGlhc0F0dHI7CisgICAgcHJl
bXVsdGlwbGllZEFscGhhID0gbV9wcmVtdWx0aXBsaWVkQWxwaGFBdHRyOworfQorCiB1bnNpZ25l
ZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7CiAgICAgaWYgKG1fc3ludGhl
dGljRXJyb3JzLnNpemUoKSA+IDApIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTMwMzMp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTAtMDEtMDggIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgdG8gaW1w
bGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhlIFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAgICAgIGJpbmRp
bmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0bwor
ICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhlIFdlYkdMIHNw
ZWNpZmljYXRpb24uCisgICAgICAgIFBhc3NlZCBuZXcgYXR0cmlidXRlcyBvYmplY3QgZG93biB0
aHJvdWdoCisgICAgICAgIEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0IHRvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QuIEFkZGVkIGdldENv
bnRleHRBdHRyaWJ1dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRl
ZCB0ZXN0IGNhc2UgZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2Fu
IGJlIHBhc3NlZCBkb3duIGFuZCByZXR1cm5lZC4gIFRlc3RlZCBpbiBTYWZhcmkgYW5kCisgICAg
ICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tlZCB1cCB0byB0aGUgY3Jl
YXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1ZyAzMzQxNi4KKworICAg
ICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldENvbnRleHRBdHRyaWJ1
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6
CisKIDIwMTAtMDEtMDggIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTMwMTMpCisrKyBXZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJHTEJ5dGVBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKICNpbmNsdWRlICJX
ZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgpAQCAtNTUsNiAr
NTYsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCiAjaWYgT1MoV0lORE9XUykKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CkBAIC05OCw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgewogcHVibGljOgotICAgIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCgpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTEyNCw2ICsxMjYsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxv
bmcgaW5kZXgpOwogICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkodW5zaWduZWQgbG9u
ZyBpbmRleCk7CiAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOworICAgIHZvaWQgZ2V0Q29u
dGV4dEF0dHJpYnV0ZXMoYm9vbCYgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sJiBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0ZW5j
aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBhbnRpYWxpYXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBwcmVtdWx0aXBsaWVkQWxwaGEpOwogICAg
IHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGludCBzaXplLCBp
bnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgIHZvaWQgdmll
d3BvcnRJbXBsKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBs
b25nIGhlaWdodCk7CkBAIC0xMzEsNiArMTM4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRo
ZXNpemVHTEVycm9yKHVuc2lnbmVkIGxvbmcgZXJyb3IpOwogCiBwcml2YXRlOgorICAgIGJvb2wg
bV9hbHBoYUF0dHI7CisgICAgYm9vbCBtX2RlcHRoQXR0cjsKKyAgICBib29sIG1fc3RlbmNpbEF0
dHI7CisgICAgYm9vbCBtX2FudGlhbGlhc0F0dHI7CisgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRB
bHBoYUF0dHI7CisKICAgICB1bnNpZ25lZCBpbnQgbV90ZXh0dXJlOwogICAgIHVuc2lnbmVkIGlu
dCBtX2ZibzsKICAgICB1bnNpZ25lZCBpbnQgbV9kZXB0aEJ1ZmZlcjsKQEAgLTM2Niw4ICszNzks
MTMgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6VmVydGV4QXR0cmliUAogewogfQogCi1H
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKLSAg
ICA6IG1fdGV4dHVyZSgwKQorR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbChXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKKyAgICA6IG1fYWxw
aGFBdHRyKHRydWUpCisgICAgLCBtX2RlcHRoQXR0cih0cnVlKQorICAgICwgbV9zdGVuY2lsQXR0
cihmYWxzZSkKKyAgICAsIG1fYW50aWFsaWFzQXR0cihmYWxzZSkKKyAgICAsIG1fcHJlbXVsdGlw
bGllZEFscGhhQXR0cih0cnVlKQorICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2ZibygwKQog
ICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9ib3VuZEZCTygwKQpAQCAtMzkzLDYgKzQx
MSwxMiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAjZXJyb3Ig
TXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgogeworICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisgICAgLy8gY29u
dGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kCisgICAg
Ly8gYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZCBub3QgYmUg
aG9ub3JlZAorICAgIC8vIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBp
bXBsZW1lbnRhdGlvbi4KKyAgICBVTlVTRURfUEFSQU0oYXR0cnMpOworCiAjaWYgT1MoV0lORE9X
UykKICAgICBXTkRDTEFTUyB3YzsKICAgICBpZiAoIUdldENsYXNzSW5mbyhHZXRNb2R1bGVIYW5k
bGUoMCksIEwiQ0FOVkFTR0wiLCAmd2MpKSB7CkBAIC05ODIsNiArMTAwNiwxOSBAQCB1bnNpZ25l
ZCBsb25nIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6CiAgICAgcmV0dXJuIGdsR2V0RXJyb3Io
KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRDb250ZXh0QXR0cmli
dXRlcyhib29sJiBhbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCYgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIHN0ZW5jaWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wmIGFudGlhbGlhcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYg
cHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIGFscGhhID0gbV9hbHBoYUF0dHI7CisgICAgZGVw
dGggPSBtX2RlcHRoQXR0cjsKKyAgICBzdGVuY2lsID0gbV9zdGVuY2lsQXR0cjsKKyAgICBhbnRp
YWxpYXMgPSBtX2FudGlhbGlhc0F0dHI7CisgICAgcHJlbXVsdGlwbGllZEFscGhhID0gbV9wcmVt
dWx0aXBsaWVkQWxwaGFBdHRyOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50IHR5
cGUsIGJvb2wgbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZz
ZXQpCiB7CkBAIC0xMTMwLDE3ICsxMTY3LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om5h
bWUodDEgYTEsIHQyIGEKICAgICBnbCMjZ2xuYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3
LCBhOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLVBhc3NPd25QdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKQorUGFzc093blB0
cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgUGFzc093blB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycyk7CiAg
ICAgLy8gRklYTUU6IGFkZCBlcnJvciBjaGVja2luZwogICAgIHJldHVybiBjb250ZXh0OwogfQog
Ci1HcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoKQorR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzKQogICAg
IDogbV9jdXJyZW50V2lkdGgoMCkKICAgICAsIG1fY3VycmVudEhlaWdodCgwKQotICAgICwgbV9p
bnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpKQorICAgICwgbV9pbnRlcm5h
bChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycykpCiB7CiB9CiAKQEAgLTE1Njks
NiArMTYwNiwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0CiAg
ICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKGJvb2wmIGFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sJiBzdGVu
Y2lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCYg
YW50aWFsaWFzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCYgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIG1faW50ZXJuYWwtPmdldENvbnRleHRB
dHRyaWJ1dGVzKGFscGhhLCBkZXB0aCwgc3RlbmNpbCwgYW50aWFsaWFzLCBwcmVtdWx0aXBsaWVk
QWxwaGEpOworfQorCiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigp
CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldEVycm9yKCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA1MzAzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEwLTAxLTA4ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRv
IGltcGxlbWVudCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE2OQorCisgICAgICAgIEFkZGVkIHRoZSBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzIGNsYXNzIGFuZCBjdXN0b20gSmF2YVNjcmlwdAorICAgICAgICBi
aW5kaW5ncyB0byBhY2NlcHQgYSBuYXRpdmUgb2JqZWN0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQg
dG8KKyAgICAgICAgZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIikgcGVyIHRoZSBXZWJH
TCBzcGVjaWZpY2F0aW9uLgorICAgICAgICBQYXNzZWQgbmV3IGF0dHJpYnV0ZXMgb2JqZWN0IGRv
d24gdGhyb3VnaAorICAgICAgICBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCB0byBXZWJH
TFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNELiBBZGRlZCBn
ZXRDb250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dC4g
QWRkZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAgICBhdHRyaWJ1dGVz
IGNhbiBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuICBUZXN0ZWQgaW4gU2FmYXJpIGFuZAor
ICAgICAgICBDaHJvbWl1bS4gVGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBob29rZWQgdXAgdG8gdGhl
IGNyZWF0aW9uIG9mIHRoZQorICAgICAgICBPcGVuR0wgY29udGV4dCBpbiBidWcgMzM0MTYuCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0
ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dl
YmdsLXRlc3QuanM6CisgICAgICAgIChjcmVhdGUzRENvbnRleHQpOgorCiAyMDEwLTAxLTA4ICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250
ZXh0LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACitUZXN0IHBhc3Npbmcg
ZG93biBhbmQgZmV0Y2hpbmcgb2YgV2ViR0xDb250ZXh0QXR0cmlidXRlcworCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1Rlc3QgZGVmYXVsdCB2YWx1ZXMKK1BBU1MgY29udGV4dCA9IGNy
ZWF0ZTNEQ29udGV4dCgpIGlzIG5vbi1udWxsLgorUEFTUyBhdHRyaWJzID0gY29udGV4dC5nZXRD
b250ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgorUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRy
dWUKK1BBU1MgYXR0cmlicy5hbHBoYSBpcyB0cnVlCitQQVNTIChhdHRyaWJzLnN0ZW5jaWwgPT0g
dHJ1ZSB8fCBhdHRyaWJzLnN0ZW5jaWwgPT0gZmFsc2UpIGlzIHRydWUKK1BBU1MgKGF0dHJpYnMu
YW50aWFsaWFzID09IHRydWUgfHwgYXR0cmlicy5hbnRpYWxpYXMgPT0gZmFsc2UpIGlzIHRydWUK
K1BBU1MgYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQorVGVzdCBjdXN0b21pemVk
IHZhbHVlcworUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KHsgc3RlbmNpbDogZmFsc2Us
IGFudGlhbGlhczogZmFsc2UgfSkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMgPSBjb250ZXh0
LmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMuZGVwdGgg
aXMgdHJ1ZQorUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUKK1BBU1MgYXR0cmlicy5zdGVuY2ls
IGlzIGZhbHNlCitQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZhbHNlCitQQVNTIGF0dHJpYnMu
cHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBwYXNzaW5nIGRvd24gYW5kIGZl
dGNoaW5nIG9mIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMiKTsKKworZGVidWcoIlRlc3QgZGVmYXVs
dCB2YWx1ZXMiKTsKK3ZhciBjb250ZXh0OwordmFyIGF0dHJpYnM7CitzaG91bGRCZU5vbk51bGwo
ImNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKSIpOworc2hvdWxkQmVOb25OdWxsKCJhdHRyaWJz
ID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygpIik7CitzaG91bGRCZSgiYXR0cmlicy5k
ZXB0aCIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbHBoYSIsICJ0cnVlIik7CisvLyBU
aGUgZm9sbG93aW5nIHR3byBkZXBlbmQgb24gd2hldGhlciB0aGUgaW1wbGVtZW50YXRpb24gYWN0
dWFsbHkgc3VwcG9ydHMgdGhlbQorc2hvdWxkQmUoIihhdHRyaWJzLnN0ZW5jaWwgPT0gdHJ1ZSB8
fCBhdHRyaWJzLnN0ZW5jaWwgPT0gZmFsc2UpIiwgInRydWUiKTsKK3Nob3VsZEJlKCIoYXR0cmli
cy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSkiLCAidHJ1
ZSIpOworc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsKKwor
ZGVidWcgKCJUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzIik7CitzaG91bGRCZU5vbk51bGwoImNvbnRl
eHQgPSBjcmVhdGUzRENvbnRleHQoeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9
KSIpOworc2hvdWxkQmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmli
dXRlcygpIik7CitzaG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CitzaG91bGRCZSgi
YXR0cmlicy5hbHBoYSIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsIiwgImZh
bHNlIik7CitzaG91bGRCZSgiYXR0cmlicy5hbnRpYWxpYXMiLCAiZmFsc2UiKTsKK3Nob3VsZEJl
KCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSIsICJ0cnVlIik7CisKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRl
c3QuanMJKHJldmlzaW9uIDUzMDEzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTgsMTIgKzgsMTIgQEAg
ZnVuY3Rpb24gZ2V0U2hhZGVyU291cmNlKGZpbGUpIHsKICAgICByZXR1cm4geGhyLnJlc3BvbnNl
VGV4dDsKIH0KIAotZnVuY3Rpb24gY3JlYXRlM0RDb250ZXh0KCkgeworZnVuY3Rpb24gY3JlYXRl
M0RDb250ZXh0KGF0dHJzKSB7CiAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwogICAgIHRyeSB7Ci0gICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4
dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7CisgICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4
dCgiZXhwZXJpbWVudGFsLXdlYmdsIiwgYXR0cnMpOwogICAgIH0gY2F0Y2goZSkge30KLSAgICBy
ZXR1cm4gY2FudmFzLmdldENvbnRleHQoIm1vei13ZWJnbCIpOworICAgIHJldHVybiBjYW52YXMu
Z2V0Q29udGV4dCgibW96LXdlYmdsIiwgYXR0cnMpOwogfQogCiBmdW5jdGlvbiBjcmVhdGVHTEVy
cm9yV3JhcHBlcihjb250ZXh0LCBmbmFtZSkgewpAQCAtMjYsOCArMjYsOCBAQCBmdW5jdGlvbiBj
cmVhdGVHTEVycm9yV3JhcHBlcihjb250ZXh0LCBmCiAgICAgfTsKIH0KIAotZnVuY3Rpb24gY3Jl
YXRlM0REZWJ1Z0NvbnRleHQoKSB7Ci0gICAgdmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQo
KTsKK2Z1bmN0aW9uIGNyZWF0ZTNERGVidWdDb250ZXh0KGF0dHJzKSB7CisgICAgdmFyIGNvbnRl
eHQgPSBjcmVhdGUzRENvbnRleHQoYXR0cnMpOwogICAgIC8vIFRoYW5rcyB0byBJbG1hcmkgSGVp
a2tpbmVuIGZvciB0aGUgaWRlYSBvbiBob3cgdG8gaW1wbGVtZW50IHRoaXMgc28gZWxlZ2FudGx5
LgogICAgIHZhciB3cmFwID0ge307CiAgICAgZm9yICh2YXIgaSBpbiBjb250ZXh0KSB7Cg==
</data>
<flag name="review"
          id="28419"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46313</attachid>
            <date>2010-01-11 15:05:36 -0800</date>
            <delta_ts>2010-01-11 18:47:23 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>context-attributes.patch</filename>
            <type>text/plain</type>
            <size>55827</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDEtMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gaW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhl
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGJpbmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1
bWVudCB0bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhl
IFdlYkdMIHNwZWNpZmljYXRpb24uCisgICAgICAgIEFkZGVkIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIHN0cnVjdCB0byBpc29sYXRlIERPTSBhbmQKKyAgICAgICAgZ3JhcGhpY3MgbGF5
ZXJzLiBBZGRlZCBnZXRDb250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dC4gQWRkZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAg
ICBhdHRyaWJ1dGVzIGNhbiBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuIFRlc3RlZCBpbiBT
YWZhcmkgYW5kCisgICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tl
ZCB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1
ZyAzMzQxNi4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxi
YWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOjpDYW52YXNDb250
ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDb250ZXh0QXR0cmlidXRl
czo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNDb250ZXh0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpkZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjpzZXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpzdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6OnNldFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6YW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0
dHJpYnV0ZXM6OnNldEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b250ZXh0QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmF0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0
cmlidXRlcyk6CisKIDIwMTAtMDEtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBBdHRlbXB0IHRvIGZpeCB3aW5kb3dz
IGJ1aWxkcywgYnkgcmVtb3ZpbmcgdGhlIG5vLWxvbmdlciBleGlzdGFudCBKU1NWR1BvaW50TGlz
dEN1c3RvbS5jcHAgZnJvbSBKU0JpbmRpbmdzQWxsSW5PbmUuY3BwLgpJbmRleDogV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViR0xB
cnJheUJ1ZmZlciBcCiAgICAgV2ViR0xCdWZmZXIgXAogICAgIFdlYkdMQnl0ZUFycmF5IFwKKyAg
ICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIFwKICAgICBXZWJHTEZsb2F0QXJyYXkgXAogICAgIFdl
YkdMRnJhbWVidWZmZXIgXAogICAgIENhbnZhc0dyYWRpZW50IFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1
MzA5NykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4
Myw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xGbG9hdEFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50Lmlk
bCcsCkBAIC0xMzAxLDEyICsxMzAyLDE2IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuY3Bw
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ5dGVBcnJheS5oJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9XZWJHTEZsb2F0QXJyYXkuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEZsb2F0QXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52
YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFk
aWVudC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEludEFycmF5LmNwcCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NTMwOTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTIyNCw2ICsxMjI0LDEzIEBACiAJCTY1RkVBODY5MDk4MzNBREUwMEJF
RDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsKIAkJNkU0
N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2Qzgg
LyogV2ViR0xHZXRJbmZvLmNwcCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9Owor
CQk2RTRFOTFBQzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTcx
MEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKKwkJ
NkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBODEwRjdG
QjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKKwkJNkU0RTkx
QUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTkxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OworCQk2RTRFOTFBRjEw
RjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlD
IC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKKwkJNkU0RTkxQjAxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgKi87IH07CisJCTZFRThBNzcyMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFOEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CisJCTZFRThBNzczMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIw
IC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAq
LzsgfTsKIAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEz
M0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CiAJ
CTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAy
RTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY1
NzksNiArNjU4NiwxMyBAQAogCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJ
bmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0g
Y2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTRF
OTFBNzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMu
Y3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZh
c0NvbnRleHRBdHRyaWJ1dGVzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTkxMEY3RkIzMTAwQTI3
NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHA7IHBhdGggPSBjYW52YXMv
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsg
cGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVFOEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjYyNkUwMTBFRjAyMkZFMDBB
MDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1
NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDczNCw2ICsxMDc0OCw4IEBACiAJCTQ5NDg0RkFFMTAyQ0YwMUUwMDE4N0REMyAv
KiBjYW52YXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTZFNEU5MUE3MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAg
Ki8sCisJCQkJNkU0RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzLmggKi8sCiAJCQkJQTdEMjBGNkIxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5m
by5oICovLAogCQkJCUE3RDIwRjNCMTA3RjM3MzgwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8u
aWRsICovLAogCQkJCTQ5RUVDREM3MTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEFycmF5LmNwcCAq
LywKQEAgLTEwNzQ4LDYgKzEwNzY0LDkgQEAKIAkJCQk0OUM3QjlBQjEwNDJEMzJFMDAwOUQ0NDcg
LyogV2ViR0xCeXRlQXJyYXkuY3BwICovLAogCQkJCTQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAv
KiBXZWJHTEJ5dGVBcnJheS5oICovLAogCQkJCTQ5QzdCOUFEMTA0MkQzMkUwMDA5RDQ0NyAvKiBX
ZWJHTEJ5dGVBcnJheS5pZGwgKi8sCisJCQkJNkU0RTkxQTkxMEY3RkIzMTAwQTI3NzlDIC8qIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAorCQkJCTZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCisJCQkJNkU0RTkxQUIxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovLAogCQkJCTQ5RUVDRENEMTA1
MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEZsb2F0QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRENFMTA1
MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEZsb2F0QXJyYXkuaCAqLywKIAkJCQk0OUVFQ0RDRjEwNTAz
QzIzMDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmlkbCAqLywKQEAgLTEyOTQ3LDYgKzEyOTY2
LDggQEAKIAkJCQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICov
LAogCQkJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnl0ZUFycmF5LmNwcCAq
LywKIAkJCQk0OUM3Qjk4MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ5dGVBcnJheS5oICov
LAorCQkJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwICovLAorCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQk0OUVFQ0VGNDEwNTA3MEM0MDAwOTlGQUIgLyogSlNXZWJH
TEZsb2F0QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRUY1MTA1MDcwQzQwMDA5OUZBQiAvKiBKU1dl
YkdMRmxvYXRBcnJheS5oICovLAogCQkJCTQ5QzdCOTg0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dl
YkdMRnJhbWVidWZmZXIuY3BwICovLApAQCAtMTgzMjUsNiArMTgzNDYsOSBAQAogCQkJCTBGNUI3
QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0U0QzAwRTYxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BP
RExpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5
QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0RTkx
QUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg0MjUsNiArMTg0NDksNyBAQAogCQkJCTg1MTM2
Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNkU0RTkxQjAxMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwNDg1LDYg
KzIwNTEwLDkgQEAKIAkJCQk1MTEyMjQ3ODEwQ0ZCOEY0MDA4MDk5RDcgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QjdBNTQxMEY2
NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250
ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTRFOTFBRTEwRjdGQjMxMDBB
Mjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2
RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZh
c0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5j
bHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oIgogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjZW5k
aWYKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTQ3LDQgKzQ5LDM2IEBAIHZvaWQgSlNI
VE1MQ2FudmFzRWxlbWVudDo6bWFya0NoaWxkcmVuKE0KICAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKTsKIH0K
IAorSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
ID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihpbXBsKCkpOworICAgIGNvbnN0IFVT
dHJpbmcmIGNvbnRleHRJZCA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgUmVmUHRy
PENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRyczsKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQor
ICAgIGlmIChjb250ZXh0SWQgPT0gImV4cGVyaW1lbnRhbC13ZWJnbCIgfHwgY29udGV4dElkID09
ICJ3ZWJraXQtM2QiKSB7CisgICAgICAgIGF0dHJzID0gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6
Y3JlYXRlKCk7CisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIHdlYkdMQXR0cnMgPSBz
dGF0aWNfY2FzdDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzKj4oYXR0cnMuZ2V0KCkpOworICAgICAg
ICBpZiAoYXJncy5zaXplKCkgPiAxICYmIGFyZ3MuYXQoMSkuaXNPYmplY3QoKSkgeworICAgICAg
ICAgICAgSlNPYmplY3QqIGpzQXR0cnMgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgpOworICAgICAg
ICAgICAgSWRlbnRpZmllciBhbHBoYShleGVjLCAiYWxwaGEiKTsKKyAgICAgICAgICAgIGlmIChq
c0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBhbHBoYSkpCisgICAgICAgICAgICAgICAgd2ViR0xB
dHRycy0+c2V0QWxwaGEoanNBdHRycy0+Z2V0KGV4ZWMsIGFscGhhKS50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICAgICAgSWRlbnRpZmllciBkZXB0aChleGVjLCAiZGVwdGgiKTsKKyAgICAgICAg
ICAgIGlmIChqc0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBkZXB0aCkpCisgICAgICAgICAgICAg
ICAgd2ViR0xBdHRycy0+c2V0RGVwdGgoanNBdHRycy0+Z2V0KGV4ZWMsIGRlcHRoKS50b0Jvb2xl
YW4oZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBzdGVuY2lsKGV4ZWMsICJzdGVuY2ls
Iik7CisgICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgc3RlbmNpbCkp
CisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0U3RlbmNpbChqc0F0dHJzLT5nZXQoZXhl
Yywgc3RlbmNpbCkudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgYW50
aWFsaWFzKGV4ZWMsICJhbnRpYWxpYXMiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5oYXNQ
cm9wZXJ0eShleGVjLCBhbnRpYWxpYXMpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNl
dEFudGlhbGlhcyhqc0F0dHJzLT5nZXQoZXhlYywgYW50aWFsaWFzKS50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICAgICAgSWRlbnRpZmllciBwcmVtdWx0aXBsaWVkQWxwaGEoZXhlYywgInByZW11
bHRpcGxpZWRBbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5KGV4
ZWMsIHByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0
UHJlbXVsdGlwbGllZEFscGhhKGpzQXR0cnMtPmdldChleGVjLCBwcmVtdWx0aXBsaWVkQWxwaGEp
LnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY2FudmFzLT5nZXRDb250ZXh0
KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2
aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYyLDYgKzIxNjIsNyBAQCBteSAldHlwZUNhbkZhaWxD
b252ZXJzaW9uID0gKAogICAgICJXZWJHTEFycmF5IiA9PiAwLAogICAgICJXZWJHTEJ1ZmZlciIg
PT4gMCwKICAgICAiV2ViR0xCeXRlQXJyYXkiID0+IDAsCisgICAgIldlYkdMQ29udGV4dEF0dHJp
YnV0ZXMiID0+IDAsCiAgICAgIldlYkdMRmxvYXRBcnJheSIgPT4gMCwKICAgICAiV2ViR0xGcmFt
ZWJ1ZmZlciIgPT4gMCwKICAgICAiQ2FudmFzR3JhZGllbnQiID0+IDAsCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpAQCAtMzcxLDcgKzM3
MSw5IEBAIHN1YiBEZXRlcm1pbmVQYXJzZU1vZGUKICAgICAgICAgJG1vZGUgPSBNT0RFX0lOVEVS
RkFDRTsKICAgICB9IGVsc2lmICgkXyA9fiAvZXhjZXB0aW9uLykgewogICAgICAgICAkbW9kZSA9
IE1PREVfRVhDRVBUSU9OOwotICAgIH0gZWxzaWYgKCRfID1+IC9hbGlhcy8pIHsKKyAgICB9IGVs
c2lmICgkXyA9fiAvKFxBfFxiKWFsaWFzLykgeworICAgICAgICAjIFRoZSAoXEF8XGIpIGFib3Zl
IGlzIG5lZWRlZCBzbyB3ZSBkb24ndCBtYXRjaCBhdHRyaWJ1dGVzCisgICAgICAgICMgd2hvc2Ug
bmFtZXMgY29udGFpbiB0aGUgc3Vic3RyaW5nICJhbGlhcyIuCiAgICAgICAgICRtb2RlID0gTU9E
RV9BTElBUzsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAkocmV2aXNpb24g
NTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJDaGlsZFRocmVhZERPTURhdGEuaCIKICNp
bmNsdWRlICJNYWluVGhyZWFkRE9NRGF0YS5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNB
bGxJbk9uZS5jcHAJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJp
dmVkU291cmNlc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAog
I2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xBcnJheUJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmlu
ZGluZ3MvVjhXZWJHTEJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTEJ5dGVB
cnJheS5jcHAiCisjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOFdlYkdMRmxvYXRBcnJheS5jcHAiCiAjaW5jbHVkZSAi
YmluZGluZ3MvVjhXZWJHTEZyYW1lYnVmZmVyLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOENh
bnZhc0dyYWRpZW50LmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJ
KHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiVjhOb2RlTGlzdC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXZWJHTEFycmF5LmgiCisjaW5jbHVk
ZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmNwcAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsNiArNDAyLDcgQEAKICNp
bmNsdWRlICJWOFdlYkdMQXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnl0ZUFycmF5LmgiCiAj
aW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4V2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIlY4V2ViR0xGbG9hdEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJH
TEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEludEFycmF5LmgiCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYgKzQ1NCw3IEBAIHR5cGVkZWYgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKFdFQkdMQVJSQVlCVUZGRVIsIFdlYkdM
QXJyYXlCdWZmZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdM
QlVGRkVSLCBXZWJHTEJ1ZmZlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBWKFdFQkdMQllURUFSUkFZLCBXZWJHTEJ5dGVBcnJheSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKFdFQkdMQ09OVEVYVEFUVFJJQlVURVMsIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMpICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdMRkxP
QVRBUlJBWSwgV2ViR0xGbG9hdEFycmF5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWKFdFQkdMRlJBTUVCVUZGRVIsIFdlYkdMRnJhbWVidWZmZXIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdMSU5UQVJSQVksIFdlYkdMSW50QXJyYXkp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIK
IAorI2luY2x1ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5j
bHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgog
I2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpAQCAtNDYs
NyArNDgsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbgogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9k
ZTxIVE1MQ2FudmFzRWxlbWVudD4oaG9sZGVyKTsKICAgICBTdHJpbmcgY29udGV4dElkID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHJlc3Vs
dCA9IGltcC0+Z2V0Q29udGV4dChjb250ZXh0SWQpOworICAgIFJlZlB0cjxDYW52YXNDb250ZXh0
QXR0cmlidXRlcz4gYXR0cnM7CisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKyAgICBpZiAoY29udGV4
dElkID09ICJleHBlcmltZW50YWwtd2ViZ2wiIHx8IGNvbnRleHRJZCA9PSAid2Via2l0LTNkIikg
eworICAgICAgICBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpOworICAg
ICAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiB3ZWJHTEF0dHJzID0gc3RhdGljX2Nhc3Q8V2Vi
R0xDb250ZXh0QXR0cmlidXRlcyo+KGF0dHJzLmdldCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAxICYmIGFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4ganNBdHRycyA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAgICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGFscGhhID0gdjg6OlN0cmluZzo6TmV3KCJhbHBoYSIp
OworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbHBoYSkpCisgICAgICAgICAgICAgICAg
d2ViR0xBdHRycy0+c2V0QWxwaGEoanNBdHRycy0+R2V0KGFscGhhKS0+Qm9vbGVhblZhbHVlKCkp
OworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBkZXB0aCA9IHY4OjpTdHJpbmc6
Ok5ldygiZGVwdGgiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5IYXMoZGVwdGgpKQorICAg
ICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldERlcHRoKGpzQXR0cnMtPkdldChkZXB0aCktPkJv
b2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3RlbmNp
bCA9IHY4OjpTdHJpbmc6Ok5ldygic3RlbmNpbCIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMt
PkhhcyhzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRTdGVuY2lsKGpz
QXR0cnMtPkdldChzdGVuY2lsKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBhbnRpYWxpYXMgPSB2ODo6U3RyaW5nOjpOZXcoImFudGlhbGlhcyIp
OworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbnRpYWxpYXMpKQorICAgICAgICAgICAg
ICAgIHdlYkdMQXR0cnMtPnNldEFudGlhbGlhcyhqc0F0dHJzLT5HZXQoYW50aWFsaWFzKS0+Qm9v
bGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcmVtdWx0
aXBsaWVkQWxwaGEgPSB2ODo6U3RyaW5nOjpOZXcoInByZW11bHRpcGxpZWRBbHBoYSIpOworICAg
ICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhwcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICAg
ICAgICAgIHdlYkdMQXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShqc0F0dHJzLT5HZXQocHJl
bXVsdGlwbGllZEFscGhhKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVzdWx0ID0gaW1wLT5nZXRDb250ZXh0
KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGlmIChyZXN1bHQtPmlzMmQoKSkKQEAgLTYwLDQgKzg3
LDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbgogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
cmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ2FudmFzQ29udGV4dEF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZh
c1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKICNpZiBF
TkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJD
YW52YXNTdHlsZS5oIgpAQCAtMTQ3LDcgKzE0OSw3IEBAIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVu
dDo6dG9EYXRhVVJMKGNvbnMKICAgICByZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTChtaW1lVHlw
ZSk7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMqIGF0dHJzKQogewogICAgIC8vIEEgQ2FudmFzIGNhbiBlaXRoZXIgYmUgIjJE
IiBvciAid2ViZ2wiIGJ1dCBuZXZlciBib3RoLiBJZiB5b3UgcmVxdWVzdCBhIDJEIGNhbnZhcyBh
bmQgdGhlIGV4aXN0aW5nCiAgICAgLy8gY29udGV4dCBpcyBhbHJlYWR5IDJELCBqdXN0IHJldHVy
biB0aGF0LiBJZiB0aGUgZXhpc3RpbmcgY29udGV4dCBpcyBXZWJHTCwgdGhlbiBkZXN0cm95IGl0
CkBAIC0xNzQsNyArMTc2LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0Vs
ZW1lbgogICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5pczNkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpZiAoIW1fY29udGV4dCkgewot
ICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
KHRoaXMpOworICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqPihhdHRy
cykpOwogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5
ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKICAgICAgICAgICAgICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC02
OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKiBhdHRy
aWJ1dGVzID0gTlVMTCk7CiAKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
OCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
I2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZF
X0MKLSAgICAgICAgW1Y4Q3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcg
Y29udGV4dElkKTsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBiaW5kaW5nIGlzIG5lZWRlZCB0byBo
YW5kbGUgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgorICAgICAgICBbQ3VzdG9tXSBET01P
YmplY3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcgY29udGV4dElkKTsKICNlbmRpZgogCiAgICAg
fTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0
ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0
QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ2FudmFzQ29u
dGV4dEF0dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDYW52YXNDb250ZXh0
QXR0cmlidXRlczo6Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoKQoreworfQorCitDYW52YXNDb250
ZXh0QXR0cmlidXRlczo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0
QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29u
dGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzQ29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzX2gK
KyNkZWZpbmUgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGJhc2UgY2xhc3MgZm9yIGFu
eSBhdHRyaWJ1dGVzIHRoYXQgYXJlIG5lZWRlZCB3aGljaCB3b3VsZCBhZmZlY3QKKy8vIHRoZSBj
cmVhdGlvbiBvZiB0aGUgQ2FudmFzJ3MgcmVuZGVyaW5nIGNvbnRleHQuIEN1cnJlbnRseSBvbmx5
IHRoZQorLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0IHVzZXMgdGhpcyBtZWNoYW5pc20uCisKK2Ns
YXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzQ29u
dGV4dEF0dHJpYnV0ZXM+IHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfkNhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVz
KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDYW52YXNDb250
ZXh0QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4g
V2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKSk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250
ZXh0QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpKTsKK30KKworV2ViR0xDb250ZXh0
QXR0cmlidXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcygpCisgICAgOiBDYW52YXNDb250ZXh0
QXR0cmlidXRlcygpCit7CisgICAgbV9hdHRycy5hbHBoYSA9IHRydWU7CisgICAgbV9hdHRycy5k
ZXB0aCA9IHRydWU7CisgICAgbV9hdHRycy5zdGVuY2lsID0gdHJ1ZTsKKyAgICBtX2F0dHJzLmFu
dGlhbGlhcyA9IHRydWU7CisgICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwor
fQorCitXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzKEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgOiBDYW52YXNDb250ZXh0
QXR0cmlidXRlcygpCisgICAgLCBtX2F0dHJzKGF0dHJpYnV0ZXMpCit7Cit9CisKK1dlYkdMQ29u
dGV4dEF0dHJpYnV0ZXM6On5XZWJHTENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKK30KKworYm9vbCBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0
cnMuYWxwaGE7Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0QWxwaGEoYm9v
bCBhbHBoYSkKK3sKKyAgICBtX2F0dHJzLmFscGhhID0gYWxwaGE7Cit9CisKK2Jvb2wgV2ViR0xD
b250ZXh0QXR0cmlidXRlczo6ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLmRl
cHRoOworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNldERlcHRoKGJvb2wgZGVw
dGgpCit7CisgICAgbV9hdHRycy5kZXB0aCA9IGRlcHRoOworfQorCitib29sIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6OnN0ZW5jaWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLnN0ZW5j
aWw7Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0U3RlbmNpbChib29sIHN0
ZW5jaWwpCit7CisgICAgbV9hdHRycy5zdGVuY2lsID0gc3RlbmNpbDsKK30KKworYm9vbCBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjphbnRpYWxpYXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0
dHJzLmFudGlhbGlhczsKK30KKwordm9pZCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbnRp
YWxpYXMoYm9vbCBhbnRpYWxpYXMpCit7CisgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBhbnRpYWxp
YXM7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6cHJlbXVsdGlwbGllZEFscGhh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGE7Cit9CisK
K3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhKQoreworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0g
cHJlbXVsdGlwbGllZEFscGhhOworfQorCitHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hdHRyczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUg
V2ViR0xDb250ZXh0QXR0cmlidXRlc19oCisKKyNpbmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmli
dXRlcy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzIDogcHVibGljIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIHsKKyAgcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKTsKKworICAgIC8vIENyZWF0ZSBh
IG5ldyBhdHRyaWJ1dGVzIG9iamVjdAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IGNyZWF0ZSgpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGF0dHJpYnV0ZXMg
b2JqZWN0IGluaXRpYWxpemVkIHdpdGggcHJlZXhpc3RpbmcgYXR0cmlidXRlcworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRo
ZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYW4gYWxwaGEgY2hhbm5lbDsgZGVmYXVsdD10cnVlCisgICAg
Ym9vbCBhbHBoYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWxwaGEoYm9vbCBhbHBoYSk7CisKKyAg
ICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaGFzIGEgZGVwdGggYnVmZmVy
OyBkZWZhdWx0PXRydWUKKyAgICBib29sIGRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0
aChib29sIGRlcHRoKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZl
ciBoYXMgYSBzdGVuY2lsIGJ1ZmZlcjsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBzdGVuY2lsKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTdGVuY2lsKGJvb2wgc3RlbmNpbCk7CisKKyAgICAvLyBXaGV0
aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaXMgYW50aWFsaWFzZWQ7IGRlZmF1bHQ9dHJ1
ZQorICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBbnRpYWxpYXMoYm9v
bCBhbnRpYWxpYXMpOworCisgICAgLy8gV2hldGhlciBvciBub3QgdG8gdHJlYXQgdGhlIHZhbHVl
cyBpbiB0aGUgZHJhd2luZyBidWZmZXIgYXMKKyAgICAvLyB0aG91Z2ggdGhlaXIgYWxwaGEgY2hh
bm5lbCBoYXMgYWxyZWFkeSBiZWVuIG11bHRpcGxpZWQgaW50byB0aGUKKyAgICAvLyBjb2xvciBj
aGFubmVsczsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25z
dDsKKyAgICB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBo
YSk7CisKKyAgICAvLyBGZXRjaGVzIGEgY29weSBvZiB0aGUgYXR0cmlidXRlcyBzdG9yZWQgaW4g
dGhpcyBvYmplY3QgaW4gYQorICAgIC8vIGZvcm0gdGhhdCBjYW4gYmUgdXNlZCB0byBpbml0aWFs
aXplIGEgR3JhcGhpY3NDb250ZXh0M0QuCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cmlidXRlcygpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzKCk7CisgICAgV2ViR0xDb250ZXh0QXR0cmlidXRlcyhHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKworICBwcml2YXRlOgorICAgIEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzX2gKSW5kZXg6IFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0
bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPTNEX0NBTlZBUywKKyAg
ICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIHsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gYWxwaGE7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFu
IGRlcHRoOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzdGVuY2lsOworICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiBhbnRpYWxpYXM7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHByZW11
bHRpcGxpZWRBbHBoYTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIldlYkdMQWN0
aXZlSW5mby5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRl
ICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgpAQCAtNzUs
OSArNzYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkOwogfTsKIAotUGFzc093blB0
cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMpCitQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4
dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cywgV2ViR0xDb250ZXh0QXR0cmlidXRlcyogYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKSk7CisgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
YXR0cnMtPmF0dHJpYnV0ZXMoKSkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIApAQCAtODc3LDYgKzg3OCwxMyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTENvbnRleHRB
dHRyaWJ1dGVzPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkK
K3sKKyAgICAvLyBXZSBhbHdheXMgbmVlZCB0byByZXR1cm4gYSBuZXcgV2ViR0xDb250ZXh0QXR0
cmlidXRlcyBvYmplY3QgdG8KKyAgICAvLyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gbXV0YXRpbmcg
YW55IGNhY2hlZCB2ZXJzaW9uLgorICAgIHJldHVybiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpj
cmVhdGUobV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKTsKK30KKwogdW5zaWduZWQg
bG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEVycm9yKCkKIHsKICAgICByZXR1cm4gbV9j
b250ZXh0LT5nZXRFcnJvcigpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJH
TEJ1ZmZlcjsKK2NsYXNzIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1l
YnVmZmVyOwogY2xhc3MgQ2FudmFzT2JqZWN0OwogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtNTMs
NyArNTQsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICBjbGFzcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0
ZShIVE1MQ2FudmFzRWxlbWVudCopOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMqKTsKICAgICAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzM2QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0x
MzQsNiArMTM1LDggQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIFdlYkdMR2V0
SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBnZXRFcnJvcigpOwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNp
b24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIC8vIGFueSBnZXRCdWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
IHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcigpOwogCisgICAgICAgIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25n
IGdldEVycm9yKCk7CiAKICAgICAgICAgLy8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2ht
ZW50LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlz
aW9uIDUzMDk3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OID0gMHgwNTA2CiAg
ICAgICAgIH07CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlKCk7CisgICAgICAgIC8vIENvbnRleHQgY3JlYXRpb24gYXR0cmlidXRl
cy4gVGhlIGRlZmF1bHQgdmFsdWVzIGFyZQorICAgICAgICAvLyBzcGVjaWZpZWQgaW4gdGhlIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MuCisgICAgICAgIHN0cnVjdCBBdHRyaWJ1dGVzIHsK
KyAgICAgICAgICAgIGJvb2wgYWxwaGE7CisgICAgICAgICAgICBib29sIGRlcHRoOworICAgICAg
ICAgICAgYm9vbCBzdGVuY2lsOworICAgICAgICAgICAgYm9vbCBhbnRpYWxpYXM7CisgICAgICAg
ICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMp
OwogICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtNDU5LDYgKzQ2OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKIAorICAgICAgICBBdHRyaWJ1dGVzIGdldENvbnRleHRB
dHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCiAgICAg
ICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CkBA
IC02MDIsMTEgKzYxNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3lu
dGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7CiAKICAgICBwcml2YXRlOiAgICAg
ICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEKEF0dHJpYnV0ZXMgYXR0cnMpOwogCiAgICAgICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9j
dXJyZW50SGVpZ2h0OwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIEF0dHJp
YnV0ZXMgbV9hdHRyczsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFy
cmF5OwogICAgICAgICAKICAgICAgICAgQ0dMQ29udGV4dE9iaiBtX2NvbnRleHRPYmo7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTgg
Kzc1LDI5IEBAIHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxDR0xQaXgKICAgICBh
dHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkpOwog
fQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiB7Ci0gICAgT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRCgpKTsKKyAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNE
KGF0dHJzKSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVs
ZWFzZSgpIDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKCkK
LSAgICA6IG1fY29udGV4dE9iaigwKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorICAgIDogbV9hdHRycyhh
dHRycykKKyAgICAsIG1fY29udGV4dE9iaigwKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBt
X2ZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogeworICAgIC8vIEZJWE1FOiB3ZSBuZWVk
IHRvIHRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisgICAgLy8gY29udGV4
dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kCisgICAgLy8g
YW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZCBub3QgYmUgaG9u
b3JlZAorICAgIC8vIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICBtX2F0dHJzLmFscGhhID0gdHJ1ZTsKKyAgICBtX2F0dHJzLmRlcHRo
ID0gdHJ1ZTsKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyAgICBtX2F0dHJzLmFudGlh
bGlhcyA9IGZhbHNlOworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKKwog
ICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhl
bEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRz
ID0gMDsKQEAgLTU0MCw2ICs1NTEsMTEgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRy
aWJMb2NhdGlvbgogICAgIHJldHVybiA6OmdsR2V0QXR0cmliTG9jYXRpb24oKEdMdWludCkgcHJv
Z3JhbS0+b2JqZWN0KCksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKK0dyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygp
Cit7CisgICAgcmV0dXJuIG1fYXR0cnM7Cit9CisKIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEVycm9yKCkKIHsKICAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4g
MCkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0xMSAg
S2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBpbXBsZW1lbnQgV2ViR0xDb250ZXh0
QXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzExNjkKKworICAgICAgICBBZGRlZCB0aGUgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBjbGFz
cyBhbmQgY3VzdG9tIEphdmFTY3JpcHQKKyAgICAgICAgYmluZGluZ3MgdG8gYWNjZXB0IGEgbmF0
aXZlIG9iamVjdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCisgICAgICAgIGdldENvbnRleHQo
ImV4cGVyaW1lbnRhbC13ZWJnbCIpIHBlciB0aGUgV2ViR0wgc3BlY2lmaWNhdGlvbi4KKyAgICAg
ICAgQWRkZWQgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgc3RydWN0IHRvIGlzb2xhdGUg
RE9NIGFuZAorICAgICAgICBncmFwaGljcyBsYXllcnMuIEFkZGVkIGdldENvbnRleHRBdHRyaWJ1
dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRlZCB0ZXN0IGNhc2Ug
ZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2FuIGJlIHBhc3NlZCBk
b3duIGFuZCByZXR1cm5lZC4gVGVzdGVkIGluIFNhZmFyaSBhbmQKKyAgICAgICAgQ2hyb21pdW0u
IFRoZSBhdHRyaWJ1dGVzIHdpbGwgYmUgaG9va2VkIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUK
KyAgICAgICAgT3BlbkdMIGNvbnRleHQgaW4gYnVnIDMzNDE2LgorCisgICAgICAgICogc3JjL0dy
YXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKwogMjAxMC0wMS0w
OSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQz
RC5jcHAJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsKIHB1YmxpYzoKLSAg
ICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycyk7CiAgICAgfkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoKTsKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CkBA
IC0xMjQsNiArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkodW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwor
ICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRyaWJ1dGVzKCk7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNp
emUsIGludCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgdm9p
ZCB2aWV3cG9ydEltcGwobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KTsKQEAgLTEzMSw2ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
eW50aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKIAogcHJpdmF0ZToKKyAgICBH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOworCiAgICAgdW5zaWduZWQgaW50
IG1fdGV4dHVyZTsKICAgICB1bnNpZ25lZCBpbnQgbV9mYm87CiAgICAgdW5zaWduZWQgaW50IG1f
ZGVwdGhCdWZmZXI7CkBAIC0zNjYsOCArMzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6VmVydGV4QXR0cmliUAogewogfQogCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsKCkKLSAgICA6IG1fdGV4dHVyZSgwKQorR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRycykKKyAgICA6IG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1
cmUoMCkKICAgICAsIG1fZmJvKDApCiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2Jv
dW5kRkJPKDApCkBAIC0zOTMsNiArMzk3LDE2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGUKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlm
CiB7CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIn
cyByZXF1ZXN0ZWQKKyAgICAvLyBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsIGluIHBhcnRp
Y3VsYXIgc3RlbmNpbCBhbmQKKyAgICAvLyBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2gg
Y291bGQgYW5kIGNvdWxkIG5vdCBiZSBob25vcmVkCisgICAgLy8gYmFzZWQgb24gdGhlIGNhcGFi
aWxpdGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgorICAgIG1fYXR0cnMuYWxwaGEg
PSB0cnVlOworICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOworICAgIG1fYXR0cnMuc3RlbmNpbCA9
IGZhbHNlOworICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CisgICAgbV9hdHRycy5wcmVt
dWx0aXBsaWVkQWxwaGEgPSB0cnVlOworCiAjaWYgT1MoV0lORE9XUykKICAgICBXTkRDTEFTUyB3
YzsKICAgICBpZiAoIUdldENsYXNzSW5mbyhHZXRNb2R1bGVIYW5kbGUoMCksIEwiQ0FOVkFTR0wi
LCAmd2MpKSB7CkBAIC05ODIsNiArOTk2LDExIEBAIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDoKICAgICByZXR1cm4gZ2xHZXRFcnJvcigpOwogfQogCitHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRDb250ZXh0
QXR0cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cnM7Cit9CisKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgs
IGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1
bnNpZ25lZCBsb25nIG9mZnNldCkKIHsKQEAgLTExMzAsMTcgKzExNDksMTcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6bmFtZSh0MSBhMSwgdDIgYQogICAgIGdsIyNnbG5hbWUoYTEsIGEyLCBh
MywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
IH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZSgpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQogewotICAgIFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0Qo
KTsKKyAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbmV3IEdyYXBo
aWNzQ29udGV4dDNEKGF0dHJzKTsKICAgICAvLyBGSVhNRTogYWRkIGVycm9yIGNoZWNraW5nCiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRl
eHQzRCgpCitHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiAgICAgOiBtX2N1cnJlbnRXaWR0aCgwKQogICAgICwg
bV9jdXJyZW50SGVpZ2h0KDApCi0gICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQz
REludGVybmFsKCkpCisgICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKGF0dHJzKSkKIHsKIH0KIApAQCAtMTU2OSw2ICsxNTg4LDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXQKICAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAorR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKKyAgICByZXR1cm4g
bV9pbnRlcm5hbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKK30KKwogdW5zaWduZWQgbG9uZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewogICAgIHJldHVybiBtX2ludGVybmFsLT5n
ZXRFcnJvcigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTMwOTcpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMS0xMSAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBpbXBsZW1lbnQgV2ViR0xDb250ZXh0QXR0cmli
dXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEx
NjkKKworICAgICAgICBBZGRlZCB0aGUgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBjbGFzcyBhbmQg
Y3VzdG9tIEphdmFTY3JpcHQKKyAgICAgICAgYmluZGluZ3MgdG8gYWNjZXB0IGEgbmF0aXZlIG9i
amVjdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCisgICAgICAgIGdldENvbnRleHQoImV4cGVy
aW1lbnRhbC13ZWJnbCIpIHBlciB0aGUgV2ViR0wgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgQWRk
ZWQgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgc3RydWN0IHRvIGlzb2xhdGUgRE9NIGFu
ZAorICAgICAgICBncmFwaGljcyBsYXllcnMuIEFkZGVkIGdldENvbnRleHRBdHRyaWJ1dGVzKCkg
dG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRlZCB0ZXN0IGNhc2UgZW5zdXJp
bmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2FuIGJlIHBhc3NlZCBkb3duIGFu
ZCByZXR1cm5lZC4gVGVzdGVkIGluIFNhZmFyaSBhbmQKKyAgICAgICAgQ2hyb21pdW0uIFRoZSBh
dHRyaWJ1dGVzIHdpbGwgYmUgaG9va2VkIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUKKyAgICAg
ICAgT3BlbkdMIGNvbnRleHQgaW4gYnVnIDMzNDE2LgorCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzOgorICAgICAgICAo
Y3JlYXRlM0RDb250ZXh0KToKKwogMjAxMC0wMS0xMSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjQgQEAKK1Rlc3QgcGFzc2luZyBkb3duIGFuZCBmZXRjaGluZyBvZiBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdCBkZWZh
dWx0IHZhbHVlcworUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwu
CitQQVNTIGF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51
bGwuCitQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRy
dWUKK1BBU1MgKGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJpYnMuc3RlbmNpbCA9PSBm
YWxzZSkgaXMgdHJ1ZQorUEFTUyAoYXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJz
LmFudGlhbGlhcyA9PSBmYWxzZSkgaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLnByZW11bHRpcGxpZWRB
bHBoYSBpcyB0cnVlCitUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzCitQQVNTIGNvbnRleHQgPSBjcmVh
dGUzRENvbnRleHQoeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSBpcyBub24t
bnVsbC4KK1BBU1MgYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBu
b24tbnVsbC4KK1BBU1MgYXR0cmlicy5kZXB0aCBpcyB0cnVlCitQQVNTIGF0dHJpYnMuYWxwaGEg
aXMgdHJ1ZQorUEFTUyBhdHRyaWJzLnN0ZW5jaWwgaXMgZmFsc2UKK1BBU1MgYXR0cmlicy5hbnRp
YWxpYXMgaXMgZmFsc2UKK1BBU1MgYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmli
dXRlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Y29udGV4dC1hdHRyaWJ1dGVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmds
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IHBhc3NpbmcgZG93biBhbmQgZmV0Y2hpbmcgb2YgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyIpOworCitkZWJ1ZygiVGVzdCBkZWZhdWx0IHZhbHVlcyIpOwordmFyIGNvbnRleHQ7Cit2
YXIgYXR0cmliczsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgp
Iik7CitzaG91bGRCZU5vbk51bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1
dGVzKCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmRlcHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJh
dHRyaWJzLmFscGhhIiwgInRydWUiKTsKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGRlcGVuZCBvbiB3
aGV0aGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBhY3R1YWxseSBzdXBwb3J0cyB0aGVtCitzaG91bGRC
ZSgiKGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJpYnMuc3RlbmNpbCA9PSBmYWxzZSki
LCAidHJ1ZSIpOworc2hvdWxkQmUoIihhdHRyaWJzLmFudGlhbGlhcyA9PSB0cnVlIHx8IGF0dHJp
YnMuYW50aWFsaWFzID09IGZhbHNlKSIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5wcmVt
dWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOworCitkZWJ1ZyAoIlRlc3QgY3VzdG9taXplZCB2YWx1
ZXMiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5j
aWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7CitzaG91bGRCZU5vbk51bGwoImF0dHJp
YnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJz
LmRlcHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRydWUiKTsKK3No
b3VsZEJlKCJhdHRyaWJzLnN0ZW5jaWwiLCAiZmFsc2UiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFu
dGlhbGlhcyIsICJmYWxzZSIpOworc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhh
IiwgInRydWUiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2aXNpb24gNTMwOTcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkod29y
a2luZyBjb3B5KQpAQCAtOCwxMiArOCwxMiBAQCBmdW5jdGlvbiBnZXRTaGFkZXJTb3VyY2UoZmls
ZSkgewogICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OwogfQogCi1mdW5jdGlvbiBjcmVhdGUz
RENvbnRleHQoKSB7CitmdW5jdGlvbiBjcmVhdGUzRENvbnRleHQoYXR0cnMpIHsKICAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CiAgICAgdHJ5IHsKLSAg
ICAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKTsKKyAg
ICAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLCBhdHRy
cyk7CiAgICAgfSBjYXRjaChlKSB7fQotICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgibW96
LXdlYmdsIik7CisgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJtb3otd2ViZ2wiLCBhdHRy
cyk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGZuYW1lKSB7
CkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQs
IGYKICAgICB9OwogfQogCi1mdW5jdGlvbiBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHsKLSAgICB2
YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOworZnVuY3Rpb24gY3JlYXRlM0REZWJ1Z0Nv
bnRleHQoYXR0cnMpIHsKKyAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dChhdHRycyk7
CiAgICAgLy8gVGhhbmtzIHRvIElsbWFyaSBIZWlra2luZW4gZm9yIHRoZSBpZGVhIG9uIGhvdyB0
byBpbXBsZW1lbnQgdGhpcyBzbyBlbGVnYW50bHkuCiAgICAgdmFyIHdyYXAgPSB7fTsKICAgICBm
b3IgKHZhciBpIGluIGNvbnRleHQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46330</attachid>
            <date>2010-01-11 18:47:23 -0800</date>
            <delta_ts>2010-01-12 11:36:05 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>context-attributes.patch</filename>
            <type>text/plain</type>
            <size>55824</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDEtMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gaW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhl
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGJpbmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1
bWVudCB0bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhl
IFdlYkdMIHNwZWNpZmljYXRpb24uCisgICAgICAgIEFkZGVkIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIHN0cnVjdCB0byBpc29sYXRlIERPTSBhbmQKKyAgICAgICAgZ3JhcGhpY3MgbGF5
ZXJzLiBBZGRlZCBnZXRDb250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dC4gQWRkZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAg
ICBhdHRyaWJ1dGVzIGNhbiBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuIFRlc3RlZCBpbiBT
YWZhcmkgYW5kCisgICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tl
ZCB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1
ZyAzMzQxNi4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxi
YWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOjpDYW52YXNDb250
ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDb250ZXh0QXR0cmlidXRl
czo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNDb250ZXh0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpkZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjpzZXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpzdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6OnNldFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6YW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0
dHJpYnV0ZXM6OnNldEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b250ZXh0QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmF0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0
cmlidXRlcyk6CisKIDIwMTAtMDEtMTEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBBdHRlbXB0IHRvIGZpeCB3aW5kb3dz
IGJ1aWxkcywgYnkgcmVtb3ZpbmcgdGhlIG5vLWxvbmdlciBleGlzdGFudCBKU1NWR1BvaW50TGlz
dEN1c3RvbS5jcHAgZnJvbSBKU0JpbmRpbmdzQWxsSW5PbmUuY3BwLgpJbmRleDogV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViR0xB
cnJheUJ1ZmZlciBcCiAgICAgV2ViR0xCdWZmZXIgXAogICAgIFdlYkdMQnl0ZUFycmF5IFwKKyAg
ICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIFwKICAgICBXZWJHTEZsb2F0QXJyYXkgXAogICAgIFdl
YkdMRnJhbWVidWZmZXIgXAogICAgIENhbnZhc0dyYWRpZW50IFwKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1
MzA5NykKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4
Myw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xBcnJheUJ1ZmZlci5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xGbG9hdEFycmF5LmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50Lmlk
bCcsCkBAIC0xMzAxLDEyICsxMzAyLDE2IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCeXRlQXJyYXkuY3Bw
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ5dGVBcnJheS5oJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9XZWJHTEZsb2F0QXJyYXkuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEZsb2F0QXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFt
ZWJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52
YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
Q2FudmFzR3JhZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFk
aWVudC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEludEFycmF5LmNwcCcsCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NTMwOTcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTIyNCw2ICsxMjI0LDEzIEBACiAJCTY1RkVBODY5MDk4MzNBREUwMEJF
RDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsKIAkJNkU0
N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2Qzgg
LyogV2ViR0xHZXRJbmZvLmNwcCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9Owor
CQk2RTRFOTFBQzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTcx
MEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKKwkJ
NkU0RTkxQUQxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBODEwRjdG
QjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKKwkJNkU0RTkx
QUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQTkxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OworCQk2RTRFOTFBRjEw
RjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlD
IC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKKwkJNkU0RTkxQjAxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgKi87IH07CisJCTZFRThBNzcyMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFOEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpT
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgKi87IH07CisJCTZFRThBNzczMTBGODAzRjMwMDVB
NEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIw
IC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAq
LzsgfTsKIAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEz
M0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CiAJ
CTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAy
RTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY1
NzksNiArNjU4NiwxMyBAQAogCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJ
bmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0g
Y2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTRF
OTFBNzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMu
Y3BwOyBwYXRoID0gY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENhbnZh
c0NvbnRleHRBdHRyaWJ1dGVzLmg7IHBhdGggPSBjYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTkxMEY3RkIzMTAwQTI3
NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHA7IHBhdGggPSBjYW52YXMv
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsg
cGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVFOEE3NzAxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjYyNkUwMTBFRjAyMkZFMDBB
MDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1
NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDczNCw2ICsxMDc0OCw4IEBACiAJCTQ5NDg0RkFFMTAyQ0YwMUUwMDE4N0REMyAv
KiBjYW52YXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTZFNEU5MUE3MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAg
Ki8sCisJCQkJNkU0RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1
dGVzLmggKi8sCiAJCQkJQTdEMjBGNkIxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5m
by5oICovLAogCQkJCUE3RDIwRjNCMTA3RjM3MzgwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8u
aWRsICovLAogCQkJCTQ5RUVDREM3MTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEFycmF5LmNwcCAq
LywKQEAgLTEwNzQ4LDYgKzEwNzY0LDkgQEAKIAkJCQk0OUM3QjlBQjEwNDJEMzJFMDAwOUQ0NDcg
LyogV2ViR0xCeXRlQXJyYXkuY3BwICovLAogCQkJCTQ5QzdCOUFDMTA0MkQzMkUwMDA5RDQ0NyAv
KiBXZWJHTEJ5dGVBcnJheS5oICovLAogCQkJCTQ5QzdCOUFEMTA0MkQzMkUwMDA5RDQ0NyAvKiBX
ZWJHTEJ5dGVBcnJheS5pZGwgKi8sCisJCQkJNkU0RTkxQTkxMEY3RkIzMTAwQTI3NzlDIC8qIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovLAorCQkJCTZFNEU5MUFBMTBGN0ZCMzEwMEEyNzc5
QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCisJCQkJNkU0RTkxQUIxMEY3RkIzMTAw
QTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovLAogCQkJCTQ5RUVDRENEMTA1
MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEZsb2F0QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRENFMTA1
MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEZsb2F0QXJyYXkuaCAqLywKIAkJCQk0OUVFQ0RDRjEwNTAz
QzIzMDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmlkbCAqLywKQEAgLTEyOTQ3LDYgKzEyOTY2
LDggQEAKIAkJCQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICov
LAogCQkJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnl0ZUFycmF5LmNwcCAq
LywKIAkJCQk0OUM3Qjk4MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ5dGVBcnJheS5oICov
LAorCQkJCTZFRThBNzcwMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuY3BwICovLAorCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQk0OUVFQ0VGNDEwNTA3MEM0MDAwOTlGQUIgLyogSlNXZWJH
TEZsb2F0QXJyYXkuY3BwICovLAogCQkJCTQ5RUVDRUY1MTA1MDcwQzQwMDA5OUZBQiAvKiBKU1dl
YkdMRmxvYXRBcnJheS5oICovLAogCQkJCTQ5QzdCOTg0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dl
YkdMRnJhbWVidWZmZXIuY3BwICovLApAQCAtMTgzMjUsNiArMTgzNDYsOSBAQAogCQkJCTBGNUI3
QTU1MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0U0QzAwRTYxMEY2RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BP
RExpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAorCQkJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5
QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0RTkx
QUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg0MjUsNiArMTg0NDksNyBAQAogCQkJCTg1MTM2
Q0E4MEFFRDY2NTkwMEY5MEEzRCAvKiB3ZXN0UmVzaXplQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21JbkN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tT3V0Q3Vy
c29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNkU0RTkxQjAxMEY3RkIzMTAwQTI3NzlDIC8q
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwNDg1LDYg
KzIwNTEwLDkgQEAKIAkJCQk1MTEyMjQ3ODEwQ0ZCOEY0MDA4MDk5RDcgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QjdBNTQxMEY2
NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250
ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTRFOTFBRTEwRjdGQjMxMDBB
Mjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2
RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENh
bnZhc0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZh
c0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5j
bHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oIgogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAjaW5jbHVkZSAiSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjZW5k
aWYKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTQ3LDQgKzQ5LDM2IEBAIHZvaWQgSlNI
VE1MQ2FudmFzRWxlbWVudDo6bWFya0NoaWxkcmVuKE0KICAgICBtYXJrRE9NT2JqZWN0V3JhcHBl
cihtYXJrU3RhY2ssIGdsb2JhbERhdGEsIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKTsKIH0K
IAorSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFz
ID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihpbXBsKCkpOworICAgIGNvbnN0IFVT
dHJpbmcmIGNvbnRleHRJZCA9IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyk7CisgICAgUmVmUHRy
PENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiBhdHRyczsKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQor
ICAgIGlmIChjb250ZXh0SWQgPT0gImV4cGVyaW1lbnRhbC13ZWJnbCIgfHwgY29udGV4dElkID09
ICJ3ZWJraXQtM2QiKSB7CisgICAgICAgIGF0dHJzID0gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6
Y3JlYXRlKCk7CisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIHdlYkdMQXR0cnMgPSBz
dGF0aWNfY2FzdDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzKj4oYXR0cnMuZ2V0KCkpOworICAgICAg
ICBpZiAoYXJncy5zaXplKCkgPiAxICYmIGFyZ3MuYXQoMSkuaXNPYmplY3QoKSkgeworICAgICAg
ICAgICAgSlNPYmplY3QqIGpzQXR0cnMgPSBhcmdzLmF0KDEpLmdldE9iamVjdCgpOworICAgICAg
ICAgICAgSWRlbnRpZmllciBhbHBoYShleGVjLCAiYWxwaGEiKTsKKyAgICAgICAgICAgIGlmIChq
c0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBhbHBoYSkpCisgICAgICAgICAgICAgICAgd2ViR0xB
dHRycy0+c2V0QWxwaGEoanNBdHRycy0+Z2V0KGV4ZWMsIGFscGhhKS50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICAgICAgSWRlbnRpZmllciBkZXB0aChleGVjLCAiZGVwdGgiKTsKKyAgICAgICAg
ICAgIGlmIChqc0F0dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBkZXB0aCkpCisgICAgICAgICAgICAg
ICAgd2ViR0xBdHRycy0+c2V0RGVwdGgoanNBdHRycy0+Z2V0KGV4ZWMsIGRlcHRoKS50b0Jvb2xl
YW4oZXhlYykpOworICAgICAgICAgICAgSWRlbnRpZmllciBzdGVuY2lsKGV4ZWMsICJzdGVuY2ls
Iik7CisgICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgc3RlbmNpbCkp
CisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0U3RlbmNpbChqc0F0dHJzLT5nZXQoZXhl
Yywgc3RlbmNpbCkudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgYW50
aWFsaWFzKGV4ZWMsICJhbnRpYWxpYXMiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5oYXNQ
cm9wZXJ0eShleGVjLCBhbnRpYWxpYXMpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNl
dEFudGlhbGlhcyhqc0F0dHJzLT5nZXQoZXhlYywgYW50aWFsaWFzKS50b0Jvb2xlYW4oZXhlYykp
OworICAgICAgICAgICAgSWRlbnRpZmllciBwcmVtdWx0aXBsaWVkQWxwaGEoZXhlYywgInByZW11
bHRpcGxpZWRBbHBoYSIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3BlcnR5KGV4
ZWMsIHByZW11bHRpcGxpZWRBbHBoYSkpCisgICAgICAgICAgICAgICAgd2ViR0xBdHRycy0+c2V0
UHJlbXVsdGlwbGllZEFscGhhKGpzQXR0cnMtPmdldChleGVjLCBwcmVtdWx0aXBsaWVkQWxwaGEp
LnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY2FudmFzLT5nZXRDb250ZXh0
KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2
aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYyLDYgKzIxNjIsNyBAQCBteSAldHlwZUNhbkZhaWxD
b252ZXJzaW9uID0gKAogICAgICJXZWJHTEFycmF5IiA9PiAwLAogICAgICJXZWJHTEJ1ZmZlciIg
PT4gMCwKICAgICAiV2ViR0xCeXRlQXJyYXkiID0+IDAsCisgICAgIldlYkdMQ29udGV4dEF0dHJp
YnV0ZXMiID0+IDAsCiAgICAgIldlYkdMRmxvYXRBcnJheSIgPT4gMCwKICAgICAiV2ViR0xGcmFt
ZWJ1ZmZlciIgPT4gMCwKICAgICAiQ2FudmFzR3JhZGllbnQiID0+IDAsCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpAQCAtMzcxLDcgKzM3
MSw5IEBAIHN1YiBEZXRlcm1pbmVQYXJzZU1vZGUKICAgICAgICAgJG1vZGUgPSBNT0RFX0lOVEVS
RkFDRTsKICAgICB9IGVsc2lmICgkXyA9fiAvZXhjZXB0aW9uLykgewogICAgICAgICAkbW9kZSA9
IE1PREVfRVhDRVBUSU9OOwotICAgIH0gZWxzaWYgKCRfID1+IC9hbGlhcy8pIHsKKyAgICB9IGVs
c2lmICgkXyA9fiAvKFxBfFxiKWFsaWFzLykgeworICAgICAgICAjIFRoZSAoXEF8XGIpIGFib3Zl
IGlzIG5lZWRlZCBzbyB3ZSBkb24ndCBtYXRjaCBhdHRyaWJ1dGVzCisgICAgICAgICMgd2hvc2Ug
bmFtZXMgY29udGFpbiB0aGUgc3Vic3RyaW5nICJhbGlhcyIuCiAgICAgICAgICRtb2RlID0gTU9E
RV9BTElBUzsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmNwcAkocmV2aXNpb24g
NTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJDaGlsZFRocmVhZERPTURhdGEuaCIKICNp
bmNsdWRlICJNYWluVGhyZWFkRE9NRGF0YS5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNB
bGxJbk9uZS5jcHAJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJp
dmVkU291cmNlc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAog
I2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xBcnJheUJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmlu
ZGluZ3MvVjhXZWJHTEJ1ZmZlci5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTEJ5dGVB
cnJheS5jcHAiCisjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNw
cCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOFdlYkdMRmxvYXRBcnJheS5jcHAiCiAjaW5jbHVkZSAi
YmluZGluZ3MvVjhXZWJHTEZyYW1lYnVmZmVyLmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOENh
bnZhc0dyYWRpZW50LmNwcCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAJ
KHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiVjhOb2RlTGlzdC5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXZWJHTEFycmF5LmgiCisjaW5jbHVk
ZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0
aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEluZGV4LmNwcAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SW5kZXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsNiArNDAyLDcgQEAKICNp
bmNsdWRlICJWOFdlYkdMQXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnl0ZUFycmF5LmgiCiAj
aW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4V2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIlY4V2ViR0xGbG9hdEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJH
TEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTEludEFycmF5LmgiCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguaAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYgKzQ1NCw3IEBAIHR5cGVkZWYgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGwKICAgICBWKFdFQkdMQVJSQVlCVUZGRVIsIFdlYkdM
QXJyYXlCdWZmZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdM
QlVGRkVSLCBXZWJHTEJ1ZmZlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICBWKFdFQkdMQllURUFSUkFZLCBXZWJHTEJ5dGVBcnJheSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKFdFQkdMQ09OVEVYVEFUVFJJQlVURVMsIFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMpICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdMRkxP
QVRBUlJBWSwgV2ViR0xGbG9hdEFycmF5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWKFdFQkdMRlJBTUVCVUZGRVIsIFdlYkdMRnJhbWVidWZmZXIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBWKFdFQkdMSU5UQVJSQVksIFdlYkdMSW50QXJyYXkp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4SFRNTENhbnZhc0VsZW1lbnQuaCIK
IAorI2luY2x1ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5j
bHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgog
I2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpAQCAtNDYs
NyArNDgsMzIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbgogICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogaW1wID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTm9k
ZTxIVE1MQ2FudmFzRWxlbWVudD4oaG9sZGVyKTsKICAgICBTdHJpbmcgY29udGV4dElkID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHJlc3Vs
dCA9IGltcC0+Z2V0Q29udGV4dChjb250ZXh0SWQpOworICAgIFJlZlB0cjxDYW52YXNDb250ZXh0
QXR0cmlidXRlcz4gYXR0cnM7CisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKyAgICBpZiAoY29udGV4
dElkID09ICJleHBlcmltZW50YWwtd2ViZ2wiIHx8IGNvbnRleHRJZCA9PSAid2Via2l0LTNkIikg
eworICAgICAgICBhdHRycyA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpOworICAg
ICAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKiB3ZWJHTEF0dHJzID0gc3RhdGljX2Nhc3Q8V2Vi
R0xDb250ZXh0QXR0cmlidXRlcyo+KGF0dHJzLmdldCgpKTsKKyAgICAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPiAxICYmIGFyZ3NbMF0tPklzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4ganNBdHRycyA9IGFyZ3NbMV0tPlRvT2JqZWN0KCk7CisgICAgICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGFscGhhID0gdjg6OlN0cmluZzo6TmV3KCJhbHBoYSIp
OworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbHBoYSkpCisgICAgICAgICAgICAgICAg
d2ViR0xBdHRycy0+c2V0QWxwaGEoanNBdHRycy0+R2V0KGFscGhhKS0+Qm9vbGVhblZhbHVlKCkp
OworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBkZXB0aCA9IHY4OjpTdHJpbmc6
Ok5ldygiZGVwdGgiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5IYXMoZGVwdGgpKQorICAg
ICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldERlcHRoKGpzQXR0cnMtPkdldChkZXB0aCktPkJv
b2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc3RlbmNp
bCA9IHY4OjpTdHJpbmc6Ok5ldygic3RlbmNpbCIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMt
PkhhcyhzdGVuY2lsKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRTdGVuY2lsKGpz
QXR0cnMtPkdldChzdGVuY2lsKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBhbnRpYWxpYXMgPSB2ODo6U3RyaW5nOjpOZXcoImFudGlhbGlhcyIp
OworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhhbnRpYWxpYXMpKQorICAgICAgICAgICAg
ICAgIHdlYkdMQXR0cnMtPnNldEFudGlhbGlhcyhqc0F0dHJzLT5HZXQoYW50aWFsaWFzKS0+Qm9v
bGVhblZhbHVlKCkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcmVtdWx0
aXBsaWVkQWxwaGEgPSB2ODo6U3RyaW5nOjpOZXcoInByZW11bHRpcGxpZWRBbHBoYSIpOworICAg
ICAgICAgICAgaWYgKGpzQXR0cnMtPkhhcyhwcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICAg
ICAgICAgIHdlYkdMQXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShqc0F0dHJzLT5HZXQocHJl
bXVsdGlwbGllZEFscGhhKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmCisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogcmVzdWx0ID0gaW1wLT5nZXRDb250ZXh0
KGNvbnRleHRJZCwgYXR0cnMuZ2V0KCkpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGlmIChyZXN1bHQtPmlzMmQoKSkKQEAgLTYwLDQgKzg3
LDMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbgogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
cmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQ2FudmFzQ29udGV4dEF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZh
c1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKICNpZiBF
TkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJD
YW52YXNTdHlsZS5oIgpAQCAtMTQ3LDcgKzE0OSw3IEBAIFN0cmluZyBIVE1MQ2FudmFzRWxlbWVu
dDo6dG9EYXRhVVJMKGNvbnMKICAgICByZXR1cm4gYnVmZmVyKCktPnRvRGF0YVVSTChtaW1lVHlw
ZSk7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSkKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMqIGF0dHJzKQogewogICAgIC8vIEEgQ2FudmFzIGNhbiBlaXRoZXIgYmUgIjJE
IiBvciAid2ViZ2wiIGJ1dCBuZXZlciBib3RoLiBJZiB5b3UgcmVxdWVzdCBhIDJEIGNhbnZhcyBh
bmQgdGhlIGV4aXN0aW5nCiAgICAgLy8gY29udGV4dCBpcyBhbHJlYWR5IDJELCBqdXN0IHJldHVy
biB0aGF0LiBJZiB0aGUgZXhpc3RpbmcgY29udGV4dCBpcyBXZWJHTCwgdGhlbiBkZXN0cm95IGl0
CkBAIC0xNzQsNyArMTc2LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0Vs
ZW1lbgogICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9jb250ZXh0LT5pczNkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBpZiAoIW1fY29udGV4dCkgewot
ICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
KHRoaXMpOworICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqPihhdHRy
cykpOwogICAgICAgICAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5
ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKICAgICAgICAgICAgICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOwogY2xhc3MgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CkBAIC02
OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBnZXRDb250ZXh0KGNvbnN0IFN0cmluZyYsIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKiBhdHRy
aWJ1dGVzID0gMCk7CiAKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsOCBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lm
ICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MK
LSAgICAgICAgW1Y4Q3VzdG9tXSBET01PYmplY3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcgY29u
dGV4dElkKTsKKyAgICAgICAgLy8gVGhlIGN1c3RvbSBiaW5kaW5nIGlzIG5lZWRlZCB0byBoYW5k
bGUgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLgorICAgICAgICBbQ3VzdG9tXSBET01PYmpl
Y3QgZ2V0Q29udGV4dChpbiBET01TdHJpbmcgY29udGV4dElkKTsKICNlbmRpZgogCiAgICAgfTsK
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0
cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDYW52YXNDb250ZXh0QXR0
cmlidXRlczo6Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoKQoreworfQorCitDYW52YXNDb250ZXh0
QXR0cmlidXRlczo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0
cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
Q29udGV4dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzX2gKKyNk
ZWZpbmUgQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGJhc2UgY2xhc3MgZm9yIGFueSBh
dHRyaWJ1dGVzIHRoYXQgYXJlIG5lZWRlZCB3aGljaCB3b3VsZCBhZmZlY3QKKy8vIHRoZSBjcmVh
dGlvbiBvZiB0aGUgQ2FudmFzJ3MgcmVuZGVyaW5nIGNvbnRleHQuIEN1cnJlbnRseSBvbmx5IHRo
ZQorLy8gV2ViR0xSZW5kZXJpbmdDb250ZXh0IHVzZXMgdGhpcyBtZWNoYW5pc20uCisKK2NsYXNz
IENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FudmFzQ29udGV4
dEF0dHJpYnV0ZXM+IHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfkNhbnZhc0NvbnRleHRBdHRy
aWJ1dGVzKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDYW52YXNDb250ZXh0
QXR0cmlidXRlc19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJp
YnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
M0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2Vi
R0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKSk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xDb250ZXh0
QXR0cmlidXRlcz4gV2ViR0xDb250ZXh0QXR0cmlidXRlczo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpKTsKK30KKworV2ViR0xDb250ZXh0QXR0
cmlidXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcygpCisgICAgOiBDYW52YXNDb250ZXh0QXR0
cmlidXRlcygpCit7CisgICAgbV9hdHRycy5hbHBoYSA9IHRydWU7CisgICAgbV9hdHRycy5kZXB0
aCA9IHRydWU7CisgICAgbV9hdHRycy5zdGVuY2lsID0gdHJ1ZTsKKyAgICBtX2F0dHJzLmFudGlh
bGlhcyA9IHRydWU7CisgICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworfQor
CitXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzKEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgOiBDYW52YXNDb250ZXh0QXR0
cmlidXRlcygpCisgICAgLCBtX2F0dHJzKGF0dHJpYnV0ZXMpCit7Cit9CisKK1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6On5XZWJHTENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKK30KKworYm9vbCBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0cnMu
YWxwaGE7Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0QWxwaGEoYm9vbCBh
bHBoYSkKK3sKKyAgICBtX2F0dHJzLmFscGhhID0gYWxwaGE7Cit9CisKK2Jvb2wgV2ViR0xDb250
ZXh0QXR0cmlidXRlczo6ZGVwdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLmRlcHRo
OworfQorCit2b2lkIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnNldERlcHRoKGJvb2wgZGVwdGgp
Cit7CisgICAgbV9hdHRycy5kZXB0aCA9IGRlcHRoOworfQorCitib29sIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXM6OnN0ZW5jaWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLnN0ZW5jaWw7
Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0U3RlbmNpbChib29sIHN0ZW5j
aWwpCit7CisgICAgbV9hdHRycy5zdGVuY2lsID0gc3RlbmNpbDsKK30KKworYm9vbCBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjphbnRpYWxpYXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJz
LmFudGlhbGlhczsKK30KKwordm9pZCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbnRpYWxp
YXMoYm9vbCBhbnRpYWxpYXMpCit7CisgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBhbnRpYWxpYXM7
Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6cHJlbXVsdGlwbGllZEFscGhhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGE7Cit9CisKK3Zv
aWQgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJl
bXVsdGlwbGllZEFscGhhKQoreworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gcHJl
bXVsdGlwbGllZEFscGhhOworfQorCitHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9h
dHRyczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNE
X0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUgV2Vi
R0xDb250ZXh0QXR0cmlidXRlc19oCisKKyNpbmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmlidXRl
cy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzIDogcHVibGljIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzIHsKKyAgcHVibGljOgorICAg
IHZpcnR1YWwgfldlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKTsKKworICAgIC8vIENyZWF0ZSBhIG5l
dyBhdHRyaWJ1dGVzIG9iamVjdAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXM+IGNyZWF0ZSgpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGF0dHJpYnV0ZXMgb2Jq
ZWN0IGluaXRpYWxpemVkIHdpdGggcHJlZXhpc3RpbmcgYXR0cmlidXRlcworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBk
cmF3aW5nIGJ1ZmZlciBoYXMgYW4gYWxwaGEgY2hhbm5lbDsgZGVmYXVsdD10cnVlCisgICAgYm9v
bCBhbHBoYSgpIGNvbnN0OworICAgIHZvaWQgc2V0QWxwaGEoYm9vbCBhbHBoYSk7CisKKyAgICAv
LyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaGFzIGEgZGVwdGggYnVmZmVyOyBk
ZWZhdWx0PXRydWUKKyAgICBib29sIGRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aChi
b29sIGRlcHRoKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZlciBo
YXMgYSBzdGVuY2lsIGJ1ZmZlcjsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBzdGVuY2lsKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRTdGVuY2lsKGJvb2wgc3RlbmNpbCk7CisKKyAgICAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgZHJhd2luZyBidWZmZXIgaXMgYW50aWFsaWFzZWQ7IGRlZmF1bHQ9dHJ1ZQor
ICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBbnRpYWxpYXMoYm9vbCBh
bnRpYWxpYXMpOworCisgICAgLy8gV2hldGhlciBvciBub3QgdG8gdHJlYXQgdGhlIHZhbHVlcyBp
biB0aGUgZHJhd2luZyBidWZmZXIgYXMKKyAgICAvLyB0aG91Z2ggdGhlaXIgYWxwaGEgY2hhbm5l
bCBoYXMgYWxyZWFkeSBiZWVuIG11bHRpcGxpZWQgaW50byB0aGUKKyAgICAvLyBjb2xvciBjaGFu
bmVsczsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdDsK
KyAgICB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSk7
CisKKyAgICAvLyBGZXRjaGVzIGEgY29weSBvZiB0aGUgYXR0cmlidXRlcyBzdG9yZWQgaW4gdGhp
cyBvYmplY3QgaW4gYQorICAgIC8vIGZvcm0gdGhhdCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXpl
IGEgR3JhcGhpY3NDb250ZXh0M0QuCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cmlidXRlcygpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzKCk7CisgICAgV2ViR0xDb250ZXh0QXR0cmlidXRlcyhHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKTsKKworICBwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwg
eworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPTNEX0NBTlZBUywKKyAgICAg
ICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIHsKKyAgICAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gYWxwaGE7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGRl
cHRoOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBzdGVuY2lsOworICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBhbnRpYWxpYXM7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHByZW11bHRp
cGxpZWRBbHBoYTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNTMwOTcpCisrKyBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZl
SW5mby5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgpAQCAtNzUsOSAr
NzYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jaGFuZ2VkOwogfTsKIAotUGFzc093blB0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMpCitQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywg
V2ViR0xDb250ZXh0QXR0cmlidXRlcyogYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKSk7CisgICAgT3duUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0
cnMtPmF0dHJpYnV0ZXMoKSkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIApAQCAtODc3LDYgKzg3OCwxMyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRCCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTENvbnRleHRBdHRy
aWJ1dGVzPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3sK
KyAgICAvLyBXZSBhbHdheXMgbmVlZCB0byByZXR1cm4gYSBuZXcgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyBvYmplY3QgdG8KKyAgICAvLyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gbXV0YXRpbmcgYW55
IGNhY2hlZCB2ZXJzaW9uLgorICAgIHJldHVybiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVh
dGUobV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpKTsKK30KKwogdW5zaWduZWQgbG9u
ZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEVycm9yKCkKIHsKICAgICByZXR1cm4gbV9jb250
ZXh0LT5nZXRFcnJvcigpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1
ZmZlcjsKK2NsYXNzIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1lYnVm
ZmVyOwogY2xhc3MgQ2FudmFzT2JqZWN0OwogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtNTMsNyAr
NTQsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICBjbGFzcyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShI
VE1MQ2FudmFzRWxlbWVudCopOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXMqKTsKICAgICAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzM2QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzQs
NiArMTM1LDggQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIFdlYkdMR2V0SW5m
byBnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQg
bG9uZyBnZXRFcnJvcigpOwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0
YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24g
NTMwOTcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IC8vIGFueSBnZXRCdWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9t
XSB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcigpOwogCisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIGdl
dEVycm9yKCk7CiAKICAgICAgICAgLy8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9u
IDUzMDk3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OID0gMHgwNTA2CiAgICAg
ICAgIH07CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY3JlYXRlKCk7CisgICAgICAgIC8vIENvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcy4g
VGhlIGRlZmF1bHQgdmFsdWVzIGFyZQorICAgICAgICAvLyBzcGVjaWZpZWQgaW4gdGhlIFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXMgY2xhc3MuCisgICAgICAgIHN0cnVjdCBBdHRyaWJ1dGVzIHsKKyAg
ICAgICAgICAgIGJvb2wgYWxwaGE7CisgICAgICAgICAgICBib29sIGRlcHRoOworICAgICAgICAg
ICAgYm9vbCBzdGVuY2lsOworICAgICAgICAgICAgYm9vbCBhbnRpYWxpYXM7CisgICAgICAgICAg
ICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJpYnV0ZXMgYXR0cnMpOwog
ICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtNDU5LDYgKzQ2OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBpbnQqIHZhbHVlKTsKIAorICAgICAgICBBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRy
aWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCiAgICAgICAg
IHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CkBAIC02
MDIsMTEgKzYxNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3ludGhl
c2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7CiAKICAgICBwcml2YXRlOiAgICAgICAg
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
KEF0dHJpYnV0ZXMgYXR0cnMpOwogCiAgICAgICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJy
ZW50SGVpZ2h0OwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCisgICAgICAgIEF0dHJpYnV0
ZXMgbV9hdHRyczsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFycmF5
OwogICAgICAgICAKICAgICAgICAgQ0dMQ29udGV4dE9iaiBtX2NvbnRleHRPYmo7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMuY3BwCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTggKzc1
LDI5IEBAIHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxDR0xQaXgKICAgICBhdHRy
aWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkpOwogfQog
Ci1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0
dHJzKSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFz
ZSgpIDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKCkKLSAg
ICA6IG1fY29udGV4dE9iaigwKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorICAgIDogbV9hdHRycyhhdHRy
cykKKyAgICAsIG1fY29udGV4dE9iaigwKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2Zi
bygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogeworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRv
IHRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisgICAgLy8gY29udGV4dCBj
cmVhdGlvbiBhdHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kCisgICAgLy8gYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZCBub3QgYmUgaG9ub3Jl
ZAorICAgIC8vIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBpbXBsZW1l
bnRhdGlvbi4KKyAgICBtX2F0dHJzLmFscGhhID0gdHJ1ZTsKKyAgICBtX2F0dHJzLmRlcHRoID0g
dHJ1ZTsKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyAgICBtX2F0dHJzLmFudGlhbGlh
cyA9IGZhbHNlOworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKKwogICAg
IFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKICAgICBDR0xQaXhlbEZv
cm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0g
MDsKQEAgLTU0MCw2ICs1NTEsMTEgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJM
b2NhdGlvbgogICAgIHJldHVybiA6OmdsR2V0QXR0cmliTG9jYXRpb24oKEdMdWludCkgcHJvZ3Jh
bS0+b2JqZWN0KCksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKK0dyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCit7
CisgICAgcmV0dXJuIG1fYXR0cnM7Cit9CisKIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEVycm9yKCkKIHsKICAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkg
ewpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzA5NykKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wMS0xMSAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBpbXBsZW1lbnQgV2ViR0xDb250ZXh0QXR0
cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzExNjkKKworICAgICAgICBBZGRlZCB0aGUgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBjbGFzcyBh
bmQgY3VzdG9tIEphdmFTY3JpcHQKKyAgICAgICAgYmluZGluZ3MgdG8gYWNjZXB0IGEgbmF0aXZl
IG9iamVjdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCisgICAgICAgIGdldENvbnRleHQoImV4
cGVyaW1lbnRhbC13ZWJnbCIpIHBlciB0aGUgV2ViR0wgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAg
QWRkZWQgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgc3RydWN0IHRvIGlzb2xhdGUgRE9N
IGFuZAorICAgICAgICBncmFwaGljcyBsYXllcnMuIEFkZGVkIGdldENvbnRleHRBdHRyaWJ1dGVz
KCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRlZCB0ZXN0IGNhc2UgZW5z
dXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2FuIGJlIHBhc3NlZCBkb3du
IGFuZCByZXR1cm5lZC4gVGVzdGVkIGluIFNhZmFyaSBhbmQKKyAgICAgICAgQ2hyb21pdW0uIFRo
ZSBhdHRyaWJ1dGVzIHdpbGwgYmUgaG9va2VkIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUKKyAg
ICAgICAgT3BlbkdMIGNvbnRleHQgaW4gYnVnIDMzNDE2LgorCisgICAgICAgICogc3JjL0dyYXBo
aWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKwogMjAxMC0wMS0wOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAJKHJldmlzaW9uIDUzMDk3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIHsKIHB1YmxpYzoKLSAgICBH
cmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycyk7CiAgICAgfkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoKTsKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0x
MjQsNiArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHZvaWQgZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOworICAg
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CiAg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGxvbmcgaW5keCwgaW50IHNpemUs
IGludCB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgdm9pZCB2
aWV3cG9ydEltcGwobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0KTsKQEAgLTEzMSw2ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW50
aGVzaXplR0xFcnJvcih1bnNpZ25lZCBsb25nIGVycm9yKTsKIAogcHJpdmF0ZToKKyAgICBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOworCiAgICAgdW5zaWduZWQgaW50IG1f
dGV4dHVyZTsKICAgICB1bnNpZ25lZCBpbnQgbV9mYm87CiAgICAgdW5zaWduZWQgaW50IG1fZGVw
dGhCdWZmZXI7CkBAIC0zNjYsOCArMzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
VmVydGV4QXR0cmliUAogewogfQogCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKCkKLSAgICA6IG1fdGV4dHVyZSgwKQorR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycykKKyAgICA6IG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1cmUo
MCkKICAgICAsIG1fZmJvKDApCiAgICAgLCBtX2RlcHRoQnVmZmVyKDApCiAgICAgLCBtX2JvdW5k
RkJPKDApCkBAIC0zOTMsNiArMzk3LDE2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Okdy
YXBoaWNzQ29udGUKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlmCiB7
CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHVzZXIncyBy
ZXF1ZXN0ZWQKKyAgICAvLyBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsIGluIHBhcnRpY3Vs
YXIgc3RlbmNpbCBhbmQKKyAgICAvLyBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgYW5kIGNvdWxkIG5vdCBiZSBob25vcmVkCisgICAgLy8gYmFzZWQgb24gdGhlIGNhcGFiaWxp
dGllcyBvZiB0aGUgT3BlbkdMIGltcGxlbWVudGF0aW9uLgorICAgIG1fYXR0cnMuYWxwaGEgPSB0
cnVlOworICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOworICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZh
bHNlOworICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CisgICAgbV9hdHRycy5wcmVtdWx0
aXBsaWVkQWxwaGEgPSB0cnVlOworCiAjaWYgT1MoV0lORE9XUykKICAgICBXTkRDTEFTUyB3YzsK
ICAgICBpZiAoIUdldENsYXNzSW5mbyhHZXRNb2R1bGVIYW5kbGUoMCksIEwiQ0FOVkFTR0wiLCAm
d2MpKSB7CkBAIC05ODIsNiArOTk2LDExIEBAIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDoKICAgICByZXR1cm4gZ2xHZXRFcnJvcigpOwogfQogCitHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRDb250ZXh0QXR0
cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cnM7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6dmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGlu
dCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNp
Z25lZCBsb25nIG9mZnNldCkKIHsKQEAgLTExMzAsMTcgKzExNDksMTcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6bmFtZSh0MSBhMSwgdDIgYQogICAgIGdsIyNnbG5hbWUoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0K
IAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZSgpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQogewotICAgIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0M0QoKTsK
KyAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbmV3IEdyYXBoaWNz
Q29udGV4dDNEKGF0dHJzKTsKICAgICAvLyBGSVhNRTogYWRkIGVycm9yIGNoZWNraW5nCiAgICAg
cmV0dXJuIGNvbnRleHQ7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RCgpCitHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiAgICAgOiBtX2N1cnJlbnRXaWR0aCgwKQogICAgICwgbV9j
dXJyZW50SGVpZ2h0KDApCi0gICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKCkpCisgICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFs
KGF0dHJzKSkKIHsKIH0KIApAQCAtMTU2OSw2ICsxNTg4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXQKICAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsIHZhbHVlKTsKIH0KIAorR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKKyAgICByZXR1cm4gbV9p
bnRlcm5hbC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKK30KKwogdW5zaWduZWQgbG9uZyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewogICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRF
cnJvcigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTMwOTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMS0xMSAgS2VubmV0aCBS
dXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTmVlZCB0byBpbXBsZW1lbnQgV2ViR0xDb250ZXh0QXR0cmlidXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzExNjkK
KworICAgICAgICBBZGRlZCB0aGUgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBjbGFzcyBhbmQgY3Vz
dG9tIEphdmFTY3JpcHQKKyAgICAgICAgYmluZGluZ3MgdG8gYWNjZXB0IGEgbmF0aXZlIG9iamVj
dCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCisgICAgICAgIGdldENvbnRleHQoImV4cGVyaW1l
bnRhbC13ZWJnbCIpIHBlciB0aGUgV2ViR0wgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgQWRkZWQg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgc3RydWN0IHRvIGlzb2xhdGUgRE9NIGFuZAor
ICAgICAgICBncmFwaGljcyBsYXllcnMuIEFkZGVkIGdldENvbnRleHRBdHRyaWJ1dGVzKCkgdG8K
KyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRlZCB0ZXN0IGNhc2UgZW5zdXJpbmcg
dGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2FuIGJlIHBhc3NlZCBkb3duIGFuZCBy
ZXR1cm5lZC4gVGVzdGVkIGluIFNhZmFyaSBhbmQKKyAgICAgICAgQ2hyb21pdW0uIFRoZSBhdHRy
aWJ1dGVzIHdpbGwgYmUgaG9va2VkIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUKKyAgICAgICAg
T3BlbkdMIGNvbnRleHQgaW4gYnVnIDMzNDE2LgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzOgorICAgICAgICAoY3Jl
YXRlM0RDb250ZXh0KToKKwogMjAxMC0wMS0xMSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjQgQEAKK1Rlc3QgcGFzc2luZyBkb3duIGFuZCBmZXRjaGluZyBvZiBXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworVGVzdCBkZWZhdWx0
IHZhbHVlcworUEFTUyBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQ
QVNTIGF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwu
CitQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUK
K1BBU1MgKGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJpYnMuc3RlbmNpbCA9PSBmYWxz
ZSkgaXMgdHJ1ZQorUEFTUyAoYXR0cmlicy5hbnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFu
dGlhbGlhcyA9PSBmYWxzZSkgaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBo
YSBpcyB0cnVlCitUZXN0IGN1c3RvbWl6ZWQgdmFsdWVzCitQQVNTIGNvbnRleHQgPSBjcmVhdGUz
RENvbnRleHQoeyBzdGVuY2lsOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSBpcyBub24tbnVs
bC4KK1BBU1MgYXR0cmlicyA9IGNvbnRleHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24t
bnVsbC4KK1BBU1MgYXR0cmlicy5kZXB0aCBpcyB0cnVlCitQQVNTIGF0dHJpYnMuYWxwaGEgaXMg
dHJ1ZQorUEFTUyBhdHRyaWJzLnN0ZW5jaWwgaXMgZmFsc2UKK1BBU1MgYXR0cmlicy5hbnRpYWxp
YXMgaXMgZmFsc2UKK1BBU1MgYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRl
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29u
dGV4dC1hdHRyaWJ1dGVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRl
c3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0IHBhc3NpbmcgZG93biBhbmQgZmV0Y2hpbmcgb2YgV2ViR0xDb250ZXh0QXR0cmlidXRl
cyIpOworCitkZWJ1ZygiVGVzdCBkZWZhdWx0IHZhbHVlcyIpOwordmFyIGNvbnRleHQ7Cit2YXIg
YXR0cmliczsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7
CitzaG91bGRCZU5vbk51bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVz
KCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmRlcHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRy
aWJzLmFscGhhIiwgInRydWUiKTsKKy8vIFRoZSBmb2xsb3dpbmcgdHdvIGRlcGVuZCBvbiB3aGV0
aGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBhY3R1YWxseSBzdXBwb3J0cyB0aGVtCitzaG91bGRCZSgi
KGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJpYnMuc3RlbmNpbCA9PSBmYWxzZSkiLCAi
dHJ1ZSIpOworc2hvdWxkQmUoIihhdHRyaWJzLmFudGlhbGlhcyA9PSB0cnVlIHx8IGF0dHJpYnMu
YW50aWFsaWFzID09IGZhbHNlKSIsICJ0cnVlIik7CitzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0
aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOworCitkZWJ1ZyAoIlRlc3QgY3VzdG9taXplZCB2YWx1ZXMi
KTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5jaWw6
IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0pIik7CitzaG91bGRCZU5vbk51bGwoImF0dHJpYnMg
PSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmRl
cHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRydWUiKTsKK3Nob3Vs
ZEJlKCJhdHRyaWJzLnN0ZW5jaWwiLCAiZmFsc2UiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFudGlh
bGlhcyIsICJmYWxzZSIpOworc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwg
InRydWUiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2aXNpb24gNTMwOTcpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtOCwxMiArOCwxMiBAQCBmdW5jdGlvbiBnZXRTaGFkZXJTb3VyY2UoZmlsZSkg
ewogICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OwogfQogCi1mdW5jdGlvbiBjcmVhdGUzRENv
bnRleHQoKSB7CitmdW5jdGlvbiBjcmVhdGUzRENvbnRleHQoYXR0cnMpIHsKICAgICB2YXIgY2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CiAgICAgdHJ5IHsKLSAgICAg
ICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKTsKKyAgICAg
ICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLCBhdHRycyk7
CiAgICAgfSBjYXRjaChlKSB7fQotICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgibW96LXdl
YmdsIik7CisgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0KCJtb3otd2ViZ2wiLCBhdHRycyk7
CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGZuYW1lKSB7CkBA
IC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIGNyZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGYK
ICAgICB9OwogfQogCi1mdW5jdGlvbiBjcmVhdGUzRERlYnVnQ29udGV4dCgpIHsKLSAgICB2YXIg
Y29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOworZnVuY3Rpb24gY3JlYXRlM0REZWJ1Z0NvbnRl
eHQoYXR0cnMpIHsKKyAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dChhdHRycyk7CiAg
ICAgLy8gVGhhbmtzIHRvIElsbWFyaSBIZWlra2luZW4gZm9yIHRoZSBpZGVhIG9uIGhvdyB0byBp
bXBsZW1lbnQgdGhpcyBzbyBlbGVnYW50bHkuCiAgICAgdmFyIHdyYXAgPSB7fTsKICAgICBmb3Ig
KHZhciBpIGluIGNvbnRleHQpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46385</attachid>
            <date>2010-01-12 11:36:05 -0800</date>
            <delta_ts>2010-01-13 21:50:55 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>context-attributes.patch</filename>
            <type>text/plain</type>
            <size>55740</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDEtMTIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gaW1wbGVtZW50IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhl
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGJpbmRpbmdzIHRvIGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1
bWVudCB0bworICAgICAgICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhl
IFdlYkdMIHNwZWNpZmljYXRpb24uCisgICAgICAgIEFkZGVkIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzIHN0cnVjdCB0byBpc29sYXRlIERPTSBhbmQKKyAgICAgICAgZ3JhcGhpY3MgbGF5
ZXJzLiBBZGRlZCBnZXRDb250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dC4gQWRkZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAg
ICBhdHRyaWJ1dGVzIGNhbiBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuIFRlc3RlZCBpbiBT
YWZhcmkgYW5kCisgICAgICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tl
ZCB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1
ZyAzMzQxNi4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxi
YWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzOjpDYW52YXNDb250
ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDb250ZXh0QXR0cmlidXRl
czo6fkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNDb250ZXh0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzOjp+V2ViR0xDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpkZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TENvbnRleHRBdHRyaWJ1dGVzOjpzZXREZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENv
bnRleHRBdHRyaWJ1dGVzOjpzdGVuY2lsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4
dEF0dHJpYnV0ZXM6OnNldFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0
QXR0cmlidXRlczo6YW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dEF0
dHJpYnV0ZXM6OnNldEFudGlhbGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRB
dHRyaWJ1dGVzOjpwcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b250ZXh0QXR0cmlidXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmF0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDogQWRkZWQuCisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0
cmlidXRlcyk6CisKIDIwMTAtMDEtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIgYW5kIFNpbW9uIEZyYXNl
ci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIERPTV9DTEFT
U0VTID0gXAogICAgIFdlYkdMQXJyYXlCdWZmZXIgXAogICAgIFdlYkdMQnVmZmVyIFwKICAgICBX
ZWJHTEJ5dGVBcnJheSBcCisgICAgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBcCiAgICAgV2ViR0xG
bG9hdEFycmF5IFwKICAgICBXZWJHTEZyYW1lYnVmZmVyIFwKICAgICBDYW52YXNHcmFkaWVudCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gNTMxNDgpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
QXJyYXlCdWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5p
ZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnl0ZUFycmF5LmlkbCcsCisgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRmxvYXRBcnJheS5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9DYW52YXNHcmFkaWVudC5pZGwnLApAQCAtMTMwMSwxMiArMTMwMiwxNiBAQAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L1dlYkdMQnl0ZUFycmF5LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCeXRl
QXJyYXkuaCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
aCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGbG9hdEFycmF5LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGbG9hdEFycmF5LmgnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMR2V0
SW5mby5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oJywKKyAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xJbnRBcnJheS5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMjQsNiArMTIyNCwxMyBAQAogCQk2
NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFn
ZS5jcHAgKi87IH07CiAJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2
NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYx
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uaCAqLzsgfTsKKwkJNkU0RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0Nv
bnRleHRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFNEU5MUE3MTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmli
dXRlcy5jcHAgKi87IH07CisJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250
ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkU0RTkxQTgxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVz
LmggKi87IH07CisJCTZFNEU5MUFFMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAq
LzsgfTsKKwkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEU5
MUFBMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CisJ
CTZFNEU5MUIwMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0RTkxQUIx
MEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaWRsICovOyB9OworCQk2
RUU4QTc3MjEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRThBNzcwMTBG
ODAzRjMwMDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovOyB9OworCQk2
RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgw
M0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTcyNjI2
RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8q
IEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oICovOyB9OwogCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAgKi87IH07CkBAIC02NTc5LDYgKzY1ODYsMTMgQEAKIAkJNjVGRUE4NjgwOTgzM0FERTAw
QkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RTEwQjc5NDRC
MDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4
IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJH
TEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNkU0RTkxQTcxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRB
dHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENhbnZh
c0NvbnRleHRBdHRyaWJ1dGVzLmNwcDsgcGF0aCA9IGNhbnZhcy9DYW52YXNDb250ZXh0QXR0cmli
dXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNEU5MUE4MTBGN0ZCMzEw
MEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oOyBwYXRoID0gY2FudmFzL0Nh
bnZhc0NvbnRleHRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZF
NEU5MUE5MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMu
Y3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTRFOTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENv
bnRleHRBdHRyaWJ1dGVzLmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTRFOTFBQjEwRjdGQjMxMDBBMjc3OUMg
LyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb250ZXh0QXR0cmli
dXRlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFRThBNzcwMTBGODAzRjMw
MDVBNEEyNCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JU
aW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E5MTAy
RTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA3MzQsNiArMTA3NDgsOCBAQAogCQk0OTQ4NEZB
RTEwMkNGMDFFMDAxODdERDMgLyogY2FudmFzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk2RTRFOTFBNzEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29u
dGV4dEF0dHJpYnV0ZXMuY3BwICovLAorCQkJCTZFNEU5MUE4MTBGN0ZCMzEwMEEyNzc5QyAvKiBD
YW52YXNDb250ZXh0QXR0cmlidXRlcy5oICovLAogCQkJCUE3RDIwRjZCMTA3RjQzOEIwMEE4MDM5
MiAvKiBXZWJHTEFjdGl2ZUluZm8uaCAqLywKIAkJCQlBN0QyMEYzQjEwN0YzNzM4MDBBODAzOTIg
LyogV2ViR0xBY3RpdmVJbmZvLmlkbCAqLywKIAkJCQk0OUVFQ0RDNzEwNTAzQzIzMDAwOTlGQUIg
LyogV2ViR0xBcnJheS5jcHAgKi8sCkBAIC0xMDc0OCw2ICsxMDc2NCw5IEBACiAJCQkJNDlDN0I5
QUIxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMQnl0ZUFycmF5LmNwcCAqLywKIAkJCQk0OUM3QjlB
QzEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xCeXRlQXJyYXkuaCAqLywKIAkJCQk0OUM3QjlBRDEw
NDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xCeXRlQXJyYXkuaWRsICovLAorCQkJCTZFNEU5MUE5MTBG
N0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKKwkJCQk2RTRF
OTFBQTEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oICovLAorCQkJ
CTZFNEU5MUFCMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCAq
LywKIAkJCQk0OUVFQ0RDRDEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmNwcCAq
LywKIAkJCQk0OUVFQ0RDRTEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xGbG9hdEFycmF5LmggKi8s
CiAJCQkJNDlFRUNEQ0YxMDUwM0MyMzAwMDk5RkFCIC8qIFdlYkdMRmxvYXRBcnJheS5pZGwgKi8s
CkBAIC0xMjk0Nyw2ICsxMjk2Niw4IEBACiAJCQkJNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8q
IEpTV2ViR0xCdWZmZXIuaCAqLywKIAkJCQk0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNX
ZWJHTEJ5dGVBcnJheS5jcHAgKi8sCiAJCQkJNDlDN0I5ODMxMDQyRDJEMzAwMDlENDQ3IC8qIEpT
V2ViR0xCeXRlQXJyYXkuaCAqLywKKwkJCQk2RUU4QTc3MDEwRjgwM0YzMDA1QTRBMjQgLyogSlNX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCAqLywKKwkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRB
MjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJNDlFRUNFRjQxMDUwNzBD
NDAwMDk5RkFCIC8qIEpTV2ViR0xGbG9hdEFycmF5LmNwcCAqLywKIAkJCQk0OUVFQ0VGNTEwNTA3
MEM0MDAwOTlGQUIgLyogSlNXZWJHTEZsb2F0QXJyYXkuaCAqLywKIAkJCQk0OUM3Qjk4NDEwNDJE
MkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKQEAgLTE4MzI1LDYgKzE4
MzQ2LDkgQEAKIAkJCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNEMwMEU2MTBGNkY3QzEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODdEOTdCRjEwRkI4RDc3
MDBDMDA4NzQgLyogSlNTVkdQT0RMaXN0Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTRF
OTFBRDEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTZFNEU5MUFGMTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyog
SlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4NDI1LDYgKzE4
NDQ5LDcgQEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6
b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAx
MzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTZFNEU5MUIw
MTBGN0ZCMzEwMEEyNzc5QyAvKiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMDQ4NSw2ICsyMDUxMCw5IEBACiAJCQkJNTExMjI0NzgxMENGQjhGNDAwODA5
OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNUI3QTU0MTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5v
U2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTRFOTFBQzEwRjdGQjMxMDBB
Mjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NkU0RTkxQUUxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNkVFOEE3NzIxMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250
ZXh0QXR0cmlidXRlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNDgp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU0hUTUxDYW52YXNFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDYW52YXNDb250ZXh0
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogI2lu
Y2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0
QXR0cmlidXRlcy5oIgogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCkBAIC00Nyw0
ICs0OSwzNiBAQCB2b2lkIEpTSFRNTENhbnZhc0VsZW1lbnQ6Om1hcmtDaGlsZHJlbihNCiAgICAg
bWFya0RPTU9iamVjdFdyYXBwZXIobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBjYW52YXMtPnJlbmRl
cmluZ0NvbnRleHQoKSk7CiB9CiAKK0pTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29u
dGV4dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oaW1w
bCgpKTsKKyAgICBjb25zdCBVU3RyaW5nJiBjb250ZXh0SWQgPSBhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpOworICAgIFJlZlB0cjxDYW52YXNDb250ZXh0QXR0cmlidXRlcz4gYXR0cnM7CisjaWYg
RU5BQkxFKDNEX0NBTlZBUykKKyAgICBpZiAoY29udGV4dElkID09ICJleHBlcmltZW50YWwtd2Vi
Z2wiIHx8IGNvbnRleHRJZCA9PSAid2Via2l0LTNkIikgeworICAgICAgICBhdHRycyA9IFdlYkdM
Q29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpOworICAgICAgICBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzKiB3ZWJHTEF0dHJzID0gc3RhdGljX2Nhc3Q8V2ViR0xDb250ZXh0QXR0cmlidXRlcyo+KGF0
dHJzLmdldCgpKTsKKyAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID4gMSAmJiBhcmdzLmF0KDEpLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBqc0F0dHJzID0gYXJncy5hdCgxKS5n
ZXRPYmplY3QoKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgYWxwaGEoZXhlYywgImFscGhhIik7
CisgICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgYWxwaGEpKQorICAg
ICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldEFscGhhKGpzQXR0cnMtPmdldChleGVjLCBhbHBo
YSkudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgZGVwdGgoZXhlYywg
ImRlcHRoIik7CisgICAgICAgICAgICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgZGVw
dGgpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldERlcHRoKGpzQXR0cnMtPmdldChl
eGVjLCBkZXB0aCkudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgc3Rl
bmNpbChleGVjLCAic3RlbmNpbCIpOworICAgICAgICAgICAgaWYgKGpzQXR0cnMtPmhhc1Byb3Bl
cnR5KGV4ZWMsIHN0ZW5jaWwpKQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldFN0ZW5j
aWwoanNBdHRycy0+Z2V0KGV4ZWMsIHN0ZW5jaWwpLnRvQm9vbGVhbihleGVjKSk7CisgICAgICAg
ICAgICBJZGVudGlmaWVyIGFudGlhbGlhcyhleGVjLCAiYW50aWFsaWFzIik7CisgICAgICAgICAg
ICBpZiAoanNBdHRycy0+aGFzUHJvcGVydHkoZXhlYywgYW50aWFsaWFzKSkKKyAgICAgICAgICAg
ICAgICB3ZWJHTEF0dHJzLT5zZXRBbnRpYWxpYXMoanNBdHRycy0+Z2V0KGV4ZWMsIGFudGlhbGlh
cykudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcHJlbXVsdGlwbGll
ZEFscGhhKGV4ZWMsICJwcmVtdWx0aXBsaWVkQWxwaGEiKTsKKyAgICAgICAgICAgIGlmIChqc0F0
dHJzLT5oYXNQcm9wZXJ0eShleGVjLCBwcmVtdWx0aXBsaWVkQWxwaGEpKQorICAgICAgICAgICAg
ICAgIHdlYkdMQXR0cnMtPnNldFByZW11bHRpcGxpZWRBbHBoYShqc0F0dHJzLT5nZXQoZXhlYywg
cHJlbXVsdGlwbGllZEFscGhhKS50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRy
KGNhbnZhcy0+Z2V0Q29udGV4dChjb250ZXh0SWQsIGF0dHJzLmdldCgpKSkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0JKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkod29ya2luZyBjb3B5KQpAQCAtMjE2Miw2ICsyMTYyLDcg
QEAgbXkgJXR5cGVDYW5GYWlsQ29udmVyc2lvbiA9ICgKICAgICAiV2ViR0xBcnJheSIgPT4gMCwK
ICAgICAiV2ViR0xCdWZmZXIiID0+IDAsCiAgICAgIldlYkdMQnl0ZUFycmF5IiA9PiAwLAorICAg
ICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzIiA9PiAwLAogICAgICJXZWJHTEZsb2F0QXJyYXkiID0+
IDAsCiAgICAgIldlYkdMRnJhbWVidWZmZXIiID0+IDAsCiAgICAgIkNhbnZhc0dyYWRpZW50IiA9
PiAwLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiA1
MzE0OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTM3MSw3ICszNzEsOSBAQCBzdWIgRGV0ZXJtaW5lUGFyc2VNb2RlCiAgICAgICAg
ICRtb2RlID0gTU9ERV9JTlRFUkZBQ0U7CiAgICAgfSBlbHNpZiAoJF8gPX4gL2V4Y2VwdGlvbi8p
IHsKICAgICAgICAgJG1vZGUgPSBNT0RFX0VYQ0VQVElPTjsKLSAgICB9IGVsc2lmICgkXyA9fiAv
YWxpYXMvKSB7CisgICAgfSBlbHNpZiAoJF8gPX4gLyhcQXxcYilhbGlhcy8pIHsKKyAgICAgICAg
IyBUaGUgKFxBfFxiKSBhYm92ZSBpcyBuZWVkZWQgc28gd2UgZG9uJ3QgbWF0Y2ggYXR0cmlidXRl
cworICAgICAgICAjIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIHN1YnN0cmluZyAiYWxpYXMiLgog
ICAgICAgICAkbW9kZSA9IE1PREVfQUxJQVM7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YS5jcHAJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ2hpbGRU
aHJlYWRET01EYXRhLmgiCiAjaW5jbHVkZSAiTWFpblRocmVhZERPTURhdGEuaCIKKyNpbmNsdWRl
ICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9E
ZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA1MzE0OCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJiaW5kaW5ncy9WOFdlYkdMQXJyYXlCdWZmZXIu
Y3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xCdWZmZXIuY3BwIgogI2luY2x1ZGUgImJp
bmRpbmdzL1Y4V2ViR0xCeXRlQXJyYXkuY3BwIgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xD
b250ZXh0QXR0cmlidXRlcy5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhXZWJHTEZsb2F0QXJy
YXkuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4V2ViR0xGcmFtZWJ1ZmZlci5jcHAiCiAjaW5j
bHVkZSAiYmluZGluZ3MvVjhDYW52YXNHcmFkaWVudC5jcHAiCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCShyZXZpc2lvbiA1MzE0OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgIlY4Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
R0xBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5oIgogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAJKHJldmlzaW9uIDUzMTQ4
KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAyLDYgKzQwMiw3IEBACiAjaW5jbHVkZSAiVjhXZWJHTEFycmF5LmgiCiAjaW5jbHVkZSAiVjhX
ZWJHTEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJW
OFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJWOFdlYkdMRmxvYXRBcnJheS5o
IgogI2luY2x1ZGUgIlY4V2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xJbnRB
cnJheS5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHJldmlzaW9uIDUzMTQ4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw2ICs0NTQs
NyBAQCB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsCiAgICAgVihXRUJH
TEFSUkFZQlVGRkVSLCBXZWJHTEFycmF5QnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgVihXRUJHTEJVRkZFUiwgV2ViR0xCdWZmZXIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEJZVEVBUlJBWSwgV2ViR0xCeXRl
QXJyYXkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihXRUJHTENP
TlRFWFRBVFRSSUJVVEVTLCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKSAgICAgICAgICAgICAgICAg
ICBcCiAgICAgVihXRUJHTEZMT0FUQVJSQVksIFdlYkdMRmxvYXRBcnJheSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTEZSQU1FQlVGRkVSLCBXZWJHTEZyYW1l
YnVmZmVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXRUJHTElOVEFS
UkFZLCBXZWJHTEludEFycmF5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxD
YW52YXNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNTMxNDgpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOEhU
TUxDYW52YXNFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJWOE5vZGUuaCIKQEAgLTQ2LDcgKzQ4LDMyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxDYW52YXNFbGVtZW4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3Mu
SG9sZGVyKCk7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGltcCA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05vZGU8SFRNTENhbnZhc0VsZW1lbnQ+KGhvbGRlcik7CiAgICAgU3Ry
aW5nIGNvbnRleHRJZCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKLSAgICBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KiByZXN1bHQgPSBpbXAtPmdldENvbnRleHQoY29udGV4dElkKTsKKyAgICBS
ZWZQdHI8Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJzOworI2lmIEVOQUJMRSgzRF9DQU5W
QVMpCisgICAgaWYgKGNvbnRleHRJZCA9PSAiZXhwZXJpbWVudGFsLXdlYmdsIiB8fCBjb250ZXh0
SWQgPT0gIndlYmtpdC0zZCIpIHsKKyAgICAgICAgYXR0cnMgPSBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzOjpjcmVhdGUoKTsKKyAgICAgICAgV2ViR0xDb250ZXh0QXR0cmlidXRlcyogd2ViR0xBdHRy
cyA9IHN0YXRpY19jYXN0PFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqPihhdHRycy5nZXQoKSk7Cisg
ICAgICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSAmJiBhcmdzWzBdLT5Jc09iamVjdCgpKSB7Cisg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGpzQXR0cnMgPSBhcmdzWzFdLT5Ub09i
amVjdCgpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBhbHBoYSA9IHY4OjpT
dHJpbmc6Ok5ldygiYWxwaGEiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5IYXMoYWxwaGEp
KQorICAgICAgICAgICAgICAgIHdlYkdMQXR0cnMtPnNldEFscGhhKGpzQXR0cnMtPkdldChhbHBo
YSktPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
ZGVwdGggPSB2ODo6U3RyaW5nOjpOZXcoImRlcHRoIik7CisgICAgICAgICAgICBpZiAoanNBdHRy
cy0+SGFzKGRlcHRoKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXREZXB0aChqc0F0
dHJzLT5HZXQoZGVwdGgpLT5Cb29sZWFuVmFsdWUoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IHN0ZW5jaWwgPSB2ODo6U3RyaW5nOjpOZXcoInN0ZW5jaWwiKTsKKyAgICAg
ICAgICAgIGlmIChqc0F0dHJzLT5IYXMoc3RlbmNpbCkpCisgICAgICAgICAgICAgICAgd2ViR0xB
dHRycy0+c2V0U3RlbmNpbChqc0F0dHJzLT5HZXQoc3RlbmNpbCktPkJvb2xlYW5WYWx1ZSgpKTsK
KyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gYW50aWFsaWFzID0gdjg6OlN0cmlu
Zzo6TmV3KCJhbnRpYWxpYXMiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5IYXMoYW50aWFs
aWFzKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRBbnRpYWxpYXMoanNBdHRycy0+
R2V0KGFudGlhbGlhcyktPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gcHJlbXVsdGlwbGllZEFscGhhID0gdjg6OlN0cmluZzo6TmV3KCJwcmVtdWx0
aXBsaWVkQWxwaGEiKTsKKyAgICAgICAgICAgIGlmIChqc0F0dHJzLT5IYXMocHJlbXVsdGlwbGll
ZEFscGhhKSkKKyAgICAgICAgICAgICAgICB3ZWJHTEF0dHJzLT5zZXRQcmVtdWx0aXBsaWVkQWxw
aGEoanNBdHRycy0+R2V0KHByZW11bHRpcGxpZWRBbHBoYSktPkJvb2xlYW5WYWx1ZSgpKTsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIHJlc3Vs
dCA9IGltcC0+Z2V0Q29udGV4dChjb250ZXh0SWQsIGF0dHJzLmdldCgpKTsKICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBpZiAocmVzdWx0LT5p
czJkKCkpCkBAIC02MCw0ICs4NywzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDYW52
YXNFbGVtZW4KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKIAorI2luY2x1
ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQu
aCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgiCiAjaWYgRU5BQkxFKDNEX0NBTlZBUykgICAgCisjaW5jbHVkZSAiV2ViR0xD
b250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgog
I2VuZGlmCiAjaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKQEAgLTE0Nyw3ICsxNDksNyBAQCBTdHJp
bmcgSFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChjb25zCiAgICAgcmV0dXJuIGJ1ZmZlcigp
LT50b0RhdGFVUkwobWltZVR5cGUpOwogfQogCi1DYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCitDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcm
IHR5cGUsIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKiBhdHRycykKIHsKICAgICAvLyBBIENhbnZh
cyBjYW4gZWl0aGVyIGJlICIyRCIgb3IgIndlYmdsIiBidXQgbmV2ZXIgYm90aC4gSWYgeW91IHJl
cXVlc3QgYSAyRCBjYW52YXMgYW5kIHRoZSBleGlzdGluZwogICAgIC8vIGNvbnRleHQgaXMgYWxy
ZWFkeSAyRCwganVzdCByZXR1cm4gdGhhdC4gSWYgdGhlIGV4aXN0aW5nIGNvbnRleHQgaXMgV2Vi
R0wsIHRoZW4gZGVzdHJveSBpdApAQCAtMTc0LDcgKzE3Niw3IEBAIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQqIEhUTUxDYW52YXNFbGVtZW4KICAgICAgICAgICAgIGlmIChtX2NvbnRleHQgJiYgIW1f
Y29udGV4dC0+aXMzZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
aWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQgPSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQgPSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSh0aGlzLCBzdGF0aWNfY2FzdDxXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzKj4oYXR0cnMpKTsKICAgICAgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVuZGVyTGF5ZXIg
YW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFzCiAgICAgICAg
ICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYW52YXNDb250ZXh0QXR0cmlidXRl
czsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xh
c3MgRmxvYXRSZWN0OwpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgdG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQqIGdldENvbnRleHQoY29uc3QgU3RyaW5nJik7CisgICAgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogZ2V0Q29udGV4dChjb25zdCBTdHJpbmcmLCBDYW52YXNDb250
ZXh0QXR0cmlidXRlcyogYXR0cmlidXRlcyA9IDApOwogCiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCShyZXZpc2lvbiA1
MzE0OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCi0gICAgICAgIFtWOEN1c3RvbV0gRE9NT2JqZWN0IGdldENvbnRl
eHQoaW4gRE9NU3RyaW5nIGNvbnRleHRJZCk7CisgICAgICAgIC8vIFRoZSBjdXN0b20gYmluZGlu
ZyBpcyBuZWVkZWQgdG8gaGFuZGxlIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcy4KKyAgICAg
ICAgW0N1c3RvbV0gRE9NT2JqZWN0IGdldENvbnRleHQoaW4gRE9NU3RyaW5nIGNvbnRleHRJZCk7
CiAjZW5kaWYKIAogICAgIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0NvbnRl
eHRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c0NvbnRleHRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXM6OkNhbnZhc0NvbnRleHRBdHRyaWJ1dGVzKCkKK3sK
K30KKworQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXM6On5DYW52YXNDb250ZXh0QXR0cmlidXRlcygp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYW52YXNDb250
ZXh0QXR0cmlidXRlc19oCisjZGVmaW5lIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBi
YXNlIGNsYXNzIGZvciBhbnkgYXR0cmlidXRlcyB0aGF0IGFyZSBuZWVkZWQgd2hpY2ggd291bGQg
YWZmZWN0CisvLyB0aGUgY3JlYXRpb24gb2YgdGhlIENhbnZhcydzIHJlbmRlcmluZyBjb250ZXh0
LiBDdXJyZW50bHkgb25seSB0aGUKKy8vIFdlYkdMUmVuZGVyaW5nQ29udGV4dCB1c2VzIHRoaXMg
bWVjaGFuaXNtLgorCitjbGFzcyBDYW52YXNDb250ZXh0QXR0cmlidXRlcyA6IHB1YmxpYyBSZWZD
b3VudGVkPENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzPiB7CisgIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IH5DYW52YXNDb250ZXh0QXR0cmlidXRlcygpOworCisgIHByb3RlY3RlZDoKKyAgICBDYW52YXND
b250ZXh0QXR0cmlidXRlcygpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXNfaApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKDNEX0NBTlZBUykKKworI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXM+IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNyZWF0ZSgpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKCkpOworfQorCitQYXNz
UmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OmNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViR0xDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKSk7Cit9
CisKK1dlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OldlYkdMQ29udGV4dEF0dHJpYnV0ZXMoKQorICAg
IDogQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMoKQoreworfQorCitXZWJHTENvbnRleHRBdHRyaWJ1
dGVzOjpXZWJHTENvbnRleHRBdHRyaWJ1dGVzKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMpCisgICAgOiBDYW52YXNDb250ZXh0QXR0cmlidXRlcygpCisgICAgLCBtX2F0
dHJzKGF0dHJpYnV0ZXMpCit7Cit9CisKK1dlYkdMQ29udGV4dEF0dHJpYnV0ZXM6On5XZWJHTENv
bnRleHRBdHRyaWJ1dGVzKCkKK3sKK30KKworYm9vbCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjph
bHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXR0cnMuYWxwaGE7Cit9CisKK3ZvaWQgV2Vi
R0xDb250ZXh0QXR0cmlidXRlczo6c2V0QWxwaGEoYm9vbCBhbHBoYSkKK3sKKyAgICBtX2F0dHJz
LmFscGhhID0gYWxwaGE7Cit9CisKK2Jvb2wgV2ViR0xDb250ZXh0QXR0cmlidXRlczo6ZGVwdGgo
KSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLmRlcHRoOworfQorCit2b2lkIFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXM6OnNldERlcHRoKGJvb2wgZGVwdGgpCit7CisgICAgbV9hdHRycy5kZXB0
aCA9IGRlcHRoOworfQorCitib29sIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM6OnN0ZW5jaWwoKSBj
b25zdAoreworICAgIHJldHVybiBtX2F0dHJzLnN0ZW5jaWw7Cit9CisKK3ZvaWQgV2ViR0xDb250
ZXh0QXR0cmlidXRlczo6c2V0U3RlbmNpbChib29sIHN0ZW5jaWwpCit7CisgICAgbV9hdHRycy5z
dGVuY2lsID0gc3RlbmNpbDsKK30KKworYm9vbCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjphbnRp
YWxpYXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2F0dHJzLmFudGlhbGlhczsKK30KKwordm9p
ZCBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpzZXRBbnRpYWxpYXMoYm9vbCBhbnRpYWxpYXMpCit7
CisgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBhbnRpYWxpYXM7Cit9CisKK2Jvb2wgV2ViR0xDb250
ZXh0QXR0cmlidXRlczo6cHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGE7Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0QXR0cmli
dXRlczo6c2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQorewor
ICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gcHJlbXVsdGlwbGllZEFscGhhOworfQor
CitHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjph
dHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdHRyczsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJHTENvbnRleHRBdHRyaWJ1dGVzX2gKKyNkZWZpbmUgV2ViR0xDb250ZXh0QXR0cmlidXRlc19o
CisKKyNpbmNsdWRlICJDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIDogcHVibGljIENhbnZh
c0NvbnRleHRBdHRyaWJ1dGVzIHsKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfldlYkdMQ29udGV4
dEF0dHJpYnV0ZXMoKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBhdHRyaWJ1dGVzIG9iamVjdAor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGNyZWF0ZSgpOwor
CisgICAgLy8gQ3JlYXRlIGEgbmV3IGF0dHJpYnV0ZXMgb2JqZWN0IGluaXRpYWxpemVkIHdpdGgg
cHJlZXhpc3RpbmcgYXR0cmlidXRlcworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXM+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1
dGVzKTsKKworICAgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYW4g
YWxwaGEgY2hhbm5lbDsgZGVmYXVsdD10cnVlCisgICAgYm9vbCBhbHBoYSgpIGNvbnN0OworICAg
IHZvaWQgc2V0QWxwaGEoYm9vbCBhbHBoYSk7CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUg
ZHJhd2luZyBidWZmZXIgaGFzIGEgZGVwdGggYnVmZmVyOyBkZWZhdWx0PXRydWUKKyAgICBib29s
IGRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aChib29sIGRlcHRoKTsKKworICAgIC8v
IFdoZXRoZXIgb3Igbm90IHRoZSBkcmF3aW5nIGJ1ZmZlciBoYXMgYSBzdGVuY2lsIGJ1ZmZlcjsg
ZGVmYXVsdD10cnVlCisgICAgYm9vbCBzdGVuY2lsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGVu
Y2lsKGJvb2wgc3RlbmNpbCk7CisKKyAgICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZHJhd2luZyBi
dWZmZXIgaXMgYW50aWFsaWFzZWQ7IGRlZmF1bHQ9dHJ1ZQorICAgIGJvb2wgYW50aWFsaWFzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRBbnRpYWxpYXMoYm9vbCBhbnRpYWxpYXMpOworCisgICAgLy8g
V2hldGhlciBvciBub3QgdG8gdHJlYXQgdGhlIHZhbHVlcyBpbiB0aGUgZHJhd2luZyBidWZmZXIg
YXMKKyAgICAvLyB0aG91Z2ggdGhlaXIgYWxwaGEgY2hhbm5lbCBoYXMgYWxyZWFkeSBiZWVuIG11
bHRpcGxpZWQgaW50byB0aGUKKyAgICAvLyBjb2xvciBjaGFubmVsczsgZGVmYXVsdD10cnVlCisg
ICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdDsKKyAgICB2b2lkIHNldFByZW11bHRp
cGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSk7CisKKyAgICAvLyBGZXRjaGVzIGEg
Y29weSBvZiB0aGUgYXR0cmlidXRlcyBzdG9yZWQgaW4gdGhpcyBvYmplY3QgaW4gYQorICAgIC8v
IGZvcm0gdGhhdCBjYW4gYmUgdXNlZCB0byBpbml0aWFsaXplIGEgR3JhcGhpY3NDb250ZXh0M0Qu
CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0Owor
CisgIHByb3RlY3RlZDoKKyAgICBXZWJHTENvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgV2ViR0xD
b250ZXh0QXR0cmlidXRlcyhHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
KTsKKworICBwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzX2gKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRBdHRyaWJ1dGVzLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPTNEX0NBTlZBUywKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisg
ICAgXSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzIHsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4g
YWxwaGE7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGRlcHRoOworICAgICAgICBhdHRyaWJ1
dGUgYm9vbGVhbiBzdGVuY2lsOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhbnRpYWxpYXM7
CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICB9Owor
fQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAkocmV2aXNpb24gNTMxNDgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZlSW5mby5oIgogI2luY2x1ZGUgIldl
YkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1
ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNs
dWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgpAQCAtNzUsOSArNzYsOSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9jaGFuZ2VkOwogfTsKIAotUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMp
CitQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywgV2ViR0xDb250ZXh0QXR0cmlidXRl
cyogYXR0cnMpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoKSk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cnMtPmF0dHJpYnV0ZXMoKSkpOwog
ICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIApAQCAtODc3LDYg
Kzg3OCwxMyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCCiAgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUp
KTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKK3sKKyAgICAvLyBXZSBhbHdheXMgbmVl
ZCB0byByZXR1cm4gYSBuZXcgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBvYmplY3QgdG8KKyAgICAv
LyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gbXV0YXRpbmcgYW55IGNhY2hlZCB2ZXJzaW9uLgorICAg
IHJldHVybiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUobV9jb250ZXh0LT5nZXRDb250
ZXh0QXR0cmlidXRlcygpKTsKK30KKwogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEVycm9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJvcigpOwpJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lv
biA1MzE0OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBXZWJHTEFjdGl2ZUluZm87CiBjbGFzcyBXZWJHTEJ1ZmZlcjsKK2NsYXNzIFdlYkdMQ29u
dGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgQ2FudmFzT2Jq
ZWN0OwogY2xhc3MgV2ViR0xQcm9ncmFtOwpAQCAtNTMsNyArNTQsNyBAQCBjbGFzcyBXZWJLaXRD
U1NNYXRyaXg7CiAKICAgICBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCopOwor
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShI
VE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKICAgICAgICAgdmly
dHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
M2QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC0xMzQsNiArMTM1LDggQEAgY2xhc3MgV2Vi
S2l0Q1NTTWF0cml4OwogCiAgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgICAgICBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGdldENvbnRl
eHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCiAg
ICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkocmV2aXNpb24gNTMxNDgpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU0
MSw2ICs1NDEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIGFueSBnZXRCdWZmZXJQYXJh
bWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1ZmZlclBhcmFt
ZXRlcigpOwogCisgICAgICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJp
YnV0ZXMoKTsKKwogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKICAgICAgICAg
Ly8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25n
IHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBu
YW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDUzMTQ4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODIsNyArMzgyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIElOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OID0gMHgwNTA2CiAgICAgICAgIH07CiAgICAgICAgIAotICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKCk7CisgICAg
ICAgIC8vIENvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcy4KKyAgICAgICAgc3RydWN0IEF0dHJp
YnV0ZXMgeworICAgICAgICAgICAgQXR0cmlidXRlcygpCisgICAgICAgICAgICAgICAgOiBhbHBo
YSh0cnVlKQorICAgICAgICAgICAgICAgICwgZGVwdGgodHJ1ZSkKKyAgICAgICAgICAgICAgICAs
IHN0ZW5jaWwodHJ1ZSkKKyAgICAgICAgICAgICAgICAsIGFudGlhbGlhcyh0cnVlKQorICAgICAg
ICAgICAgICAgICwgcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgYWxwaGE7CisgICAgICAgICAgICBib29sIGRl
cHRoOworICAgICAgICAgICAgYm9vbCBzdGVuY2lsOworICAgICAgICAgICAgYm9vbCBhbnRpYWxp
YXM7CisgICAgICAgICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKKyAgICAgICAgfTsKKwor
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKEF0dHJp
YnV0ZXMgYXR0cnMpOwogICAgICAgICB2aXJ0dWFsIH5HcmFwaGljc0NvbnRleHQzRCgpOwogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNDU5LDYgKzQ3Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKIAorICAgICAgICBBdHRyaWJ1dGVz
IGdldENvbnRleHRBdHRyaWJ1dGVzKCk7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJv
cigpOwogCiAgICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0
KiB2YWx1ZSk7CkBAIC02MDIsMTEgKzYyMiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7CiAKICAgICBw
cml2YXRlOiAgICAgICAgCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dDNEKEF0dHJpYnV0ZXMgYXR0cnMpOwogCiAgICAgICAgIGludCBtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0OwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIEF0dHJpYnV0ZXMgbV9hdHRyczsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4g
PiBtX3ZlcnRleEFycmF5OwogICAgICAgICAKICAgICAgICAgQ0dMQ29udGV4dE9iaiBtX2NvbnRl
eHRPYmo7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRl
eHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MzE0OCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsMTggKzc1LDI5IEBAIHN0YXRpYyB2b2lkIHNldFBpeGVsRm9ybWF0KFZlY3RvcjxD
R0xQaXgKICAgICBhdHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJp
YnV0ZT4oMCkpOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCiB7
Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KG5ldyBHcmFwaGljc0NvbnRl
eHQzRCgpKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQobmV3IEdyYXBo
aWNzQ29udGV4dDNEKGF0dHJzKSk7CiAgICAgcmV0dXJuIGNvbnRleHQtPm1fY29udGV4dE9iaiA/
IGNvbnRleHQucmVsZWFzZSgpIDogMDsKIH0KIAotR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKCkKLSAgICA6IG1fY29udGV4dE9iaigwKQorR3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQorICAg
IDogbV9hdHRycyhhdHRycykKKyAgICAsIG1fY29udGV4dE9iaigwKQogICAgICwgbV90ZXh0dXJl
KDApCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogeworICAgIC8vIEZJ
WE1FOiB3ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisg
ICAgLy8gY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kCisgICAgLy8gYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3Vs
ZCBub3QgYmUgaG9ub3JlZAorICAgIC8vIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhl
IE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4KKyAgICBtX2F0dHJzLmFscGhhID0gdHJ1ZTsKKyAgICBt
X2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyAgICBt
X2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhh
ID0gdHJ1ZTsKKwogICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsK
ICAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7CiAgICAgR0xpbnQgbnVt
UGl4ZWxGb3JtYXRzID0gMDsKQEAgLTU0MCw2ICs1NTEsMTEgQEAgaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiA6OmdsR2V0QXR0cmliTG9jYXRpb24o
KEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKK0dy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0
QXR0cmlidXRlcygpCit7CisgICAgcmV0dXJuIG1fYXR0cnM7Cit9CisKIHVuc2lnbmVkIGxvbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKIHsKICAgICBpZiAobV9zeW50aGV0aWNFcnJv
cnMuc2l6ZSgpID4gMCkgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzE0OCkKKysrIFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAor
MjAxMC0wMS0xMiAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBpbXBsZW1lbnQg
V2ViR0xDb250ZXh0QXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzExNjkKKworICAgICAgICBBZGRlZCB0aGUgV2ViR0xDb250ZXh0QXR0
cmlidXRlcyBjbGFzcyBhbmQgY3VzdG9tIEphdmFTY3JpcHQKKyAgICAgICAgYmluZGluZ3MgdG8g
YWNjZXB0IGEgbmF0aXZlIG9iamVjdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvCisgICAgICAg
IGdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpIHBlciB0aGUgV2ViR0wgc3BlY2lmaWNh
dGlvbi4KKyAgICAgICAgQWRkZWQgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgc3RydWN0
IHRvIGlzb2xhdGUgRE9NIGFuZAorICAgICAgICBncmFwaGljcyBsYXllcnMuIEFkZGVkIGdldENv
bnRleHRBdHRyaWJ1dGVzKCkgdG8KKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0LiBBZGRl
ZCB0ZXN0IGNhc2UgZW5zdXJpbmcgdGhhdCBjb250ZXh0CisgICAgICAgIGF0dHJpYnV0ZXMgY2Fu
IGJlIHBhc3NlZCBkb3duIGFuZCByZXR1cm5lZC4gVGVzdGVkIGluIFNhZmFyaSBhbmQKKyAgICAg
ICAgQ2hyb21pdW0uIFRoZSBhdHRyaWJ1dGVzIHdpbGwgYmUgaG9va2VkIHVwIHRvIHRoZSBjcmVh
dGlvbiBvZiB0aGUKKyAgICAgICAgT3BlbkdMIGNvbnRleHQgaW4gYnVnIDMzNDE2LgorCisgICAg
ICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKToK
KwogMjAxMC0wMS0xMSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA1MzE0OCkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCB7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOworICAgIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0
cnMpOwogICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAKICAgICBib29sIG1ha2VD
b250ZXh0Q3VycmVudCgpOwpAQCAtMTI0LDYgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KTsKICAgICB2b2lkIGVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogICAgIHVuc2lnbmVk
IGxvbmcgZ2V0RXJyb3IoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBnZXRD
b250ZXh0QXR0cmlidXRlcygpOwogICAgIHZvaWQgdmVydGV4QXR0cmliUG9pbnRlcih1bnNpZ25l
ZCBsb25nIGluZHgsIGludCBzaXplLCBpbnQgdHlwZSwgYm9vbCBub3JtYWxpemVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9u
ZyBvZmZzZXQpOwogICAgIHZvaWQgdmlld3BvcnRJbXBsKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25l
ZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CkBAIC0xMzEsNiArMTMyLDggQEAg
cHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodW5zaWduZWQgbG9uZyBlcnJvcik7
CiAKIHByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyczsK
KwogICAgIHVuc2lnbmVkIGludCBtX3RleHR1cmU7CiAgICAgdW5zaWduZWQgaW50IG1fZmJvOwog
ICAgIHVuc2lnbmVkIGludCBtX2RlcHRoQnVmZmVyOwpAQCAtMzY2LDggKzM2OSw5IEBAIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OlZlcnRleEF0dHJpYlAKIHsKIH0KIAotR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCi0gICAgOiBtX3RleHR1
cmUoMCkKK0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMpCisgICAgOiBtX2F0dHJzKGF0
dHJzKQorICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2ZibygwKQogICAgICwgbV9kZXB0aEJ1
ZmZlcigwKQogICAgICwgbV9ib3VuZEZCTygwKQpAQCAtMzkzLDYgKzM5NywxNiBAQCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlv
dXIgcGxhdGZvcm0KICNlbmRpZgogeworICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRha2UgaW50
byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkCisgICAgLy8gY29udGV4dCBjcmVhdGlvbiBh
dHRyaWJ1dGVzLCBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kCisgICAgLy8gYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIGFuZCBjb3VsZCBub3QgYmUgaG9ub3JlZAorICAgIC8v
IGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTCBpbXBsZW1lbnRhdGlvbi4K
KyAgICBtX2F0dHJzLmFscGhhID0gdHJ1ZTsKKyAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyAg
ICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNl
OworICAgIG1fYXR0cnMucHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKKwogI2lmIE9TKFdJTkRP
V1MpCiAgICAgV05EQ0xBU1Mgd2M7CiAgICAgaWYgKCFHZXRDbGFzc0luZm8oR2V0TW9kdWxlSGFu
ZGxlKDApLCBMIkNBTlZBU0dMIiwgJndjKSkgewpAQCAtOTgyLDYgKzk5NiwxMSBAQCB1bnNpZ25l
ZCBsb25nIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6CiAgICAgcmV0dXJuIGdsR2V0RXJyb3Io
KTsKIH0KIAorR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQoreworICAgIHJldHVybiBtX2F0dHJzOwor
fQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZlcnRleEF0dHJpYlBvaW50ZXIo
dW5zaWduZWQgbG9uZyBpbmR4LCBpbnQgc2l6ZSwgaW50IHR5cGUsIGJvb2wgbm9ybWFsaXplZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHN0cmlkZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCiB7CkBAIC0xMTMwLDE3ICsx
MTQ5LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om5hbWUodDEgYTEsIHQyIGEKICAgICBn
bCMjZ2xuYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4g
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBh
dHRycykKIHsKLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gbmV3
IEdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4g
Y29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycyk7CiAgICAgLy8gRklYTUU6IGFk
ZCBlcnJvciBjaGVja2luZwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1HcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoKQorR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzKQogICAgIDogbV9jdXJy
ZW50V2lkdGgoMCkKICAgICAsIG1fY3VycmVudEhlaWdodCgwKQotICAgICwgbV9pbnRlcm5hbChu
ZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpKQorICAgICwgbV9pbnRlcm5hbChuZXcgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycykpCiB7CiB9CiAKQEAgLTE1NjksNiArMTU4OCwx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0CiAgICAgZ2xHZXRC
dWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKK0dyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRl
cygpCit7CisgICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Cit9
CisKIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKIHsKICAgICBy
ZXR1cm4gbV9pbnRlcm5hbC0+Z2V0RXJyb3IoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzMTQ4KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDEtMTIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgdG8gaW1wbGVtZW50
IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxMTY5CisKKyAgICAgICAgQWRkZWQgdGhlIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMgY2xhc3MgYW5kIGN1c3RvbSBKYXZhU2NyaXB0CisgICAgICAgIGJpbmRpbmdzIHRv
IGFjY2VwdCBhIG5hdGl2ZSBvYmplY3QgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0bworICAgICAg
ICBnZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSBwZXIgdGhlIFdlYkdMIHNwZWNpZmlj
YXRpb24uCisgICAgICAgIEFkZGVkIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHN0cnVj
dCB0byBpc29sYXRlIERPTSBhbmQKKyAgICAgICAgZ3JhcGhpY3MgbGF5ZXJzLiBBZGRlZCBnZXRD
b250ZXh0QXR0cmlidXRlcygpIHRvCisgICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dC4gQWRk
ZWQgdGVzdCBjYXNlIGVuc3VyaW5nIHRoYXQgY29udGV4dAorICAgICAgICBhdHRyaWJ1dGVzIGNh
biBiZSBwYXNzZWQgZG93biBhbmQgcmV0dXJuZWQuIFRlc3RlZCBpbiBTYWZhcmkgYW5kCisgICAg
ICAgIENocm9taXVtLiBUaGUgYXR0cmlidXRlcyB3aWxsIGJlIGhvb2tlZCB1cCB0byB0aGUgY3Jl
YXRpb24gb2YgdGhlCisgICAgICAgIE9wZW5HTCBjb250ZXh0IGluIGJ1ZyAzMzQxNi4KKworICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qczoKKyAgICAgICAgKGNyZWF0ZTNEQ29udGV4dCk6CisKIDIwMTAtMDEtMTIgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRl
eHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3QgcGFzc2luZyBk
b3duIGFuZCBmZXRjaGluZyBvZiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworVGVzdCBkZWZhdWx0IHZhbHVlcworUEFTUyBjb250ZXh0ID0gY3Jl
YXRlM0RDb250ZXh0KCkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMgPSBjb250ZXh0LmdldENv
bnRleHRBdHRyaWJ1dGVzKCkgaXMgbm9uLW51bGwuCitQQVNTIGF0dHJpYnMuZGVwdGggaXMgdHJ1
ZQorUEFTUyBhdHRyaWJzLmFscGhhIGlzIHRydWUKK1BBU1MgKGF0dHJpYnMuc3RlbmNpbCA9PSB0
cnVlIHx8IGF0dHJpYnMuc3RlbmNpbCA9PSBmYWxzZSkgaXMgdHJ1ZQorUEFTUyAoYXR0cmlicy5h
bnRpYWxpYXMgPT0gdHJ1ZSB8fCBhdHRyaWJzLmFudGlhbGlhcyA9PSBmYWxzZSkgaXMgdHJ1ZQor
UEFTUyBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSBpcyB0cnVlCitUZXN0IGN1c3RvbWl6ZWQg
dmFsdWVzCitQQVNTIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoeyBzdGVuY2lsOiBmYWxzZSwg
YW50aWFsaWFzOiBmYWxzZSB9KSBpcyBub24tbnVsbC4KK1BBU1MgYXR0cmlicyA9IGNvbnRleHQu
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBpcyBub24tbnVsbC4KK1BBU1MgYXR0cmlicy5kZXB0aCBp
cyB0cnVlCitQQVNTIGF0dHJpYnMuYWxwaGEgaXMgdHJ1ZQorUEFTUyBhdHRyaWJzLnN0ZW5jaWwg
aXMgZmFsc2UKK1BBU1MgYXR0cmlicy5hbnRpYWxpYXMgaXMgZmFsc2UKK1BBU1MgYXR0cmlicy5w
cmVtdWx0aXBsaWVkQWxwaGEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2NvbnRleHQtYXR0cmlidXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHBhc3NpbmcgZG93biBhbmQgZmV0
Y2hpbmcgb2YgV2ViR0xDb250ZXh0QXR0cmlidXRlcyIpOworCitkZWJ1ZygiVGVzdCBkZWZhdWx0
IHZhbHVlcyIpOwordmFyIGNvbnRleHQ7Cit2YXIgYXR0cmliczsKK3Nob3VsZEJlTm9uTnVsbCgi
Y29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7CitzaG91bGRCZU5vbk51bGwoImF0dHJpYnMg
PSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1dGVzKCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmRl
cHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFscGhhIiwgInRydWUiKTsKKy8vIFRo
ZSBmb2xsb3dpbmcgdHdvIGRlcGVuZCBvbiB3aGV0aGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBhY3R1
YWxseSBzdXBwb3J0cyB0aGVtCitzaG91bGRCZSgiKGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8
IGF0dHJpYnMuc3RlbmNpbCA9PSBmYWxzZSkiLCAidHJ1ZSIpOworc2hvdWxkQmUoIihhdHRyaWJz
LmFudGlhbGlhcyA9PSB0cnVlIHx8IGF0dHJpYnMuYW50aWFsaWFzID09IGZhbHNlKSIsICJ0cnVl
Iik7CitzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOworCitk
ZWJ1ZyAoIlRlc3QgY3VzdG9taXplZCB2YWx1ZXMiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29udGV4
dCA9IGNyZWF0ZTNEQ29udGV4dCh7IHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0p
Iik7CitzaG91bGRCZU5vbk51bGwoImF0dHJpYnMgPSBjb250ZXh0LmdldENvbnRleHRBdHRyaWJ1
dGVzKCkiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmRlcHRoIiwgInRydWUiKTsKK3Nob3VsZEJlKCJh
dHRyaWJzLmFscGhhIiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLnN0ZW5jaWwiLCAiZmFs
c2UiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLmFudGlhbGlhcyIsICJmYWxzZSIpOworc2hvdWxkQmUo
ImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIiwgInRydWUiKTsKKworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVz
dC5qcwkocmV2aXNpb24gNTMxNDgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtOCwxMiArOCwxMiBAQCBm
dW5jdGlvbiBnZXRTaGFkZXJTb3VyY2UoZmlsZSkgewogICAgIHJldHVybiB4aHIucmVzcG9uc2VU
ZXh0OwogfQogCi1mdW5jdGlvbiBjcmVhdGUzRENvbnRleHQoKSB7CitmdW5jdGlvbiBjcmVhdGUz
RENvbnRleHQoYXR0cnMpIHsKICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CiAgICAgdHJ5IHsKLSAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0
KCJleHBlcmltZW50YWwtd2ViZ2wiKTsKKyAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXRDb250ZXh0
KCJleHBlcmltZW50YWwtd2ViZ2wiLCBhdHRycyk7CiAgICAgfSBjYXRjaChlKSB7fQotICAgIHJl
dHVybiBjYW52YXMuZ2V0Q29udGV4dCgibW96LXdlYmdsIik7CisgICAgcmV0dXJuIGNhbnZhcy5n
ZXRDb250ZXh0KCJtb3otd2ViZ2wiLCBhdHRycyk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUdMRXJy
b3JXcmFwcGVyKGNvbnRleHQsIGZuYW1lKSB7CkBAIC0yNiw4ICsyNiw4IEBAIGZ1bmN0aW9uIGNy
ZWF0ZUdMRXJyb3JXcmFwcGVyKGNvbnRleHQsIGYKICAgICB9OwogfQogCi1mdW5jdGlvbiBjcmVh
dGUzRERlYnVnQ29udGV4dCgpIHsKLSAgICB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgp
OworZnVuY3Rpb24gY3JlYXRlM0REZWJ1Z0NvbnRleHQoYXR0cnMpIHsKKyAgICB2YXIgY29udGV4
dCA9IGNyZWF0ZTNEQ29udGV4dChhdHRycyk7CiAgICAgLy8gVGhhbmtzIHRvIElsbWFyaSBIZWlr
a2luZW4gZm9yIHRoZSBpZGVhIG9uIGhvdyB0byBpbXBsZW1lbnQgdGhpcyBzbyBlbGVnYW50bHku
CiAgICAgdmFyIHdyYXAgPSB7fTsKICAgICBmb3IgKHZhciBpIGluIGNvbnRleHQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>