<?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>214116</bug_id>
          
          <creation_ts>2020-07-08 17:59:52 -0700</creation_ts>
          <short_desc>Implement uniform* and getUniform for WebGL 2 types</short_desc>
          <delta_ts>2020-07-14 17:48:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126404</blocked>
    
    <blocked>126938</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Darpinian">jdarpinian</reporter>
          <assigned_to name="James Darpinian">jdarpinian</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin_fan</cc>
    
    <cc>kbr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1669974</commentid>
    <comment_count>0</comment_count>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-08 17:59:52 -0700</bug_when>
    <thetext>Implement uniform* and getUniform for WebGL 2 types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669975</commentid>
    <comment_count>1</comment_count>
      <attachid>403830</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-08 18:01:10 -0700</bug_when>
    <thetext>Created attachment 403830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670333</commentid>
    <comment_count>2</comment_count>
      <attachid>403933</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-09 17:05:39 -0700</bug_when>
    <thetext>Created attachment 403933
fix gtk build and rebaseline tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670596</commentid>
    <comment_count>3</comment_count>
      <attachid>404005</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-10 14:57:55 -0700</bug_when>
    <thetext>Created attachment 404005
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670604</commentid>
    <comment_count>4</comment_count>
      <attachid>404005</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-07-10 15:08:07 -0700</bug_when>
    <thetext>Comment on attachment 404005
rebase

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

Great work James. LGTM - I don&apos;t have reviewer privileges.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1285
&gt; +    if (location-&gt;program() != m_currentProgram) {

Maybe we should add a bool validateUniformLocation(WebGLUniformLocation*, const char* functionName).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670680</commentid>
    <comment_count>5</comment_count>
      <attachid>404005</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-07-10 18:05:27 -0700</bug_when>
    <thetext>Comment on attachment 404005
rebase

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

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1285
&gt;&gt; +    if (location-&gt;program() != m_currentProgram) {
&gt; 
&gt; Maybe we should add a bool validateUniformLocation(WebGLUniformLocation*, const char* functionName).

Agreed.

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1329
&gt; +    m_context-&gt;uniform1uiv(location-&gt;location(), value.data(), srcOffset, srcLength ? srcLength : (value.length() - srcOffset) / 1);

Maybe remove the &quot;/1&quot;?

Also, do we need to validate the case where srcLength is 0 and srcOffset is &gt; value.length?

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:3409
&gt; +            // Can&apos;t handle this type

Nit: End with a .

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:3471
&gt; +            // Can&apos;t handle this type

Nit: end with a .

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:6900
&gt; +    GCGLsizei actualSize = size - srcOffset;
&gt; +    if (srcLength &gt; 0) {
&gt; +        if (srcLength &gt; static_cast&lt;GCGLuint&gt;(actualSize)) {
&gt; +            synthesizeGLError(GraphicsContextGL::INVALID_VALUE, functionName, &quot;invalid srcOffset + srcLength&quot;);
&gt; +            return false;
&gt; +        }
&gt; +        actualSize = srcLength;

Oh, you did it here :)

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1026
&gt; +    virtual void getUniformuiv(PlatformGLObject program, GCGLint location, GCGLuint* value) = 0;

Huh. I wonder how I missed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671175</commentid>
    <comment_count>6</comment_count>
      <attachid>404005</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-07-13 14:58:34 -0700</bug_when>
    <thetext>Comment on attachment 404005
rebase

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:1026
&gt;&gt; +    virtual void getUniformuiv(PlatformGLObject program, GCGLint location, GCGLuint* value) = 0;
&gt; 
&gt; Huh. I wonder how I missed this.

Unsigned integer uniforms are new in WebGL 2.0 and this patch is the first one referencing them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671239</commentid>
    <comment_count>7</comment_count>
      <attachid>404195</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-13 17:38:40 -0700</bug_when>
    <thetext>Created attachment 404195
review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671286</commentid>
    <comment_count>8</comment_count>
      <attachid>404195</attachid>
    <who name="James Darpinian">jdarpinian</who>
    <bug_when>2020-07-13 22:54:11 -0700</bug_when>
    <thetext>Comment on attachment 404195
review feedback

All review feedback addressed. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671486</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-14 12:59:05 -0700</bug_when>
    <thetext>Committed r264371: &lt;https://trac.webkit.org/changeset/264371&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404195.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671487</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-14 13:00:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/65559641&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403830</attachid>
            <date>2020-07-08 18:01:10 -0700</date>
            <delta_ts>2020-07-09 17:05:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214116-20200708180110.patch</filename>
            <type>text/plain</type>
            <size>51789</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1MjE0MzJmZTgzMjM1
YmU5MWYwNzIwNjkwOWQ0MDAwYWU5ZTY4ZC4uZTM3NzE1NDAzMGEwYzJhY2YzNDJlMThkOTczMDAw
MGFiMTM0NGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTA3LTA4ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgdW5pZm9ybSogYW5kIGdldFVuaWZvcm0gZm9yIFdlYkdMIDIgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3NlcyBhbGwgcmVsZXZhbnQg
V2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKwogMjAyMC0wNi0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgQXVkaW9Db250ZXh0QmFzZSBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBjZGI4MzFjNTI4M2VjNzJkN2QyODVjMGQ3ODk5MGUwMzg0MGQ4MzQ5Li41YjUx
YzNmMDFlNzlkY2ZmNTQ4NjY3ODA3MDM2NTNhZTQ3MDMyOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI3
MSw4MCArMTI3MSwxMjUgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwKICAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gY29tcHJlc3NlZFRleFN1YkltYWdlM0QoQXJyYXlCdWZm
ZXJWaWV3KSIpOwogfQogCi1HQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdE
YXRhTG9jYXRpb24oV2ViR0xQcm9ncmFtJiwgY29uc3QgU3RyaW5nJikKK0dDR0xpbnQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gZ2V0RnJhZ0RhdGFMb2NhdGlvbigpIik7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0RnJh
Z0RhdGFMb2NhdGlvbiIsICZwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbS5vYmplY3QoKSwgbmFtZSk7
CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aShXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMXVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCiB7Ci0g
ICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm0xdWkoKSIpOworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJ1bmlmb3JtMXVpIiwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB2MCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dMdWludCkKK3Zv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKIHsKLSAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTJ1aSgpIik7CisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInVuaWZv
cm0ydWkiLCAibG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24tPmxvY2F0aW9u
KCksIHYwLCB2MSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1
aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dMdWludCwgR0NHTHVpbnQpCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtM3VpKCkiKTsKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OLCAidW5pZm9ybTN1aSIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJlbnQgcHJvZ3JhbSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dM
dWludCwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCiB7Ci0gICAgTE9HKFdlYkdMLCAi
W1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm00dWkoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxv
Y2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgeworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3Jt
NHVpIiwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtMXVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtMnVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtM3VpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMyk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtNHVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gNCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0
MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSB1bmlmb3JtTWF0cml4MngzZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDYpOwogfQogCi12b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxp
c3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDN4MmZ2KCkiKTsK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyA2KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQz
Mkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVE
IF1dIHVuaWZvcm1NYXRyaXgyeDRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkK
K3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlz
dCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExP
RyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4NHgyZnYoKSIpOwor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYu
ZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvIDgpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMy
TGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQg
XV0gdW5pZm9ybU1hdHJpeDN4NGZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOwogfQogCi12b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxp
c3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDR4M2Z2KCkiKTsK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwg
di5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMTIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYkk0aShHQ0dMdWludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCkKQEAgLTI4NzAsMTE1ICsyOTE1LDc5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5p
Zm9ybTFmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IHVuaWZvcm0yZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwg
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSB1bmlmb3JtM2Z2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIGRhdGEs
IDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNl
dCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8g
Myk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZz
ZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gdW5pZm9ybTRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCBk
YXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09m
ZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBM
RU1FTlRFRCBdXSB1bmlmb3JtMWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24s
IGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQgc3Jj
T2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHVuaWZvcm0yaXYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlv
biwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdMdWludCBz
cmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1Qg
SU1QTEVNRU5URUQgXV0gdW5pZm9ybTNpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0
aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSAvIDMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50
IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtNGl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gNCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5n
dGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDJmdigpIik7CisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zm
c2V0KSAvICgyKjIpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4M2Z2KCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1
bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gKDMqMykpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sg
Tk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXg0ZnYoKSIpOworICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCA0KjQsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNl
dCkgLyAoNCo0KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggNTNjZTA2MjA3Yzg1NzlmMTY5ZjJiOTVkMzZiY2U1YTVjNDg0ZGI2ZC4uYWQ5OGY0NTVmNDdh
YTBiYzkyNzkxZmYxNDI4ZDFjNGIzMzJlOTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTM0MDUs
OSArMzQwNSw3MyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBsZW5ndGggPSAx
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBDYW4ndCBoYW5kbGUg
dGhpcyB0eXBlCi0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0VW5pZm9ybSIsICJ1bmhhbmRsZWQgdHlwZSIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1dlYkdMMigpKSB7CisgICAgICAgICAgICAv
LyBDYW4ndCBoYW5kbGUgdGhpcyB0eXBlCisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldFVuaWZvcm0iLCAidW5oYW5kbGVk
IHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IHN3aXRjaCAodW5pZm9ybUxvY2F0aW9uLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9J
TlRfVkVDMjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0lOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UX1ZFQzM6CisgICAgICAg
ICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CisgICAgICAg
ICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF9WRUM0OgorICAgICAgICAgICAgYmFzZVR5cGUgPSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gNDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VF9NQVQyeDM6CisgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfTUFUMng0OgorICAgICAgICAgICAgYmFzZVR5
cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7CisgICAgICAgICAgICBsZW5ndGggPSA4Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDN4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gNjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQzeDQ6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDR4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQ0eDM6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBM
RVJfM0Q6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfQVJSQVk6
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfU0hBRE9XOgorICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkVfU0hBRE9XOgorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OklOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OklOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpJTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIENhbid0
IGhhbmRsZSB0aGlzIHR5cGUKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0VW5pZm9ybSIsICJ1bmhhbmRsZWQgdHlwZSIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAgICAgc3dp
dGNoIChiYXNlVHlwZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOiB7CkBA
IC0zNDMwLDYgKzM0OTQsMTMgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2
YWx1ZSwgbGVuZ3RoKTsKICAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UOiB7CisgICAgICAgIEdDR0x1aW50IHZhbHVlWzRdID0gezB9OworICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm11aXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFs
dWUpOworICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVb
MF07CisgICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgp
OworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCT09MOiB7CiAgICAgICAgIEdD
R0xpbnQgdmFsdWVbNF0gPSB7MH07CiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBv
cnRlZCkKQEAgLTU2MTYsNyArNTY4Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0x
ZnYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAx
LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlm
b3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CkBAIC01
NjI0LDcgKzU2OTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0x
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0
aW9uLCB2LCAyKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CkBAIC01NjMyLDcg
KzU3MDMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2
LCAzKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRhdGEoKSk7CkBAIC01NjQwLDcgKzU3MTEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CkBAIC01NjQ4LDcgKzU3MTksNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBkYXRhID0gdi5kYXRhKCk7CkBAIC01NjY5LDcgKzU3NDAsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMikpCisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOwpAQCAtNTY3Nyw3ICs1NzQ4LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
M2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0z
aXYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDMsIHYuZGF0YSgpKTsKQEAgLTU2ODUsNyArNTc1Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2
LmRhdGEoKSk7CkBAIC01NjkzLDIxICs1NzY0LDIxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYsIDkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDks
IHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNiwgMCwg
di5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2
LmRhdGEoKSk7CiB9CkBAIC02Nzc1LDI3ICs2ODQ2LDMyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYs
IEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IEZsb2F0MzJMaXN0JiB2
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJl
cXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworfQorCitib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0
IEludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2
Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwg
di5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CiB9CiAK
LWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQor
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBjb25zdCBVaW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICByZXR1cm4gdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxz
ZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7CisgICAgcmV0dXJuIHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFs
c2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3Jj
TGVuZ3RoKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xz
aXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0
aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUpOworICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZs
b2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVx
dWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNp
emUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9u
TmFtZSwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVk
TWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXpl
aSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlmICghbG9j
YXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4MDcsMTEgKzY4ODMsMjMgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmMKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHRyYW5zcG9zZSkgeworICAgIGlmICh0
cmFuc3Bvc2UgJiYgIWlzV2ViR0wyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBu
b3QgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8
IHJlcXVpcmVkTWluU2l6ZSB8fCAoc2l6ZSAlIHJlcXVpcmVkTWluU2l6ZSkpIHsKKyAgICBpZiAo
c3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50PihzaXplKSkgeworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBzcmNPZmZzZXQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBHQ0dMc2l6ZWkgYWN0dWFsU2l6ZSA9IHNpemUgLSBzcmNPZmZzZXQ7CisgICAgaWYgKHNy
Y0xlbmd0aCA+IDApIHsKKyAgICAgICAgaWYgKHNyY0xlbmd0aCA+IHN0YXRpY19jYXN0PEdDR0x1
aW50PihhY3R1YWxTaXplKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zm
c2V0ICsgc3JjTGVuZ3RoIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0aDsKKyAgICB9CisgICAgaWYgKGFjdHVhbFNp
emUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVhbFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNpemUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBkZGY0ZDg3OGEyNjg3Y2I4NDA5YTA5YWQ3MDA4MGNm
Y2IxYTdjNTE1Li42NjFjYzc2ZWRkZWY0MzRkOGRkNmQzMDhkODJjMDg2ZDAyY2Q4NjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oCkBAIC0zMDEsNiArMzAxLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgRmxvYXQz
Mkxpc3QgPSBUeXBlZExpc3Q8RmxvYXQzMkFycmF5LCBmbG9hdD47CiAgICAgdXNpbmcgSW50MzJM
aXN0ID0gVHlwZWRMaXN0PEludDMyQXJyYXksIGludD47CisgICAgdXNpbmcgVWludDMyTGlzdCA9
IFR5cGVkTGlzdDxVaW50MzJBcnJheSwgdWludDMyX3Q+OwogCiAgICAgdm9pZCB1bmlmb3JtMWYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMZmxvYXQgeCk7CiAgICAgdm9pZCB1bmlm
b3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHkpOwpAQCAtOTQ5LDExICs5NTAsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCB2
YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSkgPSAw
OwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMg
Zm9yIHVuaWZvcm0gZnVuY3Rpb25zLgotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
Y29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgbW9kKTsKLSAgICBib29sIHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlzdCYsIEdDR0xzaXplaSBtb2QpOwotICAgIGJvb2wg
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIG1vZCk7
Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NHTHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZv
aWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSBtb2QpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9vbCB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAg
IGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCos
IEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlk
YXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCiAgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50
IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCmluZGV4IDNmM2UxMjJkYjM4MmM0YmY0YjcwMWJkOWNmM2MyYTQxZWVlYWY2OTQuLmNh
MWQ4ODUwMTY2OTllZmYzYjU2MzA0OThmODg5OTM2OTk0NGRiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTAy
Myw2ICsxMDIzLDcgQEAgcHVibGljOgogICAgIC8vIGdldFVuaWZvcm0KICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CiAKICAgICB2
aXJ0dWFsIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDQ2Zjc1MmM1ZjQxMzE5MWUzNGJhMzdiNmM0MThkOTYzMzQ3Mzc0MDcuLjExMDgxMTE4MmEy
NmNkYzNjMjJjODczMTA3YWI2OWEwMDIyMWM0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC0xNzA5LDYgKzE3MDksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2MK
ICAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTIyODMsMTI2ICsyMjg5LDkyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsCiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShu
YW1lKTsKLQotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJl
dHVybiBnbDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHYwKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh2MCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHYxKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBn
bDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NH
THVpbnQgdjEsIEdDR0x1aW50IHYyKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVOVVNFRF9Q
QVJBTSh2Mik7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0zdWko
bG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwg
R0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVOVVNF
RF9QQVJBTSh2Mik7Ci0gICAgVU5VU0VEX1BBUkFNKHYzKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0x
dWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRy
YW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwg
dHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpV
bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsg
c3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5z
cG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3Jj
TGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI3MDEsOTMgKzI2NzMsNjgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEg
KyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtNGZ2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBz
cmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2Up
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2Us
IGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGEzZDY1YjM4ODNlMmYx
ODk0MGNlYTE5NWQ1ZGU5YWU4ZjVkZTU1YWUuLjZhYjQ3MGE4YzNmODQ4YmNlMzg4OTIwOGVlMDBi
MDJhMzU0MTA3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0yOTQs
NiArMjk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwogICAgIHZvaWQg
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYTE2NDg0
NmVlZGE2ZTlmN2EyNGNmODI3MWMyZDEyNTc3ODBlYWYyNy4uMjY5NzcxZWJlMDYyYWFkN2EwMjAz
NzAyZDllNGE0MDE4NGQ1OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCkBAIC0xODIyLDYgKzE4MjIsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2MKICAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbEdldFVuaWZvcm11aXYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403933</attachid>
            <date>2020-07-09 17:05:39 -0700</date>
            <delta_ts>2020-07-10 14:57:54 -0700</delta_ts>
            <desc>fix gtk build and rebaseline tests</desc>
            <filename>bug-214116-20200709170539.patch</filename>
            <type>text/plain</type>
            <size>58621</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM1MjE0MzJmZTgzMjM1
YmU5MWYwNzIwNjkwOWQ0MDAwYWU5ZTY4ZC4uZTM3NzE1NDAzMGEwYzJhY2YzNDJlMThkOTczMDAw
MGFiMTM0NGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTA3LTA4ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgdW5pZm9ybSogYW5kIGdldFVuaWZvcm0gZm9yIFdlYkdMIDIgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3NlcyBhbGwgcmVsZXZhbnQg
V2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKwogMjAyMC0wNi0yMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgQXVkaW9Db250ZXh0QmFzZSBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBjZGI4MzFjNTI4M2VjNzJkN2QyODVjMGQ3ODk5MGUwMzg0MGQ4MzQ5Li41YjUx
YzNmMDFlNzlkY2ZmNTQ4NjY3ODA3MDM2NTNhZTQ3MDMyOGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI3
MSw4MCArMTI3MSwxMjUgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSwgR0NHTGludCwgR0NHTGludCwKICAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gY29tcHJlc3NlZFRleFN1YkltYWdlM0QoQXJyYXlCdWZm
ZXJWaWV3KSIpOwogfQogCi1HQ0dMaW50IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYWdE
YXRhTG9jYXRpb24oV2ViR0xQcm9ncmFtJiwgY29uc3QgU3RyaW5nJikKK0dDR0xpbnQgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihXZWJHTFByb2dyYW0mIHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gZ2V0RnJhZ0RhdGFMb2NhdGlvbigpIik7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0RnJh
Z0RhdGFMb2NhdGlvbiIsICZwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbS5vYmplY3QoKSwgbmFtZSk7
CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aShXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMXVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCiB7Ci0g
ICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm0xdWkoKSIpOworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewor
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVS
QVRJT04sICJ1bmlmb3JtMXVpIiwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB2MCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dMdWludCkKK3Zv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aShXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSkKIHsKLSAgICBMT0coV2ViR0ws
ICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTJ1aSgpIik7CisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CisgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInVuaWZv
cm0ydWkiLCAibG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24tPmxvY2F0aW9u
KCksIHYwLCB2MSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1
aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dMdWludCwgR0NHTHVpbnQpCit2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtM3VpKCkiKTsKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChsb2NhdGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsK
KyAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BF
UkFUSU9OLCAidW5pZm9ybTN1aSIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJlbnQgcHJvZ3JhbSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aShsb2Nh
dGlvbi0+bG9jYXRpb24oKSwgdjAsIHYxLCB2Mik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybTR1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0x1aW50LCBHQ0dM
dWludCwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdD
R0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVpbnQgdjMpCiB7Ci0gICAgTE9HKFdlYkdMLCAi
W1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm00dWkoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxv
Y2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgeworICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3Jt
NHVpIiwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgbV9jb250ZXh0LT51bmlmb3JtNHVpKGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTF1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtMXVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTF1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMSk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJ1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJ1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtMnVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJ1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTN1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtM3VpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTN1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTN1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMyk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTR1aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBVaW50MzJMaXN0JiYsIEdDR0x1aW50LCBH
Q0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTR1aXYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBVaW50MzJMaXN0JiYgdmFsdWUsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtNHVpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTR1aXYiLCBsb2Nh
dGlvbiwgdmFsdWUsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHZhbHVlLmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodmFsdWUubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gNCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0
MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwg
R0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSB1bmlmb3JtTWF0cml4MngzZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgy
eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0
aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDYpOwogfQogCi12b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxp
c3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDN4MmZ2KCkiKTsK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3gyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LCA2LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2
LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodi5sZW5ndGgoKSAt
IHNyY09mZnNldCkgLyA2KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQz
Mkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4Mng0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVE
IF1dIHVuaWZvcm1NYXRyaXgyeDRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4
NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gOCk7CiB9CiAKLXZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkK
K3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlz
dCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExP
RyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4NHgyZnYoKSIpOwor
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYs
IDgsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYu
ZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0g
c3JjT2Zmc2V0KSAvIDgpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMy
TGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXgzeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQg
XV0gdW5pZm9ybU1hdHJpeDN4NGZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M3g0
ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMTIpOwogfQogCi12b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVuaWZvcm1M
b2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQp
Cit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxp
c3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDR4M2Z2KCkiKTsK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2
LCAxMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250
ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwg
di5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkg
LSBzcmNPZmZzZXQpIC8gMTIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYkk0aShHQ0dMdWludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGludCwgR0NHTGlu
dCkKQEAgLTI4NzAsMTE1ICsyOTE1LDc5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5p
Zm9ybTFmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCBkYXRhLCAxLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm0xZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IHVuaWZvcm0yZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwgMiwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAyKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwg
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSB1bmlmb3JtM2Z2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIGRhdGEs
IDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNl
dCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8g
Myk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZz
ZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gdW5pZm9ybTRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCBk
YXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09m
ZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBM
RU1FTlRFRCBdXSB1bmlmb3JtMWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRpb24s
IGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQgc3Jj
T2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHVuaWZvcm0yaXYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlv
biwgZGF0YSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyAyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdMdWludCBz
cmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1Qg
SU1QTEVNRU5URUQgXV0gdW5pZm9ybTNpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIsIGxvY2F0
aW9uLCBkYXRhLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSAvIDMpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
aXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50
IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtNGl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIGRhdGEsIDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBz
cmNPZmZzZXQpIC8gNCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5n
dGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJh
bnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDJmdigpIik7CisgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygi
dW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDIqMiwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zm
c2V0KSAvICgyKjIpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4M2Z2KCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1
bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMyozLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gKDMqMykpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sg
Tk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXg0ZnYoKSIpOworICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCA0KjQsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNl
dCkgLyAoNCo0KSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVs
cyhHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMaW50cHRyIG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggNTNjZTA2MjA3Yzg1NzlmMTY5ZjJiOTVkMzZiY2U1YTVjNDg0ZGI2ZC4uYWQ5OGY0NTVmNDdh
YTBiYzkyNzkxZmYxNDI4ZDFjNGIzMzJlOTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTM0MDUs
OSArMzQwNSw3MyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICBsZW5ndGggPSAx
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvLyBDYW4ndCBoYW5kbGUg
dGhpcyB0eXBlCi0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJ
TlZBTElEX1ZBTFVFLCAiZ2V0VW5pZm9ybSIsICJ1bmhhbmRsZWQgdHlwZSIpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1dlYkdMMigpKSB7CisgICAgICAgICAgICAv
LyBDYW4ndCBoYW5kbGUgdGhpcyB0eXBlCisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldFVuaWZvcm0iLCAidW5oYW5kbGVk
IHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IHN3aXRjaCAodW5pZm9ybUxvY2F0aW9uLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9J
TlRfVkVDMjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0lOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UX1ZFQzM6CisgICAgICAg
ICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CisgICAgICAg
ICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF9WRUM0OgorICAgICAgICAgICAgYmFzZVR5cGUgPSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gNDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VF9NQVQyeDM6CisgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfTUFUMng0OgorICAgICAgICAgICAgYmFzZVR5
cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7CisgICAgICAgICAgICBsZW5ndGggPSA4Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDN4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gNjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQzeDQ6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDR4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQ0eDM6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBM
RVJfM0Q6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfQVJSQVk6
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfU0hBRE9XOgorICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkVfU0hBRE9XOgorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OklOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OklOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpJTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIENhbid0
IGhhbmRsZSB0aGlzIHR5cGUKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0VW5pZm9ybSIsICJ1bmhhbmRsZWQgdHlwZSIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAgICAgc3dp
dGNoIChiYXNlVHlwZSkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOiB7CkBA
IC0zNDMwLDYgKzM0OTQsMTMgQEAgV2ViR0xBbnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgcmV0dXJuIEludDMyQXJyYXk6OnRyeUNyZWF0ZSh2
YWx1ZSwgbGVuZ3RoKTsKICAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdO
RURfSU5UOiB7CisgICAgICAgIEdDR0x1aW50IHZhbHVlWzRdID0gezB9OworICAgICAgICBtX2Nv
bnRleHQtPmdldFVuaWZvcm11aXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFs
dWUpOworICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVb
MF07CisgICAgICAgIHJldHVybiBVaW50MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVlLCBsZW5ndGgp
OworICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpCT09MOiB7CiAgICAgICAgIEdD
R0xpbnQgdmFsdWVbNF0gPSB7MH07CiAgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBv
cnRlZCkKQEAgLTU2MTYsNyArNTY4Nyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0x
ZnYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAx
LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlm
b3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CkBAIC01
NjI0LDcgKzU2OTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0x
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0
aW9uLCB2LCAyKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVu
Z3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9j
YXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAyLCB2LmRhdGEoKSk7CkBAIC01NjMyLDcg
KzU3MDMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2
LCAzKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAzLCB2LmRhdGEoKSk7CkBAIC01NjQwLDcgKzU3MTEs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBG
bG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KSkK
KyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CkBAIC01NjQ4LDcgKzU3MTksNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBkYXRhID0gdi5kYXRhKCk7CkBAIC01NjY5LDcgKzU3NDAsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxp
c3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yaXYiLCBsb2NhdGlvbiwgdiwgMikpCisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOwpAQCAtNTY3Nyw3ICs1NzQ4LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
M2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikK
IHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Q
YXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24sIHYsIDMpKQorICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0z
aXYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgo
KSAvIDMsIHYuZGF0YSgpKTsKQEAgLTU2ODUsNyArNTc1Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9j
YXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2
LmRhdGEoKSk7CkBAIC01NjkzLDIxICs1NzY0LDIxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2Iiwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2UsIHYuZGF0YSgpKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYsIDkpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDks
IHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTYpKQorICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNiwgMCwg
di5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2
LmRhdGEoKSk7CiB9CkBAIC02Nzc1LDI3ICs2ODQ2LDMyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYs
IEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IEZsb2F0MzJMaXN0JiB2
LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50
IHNyY0xlbmd0aCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJl
cXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOworfQorCitib29sIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0
IEludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2
Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwg
di5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CiB9CiAK
LWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgY29uc3QgSW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQor
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLCBjb25zdCBVaW50MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICByZXR1cm4gdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxz
ZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7CisgICAgcmV0dXJuIHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFs
c2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3Jj
TGVuZ3RoKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xz
aXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0
aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUpOworICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZs
b2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVx
dWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNp
emUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9u
TmFtZSwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVk
TWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXpl
aSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewogICAgIGlmICghbG9j
YXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4MDcsMTEgKzY4ODMsMjMgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmMKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHRyYW5zcG9zZSkgeworICAgIGlmICh0
cmFuc3Bvc2UgJiYgIWlzV2ViR0wyKCkpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBu
b3QgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8
IHJlcXVpcmVkTWluU2l6ZSB8fCAoc2l6ZSAlIHJlcXVpcmVkTWluU2l6ZSkpIHsKKyAgICBpZiAo
c3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdDR0x1aW50PihzaXplKSkgeworICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25O
YW1lLCAiaW52YWxpZCBzcmNPZmZzZXQiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBHQ0dMc2l6ZWkgYWN0dWFsU2l6ZSA9IHNpemUgLSBzcmNPZmZzZXQ7CisgICAgaWYgKHNy
Y0xlbmd0aCA+IDApIHsKKyAgICAgICAgaWYgKHNyY0xlbmd0aCA+IHN0YXRpY19jYXN0PEdDR0x1
aW50PihhY3R1YWxTaXplKSkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zm
c2V0ICsgc3JjTGVuZ3RoIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xlbmd0aDsKKyAgICB9CisgICAgaWYgKGFjdHVhbFNp
emUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFjdHVhbFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZB
TFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHNpemUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBkZGY0ZDg3OGEyNjg3Y2I4NDA5YTA5YWQ3MDA4MGNm
Y2IxYTdjNTE1Li42NjFjYzc2ZWRkZWY0MzRkOGRkNmQzMDhkODJjMDg2ZDAyY2Q4NjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oCkBAIC0zMDEsNiArMzAxLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgRmxvYXQz
Mkxpc3QgPSBUeXBlZExpc3Q8RmxvYXQzMkFycmF5LCBmbG9hdD47CiAgICAgdXNpbmcgSW50MzJM
aXN0ID0gVHlwZWRMaXN0PEludDMyQXJyYXksIGludD47CisgICAgdXNpbmcgVWludDMyTGlzdCA9
IFR5cGVkTGlzdDxVaW50MzJBcnJheSwgdWludDMyX3Q+OwogCiAgICAgdm9pZCB1bmlmb3JtMWYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMZmxvYXQgeCk7CiAgICAgdm9pZCB1bmlm
b3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0
IHkpOwpAQCAtOTQ5LDExICs5NTAsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCB2
YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSkgPSAw
OwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMg
Zm9yIHVuaWZvcm0gZnVuY3Rpb25zLgotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
Y29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgbW9kKTsKLSAgICBib29sIHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlzdCYsIEdDR0xzaXplaSBtb2QpOwotICAgIGJvb2wg
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIG1vZCk7
Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NHTHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxp
ZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZv
aWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSBtb2QpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBH
Q0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9vbCB2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9vbCB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVp
cmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAg
IGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCos
IEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHZhbGlk
YXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCiAgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50
IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCmluZGV4IDNmM2UxMjJkYjM4MmM0YmY0YjcwMWJkOWNmM2MyYTQxZWVlYWY2OTQuLmNh
MWQ4ODUwMTY2OTllZmYzYjU2MzA0OThmODg5OTM2OTk0NGRiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMTAy
Myw2ICsxMDIzLDcgQEAgcHVibGljOgogICAgIC8vIGdldFVuaWZvcm0KICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlv
biwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3Qg
cHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CiAKICAgICB2
aXJ0dWFsIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDQ2Zjc1MmM1ZjQxMzE5MWUzNGJhMzdiNmM0MThkOTYzMzQ3Mzc0MDcuLjExMDgxMTE4MmEy
NmNkYzNjMjJjODczMTA3YWI2OWEwMDIyMWM0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC0xNzA5LDYgKzE3MDksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2MK
ICAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTIyODMsMTI2ICsyMjg5LDkyIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsCiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Omdl
dEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShu
YW1lKTsKLQotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIHJl
dHVybiBnbDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHYwKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh2MCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHYxKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBn
bDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NH
THVpbnQgdjEsIEdDR0x1aW50IHYyKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVOVVNFRF9Q
QVJBTSh2Mik7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0zdWko
bG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwg
R0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVOVVNF
RF9QQVJBTSh2Mik7Ci0gICAgVU5VU0VEX1BBUkFNKHYzKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0
aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0x
dWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25z
dCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0
aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBzcmNM
ZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVu
Z3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRy
YW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xlbmd0aCwg
dHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQg
c3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgyZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpV
bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsg
c3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1h
dHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5z
cG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3Jj
TGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI3MDEsOTMgKzI2NzMsNjgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdD
R0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJB
TShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEg
KyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3Jt
MmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNl
dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYoR0NHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
cmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtNGZ2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwor
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBz
cmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRh
dGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZz
ZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2KEdDR0xp
bnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1h
dHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M2Z2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6
VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBz
cmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0
cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NH
TGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2Up
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2Us
IGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGEzZDY1YjM4ODNlMmYx
ODk0MGNlYTE5NWQ1ZGU5YWU4ZjVkZTU1YWUuLjZhYjQ3MGE4YzNmODQ4YmNlMzg4OTIwOGVlMDBi
MDJhMzU0MTA3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0yOTQs
NiArMjk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwogICAgIHZvaWQg
Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwg
R0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7
CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZpbmFsOwog
ICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdD
R0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYTE2NDg0
NmVlZGE2ZTlmN2EyNGNmODI3MWMyZDEyNTc3ODBlYWYyNy4uMzg3OTRhOThkM2QxMDMxODNjMTZh
YWVjOGJjZjczYmU1NTAzYWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwCkBAIC0xODIyLDYgKzE4MjIsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2MKICAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9nbHNsMy91bmFyeS1taW51cy1vcGVyYXRv
ci1pbi1keW5hbWljLWxvb3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWluLWR5bmFtaWMtbG9vcC1l
eHBlY3RlZC50eHQKaW5kZXggNTNmNjI5MDU1MjdkY2ViMDg2YTcxNDQwZjg0M2ZiODgxYjNkYzc0
My4uYTcwNjhlZGU4ZmVlOTgzNGYwMjM0ZWEyZDEzMGQxZGIxMzE1ZjBhNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9w
ZXJhdG9yLWluLWR5bmFtaWMtbG9vcC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWluLWR5bmFt
aWMtbG9vcC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsNSBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhl
IFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9y
IEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1h
bmNlMi9nbHNsMy91bmFyeS1taW51cy1vcGVyYXRvci1pbi1keW5hbWljLWxvb3AuaHRtbAotWyAx
OiBQQVNTIF0gc3F1YXJlIHNob3VsZCBiZSBncmVlbgotWyAyOiBGQUlMIF0gc3F1YXJlIHNob3Vs
ZCBiZSBncmVlbiBhdCAoMTM4LCAwKSBleHBlY3RlZDogMCwyNTUsMCwyNTUgd2FzIDI1NSwwLDAs
MjU1Ci1bIDM6IFBBU1MgXSBzcXVhcmUgc2hvdWxkIGJlIGdyZWVuCi1bIDQ6IEZBSUwgXSBzcXVh
cmUgc2hvdWxkIGJlIGdyZWVuIGF0ICg0MTQsIDApIGV4cGVjdGVkOiAwLDI1NSwwLDI1NSB3YXMg
MjU1LDAsMCwyNTUKLVsgNTogUEFTUyBdIHNxdWFyZSBzaG91bGQgYmUgZ3JlZW4KLVsgNjogRkFJ
TCBdIHNxdWFyZSBzaG91bGQgYmUgZ3JlZW4gYXQgKDY5MCwgMCkgZXhwZWN0ZWQ6IDAsMjU1LDAs
MjU1IHdhcyAyNTUsMCwwLDI1NQotWyA3OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLVsgRkFJTCBdIDMgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNz
ZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3By
b2dyYW1zL2dsLWdldC1mcmFnLWRhdGEtbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Byb2dyYW1zL2dsLWdldC1mcmFnLWRhdGEtbG9j
YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDFhMDA2NTJlYWVlMzE5Y2I2OTdmNzAwZDUzZWFhYzU0
M2Y5ZjcyZDIuLjA2MDgxNjM0YmNmYWZiZmEyODY1NjE5MmEwYjE4ZDdkNTczYzUxNjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9nbC1n
ZXQtZnJhZy1kYXRhLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZTIvcHJvZ3JhbXMvZ2wtZ2V0LWZyYWctZGF0YS1sb2NhdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsNSBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRl
c3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCiAK
IFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9wcm9n
cmFtcy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLmh0bWwKLVsgMTogUEFTUyBdIFdlYkdMIGNv
bnRleHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogTm8gR0wgZXJyb3IgZnJvbSBzZXQgdXAKLVsgMzogRkFJTCBdIEZhaWwgdG8gcXVl
cnkgc2NhbGFyIG91dHB1dCB2YXJpYWJsZSBsb2NhdGlvbnMsIGV4cGVjdGVkOiBmcmFnQ29sb3Iw
LT4yLCBmcmFnQ29sb3IxLT4wLCBnb3Q6IGZyYWdDb2xvcjAtPjAsIGZyYWdDb2xvcjEtPjAKLVsg
NDogRkFJTCBdIEZhaWwgdG8gcXVlcnkgc2NhbGFyIG91dHB1dCB2YXJpYWJsZSBsb2NhdGlvbnMs
IGV4cGVjdGVkOiBmcmFnQ29sb3ItPjAsIGZyYWdDb2xvclswXS0+MCwgZnJhZ0NvbG9yWzFdLT4x
LCBnb3Q6IGZyYWdDb2xvci0+MCwgZnJhZ0NvbG9yWzBdLT4wLCBmcmFnQ29sb3JbMV0tPjAKLVsg
NTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBObyBHTCBl
cnJvciBmcm9tIHRlc3RpbmcKLVsgNjogUEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci1bIEZBSUwgXSAyIGZhaWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2Vk
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0
ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dApp
bmRleCA0MDg5NTU0OTQ5ZWJkMzU2NmFmNTYwMzQzNzdkNzJlOTM0NmFjMjdkLi43ZjZjYzhhOWYw
YzFhOWUxYjdkZTI4YzY3NTAyMmFjZTNkOTFmNGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2ds
LW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CkBAIC0yNDMsMjYgKzI0MywyNiBAQCBUZXN0
OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wt
b2JqZWN0LWdldC1jYWxscy5odAogWyAyMzk6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDoKIFsgMjQwOiBQQVNTIF0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1
aW50UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKIFsgMjQxOiBQQVNTIF0gZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6Ci1bIDI0MjogRkFJTCBdIGdsLmdldFVu
aWZvcm0odWludFByb2dyYW0sIHV2YWxMb2MpIHNob3VsZCBiZSAxIChvZiB0eXBlIG51bWJlciku
IFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCi1bIDI0MzogRkFJTCBdIGdsLmdldFVuaWZvcm0o
dWludFByb2dyYW0sIHV2YWwyTG9jKSBzaG91bGQgYmUgMiwzLiBXYXMgbnVsbC4KLVsgMjQ0OiBG
QUlMIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDNMb2MpIHNob3VsZCBiZSA0LDUs
Ni4gV2FzIG51bGwuCi1bIDI0NTogRkFJTCBdIGdsLmdldFVuaWZvcm0odWludFByb2dyYW0sIHV2
YWw0TG9jKSBzaG91bGQgYmUgNyw4LDksMTAuIFdhcyBudWxsLgotWyAyNDY6IEZBSUwgXSBnZXRF
cnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdhcyBJTlZBTElEX1ZBTFVFIDoKK1sgMjQyOiBQQVNT
IF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbExvYykgaXMgMQorWyAyNDM6IFBBU1Mg
XSBnbC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsMkxvYykgaXMgWzIsIDNdCitbIDI0NDog
UEFTUyBdIGdsLmdldFVuaWZvcm0odWludFByb2dyYW0sIHV2YWwzTG9jKSBpcyBbNCwgNSwgNl0K
K1sgMjQ1OiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDRMb2MpIGlzIFs3
LCA4LCA5LCAxMF0KK1sgMjQ2OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6CiBbIDI0NzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9f
RVJST1IgOgogWyAyNDg6IFBBU1MgXSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKG1hdEZvcldlYkdM
MlByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCiBbIDI0OTogUEFTUyBdIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgotWyAyNTA6IEZBSUwgXSBnbC5nZXRVbmlm
b3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwyeDNMb2MpIHNob3VsZCBiZSAxLDIsMyw0LDUs
Ni4gV2FzIG51bGwuCi1bIDI1MTogRkFJTCBdIGdsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJv
Z3JhbSwgbXZhbDJ4NExvYykgc2hvdWxkIGJlIDcsOCw5LDEwLDExLDEyLDEzLDE0LiBXYXMgbnVs
bC4KLVsgMjUyOiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFs
M3gyTG9jKSBzaG91bGQgYmUgMTUsMTYsMTcsMTgsMTksMjAuIFdhcyBudWxsLgotWyAyNTM6IEZB
SUwgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDRMb2MpIHNob3Vs
ZCBiZSAyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMi4gV2FzIG51bGwuCi1bIDI1
NDogRkFJTCBdIGdsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4MkxvYykg
c2hvdWxkIGJlIDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLiBXYXMgbnVsbC4KLVsgMjU1OiBGQUlM
IF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsNHgzTG9jKSBzaG91bGQg
YmUgNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIuIFdhcyBudWxsLgotWyAyNTY6
IEZBSUwgXSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdhcyBJTlZBTElEX1ZBTFVFIDoK
K1sgMjUwOiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsMngz
TG9jKSBpcyBbMSwgMiwgMywgNCwgNSwgNl0KK1sgMjUxOiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybSht
YXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsMng0TG9jKSBpcyBbNywgOCwgOSwgMTAsIDExLCAxMiwg
MTMsIDE0XQorWyAyNTI6IFBBU1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0s
IG12YWwzeDJMb2MpIGlzIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwXQorWyAyNTM6IFBBU1MgXSBn
bC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDRMb2MpIGlzIFsyMSwgMjIs
IDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXQorWyAyNTQ6IFBBU1MgXSBn
bC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWw0eDJMb2MpIGlzIFszMywgMzQs
IDM1LCAzNiwgMzcsIDM4LCAzOSwgNDBdCitbIDI1NTogUEFTUyBdIGdsLmdldFVuaWZvcm0obWF0
Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4M0xvYykgaXMgWzQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYs
IDQ3LCA0OCwgNDksIDUwLCA1MSwgNTJdCitbIDI1NjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogTk9fRVJST1IgOgogWyAyNTc6IFBBU1MgXSBnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQogWyAy
NTg6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKLVsgMjU5
OiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShzYW1wbGVyRm9yV2ViR0wyUHJvZ3JhbSwgczNEVmFsTG9j
KSBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgbnVsbCAob2YgdHlwZSBvYmplY3Qp
LgotWyAyNjA6IEZBSUwgXSBnbC5nZXRVbmlmb3JtKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBz
MkRBcnJheVZhbExvYykgc2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIG51bGwgKG9m
IHR5cGUgb2JqZWN0KS4KLVsgMjYxOiBGQUlMIF0gZ2V0RXJyb3IgZXhwZWN0ZWQ6IE5PX0VSUk9S
LiBXYXMgSU5WQUxJRF9WQUxVRSA6CitbIDI1OTogUEFTUyBdIGdsLmdldFVuaWZvcm0oc2FtcGxl
ckZvcldlYkdMMlByb2dyYW0sIHMzRFZhbExvYykgaXMgMAorWyAyNjA6IFBBU1MgXSBnbC5nZXRV
bmlmb3JtKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBzMkRBcnJheVZhbExvYykgaXMgMQorWyAy
NjE6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKIFsgMjYy
OiBQQVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVG
RkVSX0JJTkRJTkcpIGlzIGJ1ZmZlcgogWyAyNjM6IFBBU1MgXSBnbC5nZXRWZXJ0ZXhBdHRyaWIo
MSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0cnVlCiBbIDI2NDogUEFTUyBd
IGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpIGlzIDQK
QEAgLTMxMSw1ICszMTEsNSBAQCBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxl
cy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odAogWyAzMDc6IFBBU1Mg
XSBnZXRTYW1wbGVyUGFyYW1ldGVyIGNvcnJlY3RseSBoYW5kbGVkIGludmFsaWQgcG5hbWUgZW51
bXMKIFsgMzA4OiBGQUlMIF0gZ2wuZ2V0U3luY1BhcmFtZXRlcihzeW5jLCBnbC5PQkpFQ1RfVFlQ
RSkgc2hvdWxkIGJlIDM3MTQyLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAx
ICgnc3luYycpIHRvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuZ2V0U3luY1BhcmFtZXRlciBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIFdlYkdMU3luYwogWyAzMDk6IEZBSUwgXSBzdWNjZXNzZnVsbHlQ
YXJzZWQgc2hvdWxkIGJlIHRydWUgKG9mIHR5cGUgYm9vbGVhbikuIFdhcyB1bmRlZmluZWQgKG9m
IHR5cGUgdW5kZWZpbmVkKS4KLVsgRkFJTCBdIDU4IGZhaWx1cmVzIHJlcG9ydGVkCitbIEZBSUwg
XSA0MyBmYWlsdXJlcyByZXBvcnRlZAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404005</attachid>
            <date>2020-07-10 14:57:55 -0700</date>
            <delta_ts>2020-07-13 17:38:38 -0700</delta_ts>
            <desc>rebase</desc>
            <filename>bug-214116-20200710145754.patch</filename>
            <type>text/plain</type>
            <size>58674</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc1M2JlZWExNWQxZjk0
NDQ1NTgwZWFlMDBiZDg4ZDBmZGM2YzYyNy4uMDM4ZmE1OGI1ZjAyZDZhNWJmNGMxZDFiYThhM2I2
MTc4MWE2ODJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTA3LTA4ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgdW5pZm9ybSogYW5kIGdldFVuaWZvcm0gZm9yIFdlYkdMIDIgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3NlcyBhbGwgcmVsZXZhbnQg
V2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKwogMjAyMC0wNy0wOSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICAiRVNQTiBGYW50YXN5IFNwb3J0cyIgZG9l
cyBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMsIG9ubHkgdG91Y2ggZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDA2NjE0YTcwYzUxYTlmNmY5ZDk2MDhkM2M1ZDBmMzkyNDFjNTQ3YWUuLjliMGQ0ZGY1
YTIzMzlmNDc2OTljNzE3NzllZjdlMjE1ZTgzYzAyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMjcxLDgw
ICsxMjcxLDEyNSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LAogICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChBcnJheUJ1ZmZlclZp
ZXcpIik7CiB9CiAKLUdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFM
b2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25zdCBTdHJpbmcmKQorR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSBnZXRGcmFnRGF0YUxvY2F0aW9uKCkiKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRGcmFnRGF0
YUxvY2F0aW9uIiwgJnByb2dyYW0pKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLm9iamVjdCgpLCBuYW1lKTsKIH0K
IAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpKFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTF1aSgpIik7CisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CisgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElP
TiwgInVuaWZvcm0xdWkiLCAibG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2NvbnRleHQtPnVuaWZvcm0xdWkobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYwKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMnVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQogewotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtMnVpKCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChsb2Nh
dGlvbi0+cHJvZ3JhbSgpICE9IG1fY3VycmVudFByb2dyYW0pIHsKKyAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCAidW5pZm9ybTJ1
aSIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJlbnQgcHJvZ3JhbSIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbi0+bG9jYXRpb24oKSwg
djAsIHYxKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3VpKFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTHVpbnQsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTN1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAg
TE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm0zdWkoKSIpOworICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgeworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJ
T04sICJ1bmlmb3JtM3VpIiwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9u
LT5sb2NhdGlvbigpLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTHVpbnQsIEdDR0x1aW50
LCBHQ0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm00dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKIHsKLSAgICBMT0coV2ViR0wsICJbWyBO
T1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTR1aSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobG9jYXRp
b24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7CisgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInVuaWZvcm00dWki
LCAibG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24tPmxvY2F0aW9uKCksIHYw
LCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFVpbnQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1
aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExF
TUVOVEVEIF1dIHVuaWZvcm0xdWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMXVpdiIsIGxvY2F0aW9u
LCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyAxKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MnVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFVpbnQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1
aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExF
TUVOVEVEIF1dIHVuaWZvcm0ydWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMnVpdiIsIGxvY2F0aW9u
LCB2YWx1ZSwgMiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyAyKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M3VpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFVpbnQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1
aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3VpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExF
TUVOVEVEIF1dIHVuaWZvcm0zdWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM3VpdiIsIGxvY2F0aW9u
LCB2YWx1ZSwgMywgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyAzKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NHVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFVpbnQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1
aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNHVpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExF
TUVOVEVEIF1dIHVuaWZvcm00dWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNHVpdiIsIGxvY2F0aW9u
LCB2YWx1ZSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdmFsdWUuZGF0YSgp
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1ZS5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyA0KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQzMkxp
c3QmJiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4MngzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9v
bGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IHVuaWZvcm1NYXRyaXgyeDNmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJ4M2Z2
IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAg
ICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8g
c3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gNik7CiB9CiAKLXZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3Zv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYm
IHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhX
ZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4M3gyZnYoKSIpOworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDJmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDYs
IHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+
dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0
YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0gc3Jj
T2Zmc2V0KSAvIDYpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlz
dCYmLCBHQ0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXgyeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1
aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0g
dW5pZm9ybU1hdHJpeDJ4NGZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4Mng0ZnYi
LCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiAodi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA4KTsKIH0KIAotdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYg
diwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdl
YkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXg0eDJmdigpIik7CisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFy
YW1ldGVycygidW5pZm9ybU1hdHJpeDR4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgOCwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgdi5kYXRh
KCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHYubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gOCk7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0MzJMaXN0
JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1
bmlmb3JtTWF0cml4M3g0ZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgzeDRmdiIs
IGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi0+
bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBz
cmNMZW5ndGggOiAodi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAxMik7CiB9CiAKLXZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiwgR0NHTGJvb2xlYW4sIEZsb2F0MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3Zv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYm
IHYsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhX
ZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4NHgzZnYoKSIpOworICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0eDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDEy
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQt
PnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRh
dGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodi5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyAxMik7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTRpKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50LCBHQ0dMaW50KQpA
QCAtMjk4MSwxMTUgKzMwMjYsNzkgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwKIAogdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3Jt
MWZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIGRhdGEsIDEsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybTFm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3Ro
ID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8gMSk7CiB9CiAKIHZv
aWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBz
cmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5p
Zm9ybTJmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRh
dGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCBkYXRhLCAyLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZv
cm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOwogfQog
CiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYoV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1d
IHVuaWZvcm0zZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZh
bGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgZGF0YSwgMywg
c3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51
bmlmb3JtM2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAzKTsK
IH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwg
R0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSB1bmlmb3JtNGZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIGRhdGEs
IDQsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09mZnNl
dCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQpIC8g
NCk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0
LCBHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVO
VEVEIF1dIHVuaWZvcm0xaXYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xaXYiLCBsb2NhdGlvbiwgZGF0
YSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250
ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkg
LyAxKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZz
ZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVN
RU5URUQgXV0gdW5pZm9ybTJpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCBk
YXRhLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvIDIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09m
ZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBM
RU1FTlRFRCBdXSB1bmlmb3JtM2l2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRpb24s
IGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gMyk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQgc3Jj
T2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHVuaWZvcm00aXYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlv
biwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwg
c3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09m
ZnNldCkgLyA0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCkK
IHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bv
c2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0
KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5P
VCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4MmZ2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0
TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlm
b3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMioyLCBzcmNPZmZzZXQs
IHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gKDIqMikpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKQog
ewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9z
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXgzZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZv
cm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3JjT2Zm
c2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkg
LyAoMyozKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3Nl
KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1Qg
SU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9y
bU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAv
ICg0KjQpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgR0xpbnRwdHIgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA1
M2NlMDYyMDdjODU3OWYxNjlmMmI5NWQzNmJjZTVhNWM0ODRkYjZkLi5hZDk4ZjQ1NWY0N2FhMGJj
OTI3OTFmZjE0MjhkMWM0YjMzMmU5NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzQwNSw5ICsz
NDA1LDczIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0o
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgIGxlbmd0aCA9IDE7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIENhbid0IGhhbmRsZSB0aGlz
IHR5cGUKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJnZXRVbmlmb3JtIiwgInVuaGFuZGxlZCB0eXBlIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKKyAgICAgICAgICAgIC8vIENh
bid0IGhhbmRsZSB0aGlzIHR5cGUKKyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZ2V0VW5pZm9ybSIsICJ1bmhhbmRsZWQgdHlw
ZSIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgc3dp
dGNoICh1bmlmb3JtTG9jYXRpb24tPnR5cGUoKSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9JTlQ7CisgICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF9W
RUMyOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURf
SU5UOworICAgICAgICAgICAgbGVuZ3RoID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlRfVkVDMzoKKyAgICAgICAgICAg
IGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVDsKKyAgICAgICAgICAg
IGxlbmd0aCA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6VU5TSUdORURfSU5UX1ZFQzQ6CisgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBo
aWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CisgICAgICAgICAgICBsZW5ndGggPSA0OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUX01B
VDJ4MzoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOwor
ICAgICAgICAgICAgbGVuZ3RoID0gNjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQyeDQ6CisgICAgICAgICAgICBiYXNlVHlwZSA9
IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDg7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfTUFU
M3gyOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7Cisg
ICAgICAgICAgICBsZW5ndGggPSA2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUX01BVDN4NDoKKyAgICAgICAgICAgIGJhc2VUeXBlID0g
R3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOworICAgICAgICAgICAgbGVuZ3RoID0gMTI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfTUFU
NHgyOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7Cisg
ICAgICAgICAgICBsZW5ndGggPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUX01BVDR4MzoKKyAgICAgICAgICAgIGJhc2VUeXBlID0g
R3JhcGhpY3NDb250ZXh0R0w6OkZMT0FUOworICAgICAgICAgICAgbGVuZ3RoID0gMTI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8z
RDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRF9BUlJBWToKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6U0FNUExFUl8yRF9TSEFET1c6CisgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfQ1VCRV9TSEFET1c6CisgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgorICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpJTlRfU0FNUExFUl8yRDoKKyAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRHTDo6SU5UX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRHTDo6SU5UX1NBTVBMRVJfM0Q6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6
OklOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpV
TlNJR05FRF9JTlRfU0FNUExFUl8yRDoKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRToKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgICAgICAgYmFzZVR5cGUg
PSBHcmFwaGljc0NvbnRleHRHTDo6SU5UOworICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gQ2FuJ3QgaGFu
ZGxlIHRoaXMgdHlwZQorICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsICJnZXRVbmlmb3JtIiwgInVuaGFuZGxlZCB0eXBlIik7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQogICAgIH0KICAgICBzd2l0Y2gg
KGJhc2VUeXBlKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ6IHsKQEAgLTM0
MzAsNiArMzQ5NCwxMyBAQCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRV
bmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgV2ViRwogICAgICAgICAgICAgcmV0
dXJuIHZhbHVlWzBdOwogICAgICAgICByZXR1cm4gSW50MzJBcnJheTo6dHJ5Q3JlYXRlKHZhbHVl
LCBsZW5ndGgpOwogICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9J
TlQ6IHsKKyAgICAgICAgR0NHTHVpbnQgdmFsdWVbNF0gPSB7MH07CisgICAgICAgIG1fY29udGV4
dC0+Z2V0VW5pZm9ybXVpdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7
CisgICAgICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsK
KyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5Ojp0cnlDcmVhdGUodmFsdWUsIGxlbmd0aCk7Cisg
ICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkJPT0w6IHsKICAgICAgICAgR0NHTGlu
dCB2YWx1ZVs0XSA9IHswfTsKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVk
KQpAQCAtNTYxNiw3ICs1Njg3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1
bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFmdiIs
IGxvY2F0aW9uLCB2LCAxKSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWZ2IiwgbG9jYXRpb24sIHYsIDEsIDAs
IHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0x
ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCksIHYuZGF0YSgpKTsKQEAgLTU2MjQs
NyArNTY5NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMmZ2IiwgbG9jYXRpb24s
IHYsIDIpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgdiwgMiwgMCwgdi5sZW5ndGgo
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDIsIHYuZGF0YSgpKTsKQEAgLTU2MzIsNyArNTcw
Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24s
IEZsb2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIHYsIDMp
KQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBh
cmFtZXRlcnMoInVuaWZvcm0zZnYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5sZW5ndGgoKSkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9j
YXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKQEAgLTU2NDAsNyArNTcxMSw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNmdihjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0
MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRpb24sIHYsIDQpKQorICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoInVuaWZvcm00ZnYiLCBsb2NhdGlvbiwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0YSgpKTsKQEAgLTU2NDgsNyArNTcxOSw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRmdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYm
IHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAxKSkKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMWl2IiwgbG9jYXRpb24sIHYsIDEsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGRhdGEgPSB2LmRhdGEoKTsKQEAgLTU2NjksNyArNTc0MCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFpdihjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybTJpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCYm
IHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAyKSkKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlm
b3JtMml2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVu
Z3RoKCkgLyAyLCB2LmRhdGEoKSk7CkBAIC01Njc3LDcgKzU3NDgsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXYo
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QmJiB2KQogewot
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFt
ZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMykpCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTNpdiIs
IGxvY2F0aW9uLCB2LCAzLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8g
Mywgdi5kYXRhKCkpOwpAQCAtNTY4NSw3ICs1NzU2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAo
aXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1
bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2NhdGlv
biwgdiwgNCwgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4
dC0+dW5pZm9ybTRpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDQsIHYuZGF0
YSgpKTsKQEAgLTU2OTMsMjEgKzU3NjQsMjEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtNGl2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9h
dDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDJmdiIsIGxvY2F0aW9u
LCB0cmFuc3Bvc2UsIHYsIDQpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2LCA0LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5s
ZW5ndGgoKSAvIDQsIHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgzZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdikKIHsK
LSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRy
aXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4M2Z2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwg
OSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2Us
IHYsIDksIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZXh0LT51
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gOSwgdHJh
bnNwb3NlLCB2LmRhdGEoKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXg0ZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNikpCisgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVy
cygidW5pZm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDE2LCAwLCB2Lmxl
bmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDE2LCB0cmFuc3Bvc2UsIHYuZGF0
YSgpKTsKIH0KQEAgLTY3NzUsMjcgKzY4NDYsMzIgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2YWxpZGF0ZUJsZW5kRnVuY0ZhY3RvcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdD
R0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3Jj
TGVuZ3RoKQoreworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1
bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWly
ZWRNaW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgY29uc3QgSW50
MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICByZXR1cm4gdmFsaWRhdGVVbmlmb3JtTWF0cml4
UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwgdi5kYXRhKCksIHYubGVu
Z3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7CisgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJp
eFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxl
bmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwgc3JjTGVuZ3RoKTsKIH0KIAotYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBjb25zdCBJbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUpCitib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIGNvbnN0IFVpbnQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIHJldHVybiB2YWxpZGF0
ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2
LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXplKTsKKyAgICByZXR1cm4gdmFsaWRh
dGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBmYWxzZSwg
di5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5n
dGgpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9y
bVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24sIHZvaWQqIHYsIEdDR0xzaXplaSBzaXplLCBHQ0dMc2l6ZWkgcmVx
dWlyZWRNaW5TaXplKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVVu
aWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25O
YW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYsIHNpemUsIHJlcXVpcmVkTWluU2l6ZSk7CisgICAgcmV0
dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlv
biwgZmFsc2UsIHYsIHNpemUsIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgp
OwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1h
dHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQz
Mkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJl
ZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9j
YXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7
CisgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1l
LCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5T
aXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVV
bmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7CiAgICAgaWYgKCFsb2NhdGlv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjgwNywxMSArNjg4MywyMyBAQCBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMo
Y29uc3QgY2hhciogZnVuYwogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gYXJyYXkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAodHJhbnNwb3NlKSB7CisgICAgaWYgKHRyYW5z
cG9zZSAmJiAhaXNXZWJHTDIoKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAidHJhbnNwb3NlIG5vdCBG
QUxTRSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChzaXplIDwgcmVx
dWlyZWRNaW5TaXplIHx8IChzaXplICUgcmVxdWlyZWRNaW5TaXplKSkgeworICAgIGlmIChzcmNP
ZmZzZXQgPj0gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+KHNpemUpKSB7CisgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUs
ICJpbnZhbGlkIHNyY09mZnNldCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IEdDR0xzaXplaSBhY3R1YWxTaXplID0gc2l6ZSAtIHNyY09mZnNldDsKKyAgICBpZiAoc3JjTGVu
Z3RoID4gMCkgeworICAgICAgICBpZiAoc3JjTGVuZ3RoID4gc3RhdGljX2Nhc3Q8R0NHTHVpbnQ+
KGFjdHVhbFNpemUpKSB7CisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZzZXQg
KyBzcmNMZW5ndGgiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBhY3R1YWxTaXplID0gc3JjTGVuZ3RoOworICAgIH0KKyAgICBpZiAoYWN0dWFsU2l6ZSA8
IHJlcXVpcmVkTWluU2l6ZSB8fCAoYWN0dWFsU2l6ZSAlIHJlcXVpcmVkTWluU2l6ZSkpIHsKICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc2l6ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCmluZGV4IGRkZjRkODc4YTI2ODdjYjg0MDlhMDlhZDcwMDgwY2ZjYjFh
N2M1MTUuLjY2MWNjNzZlZGRlZjQzNGQ4ZGQ2ZDMwOGQ4MmMwODZkMDJjZDg2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKQEAgLTMwMSw2ICszMDEsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBGbG9hdDMyTGlz
dCA9IFR5cGVkTGlzdDxGbG9hdDMyQXJyYXksIGZsb2F0PjsKICAgICB1c2luZyBJbnQzMkxpc3Qg
PSBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50PjsKKyAgICB1c2luZyBVaW50MzJMaXN0ID0gVHlw
ZWRMaXN0PFVpbnQzMkFycmF5LCB1aW50MzJfdD47CiAKICAgICB2b2lkIHVuaWZvcm0xZihjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xmbG9hdCB4KTsKICAgICB2b2lkIHVuaWZvcm0y
Zihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSk7
CkBAIC05NDksMTEgKzk1MCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHZhbGlk
YXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xlbnVtKSA9IDA7CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgaW5wdXQgcGFyYW1ldGVycyBmb3Ig
dW5pZm9ybSBmdW5jdGlvbnMuCi0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25z
dCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSBtb2QpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgY29uc3QgSW50MzJMaXN0JiwgR0NHTHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxp
ZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCB2b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgbW9kKTsKLSAg
ICBib29sIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgbW9kKTsKLSAgICBib29sIHZhbGlkYXRl
VW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qgdm9pZCos
IEdDR0xzaXplaSwgR0NHTHNpemVpIG1vZCk7CisgICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJh
bWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICBib29sIHZhbGlkYXRlVW5p
Zm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICBib29sIHZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IFVpbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRN
aW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9v
bCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCB2b2lkKiwgR0NHTHNpemVpLCBHQ0dMc2l6ZWkgcmVx
dWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7Cisg
ICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEZsb2F0MzJMaXN0JiwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiwgR0NH
THNpemVpLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdD
R0x1aW50IHNyY0xlbmd0aCk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUg
cGFyYW1ldGVycyBmb3IgYnVmZmVyRGF0YS4KICAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgYm91
bmQgYnVmZmVyIHRvIHRhcmdldCwgb3IgMCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdM
LmgKaW5kZXggM2YzZTEyMmRiMzgyYzRiZjRiNzAxYmQ5Y2YzYzJhNDFlZWVhZjY5NC4uY2ExZDg4
NTAxNjY5OWVmZjNiNTYzMDQ5OGY4ODk5MzY5OTQ0ZGIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0xMDIzLDYg
KzEwMjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gZ2V0VW5pZm9ybQogICAgIHZpcnR1YWwgdm9pZCBn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMZmxvYXQqIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpID0gMDsKIAogICAgIHZpcnR1
YWwgR0NHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgU3Ry
aW5nJiBuYW1lKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXgg
NDc1YzQ5OTBkMDMyMzEzZDczMDIxNDUwODA5MzA4MDQ3NzM2MzI1NS4uYWYwNjc1ZDNjNzdlYzQw
OTQyZWRkOTg2ZDMzMzZmZGUwMGUyNzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKQEAgLTE3MDksNiArMTcwOSwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvYwogICAg
IGdsOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOworfQorCiBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwpAQCAtMjI4NiwxMjYgKzIyOTIsOTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGwKIAogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RnJh
Z0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKG5hbWUp
OwotCi0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJu
IGdsOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWkoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTHVpbnQgdjApCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odjApOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlm
b3JtMXVpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQog
ewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAg
ICBVTlVTRURfUEFSQU0odjEpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpV
bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odjApOwotICAgIFVOVVNFRF9QQVJBTSh2MSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHYyKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTN1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVu
aWZvcm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dM
dWludCB2MiwgR0NHTHVpbnQgdjMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBVTlVTRURfUEFSQU0odjApOwotICAgIFVOVVNFRF9QQVJBTSh2MSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHYyKTsKLSAgICBVTlVTRURfUEFSQU0odjMpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIGdsOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24s
IGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
TGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTF1aXYo
bG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdD
R0x1aW50KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTJ1aXYobG9jYXRpb24s
IHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBk
YXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIHNyY0xlbmd0
aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0x1aW50KiBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSAr
IHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1N
YXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFu
c3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp1bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHNy
Y0xlbmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3Ro
KTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDJ4NGZ2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZv
cm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dM
ZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIGdsOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3Nl
LCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNy
Y0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0o
c3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQpAQCAtMjcwNCw5MyArMjY3Niw2OCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgZ2w6OlVuaWZvcm0xZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNy
Y09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0yZnYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBnbDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlm
b3JtM2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xl
bmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm00ZnYobG9j
YXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGlu
dCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0xaXYobG9jYXRpb24sIHNyY0xl
bmd0aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0yaXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSAr
IHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0z
aXYoR0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgZ2w6OlVuaWZvcm0zaXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm00aXYoR0NHTGludCBs
b2NhdGlvbiwgY29uc3QgR0NHTGludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWlu
dCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURf
UEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZv
cm00aXYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRh
dGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNM
ZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEs
IEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9Q
QVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09m
ZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IGdsOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0
YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggYTNkNjViMzg4M2UyZjE4OTQw
Y2VhMTk1ZDVkZTlhZThmNWRlNTVhZS4uNmFiNDcwYThjM2Y4NDhiY2UzODg5MjA4ZWUwMGIwMmEz
NTQxMDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTI5NCw2ICsy
OTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
ZmxvYXQqIHZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQqIHZhbHVlKSBmaW5hbDsKKyAg
ICB2b2lkIGdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCogdmFsdWUpIGZpbmFsOwogICAgIEdDR0xpbnQgZ2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWw7CiAgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUsIEdD
R0xmbG9hdCogdmFsdWUpIGZpbmFsOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBhMTY0ODQ2ZWVk
YTZlOWY3YTI0Y2Y4MjcxYzJkMTI1Nzc4MGVhZjI3Li4zODc5NGE5OGQzZDEwMzE4M2MxNmFhZWM4
YmNmNzNiZTU1MDNhZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvbW1vbi5jcHAKQEAgLTE4MjIsNiArMTgyMiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxv
YwogICAgIDo6Z2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAor
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50KiB2YWx1ZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBV
TlVTRURfUEFSQU0odmFsdWUpOworfQorCiBHQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWlu
LWR5bmFtaWMtbG9vcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZTIvZ2xzbDMvdW5hcnktbWludXMtb3BlcmF0b3ItaW4tZHluYW1pYy1sb29wLWV4cGVj
dGVkLnR4dAppbmRleCA1M2Y2MjkwNTUyN2RjZWIwODZhNzE0NDBmODQzZmI4ODFiM2RjNzQzLi5h
NzA2OGVkZThmZWU5ODM0ZjAyMzRlYTJkMTMwZDFkYjEzMTVmMGE2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvZ2xzbDMvdW5hcnktbWludXMtb3BlcmF0
b3ItaW4tZHluYW1pYy1sb29wLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZTIvZ2xzbDMvdW5hcnktbWludXMtb3BlcmF0b3ItaW4tZHluYW1pYy1s
b29wLWV4cGVjdGVkLnR4dApAQCAtMSwxMiArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2Vi
R0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJ
TC4KIAogVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2Uy
L2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWluLWR5bmFtaWMtbG9vcC5odG1sCi1bIDE6IFBB
U1MgXSBzcXVhcmUgc2hvdWxkIGJlIGdyZWVuCi1bIDI6IEZBSUwgXSBzcXVhcmUgc2hvdWxkIGJl
IGdyZWVuIGF0ICgxMzgsIDApIGV4cGVjdGVkOiAwLDI1NSwwLDI1NSB3YXMgMjU1LDAsMCwyNTUK
LVsgMzogUEFTUyBdIHNxdWFyZSBzaG91bGQgYmUgZ3JlZW4KLVsgNDogRkFJTCBdIHNxdWFyZSBz
aG91bGQgYmUgZ3JlZW4gYXQgKDQxNCwgMCkgZXhwZWN0ZWQ6IDAsMjU1LDAsMjU1IHdhcyAyNTUs
MCwwLDI1NQotWyA1OiBQQVNTIF0gc3F1YXJlIHNob3VsZCBiZSBncmVlbgotWyA2OiBGQUlMIF0g
c3F1YXJlIHNob3VsZCBiZSBncmVlbiBhdCAoNjkwLCAwKSBleHBlY3RlZDogMCwyNTUsMCwyNTUg
d2FzIDI1NSwwLDAsMjU1Ci1bIDc6IFBBU1MgXSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
WyBGQUlMIF0gMyBmYWlsdXJlcyByZXBvcnRlZAorWyBQQVNTIF0gQWxsIHRlc3RzIHBhc3NlZAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcHJvZ3Jh
bXMvZ2wtZ2V0LWZyYWctZGF0YS1sb2NhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcHJvZ3JhbXMvZ2wtZ2V0LWZyYWctZGF0YS1sb2NhdGlv
bi1leHBlY3RlZC50eHQKaW5kZXggMWEwMDY1MmVhZWUzMTljYjY5N2Y3MDBkNTNlYWFjNTQzZjlm
NzJkMi4uMDYwODE2MzRiY2ZhZmJmYTI4NjU2MTkyYTBiMThkN2Q1NzNjNTE2NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Byb2dyYW1zL2dsLWdldC1m
cmFnLWRhdGEtbG9jYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi9wcm9ncmFtcy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMSwxMSArMSw1IEBACiBUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBs
aXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVz
dDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UyL3Byb2dyYW1z
L2dsLWdldC1mcmFnLWRhdGEtbG9jYXRpb24uaHRtbAotWyAxOiBQQVNTIF0gV2ViR0wgY29udGV4
dCBleGlzdHMKLVsgMjogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJS
T1IgOiBObyBHTCBlcnJvciBmcm9tIHNldCB1cAotWyAzOiBGQUlMIF0gRmFpbCB0byBxdWVyeSBz
Y2FsYXIgb3V0cHV0IHZhcmlhYmxlIGxvY2F0aW9ucywgZXhwZWN0ZWQ6IGZyYWdDb2xvcjAtPjIs
IGZyYWdDb2xvcjEtPjAsIGdvdDogZnJhZ0NvbG9yMC0+MCwgZnJhZ0NvbG9yMS0+MAotWyA0OiBG
QUlMIF0gRmFpbCB0byBxdWVyeSBzY2FsYXIgb3V0cHV0IHZhcmlhYmxlIGxvY2F0aW9ucywgZXhw
ZWN0ZWQ6IGZyYWdDb2xvci0+MCwgZnJhZ0NvbG9yWzBdLT4wLCBmcmFnQ29sb3JbMV0tPjEsIGdv
dDogZnJhZ0NvbG9yLT4wLCBmcmFnQ29sb3JbMF0tPjAsIGZyYWdDb2xvclsxXS0+MAotWyA1OiBQ
QVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IE5vIEdMIGVycm9y
IGZyb20gdGVzdGluZwotWyA2OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsg
RkFJTCBdIDIgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2ds
LW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CmluZGV4
IDE4MWRiN2I5MjRlYTI0YzRjZmJkYTkyZDBiZWZhMWE4NDlhMTgxNWMuLmJlM2JlMTdjNDhiYzE0
YzZmYmY5NjE2ZDExNmYxZDgwOTcxYjdhYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmds
LzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2Jq
ZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQKQEAgLTI0MywyNiArMjQzLDI2IEBAIFRlc3Q6IC4u
Ly4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmpl
Y3QtZ2V0LWNhbGxzLmh0CiBbIDIzOTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IgOgogWyAyNDA6IFBBU1MgXSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVpbnRQ
cm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQogWyAyNDE6IFBBU1MgXSBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKLVsgMjQyOiBGQUlMIF0gZ2wuZ2V0VW5pZm9y
bSh1aW50UHJvZ3JhbSwgdXZhbExvYykgc2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2Fz
IG51bGwgKG9mIHR5cGUgb2JqZWN0KS4KLVsgMjQzOiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybSh1aW50
UHJvZ3JhbSwgdXZhbDJMb2MpIHNob3VsZCBiZSAyLDMuIFdhcyBudWxsLgotWyAyNDQ6IEZBSUwg
XSBnbC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsM0xvYykgc2hvdWxkIGJlIDQsNSw2LiBX
YXMgbnVsbC4KLVsgMjQ1OiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDRM
b2MpIHNob3VsZCBiZSA3LDgsOSwxMC4gV2FzIG51bGwuCi1bIDI0NjogRkFJTCBdIGdldEVycm9y
IGV4cGVjdGVkOiBOT19FUlJPUi4gV2FzIElOVkFMSURfVkFMVUUgOgorWyAyNDI6IFBBU1MgXSBn
bC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsTG9jKSBpcyAxCitbIDI0MzogUEFTUyBdIGds
LmdldFVuaWZvcm0odWludFByb2dyYW0sIHV2YWwyTG9jKSBpcyBbMiwgM10KK1sgMjQ0OiBQQVNT
IF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDNMb2MpIGlzIFs0LCA1LCA2XQorWyAy
NDU6IFBBU1MgXSBnbC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsNExvYykgaXMgWzcsIDgs
IDksIDEwXQorWyAyNDY6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDoKIFsgMjQ3OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6CiBbIDI0ODogUEFTUyBdIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIobWF0Rm9yV2ViR0wyUHJv
Z3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKIFsgMjQ5OiBQQVNTIF0gZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6Ci1bIDI1MDogRkFJTCBdIGdsLmdldFVuaWZvcm0o
bWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDJ4M0xvYykgc2hvdWxkIGJlIDEsMiwzLDQsNSw2LiBX
YXMgbnVsbC4KLVsgMjUxOiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFt
LCBtdmFsMng0TG9jKSBzaG91bGQgYmUgNyw4LDksMTAsMTEsMTIsMTMsMTQuIFdhcyBudWxsLgot
WyAyNTI6IEZBSUwgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDJM
b2MpIHNob3VsZCBiZSAxNSwxNiwxNywxOCwxOSwyMC4gV2FzIG51bGwuCi1bIDI1MzogRkFJTCBd
IGdsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDN4NExvYykgc2hvdWxkIGJl
IDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLiBXYXMgbnVsbC4KLVsgMjU0OiBG
QUlMIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsNHgyTG9jKSBzaG91
bGQgYmUgMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAuIFdhcyBudWxsLgotWyAyNTU6IEZBSUwgXSBn
bC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWw0eDNMb2MpIHNob3VsZCBiZSA0
MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Mi4gV2FzIG51bGwuCi1bIDI1NjogRkFJ
TCBdIGdldEVycm9yIGV4cGVjdGVkOiBOT19FUlJPUi4gV2FzIElOVkFMSURfVkFMVUUgOgorWyAy
NTA6IFBBU1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwyeDNMb2Mp
IGlzIFsxLCAyLCAzLCA0LCA1LCA2XQorWyAyNTE6IFBBU1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZv
cldlYkdMMlByb2dyYW0sIG12YWwyeDRMb2MpIGlzIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywg
MTRdCitbIDI1MjogUEFTUyBdIGdsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZh
bDN4MkxvYykgaXMgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdCitbIDI1MzogUEFTUyBdIGdsLmdl
dFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDN4NExvYykgaXMgWzIxLCAyMiwgMjMs
IDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzJdCitbIDI1NDogUEFTUyBdIGdsLmdl
dFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4MkxvYykgaXMgWzMzLCAzNCwgMzUs
IDM2LCAzNywgMzgsIDM5LCA0MF0KK1sgMjU1OiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JX
ZWJHTDJQcm9ncmFtLCBtdmFsNHgzTG9jKSBpcyBbNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcs
IDQ4LCA0OSwgNTAsIDUxLCA1Ml0KK1sgMjU2OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6CiBbIDI1NzogUEFTUyBdIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIo
c2FtcGxlckZvcldlYkdMMlByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCiBbIDI1ODog
UEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgotWyAyNTk6IEZB
SUwgXSBnbC5nZXRVbmlmb3JtKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBzM0RWYWxMb2MpIHNo
b3VsZCBiZSAwIChvZiB0eXBlIG51bWJlcikuIFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCi1b
IDI2MDogRkFJTCBdIGdsLmdldFVuaWZvcm0oc2FtcGxlckZvcldlYkdMMlByb2dyYW0sIHMyREFy
cmF5VmFsTG9jKSBzaG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgbnVsbCAob2YgdHlw
ZSBvYmplY3QpLgotWyAyNjE6IEZBSUwgXSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdh
cyBJTlZBTElEX1ZBTFVFIDoKK1sgMjU5OiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybShzYW1wbGVyRm9y
V2ViR0wyUHJvZ3JhbSwgczNEVmFsTG9jKSBpcyAwCitbIDI2MDogUEFTUyBdIGdsLmdldFVuaWZv
cm0oc2FtcGxlckZvcldlYkdMMlByb2dyYW0sIHMyREFycmF5VmFsTG9jKSBpcyAxCitbIDI2MTog
UEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgogWyAyNjI6IFBB
U1MgXSBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJf
QklORElORykgaXMgYnVmZmVyCiBbIDI2MzogUEFTUyBdIGdsLmdldFZlcnRleEF0dHJpYigxLCBn
bC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIHRydWUKIFsgMjY0OiBQQVNTIF0gZ2wu
Z2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSkgaXMgNApAQCAt
MzExLDUgKzMxMSw1IEBAIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0CiBbIDMwNzogUEFTUyBdIGdl
dFNhbXBsZXJQYXJhbWV0ZXIgY29ycmVjdGx5IGhhbmRsZWQgaW52YWxpZCBwbmFtZSBlbnVtcwog
WyAzMDg6IEZBSUwgXSBnbC5nZXRTeW5jUGFyYW1ldGVyKHN5bmMsIGdsLk9CSkVDVF9UWVBFKSBz
aG91bGQgYmUgMzcxNDIuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdz
eW5jJykgdG8gV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5nZXRTeW5jUGFyYW1ldGVyIG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgV2ViR0xTeW5jCiBbIDMwOTogRkFJTCBdIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBzaG91bGQgYmUgdHJ1ZSAob2YgdHlwZSBib29sZWFuKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlw
ZSB1bmRlZmluZWQpLgotWyBGQUlMIF0gNTQgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgRkFJTCBdIDM5
IGZhaWx1cmVzIHJlcG9ydGVkCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404195</attachid>
            <date>2020-07-13 17:38:40 -0700</date>
            <delta_ts>2020-07-14 12:59:06 -0700</delta_ts>
            <desc>review feedback</desc>
            <filename>bug-214116-20200713173839.patch</filename>
            <type>text/plain</type>
            <size>63301</size>
            <attacher name="James Darpinian">jdarpinian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc1M2JlZWExNWQxZjk0
NDQ1NTgwZWFlMDBiZDg4ZDBmZGM2YzYyNy4uMDM4ZmE1OGI1ZjAyZDZhNWJmNGMxZDFiYThhM2I2
MTc4MWE2ODJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTA3LTA4ICBKYW1l
cyBEYXJwaW5pYW4gIDxqZGFycGluaWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgdW5pZm9ybSogYW5kIGdldFVuaWZvcm0gZm9yIFdlYkdMIDIgdHlwZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDExNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3NlcyBhbGwgcmVsZXZhbnQg
V2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0eDNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJp
dik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlm
b3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zdWl2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNHVpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M3gyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZv
cm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTNpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDRmdik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpnZXRVbmlmb3JtdWl2KToKKwogMjAyMC0wNy0wOSAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICAiRVNQTiBGYW50YXN5IFNwb3J0cyIgZG9l
cyBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHMsIG9ubHkgdG91Y2ggZXZlbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDA2NjE0YTcwYzUxYTlmNmY5ZDk2MDhkM2M1ZDBmMzkyNDFjNTQ3YWUuLjQ4YzM1M2Rl
MjVkZDY2ZDg3ZDZiNTM2NGMxODU3YjIzYzk5YWQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMjcxLDgw
ICsxMjcxLDEwOSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNvbXByZXNzZWRUZXhT
dWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMaW50LAogICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChBcnJheUJ1ZmZlclZp
ZXcpIik7CiB9CiAKLUdDR0xpbnQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhZ0RhdGFM
b2NhdGlvbihXZWJHTFByb2dyYW0mLCBjb25zdCBTdHJpbmcmKQorR0NHTGludCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRF
RCBdXSBnZXRGcmFnRGF0YUxvY2F0aW9uKCkiKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRGcmFnRGF0
YUxvY2F0aW9uIiwgJnByb2dyYW0pKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLm9iamVjdCgpLCBuYW1lKTsKIH0K
IAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMXVpKFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0x
dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKIHsKLSAgICBM
T0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTF1aSgpIik7CisgICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oInVu
aWZvcm0xdWkiLCBsb2NhdGlvbikpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVu
aWZvcm0xdWkobG9jYXRpb24tPmxvY2F0aW9uKCksIHYwKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTHVpbnQs
IEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMnVpKFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxKQogewot
ICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtMnVpKCkiKTsKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlv
bigidW5pZm9ybTJ1aSIsIGxvY2F0aW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4
dC0+dW5pZm9ybTJ1aShsb2NhdGlvbi0+bG9jYXRpb24oKSwgdjAsIHYxKTsKIH0KIAotdm9pZCBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM3VpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
R0NHTHVpbnQsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTN1aShXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElN
UExFTUVOVEVEIF1dIHVuaWZvcm0zdWkoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKCJ1bmlmb3JtM3VpIiwgbG9jYXRpb24p
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLT5s
b2NhdGlvbigpLCB2MCwgdjEsIHYyKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNHVpKFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTHVpbnQsIEdDR0x1aW50LCBH
Q0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00
dWkoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQg
djEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1Qg
SU1QTEVNRU5URUQgXV0gdW5pZm9ybTR1aSgpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oInVuaWZvcm00dWkiLCBsb2NhdGlv
bikpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIFVpbnQzMkxpc3QmJiwg
R0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
MXVpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIFVpbnQzMkxpc3QmJiB2YWx1ZSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdM
LCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm0xdWl2KCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
MXVpdiIsIGxvY2F0aW9uLCB2YWx1ZSwgMSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbi0+bG9jYXRpb24o
KSwgdmFsdWUuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2YWx1
ZS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0ydWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgVWludDMyTGlzdCYmLCBHQ0dM
dWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0ydWl2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTJ1aXYoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0ydWl2
IiwgbG9jYXRpb24sIHZhbHVlLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDIpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0zdWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgVWludDMyTGlzdCYmLCBHQ0dM
dWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zdWl2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTN1aXYoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zdWl2
IiwgbG9jYXRpb24sIHZhbHVlLCAzLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDMpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm00dWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgVWludDMyTGlzdCYmLCBHQ0dM
dWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00dWl2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgVWludDMyTGlzdCYmIHZhbHVlLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJb
WyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybTR1aXYoKSIpOworICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00dWl2
IiwgbG9jYXRpb24sIHZhbHVlLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2
YWx1ZS5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHZhbHVlLmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDQpOwogfQogCi12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm1NYXRyaXgyeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFu
LCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NHTHVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDJ4M2Z2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3Jt
TWF0cml4MngzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA2LCBzcmNPZmZzZXQsIHNyY0xl
bmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCBz
cmNMZW5ndGggPyBzcmNMZW5ndGggOiAodi5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyA2KTsKIH0K
IAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQzMkxpc3QmJiwgR0NHTHVpbnQsIEdD
R0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7
Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXgzeDJm
digpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDN4MmZ2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgNiwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9jb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5z
cG9zZSwgdi5kYXRhKCksIHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKHYubGVu
Z3RoKCkgLSBzcmNPZmZzZXQpIC8gNik7CiB9CiAKLXZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xlYW4s
IEZsb2F0MzJMaXN0JiYsIEdDR0x1aW50LCBHQ0dMdWludCkKK3ZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYsIEdDR0x1aW50IHNyY09m
ZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBM
RU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4Mng0ZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1N
YXRyaXgyeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDgsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDgpOwogfQog
Ci12b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdihXZWJHTFVu
aWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuLCBGbG9hdDMyTGlzdCYmLCBHQ0dMdWludCwgR0NH
THVpbnQpCit2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QmJiB2LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsK
LSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDR4MmZ2
KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NHgyZnYiLCBsb2NhdGlvbiwgdHJhbnNw
b3NlLCB2LCA4LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNw
b3NlLCB2LmRhdGEoKSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAodi5sZW5n
dGgoKSAtIHNyY09mZnNldCkgLyA4KTsKIH0KIAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwg
RmxvYXQzMkxpc3QmJiwgR0NHTHVpbnQsIEdDR0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExF
TUVOVEVEIF1dIHVuaWZvcm1NYXRyaXgzeDRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDN4NGZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgMTIsIHNyY09mZnNldCwgc3JjTGVu
Z3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2
KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIHNy
Y0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxlbmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEyKTsKIH0K
IAotdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoV2ViR0xV
bmlmb3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiwgRmxvYXQzMkxpc3QmJiwgR0NHTHVpbnQsIEdD
R0x1aW50KQordm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJMaXN0JiYgdiwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7
Ci0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXg0eDNm
digpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlm
b3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1hdHJpeDR4M2Z2IiwgbG9jYXRpb24sIHRyYW5z
cG9zZSwgdiwgMTIsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFu
c3Bvc2UsIHYuZGF0YSgpLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6ICh2Lmxl
bmd0aCgpIC0gc3JjT2Zmc2V0KSAvIDEyKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xpbnQsIEdDR0xpbnQs
IEdDR0xpbnQpCkBAIC0yOTgxLDExNSArMzAxMCw3OSBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LAogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVE
IF1dIHVuaWZvcm0xZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgZGF0YSwg
MSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0
LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkpOwog
fQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5V
U0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9UIElNUExFTUVOVEVE
IF1dIHVuaWZvcm0yZnYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwg
IXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0yZnYiLCBsb2NhdGlvbiwgZGF0YSwg
Miwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0
LT51bmlmb3JtMmZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEoKSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNldCkgLyAy
KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNl
dCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJTVBMRU1F
TlRFRCBdXSB1bmlmb3JtM2Z2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygp
IHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2IiwgbG9jYXRpb24sIGRh
dGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
dGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCksIHNyY09m
ZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZzZXQp
IC8gMyk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNP
ZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gdW5pZm9ybTRmdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRmdiIsIGxvY2F0aW9u
LCBkYXRhLCA0LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zm
c2V0KSAvIDQpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNy
Y09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtMWl2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtMWl2IiwgbG9jYXRp
b24sIGRhdGEsIDEsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdMdWludCBzcmNP
ZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBOT1QgSU1Q
TEVNRU5URUQgXV0gdW5pZm9ybTJpdigpIik7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9u
LCBkYXRhLCAyLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2NvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24tPmxvY2F0aW9uKCksIGRhdGEuZGF0YSgpLCBz
cmNPZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zm
c2V0KSAvIDIpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYo
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNy
Y09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsK
LSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltbIE5PVCBJ
TVBMRU1FTlRFRCBdXSB1bmlmb3JtM2l2KCkiKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9jYXRp
b24sIGRhdGEsIDMsIHNyY09mZnNldCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgZGF0YS5kYXRhKCks
IHNyY09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNP
ZmZzZXQpIC8gMyk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRp
dihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQg
c3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sgTk9U
IElNUExFTUVOVEVEIF1dIHVuaWZvcm00aXYoKSIpOworICAgIGlmIChpc0NvbnRleHRMb3N0T3JQ
ZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm00aXYiLCBsb2Nh
dGlvbiwgZGF0YSwgNCwgc3JjT2Zmc2V0LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCBkYXRhLmRhdGEo
KSwgc3JjT2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNy
Y09mZnNldCkgLyA0KTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4MmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0xib29sZWFuIHRyYW5z
cG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKLQotICAgIExPRyhXZWJHTCwgIltb
IE5PVCBJTVBMRU1FTlRFRCBdXSB1bmlmb3JtTWF0cml4MmZ2KCkiKTsKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1
bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgZGF0YSwgMioyLCBzcmNPZmZz
ZXQsIHNyY0xlbmd0aCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHRyYW5zcG9zZSwgZGF0YS5kYXRhKCksIHNy
Y09mZnNldCwgc3JjTGVuZ3RoID8gc3JjTGVuZ3RoIDogKGRhdGEubGVuZ3RoKCkgLSBzcmNPZmZz
ZXQpIC8gKDIqMikpOwogfQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1N
YXRyaXgzZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5z
cG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZz
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOwotCi0gICAgTE9HKFdlYkdMLCAiW1sg
Tk9UIElNUExFTUVOVEVEIF1dIHVuaWZvcm1NYXRyaXgzZnYoKSIpOworICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVu
aWZvcm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCBkYXRhLCAzKjMsIHNyY09mZnNl
dCwgc3JjTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dC0+dW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbi0+bG9jYXRpb24oKSwgdHJhbnNwb3NlLCBkYXRhLmRhdGEoKSwgc3Jj
T2Zmc2V0LCBzcmNMZW5ndGggPyBzcmNMZW5ndGggOiAoZGF0YS5sZW5ndGgoKSAtIHNyY09mZnNl
dCkgLyAoMyozKSk7CiB9CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNw
b3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7Ci0KLSAgICBMT0coV2ViR0wsICJbWyBO
T1QgSU1QTEVNRU5URUQgXV0gdW5pZm9ybU1hdHJpeDRmdigpIik7CisgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5p
Zm9ybU1hdHJpeDRmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIGRhdGEsIDQqNCwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpKQorICAgICAgICByZXR1cm47CisgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB0cmFuc3Bvc2UsIGRhdGEuZGF0YSgpLCBzcmNP
ZmZzZXQsIHNyY0xlbmd0aCA/IHNyY0xlbmd0aCA6IChkYXRhLmxlbmd0aCgpIC0gc3JjT2Zmc2V0
KSAvICg0KjQpKTsKIH0KIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxz
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xpbnRwdHIgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRl
eCA1M2NlMDYyMDdjODU3OWYxNjlmMmI5NWQzNmJjZTVhNWM0ODRkYjZkLi4xNTYzYmNiNjVhNjNm
ZjlhNDc1MjI2NzZhYmMzOWJkOGY3NDllODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzQwNSw5
ICszNDA1LDczIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgIGxlbmd0aCA9IDE7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIENhbid0IGhhbmRsZSB0
aGlzIHR5cGUKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklO
VkFMSURfVkFMVUUsICJnZXRVbmlmb3JtIiwgInVuaGFuZGxlZCB0eXBlIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBpZiAoIWlzV2ViR0wyKCkpIHsKKyAgICAgICAgICAgIC8v
IENhbid0IGhhbmRsZSB0aGlzIHR5cGUuCisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldFVuaWZvcm0iLCAidW5oYW5kbGVk
IHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAg
IHN3aXRjaCAodW5pZm9ybUxvY2F0aW9uLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOgorICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGlj
c0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9J
TlRfVkVDMjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0lOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UX1ZFQzM6CisgICAgICAg
ICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9JTlQ7CisgICAgICAg
ICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OlVOU0lHTkVEX0lOVF9WRUM0OgorICAgICAgICAgICAgYmFzZVR5cGUgPSBH
cmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfSU5UOworICAgICAgICAgICAgbGVuZ3RoID0gNDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VF9NQVQyeDM6CisgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9B
VDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVRfTUFUMng0OgorICAgICAgICAgICAgYmFzZVR5
cGUgPSBHcmFwaGljc0NvbnRleHRHTDo6RkxPQVQ7CisgICAgICAgICAgICBsZW5ndGggPSA4Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDN4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gNjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQzeDQ6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
X01BVDR4MjoKKyAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FU
OworICAgICAgICAgICAgbGVuZ3RoID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVF9NQVQ0eDM6CisgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDEyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBM
RVJfM0Q6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfQVJSQVk6
CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlNBTVBMRVJfMkRfU0hBRE9XOgorICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSX0NVQkVfU0hBRE9XOgorICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpTQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6SU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0R0w6OklOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0R0w6OklOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMOjpJTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRH
TDo6VU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0R0w6OlVOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOgorICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dEdMOjpVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0R0w6OklOVDsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIENhbid0
IGhhbmRsZSB0aGlzIHR5cGUuCisgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImdldFVuaWZvcm0iLCAidW5oYW5kbGVkIHR5cGUi
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAgICAgfQogICAgIHN3
aXRjaCAoYmFzZVR5cGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVDogewpA
QCAtMzQzMCw2ICszNDk0LDEzIEBAIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJHCiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWVbMF07CiAgICAgICAgIHJldHVybiBJbnQzMkFycmF5Ojp0cnlDcmVhdGUo
dmFsdWUsIGxlbmd0aCk7CiAgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lH
TkVEX0lOVDogeworICAgICAgICBHQ0dMdWludCB2YWx1ZVs0XSA9IHswfTsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRVbmlmb3JtdWl2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZh
bHVlKTsKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVl
WzBdOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXk6OnRyeUNyZWF0ZSh2YWx1ZSwgbGVuZ3Ro
KTsKKyAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTDo6Qk9PTDogewogICAgICAgICBH
Q0dMaW50IHZhbHVlWzRdID0gezB9OwogICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBw
b3J0ZWQpCkBAIC01NTA1LDY4ICs1NTc2LDU0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHCiAg
ICAgdGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUsIDAsIHBhcmFtLCBmYWxzZSk7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCitib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uKQogewotICAgIGlmIChpc0Nv
bnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIWxvY2F0aW9uKQotICAgICAgICByZXR1cm47Ci0KKyAg
ICBpZiAoIWxvY2F0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGxvY2F0aW9u
LT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3JtMWYiLCAi
bG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJ
T04sIGZ1bmN0aW9uTmFtZSwgImxvY2F0aW9uIG5vdCBmb3IgY3VycmVudCBwcm9ncmFtIik7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTFmKGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oInVuaWZvcm0xZiIsIGxvY2F0
aW9uKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHgpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0yZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xmbG9h
dCB4LCBHQ0dMZmxvYXQgeSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8
ICFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFt
KCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3JtMmYiLCAibG9jYXRpb24g
bm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbigidW5pZm9ybTJmIiwgbG9jYXRpb24pKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRp
b24tPmxvY2F0aW9uKCksIHgsIHkpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0zZihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xm
bG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCiB7Ci0gICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oInVuaWZvcm0zZiIsIGxvY2F0aW9uKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJy
ZW50UHJvZ3JhbSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRH
TDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3JtM2YiLCAibG9jYXRpb24gbm90IGZvciBjdXJy
ZW50IHByb2dyYW0iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1fY29udGV4dC0+
dW5pZm9ybTNmKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlv
bikKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1M
b2NhdGlvbigidW5pZm9ybTRmIiwgbG9jYXRpb24pKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInVu
aWZvcm00ZiIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJlbnQgcHJvZ3JhbSIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24tPmxvY2F0
aW9uKCksIHgsIHksIHosIHcpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnVuaWZvcm0xaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xpbnQg
eCkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlv
bigidW5pZm9ybTFpIiwgbG9jYXRpb24pKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobG9j
YXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0gICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTiwgInVuaWZvcm0x
aSIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJlbnQgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgaWYgKChsb2NhdGlvbi0+dHlwZSgpID09IEdyYXBoaWNzQ29udGV4dEdM
OjpTQU1QTEVSXzJEIHx8IGxvY2F0aW9uLT50eXBlKCkgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlNB
TVBMRVJfQ1VCRSkgJiYgeCA+PSAoaW50KW1fdGV4dHVyZVVuaXRzLnNpemUoKSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgInVu
aWZvcm0xaSIsICJpbnZhbGlkIHRleHR1cmUgdW5pdCIpOwogICAgICAgICByZXR1cm47CkBAIC01
NTc3LDQ2ICs1NjM0LDMxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTFpKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMmkoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICFsb2NhdGlvbikKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbigidW5pZm9ybTJpIiwgbG9jYXRpb24pKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJl
bnRQcm9ncmFtKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX09QRVJBVElPTiwgInVuaWZvcm0yaSIsICJsb2NhdGlvbiBub3QgZm9yIGN1cnJl
bnQgcHJvZ3JhbSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgbV9jb250ZXh0LT51
bmlmb3JtMmkobG9jYXRpb24tPmxvY2F0aW9uKCksIHgsIHkpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaShjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCiB7Ci0gICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRpb24pCisgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oInVuaWZvcm0zaSIsIGxv
Y2F0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkg
IT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1bmlmb3JtM2kiLCAibG9jYXRpb24gbm90
IGZvciBjdXJyZW50IHByb2dyYW0iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIG1f
Y29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLT5sb2NhdGlvbigpLCB4LCB5LCB6KTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtNGkoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBH
Q0dMaW50IHcpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhbG9jYXRp
b24pCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
TG9jYXRpb24oInVuaWZvcm00aSIsIGxvY2F0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGxvY2F0aW9uLT5wcm9ncmFtKCkgIT0gbV9jdXJyZW50UHJvZ3JhbSkgewotICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJ1
bmlmb3JtNGkiLCAibG9jYXRpb24gbm90IGZvciBjdXJyZW50IHByb2dyYW0iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLT5sb2Nh
dGlvbigpLCB4LCB5LCB6LCB3KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMWZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQz
Mkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0xZnYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cygidW5pZm9ybTFmdiIsIGxvY2F0aW9uLCB2LCAxLCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLT5sb2NhdGlvbigp
LCB2Lmxlbmd0aCgpLCB2LmRhdGEoKSk7CkBAIC01NjI0LDcgKzU2NjYsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0y
ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYp
CiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycygidW5pZm9ybTJmdiIsIGxvY2F0aW9uLCB2LCAyKSkKKyAgICBpZiAoaXNDb250
ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3Jt
MmZ2IiwgbG9jYXRpb24sIHYsIDIsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3Ro
KCkgLyAyLCB2LmRhdGEoKSk7CkBAIC01NjMyLDcgKzU2NzQsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxv
Y2F0aW9uLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zZnYoY29u
c3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0g
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1l
dGVycygidW5pZm9ybTNmdiIsIGxvY2F0aW9uLCB2LCAzKSkKKyAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2Z2Iiwg
bG9jYXRpb24sIHYsIDMsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyAz
LCB2LmRhdGEoKSk7CkBAIC01NjQwLDcgKzU2ODIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm0zZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
LAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnYoY29uc3QgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYg
KGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygi
dW5pZm9ybTRmdiIsIGxvY2F0aW9uLCB2LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGZ2IiwgbG9jYXRp
b24sIHYsIDQsIDAsIHYubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRl
eHQtPnVuaWZvcm00ZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRh
dGEoKSk7CkBAIC01NjQ4LDcgKzU2OTAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm00ZnYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0x
aXYiLCBsb2NhdGlvbiwgdiwgMSkpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTFpdiIsIGxvY2F0aW9uLCB2LCAx
LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBkYXRhID0gdi5k
YXRhKCk7CkBAIC01NjY5LDcgKzU3MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnVuaWZvcm0xaXYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLAogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0yaXYoY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QmJiB2KQogewotICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0y
aXYiLCBsb2NhdGlvbiwgdiwgMikpCisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTJpdiIsIGxvY2F0aW9uLCB2LCAy
LCAwLCB2Lmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT51bmlm
b3JtMml2KGxvY2F0aW9uLT5sb2NhdGlvbigpLCB2Lmxlbmd0aCgpIC8gMiwgdi5kYXRhKCkpOwpA
QCAtNTY3Nyw3ICs1NzE5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtMml2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2l2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKCJ1bmlmb3JtM2l2IiwgbG9j
YXRpb24sIHYsIDMpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlk
YXRlVW5pZm9ybVBhcmFtZXRlcnMoInVuaWZvcm0zaXYiLCBsb2NhdGlvbiwgdiwgMywgMCwgdi5s
ZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpdihs
b2NhdGlvbi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDMsIHYuZGF0YSgpKTsKQEAgLTU2ODUs
NyArNTcyNyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTNpdihj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEludDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmco
KSB8fCAhdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycygidW5pZm9ybTRpdiIsIGxvY2F0aW9uLCB2
LCA0KSkKKyAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZv
cm1QYXJhbWV0ZXJzKCJ1bmlmb3JtNGl2IiwgbG9jYXRpb24sIHYsIDQsIDAsIHYubGVuZ3RoKCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24t
PmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB2LmRhdGEoKSk7CkBAIC01NjkzLDIxICs1NzM1
LDIxIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdihjb25zdCBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDJmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QmJiB2KQogewotICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFt
ZXRlcnMoInVuaWZvcm1NYXRyaXgyZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA0KSkKKyAg
ICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQ
YXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4MmZ2IiwgbG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgNCwg
MCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24tPmxvY2F0aW9uKCksIHYubGVuZ3RoKCkgLyA0LCB0cmFuc3Bvc2Us
IHYuZGF0YSgpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4M2Z2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCYmIHYpCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSB8fCAhdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycygidW5pZm9ybU1h
dHJpeDNmdiIsIGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIDkpKQorICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZv
cm1NYXRyaXgzZnYiLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCA5LCAwLCB2Lmxlbmd0aCgpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
bi0+bG9jYXRpb24oKSwgdi5sZW5ndGgoKSAvIDksIHRyYW5zcG9zZSwgdi5kYXRhKCkpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZs
b2F0MzJMaXN0JiYgdikKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICF2
YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKCJ1bmlmb3JtTWF0cml4NGZ2IiwgbG9jYXRp
b24sIHRyYW5zcG9zZSwgdiwgMTYpKQorICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoInVuaWZvcm1NYXRyaXg0ZnYiLCBs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LCAxNiwgMCwgdi5sZW5ndGgoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24tPmxvY2F0aW9uKCks
IHYubGVuZ3RoKCkgLyAxNiwgdHJhbnNwb3NlLCB2LmRhdGEoKSk7CiB9CkBAIC02Nzc1LDQzICs2
ODE3LDU2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1
bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBs
b2NhdGlvbiwgY29uc3QgRmxvYXQzMkxpc3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUp
Citib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRl
cnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24sIGNvbnN0IEZsb2F0MzJMaXN0JiB2LCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5TaXpl
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICByZXR1cm4g
dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhmdW5jdGlvbk5hbWUsIGxvY2F0aW9uLCBm
YWxzZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6ZSk7CisgICAgcmV0dXJu
IHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1lLCBsb2NhdGlvbiwg
ZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUsIHNyY09mZnNldCwg
c3JjTGVuZ3RoKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBjb25zdCBJbnQzMkxpc3QmIHYsIEdDR0xzaXplaSBy
ZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
VW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVu
aWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IEludDMyTGlzdCYgdiwgR0NHTHNpemVpIHJl
cXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7
Ci0gICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25OYW1l
LCBsb2NhdGlvbiwgZmFsc2UsIHYuZGF0YSgpLCB2Lmxlbmd0aCgpLCByZXF1aXJlZE1pblNpemUp
OworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFt
ZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRNaW5TaXpl
LCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6dmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNpemVp
IHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUpCitib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIGNvbnN0IFVpbnQzMkxp
c3QmIHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NH
THVpbnQgc3JjTGVuZ3RoKQogewotICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJh
bWV0ZXJzKGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LCBzaXplLCByZXF1aXJlZE1p
blNpemUpOworICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0
aW9uTmFtZSwgbG9jYXRpb24sIGZhbHNlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRN
aW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYgdiwgR0NHTHNpemVpIHJlcXVpcmVk
TWluU2l6ZSkKK2Jvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3Jt
UGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1
aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewot
ICAgIHJldHVybiB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJzKGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24sIHRyYW5zcG9zZSwgdi5kYXRhKCksIHYubGVuZ3RoKCksIHJlcXVpcmVkTWluU2l6
ZSk7CisgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25O
YW1lLCBsb2NhdGlvbiwgZmFsc2UsIHYsIHNpemUsIHJlcXVpcmVkTWluU2l6ZSwgc3JjT2Zmc2V0
LCBzcmNMZW5ndGgpOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3Qgdm9pZCogdiwgR0NHTHNpemVpIHNpemUsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUp
Citib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVW5pZm9ybU1hdHJpeFBh
cmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgRmxvYXQzMkxpc3Qm
IHYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNpemUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAobG9jYXRpb24tPnByb2dyYW0oKSAhPSBtX2N1cnJlbnRQcm9ncmFtKSB7Ci0g
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJB
VElPTiwgZnVuY3Rpb25OYW1lLCAibG9jYXRpb24gaXMgbm90IGZyb20gY3VycmVudCBwcm9ncmFt
Iik7CisgICAgcmV0dXJuIHZhbGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoZnVuY3Rpb25O
YW1lLCBsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LmRhdGEoKSwgdi5sZW5ndGgoKSwgcmVxdWlyZWRN
aW5TaXplLCBzcmNPZmZzZXQsIHNyY0xlbmd0aCk7Cit9CisKK2Jvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCB2b2lkKiB2LCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
Cit7CisgICAgaWYgKCF2YWxpZGF0ZVVuaWZvcm1Mb2NhdGlvbihmdW5jdGlvbk5hbWUsIGxvY2F0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICBpZiAoIXYpIHsKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1
bmN0aW9uTmFtZSwgIm5vIGFycmF5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgaWYgKHRyYW5zcG9zZSkgeworICAgIGlmICh0cmFuc3Bvc2UgJiYgIWlzV2ViR0wyKCkpIHsK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgInRyYW5zcG9zZSBub3QgRkFMU0UiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8IHJlcXVpcmVkTWluU2l6ZSB8fCAoc2l6ZSAl
IHJlcXVpcmVkTWluU2l6ZSkpIHsKKyAgICBpZiAoc3JjT2Zmc2V0ID49IHN0YXRpY19jYXN0PEdD
R0x1aW50PihzaXplKSkgeworICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBzcmNPZmZzZXQiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBHQ0dMc2l6ZWkgYWN0dWFsU2l6ZSA9
IHNpemUgLSBzcmNPZmZzZXQ7CisgICAgaWYgKHNyY0xlbmd0aCA+IDApIHsKKyAgICAgICAgaWYg
KHNyY0xlbmd0aCA+IHN0YXRpY19jYXN0PEdDR0x1aW50PihhY3R1YWxTaXplKSkgeworICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUs
IGZ1bmN0aW9uTmFtZSwgImludmFsaWQgc3JjT2Zmc2V0ICsgc3JjTGVuZ3RoIik7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYWN0dWFsU2l6ZSA9IHNyY0xl
bmd0aDsKKyAgICB9CisgICAgaWYgKGFjdHVhbFNpemUgPCByZXF1aXJlZE1pblNpemUgfHwgKGFj
dHVhbFNpemUgJSByZXF1aXJlZE1pblNpemUpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlk
IHNpemUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBk
ZGY0ZDg3OGEyNjg3Y2I4NDA5YTA5YWQ3MDA4MGNmY2IxYTdjNTE1Li4wNDA3OGE2ZDAzNzZiYzk0
ZTg4OTgwOTE2ZmVmZDI3ZTZhMTUzNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0zMDEsNiArMzAxLDcg
QEAgcHVibGljOgogCiAgICAgdXNpbmcgRmxvYXQzMkxpc3QgPSBUeXBlZExpc3Q8RmxvYXQzMkFy
cmF5LCBmbG9hdD47CiAgICAgdXNpbmcgSW50MzJMaXN0ID0gVHlwZWRMaXN0PEludDMyQXJyYXks
IGludD47CisgICAgdXNpbmcgVWludDMyTGlzdCA9IFR5cGVkTGlzdDxVaW50MzJBcnJheSwgdWlu
dDMyX3Q+OwogCiAgICAgdm9pZCB1bmlmb3JtMWYoY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24q
LCBHQ0dMZmxvYXQgeCk7CiAgICAgdm9pZCB1bmlmb3JtMmYoY29uc3QgV2ViR0xVbmlmb3JtTG9j
YXRpb24qLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpOwpAQCAtOTQ5LDExICs5NTAsMTMgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQ0dMZW51bSkgPSAwOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIHZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMgZm9yIHVuaWZvcm0gZnVuY3Rpb25zLgotICAg
IGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6
ZWkgbW9kKTsKLSAgICBib29sIHZhbGlkYXRlVW5pZm9ybVBhcmFtZXRlcnMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIGNvbnN0IEludDMyTGlz
dCYsIEdDR0xzaXplaSBtb2QpOwotICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9p
ZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1N
YXRyaXhQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlm
b3JtTG9jYXRpb24qLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEZsb2F0MzJMaXN0Jiwg
R0NHTHNpemVpIG1vZCk7Ci0gICAgYm9vbCB2YWxpZGF0ZVVuaWZvcm1NYXRyaXhQYXJhbWV0ZXJz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBH
Q0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IHZvaWQqLCBHQ0dMc2l6ZWksIEdDR0xzaXplaSBt
b2QpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiopOworICAgIGJvb2wgdmFsaWRhdGVV
bmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgY29uc3QgRmxvYXQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWlyZWRNaW5T
aXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgYm9vbCB2
YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBJbnQzMkxpc3QmLCBHQ0dMc2l6ZWkgcmVxdWly
ZWRNaW5TaXplLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAg
Ym9vbCB2YWxpZGF0ZVVuaWZvcm1QYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBjb25zdCBVaW50MzJMaXN0JiwgR0NHTHNpemVp
IHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
OworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgdm9pZCosIEdDR0xzaXplaSwgR0NH
THNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpOworICAgIGJvb2wgdmFsaWRhdGVVbmlmb3JtTWF0cml4UGFyYW1ldGVycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBGbG9hdDMyTGlzdCYsIEdDR0xzaXplaSByZXF1aXJlZE1pblNp
emUsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICBib29sIHZh
bGlkYXRlVW5pZm9ybU1hdHJpeFBhcmFtZXRlcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBj
b25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
dm9pZCosIEdDR0xzaXplaSwgR0NHTHNpemVpIHJlcXVpcmVkTWluU2l6ZSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IHZhbGlkYXRlIHBhcmFtZXRlcnMgZm9yIGJ1ZmZlckRhdGEuCiAgICAgLy8gUmV0dXJuIHRoZSBj
dXJyZW50IGJvdW5kIGJ1ZmZlciB0byB0YXJnZXQsIG9yIDAgaWYgcGFyYW1ldGVycyBhcmUgaW52
YWxpZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDNmM2UxMjJkYjM4MmM0YmY0YjcwMWJkOWNmM2MyYTQxZWVlYWY2
OTQuLmNhMWQ4ODUwMTY2OTllZmYzYjU2MzA0OThmODg5OTM2OTk0NGRiMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtMTAyMyw2ICsxMDIzLDcgQEAgcHVibGljOgogICAgIC8vIGdldFVuaWZvcm0KICAgICB2aXJ0
dWFsIHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlm
b3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50
KiB2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIEdDR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDQ3NWM0OTkwZDAzMjMxM2Q3MzAyMTQ1MDgwOTMwODA0NzczNjMyNTUuLmFmMDY3
NWQzYzc3ZWM0MDk0MmVkZDk4NmQzMzM2ZmRlMDBlMjc4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC0xNzA5LDYgKzE3MDksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGlu
dCBsb2MKICAgICBnbDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUpCit7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKQEAgLTIyODYsMTI2ICsyMjkyLDkyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsCiAKIEdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9Q
QVJBTShuYW1lKTsKLQotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIHJldHVybiBnbDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpKEdD
R0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBnbDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dM
dWludCB2MSkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TSh2MCk7Ci0gICAgVU5VU0VEX1BBUkFNKHYxKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAgIFVO
VVNFRF9QQVJBTSh2Mik7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZv
cm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIFVOVVNFRF9QQVJBTShsb2Nh
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHYwKTsKLSAgICBVTlVTRURfUEFSQU0odjEpOwotICAg
IFVOVVNFRF9QQVJBTSh2Mik7Ci0gICAgVU5VU0VEX1BBUkFNKHYzKTsKKyAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMXVpdihHQ0dMaW50
IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dM
dWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVu
aWZvcm0xdWl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9u
LCBjb25zdCBHQ0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNM
ZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNy
Y0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0ydWl2
KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBH
Q0dMdWludCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMdWludCog
ZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BB
UkFNKHRyYW5zcG9zZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJB
TShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHNyY0xl
bmd0aCwgdHJhbnNwb3NlLCBkYXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxv
Y2F0aW9uLCBzcmNMZW5ndGgsIHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXgyeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1N
YXRyaXgyeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZz
ZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4NHgy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHQ0dMZmxv
YXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zcG9zZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IGdsOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgdHJhbnNwb3NlLCBk
YXRhICsgc3JjT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5p
Zm9ybU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xl
bmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0
cmFuc3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3Jj
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IHRyYW5zcG9zZSwgZGF0YSArIHNyY09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0odHJhbnNwb3NlKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHNyY09mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlv
biwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKQEAgLTI3MDQsOTMgKzI2
NzYsNjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGwKIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRh
dGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNF
RF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgs
IGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xmbG9hdCogZGF0YSwgR0NHTHVp
bnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY09m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY0xlbmd0aCk7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgZ2w6OlVuaWZvcm0yZnYobG9jYXRpb24sIHNyY0xlbmd0aCwgZGF0YSArIHNy
Y09mZnNldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm0zZnYo
R0NHTGludCBsb2NhdGlvbiwgY29uc3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZz
ZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBnbDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCBkYXRhICsgc3JjT2Zmc2V0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybTRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBjb25zdCBHQ0dMZmxvYXQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9Q
QVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlm
b3JtNGZ2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIGNv
bnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3Ro
KQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEp
OwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5n
dGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMWl2KGxvY2F0
aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1bmlmb3JtMml2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQq
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVO
VVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNF
RF9QQVJBTShzcmNPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBzcmNMZW5n
dGgsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1
aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShs
b2NhdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIGdsOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBz
cmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtNGl2
KEdDR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdDR0xpbnQqIGRhdGEsIEdDR0x1aW50IHNyY09mZnNl
dCwgR0NHTHVpbnQgc3JjTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShzcmNPZmZzZXQpOwotICAg
IFVOVVNFRF9QQVJBTShzcmNMZW5ndGgpOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IGdsOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBzcmNMZW5ndGgsIGRhdGEgKyBzcmNPZmZzZXQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4MmZ2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZsb2F0KiBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwotICAgIFVOVVNF
RF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbDo6VW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRhdGEgKyBzcmNP
ZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlmb3JtTWF0cml4
M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0NHTGZs
b2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFuc3Bvc2UpOwot
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zmc2V0KTsKLSAg
ICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAg
ICBnbDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFuc3Bvc2UsIGRh
dGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0NHTGZsb2F0KiBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0
aCkKIHsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTSh0cmFu
c3Bvc2UpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc3JjTGVuZ3RoKTsKKyAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKyAgICBnbDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3JjTGVuZ3RoLCB0cmFu
c3Bvc2UsIGRhdGEgKyBzcmNPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0
ciBvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGEzZDY1YjM4
ODNlMmYxODk0MGNlYTE5NWQ1ZGU5YWU4ZjVkZTU1YWUuLjZhYjQ3MGE4YzNmODQ4YmNlMzg4OTIw
OGVlMDBiMDJhMzU0MTA3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBA
IC0yOTQsNiArMjk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFsOwogICAg
IHZvaWQgZ2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGZsb2F0KiB2YWx1ZSkgZmluYWw7CiAgICAgdm9pZCBnZXRVbmlmb3JtaXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50KiB2YWx1ZSkg
ZmluYWw7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQqIHZhbHVlKSBmaW5hbDsKICAgICBHQ0dMaW50IGdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0LCBjb25zdCBTdHJpbmcmIG5hbWUpIGZp
bmFsOwogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVt
IHBuYW1lLCBHQ0dMZmxvYXQqIHZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGdldFZlcnRleEF0dHJp
Yml2KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXgg
YTE2NDg0NmVlZGE2ZTlmN2EyNGNmODI3MWMyZDEyNTc3ODBlYWYyNy4uMzg3OTRhOThkM2QxMDMx
ODNjMTZhYWVjOGJjZjczYmU1NTAzYWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC0xODIyLDYgKzE4MjIsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTGludCBsb2MKICAgICA6OmdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldFVuaWZvcm11aXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCogdmFsdWUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKK30KKwogR0NHTGludCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9nbHNsMy91bmFyeS1taW51cy1v
cGVyYXRvci1pbi1keW5hbWljLWxvb3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWluLWR5bmFtaWMt
bG9vcC1leHBlY3RlZC50eHQKaW5kZXggNTNmNjI5MDU1MjdkY2ViMDg2YTcxNDQwZjg0M2ZiODgx
YjNkYzc0My4uYTcwNjhlZGU4ZmVlOTgzNGYwMjM0ZWEyZDEzMGQxZGIxMzE1ZjBhNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1p
bnVzLW9wZXJhdG9yLWluLWR5bmFtaWMtbG9vcC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL2dsc2wzL3VuYXJ5LW1pbnVzLW9wZXJhdG9yLWlu
LWR5bmFtaWMtbG9vcC1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsNSBAQAogVGhpcyB0ZXN0IHJ1
bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQ
QVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2Nv
bmZvcm1hbmNlMi9nbHNsMy91bmFyeS1taW51cy1vcGVyYXRvci1pbi1keW5hbWljLWxvb3AuaHRt
bAotWyAxOiBQQVNTIF0gc3F1YXJlIHNob3VsZCBiZSBncmVlbgotWyAyOiBGQUlMIF0gc3F1YXJl
IHNob3VsZCBiZSBncmVlbiBhdCAoMTM4LCAwKSBleHBlY3RlZDogMCwyNTUsMCwyNTUgd2FzIDI1
NSwwLDAsMjU1Ci1bIDM6IFBBU1MgXSBzcXVhcmUgc2hvdWxkIGJlIGdyZWVuCi1bIDQ6IEZBSUwg
XSBzcXVhcmUgc2hvdWxkIGJlIGdyZWVuIGF0ICg0MTQsIDApIGV4cGVjdGVkOiAwLDI1NSwwLDI1
NSB3YXMgMjU1LDAsMCwyNTUKLVsgNTogUEFTUyBdIHNxdWFyZSBzaG91bGQgYmUgZ3JlZW4KLVsg
NjogRkFJTCBdIHNxdWFyZSBzaG91bGQgYmUgZ3JlZW4gYXQgKDY5MCwgMCkgZXhwZWN0ZWQ6IDAs
MjU1LDAsMjU1IHdhcyAyNTUsMCwwLDI1NQotWyA3OiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLVsgRkFJTCBdIDMgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0
cyBwYXNzZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UyL3Byb2dyYW1zL2dsLWdldC1mcmFnLWRhdGEtbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3Byb2dyYW1zL2dsLWdldC1mcmFnLWRh
dGEtbG9jYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDFhMDA2NTJlYWVlMzE5Y2I2OTdmNzAwZDUz
ZWFhYzU0M2Y5ZjcyZDIuLjA2MDgxNjM0YmNmYWZiZmEyODY1NjE5MmEwYjE4ZDdkNTczYzUxNjUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9wcm9ncmFt
cy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcHJvZ3JhbXMvZ2wtZ2V0LWZyYWctZGF0YS1sb2Nh
dGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsNSBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdl
YkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZB
SUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNl
Mi9wcm9ncmFtcy9nbC1nZXQtZnJhZy1kYXRhLWxvY2F0aW9uLmh0bWwKLVsgMTogUEFTUyBdIFdl
YkdMIGNvbnRleHQgZXhpc3RzCi1bIDI6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDogTm8gR0wgZXJyb3IgZnJvbSBzZXQgdXAKLVsgMzogRkFJTCBdIEZhaWwg
dG8gcXVlcnkgc2NhbGFyIG91dHB1dCB2YXJpYWJsZSBsb2NhdGlvbnMsIGV4cGVjdGVkOiBmcmFn
Q29sb3IwLT4yLCBmcmFnQ29sb3IxLT4wLCBnb3Q6IGZyYWdDb2xvcjAtPjAsIGZyYWdDb2xvcjEt
PjAKLVsgNDogRkFJTCBdIEZhaWwgdG8gcXVlcnkgc2NhbGFyIG91dHB1dCB2YXJpYWJsZSBsb2Nh
dGlvbnMsIGV4cGVjdGVkOiBmcmFnQ29sb3ItPjAsIGZyYWdDb2xvclswXS0+MCwgZnJhZ0NvbG9y
WzFdLT4xLCBnb3Q6IGZyYWdDb2xvci0+MCwgZnJhZ0NvbG9yWzBdLT4wLCBmcmFnQ29sb3JbMV0t
PjAKLVsgNTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBO
byBHTCBlcnJvciBmcm9tIHRlc3RpbmcKLVsgNjogUEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi1bIEZBSUwgXSAyIGZhaWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMg
cGFzc2VkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
Mi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVk
LnR4dAppbmRleCAxODFkYjdiOTI0ZWEyNGM0Y2ZiZGE5MmQwYmVmYTFhODQ5YTE4MTVjLi5iZTNi
ZTE3YzQ4YmMxNGM2ZmJmOTYxNmQxMTZmMWQ4MDk3MWI3YWMyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0
YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CkBAIC0yNDMsMjYgKzI0MywyNiBA
QCBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZTIvc3Rh
dGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odAogWyAyMzk6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoKIFsgMjQwOiBQQVNTIF0gZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcih1aW50UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKIFsgMjQxOiBQQVNTIF0g
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6Ci1bIDI0MjogRkFJTCBdIGds
LmdldFVuaWZvcm0odWludFByb2dyYW0sIHV2YWxMb2MpIHNob3VsZCBiZSAxIChvZiB0eXBlIG51
bWJlcikuIFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCi1bIDI0MzogRkFJTCBdIGdsLmdldFVu
aWZvcm0odWludFByb2dyYW0sIHV2YWwyTG9jKSBzaG91bGQgYmUgMiwzLiBXYXMgbnVsbC4KLVsg
MjQ0OiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDNMb2MpIHNob3VsZCBi
ZSA0LDUsNi4gV2FzIG51bGwuCi1bIDI0NTogRkFJTCBdIGdsLmdldFVuaWZvcm0odWludFByb2dy
YW0sIHV2YWw0TG9jKSBzaG91bGQgYmUgNyw4LDksMTAuIFdhcyBudWxsLgotWyAyNDY6IEZBSUwg
XSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdhcyBJTlZBTElEX1ZBTFVFIDoKK1sgMjQy
OiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbExvYykgaXMgMQorWyAyNDM6
IFBBU1MgXSBnbC5nZXRVbmlmb3JtKHVpbnRQcm9ncmFtLCB1dmFsMkxvYykgaXMgWzIsIDNdCitb
IDI0NDogUEFTUyBdIGdsLmdldFVuaWZvcm0odWludFByb2dyYW0sIHV2YWwzTG9jKSBpcyBbNCwg
NSwgNl0KK1sgMjQ1OiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybSh1aW50UHJvZ3JhbSwgdXZhbDRMb2Mp
IGlzIFs3LCA4LCA5LCAxMF0KK1sgMjQ2OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6CiBbIDI0NzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IgOgogWyAyNDg6IFBBU1MgXSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKG1hdEZv
cldlYkdMMlByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCiBbIDI0OTogUEFTUyBdIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgotWyAyNTA6IEZBSUwgXSBnbC5n
ZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwyeDNMb2MpIHNob3VsZCBiZSAxLDIs
Myw0LDUsNi4gV2FzIG51bGwuCi1bIDI1MTogRkFJTCBdIGdsLmdldFVuaWZvcm0obWF0Rm9yV2Vi
R0wyUHJvZ3JhbSwgbXZhbDJ4NExvYykgc2hvdWxkIGJlIDcsOCw5LDEwLDExLDEyLDEzLDE0LiBX
YXMgbnVsbC4KLVsgMjUyOiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFt
LCBtdmFsM3gyTG9jKSBzaG91bGQgYmUgMTUsMTYsMTcsMTgsMTksMjAuIFdhcyBudWxsLgotWyAy
NTM6IEZBSUwgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDRMb2Mp
IHNob3VsZCBiZSAyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMi4gV2FzIG51bGwu
Ci1bIDI1NDogRkFJTCBdIGdsLmdldFVuaWZvcm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4
MkxvYykgc2hvdWxkIGJlIDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLiBXYXMgbnVsbC4KLVsgMjU1
OiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsNHgzTG9jKSBz
aG91bGQgYmUgNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIuIFdhcyBudWxsLgot
WyAyNTY6IEZBSUwgXSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdhcyBJTlZBTElEX1ZB
TFVFIDoKK1sgMjUwOiBQQVNTIF0gZ2wuZ2V0VW5pZm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBt
dmFsMngzTG9jKSBpcyBbMSwgMiwgMywgNCwgNSwgNl0KK1sgMjUxOiBQQVNTIF0gZ2wuZ2V0VW5p
Zm9ybShtYXRGb3JXZWJHTDJQcm9ncmFtLCBtdmFsMng0TG9jKSBpcyBbNywgOCwgOSwgMTAsIDEx
LCAxMiwgMTMsIDE0XQorWyAyNTI6IFBBU1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlBy
b2dyYW0sIG12YWwzeDJMb2MpIGlzIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwXQorWyAyNTM6IFBB
U1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWwzeDRMb2MpIGlzIFsy
MSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXQorWyAyNTQ6IFBB
U1MgXSBnbC5nZXRVbmlmb3JtKG1hdEZvcldlYkdMMlByb2dyYW0sIG12YWw0eDJMb2MpIGlzIFsz
MywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDBdCitbIDI1NTogUEFTUyBdIGdsLmdldFVuaWZv
cm0obWF0Rm9yV2ViR0wyUHJvZ3JhbSwgbXZhbDR4M0xvYykgaXMgWzQxLCA0MiwgNDMsIDQ0LCA0
NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTJdCitbIDI1NjogUEFTUyBdIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOgogWyAyNTc6IFBBU1MgXSBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1
ZQogWyAyNTg6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoK
LVsgMjU5OiBGQUlMIF0gZ2wuZ2V0VW5pZm9ybShzYW1wbGVyRm9yV2ViR0wyUHJvZ3JhbSwgczNE
VmFsTG9jKSBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgbnVsbCAob2YgdHlwZSBv
YmplY3QpLgotWyAyNjA6IEZBSUwgXSBnbC5nZXRVbmlmb3JtKHNhbXBsZXJGb3JXZWJHTDJQcm9n
cmFtLCBzMkRBcnJheVZhbExvYykgc2hvdWxkIGJlIDEgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIG51
bGwgKG9mIHR5cGUgb2JqZWN0KS4KLVsgMjYxOiBGQUlMIF0gZ2V0RXJyb3IgZXhwZWN0ZWQ6IE5P
X0VSUk9SLiBXYXMgSU5WQUxJRF9WQUxVRSA6CitbIDI1OTogUEFTUyBdIGdsLmdldFVuaWZvcm0o
c2FtcGxlckZvcldlYkdMMlByb2dyYW0sIHMzRFZhbExvYykgaXMgMAorWyAyNjA6IFBBU1MgXSBn
bC5nZXRVbmlmb3JtKHNhbXBsZXJGb3JXZWJHTDJQcm9ncmFtLCBzMkRBcnJheVZhbExvYykgaXMg
MQorWyAyNjE6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDoK
IFsgMjYyOiBQQVNTIF0gZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJS
QVlfQlVGRkVSX0JJTkRJTkcpIGlzIGJ1ZmZlcgogWyAyNjM6IFBBU1MgXSBnbC5nZXRWZXJ0ZXhB
dHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0cnVlCiBbIDI2NDog
UEFTUyBdIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUp
IGlzIDQKQEAgLTMxMSw1ICszMTEsNSBAQCBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVz
dF9maWxlcy9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odAogWyAzMDc6
IFBBU1MgXSBnZXRTYW1wbGVyUGFyYW1ldGVyIGNvcnJlY3RseSBoYW5kbGVkIGludmFsaWQgcG5h
bWUgZW51bXMKIFsgMzA4OiBGQUlMIF0gZ2wuZ2V0U3luY1BhcmFtZXRlcihzeW5jLCBnbC5PQkpF
Q1RfVFlQRSkgc2hvdWxkIGJlIDM3MTQyLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAxICgnc3luYycpIHRvIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQuZ2V0U3luY1BhcmFtZXRl
ciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFdlYkdMU3luYwogWyAzMDk6IEZBSUwgXSBzdWNjZXNz
ZnVsbHlQYXJzZWQgc2hvdWxkIGJlIHRydWUgKG9mIHR5cGUgYm9vbGVhbikuIFdhcyB1bmRlZmlu
ZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLVsgRkFJTCBdIDU0IGZhaWx1cmVzIHJlcG9ydGVkCitb
IEZBSUwgXSAzOSBmYWlsdXJlcyByZXBvcnRlZAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>