<?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>143236</bug_id>
          
          <creation_ts>2015-03-30 13:52:49 -0700</creation_ts>
          <short_desc>Web Inspector: add console messages for WebGL shader compile and program link errors/warnings</short_desc>
          <delta_ts>2017-06-20 11:35:37 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081289</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-03-30 13:52:49 -0700</bug_when>
    <thetext>InspectorCanvasAgent should use ConsoleAgent for WebGL shader and program errors/warnings. Create a new message source (MessageSource::WebGL) for logging compile and link operations, including source code location to allow jumping to the relevant code in a ShaderProgram content view (needed for https://bugs.webkit.org/show_bug.cgi?id=138593).

Going through the ConsoleAgent guarantees users are informed of compile and link information even if they aren&apos;t currently inspecting the canvas resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081290</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-30 13:53:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/20352149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320719</commentid>
    <comment_count>2</comment_count>
      <attachid>313306</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-19 09:42:03 -0700</bug_when>
    <thetext>Created attachment 313306
[Patch] WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320723</commentid>
    <comment_count>3</comment_count>
      <attachid>313307</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-19 09:51:19 -0700</bug_when>
    <thetext>Created attachment 313307
[Patch] WIP

Need r? for the bots to run the tests.  Trying to find tests that fail :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320724</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 09:53:07 -0700</bug_when>
    <thetext>Attachment 313307 did not pass style-queue:


ERROR: Source/WebCore/page/PageConsoleClient.h:35:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5741:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5742:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:5:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 5 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320741</commentid>
    <comment_count>5</comment_count>
      <attachid>313310</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-19 11:00:17 -0700</bug_when>
    <thetext>Created attachment 313310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320779</commentid>
    <comment_count>6</comment_count>
      <attachid>313310</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-19 12:30:59 -0700</bug_when>
    <thetext>Comment on attachment 313310
Patch

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

Looks good to me but we should probably have a WebGL reviewer take a look.

&gt; LayoutTests/fast/canvas/webgl/shader-compile-logging-expected.txt:2
&gt; +CONSOLE MESSAGE: line 19: WebGL: ERROR: 0:2: &apos;attribute&apos; :  supported in vertex shaders only 
&gt; +CONSOLE MESSAGE: line 19: WebGL: ERROR: 0:2: &apos;&apos; : No precision specified for (float)

Its a bit unfortunate that we have the 0 part of &quot;0:#&quot;. 0 here is the &quot;file&quot; which I think will always be zero for us. However we match other browsers...

&gt; Source/WebCore/ChangeLog:26
&gt; +        Unify console logging helper functions to all follow the same path.  Additionally, errors
&gt; +        now generate stack traces.  Shader compilation errors are now logged as well.

Nit: One space after periods.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:-104
&gt; -const int maxGLErrorsAllowedToConsole = 256;

Lets keep this given what we talked about earlier.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1309
&gt; +        Ref&lt;Inspector::ScriptCallStack&gt; stackTrace = Inspector::createScriptCallStack(JSMainThreadExecState::currentState(), Inspector::ScriptCallStack::maxCallStackSizeToCapture);

I wonder if there is a better ExecState we can use than JSMainThreadExecState::currentState(). I think its fine for now, as long as WebGL is only usable from the main thread. But if this were to change in the future then this could cause mysterious issues.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:745
&gt; +    // Helper function to print errors ang  warnings to console.

Typos.

&gt; Source/WebCore/page/PageConsoleClient.h:37
&gt; +class ScriptCallStack;

By forward declaring this were you going to try to remove the include? Otherwise remove the forward declaration.

&gt; Source/WebCore/page/PageConsoleClient.h:61
&gt; +    void addMessage(std::unique_ptr&lt;Inspector::ConsoleMessage&gt;&amp;&amp;);

Lets add a comment that the others are deprecated. Callers should try to create the ConsoleMessage themselves. Perhaps then we can slowly phase out the super specific versions below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321051</commentid>
    <comment_count>7</comment_count>
      <attachid>313381</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-20 01:05:51 -0700</bug_when>
    <thetext>Created attachment 313381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321174</commentid>
    <comment_count>8</comment_count>
      <attachid>313381</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-20 11:35:35 -0700</bug_when>
    <thetext>Comment on attachment 313381
Patch

Clearing flags on attachment: 313381

Committed r218603: &lt;http://trac.webkit.org/changeset/218603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321175</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-20 11:35:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313306</attachid>
            <date>2017-06-19 09:42:03 -0700</date>
            <delta_ts>2017-06-19 09:51:19 -0700</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>143236.diff</filename>
            <type>text/plain</type>
            <size>20751</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZmE5MWExYTIzZi4uOGRlMzg4NTY4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNy0wNi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVj
a1RleHR1cmVDb21wbGV0ZW5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludEdMRXJyb3JUb0NvbnNv
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50R0xXYXJuaW5nVG9Db25zb2xlKTogRGVsZXRl
ZC4KKyAgICAgICAgVW5pZnkgY29uc29sZSBsb2dnaW5nIGhlbHBlciBmdW5jdGlvbnMgdG8gYWxs
IGZvbGxvdyB0aGUgc2FtZSBwYXRoLiAgQWRkaXRpb25hbGx5LCBlcnJvcnMKKyAgICAgICAgbm93
IGdlbmVyYXRlIHN0YWNrIHRyYWNlcy4gIFNoYWRlciBjb21waWxhdGlvbiBlcnJvcnMgYXJlIG5v
dyBsb2dnZWQgYXMgd2VsbC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQ29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBZGRDb25zb2xlTWVzc2FnZVRh
c2s6OkFkZENvbnNvbGVNZXNzYWdlVGFzayk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNs
aWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgQWRkIG5ldyBwYXRoIGZvciBsb2dnaW5n
IHRvIHRoZSBjb25zb2xlIHRoYXQgYWNjZXB0cyBhIENvbnNvbGVNZXNzYWdlLgorCiAyMDE3LTA2
LTE2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdXBwb3J0IGxpc3RpbmcgV2ViR0wyIGFuZCBXZWJHUFUgY29udGV4dHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDI5ZDI3M2VkODdkLi5lOGVlYzQxZmNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFJlc3VsdC5oIgogI2luY2x1ZGUgPGN0aW1lPgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU1MTUsNiArNTUxNiwxNyBAQCB2b2lkIERvY3Vt
ZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZl
dGNoQ29udHJvbCkKICAgICBtX2hhdmVFeHBsaWNpdGx5RGlzYWJsZWRETlNQcmVmZXRjaCA9IHRy
dWU7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIGNvbnNvbGVNZXNzYWdlKQoreworICAgIGlm
ICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrKFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y29u
c29sZSgpLmFkZE1lc3NhZ2UoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOworfQorCiB2b2lkIERv
Y3VtZW50OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCA2ZGYxMTg2ZmRhOS4uZTdkMDhjYTRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMjQ0LDYgKzEyNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREaXNhYmxlZEZpZWxk
c2V0RWxlbWVudCgpIHsgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCsrOyB9CiAgICAg
dm9pZCByZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgQVNTRVJUKG1fZGlzYWJsZWRG
aWVsZHNldEVsZW1lbnRzQ291bnQpOyBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50LS07
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKSBmaW5hbDsKIAogICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDcwNTUzNWMwM2NiLi4y
OGE1NjM5NWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC00Niw2ICs0Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7CiB9
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBT
Y3JpcHRDYWxsU3RhY2s7CiB9CiAKQEAgLTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIEpTQzo6RXhjZXB0
aW9uKiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBDYWNoZWRTY3JpcHQq
ID0gbnVsbHB0cik7CiAgICAgdm9pZCByZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Byb21pc2UmLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYpOwogCisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSA9IDA7CiAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApID0gMDsKIApAQCAtMjI0
LDYgKzIyNiwxMyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1l
c3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKKyAgICAgICAgQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYm
IGNvbnNvbGVNZXNzYWdlKQorICAgICAgICAgICAgOiBUYXNrKFsmY29uc29sZU1lc3NhZ2VdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKTsKKyAgICAgICAgICAg
IH0pCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayhNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgICAgICA6IFRhc2soW3NvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVs
LCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTJiMDNhZjJhYWEuLjFkMWI4MGM0YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTIsNyArNTIsOSBAQAogI2luY2x1ZGUgIkhUTUxWaWRl
b0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0
YS5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKQEAgLTg5LDcgKzkxLDkgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlclByZWNpc2lvbkZv
cm1hdC5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9y
bUxvY2F0aW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaD4KKyNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9VaW50MzJBcnJheS5oPgpAQCAtMTAxLDcgKzEwNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNlY29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVtcHRz
IHsgMV9zIH07Ci1jb25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlID0gMjU2Owog
c3RhdGljIGNvbnN0IFNlY29uZHMgY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVsYXkgeyAzX3Mg
fTsKIAogbmFtZXNwYWNlIHsKQEAgLTM0NCw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBv
bkVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAobV9jb250ZXh0LT5tX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xl
KQotICAgICAgICAgICAgbV9jb250ZXh0LT5wcmludEdMRXJyb3JUb0NvbnNvbGUobWVzc2FnZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJHTFJlbmRlcmluZ0NvbnRleHRF
cnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQogcHJpdmF0ZToKQEAgLTQ2NCw3ICs0NjcsNiBAQCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxD
YW52YXNFbGVtZW50JiBwYXNzZWRDYQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRU
aW1lcigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dExv
c3RFdmVudCkKICAgICAsIG1fcmVzdG9yZVRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1
dGVzKQotICAgICwgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQobWF4R0xFcnJvcnNBbGxv
d2VkVG9Db25zb2xlKQogICAgICwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKHRydWUpCiAg
ICAgLCBtX2NoZWNrRm9yQ29udGV4dExvc3NIYW5kbGluZ1RpbWVyKCp0aGlzLCAmV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tGb3JDb250ZXh0TG9zc0hhbmRsaW5nKQogewpAQCAtNDc5
LDcgKzQ4MSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQmIHBhc3NlZENhCiAgICAgLCBtX3Jlc3RvcmVUaW1l
cigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQp
CiAgICAgLCBtX2dlbmVyYXRlZEltYWdlQ2FjaGUoNCkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRy
aWJ1dGVzKQotICAgICwgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQobWF4R0xFcnJvcnNB
bGxvd2VkVG9Db25zb2xlKQogICAgICwgbV9jaGVja0ZvckNvbnRleHRMb3NzSGFuZGxpbmdUaW1l
cigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRm9yQ29udGV4dExvc3NI
YW5kbGluZykKIHsKICAgICBtX2NvbnRleHRHcm91cCA9IFdlYkdMQ29udGV4dEdyb3VwOjpjcmVh
dGUoKTsKQEAgLTU0OSw3ICs1NTAsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX3N0ZW5jaWxGdW5jTWFzayA9IDB4RkZGRkZG
RkY7CiAgICAgbV9zdGVuY2lsRnVuY01hc2tCYWNrID0gMHhGRkZGRkZGRjsKICAgICBtX2xheWVy
Q2xlYXJlZCA9IGZhbHNlOwotICAgIG1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkID0gbWF4
R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlOwogICAgIAogICAgIG1fY2xlYXJDb2xvclswXSA9IG1f
Y2xlYXJDb2xvclsxXSA9IG1fY2xlYXJDb2xvclsyXSA9IG1fY2xlYXJDb2xvclszXSA9IDA7CiAg
ICAgbV9zY2lzc29yRW5hYmxlZCA9IGZhbHNlOwpAQCAtMTI0Miw3ICsxMjQyLDggQEAgR0MzRGVu
dW0gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpCiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29t
cGxldGUiOwogICAgIEdDM0RlbnVtIHJlc3VsdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5jaGVj
a1N0YXR1cygmcmVhc29uKTsKICAgICBpZiAocmVzdWx0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBwcmludEdMV2FybmluZ1RvQ29uc29sZSgi
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyIsIHJlYXNvbik7CisgICAgICAgIFN0cmluZyBzdHIgPSAi
V2ViR0w6IGNoZWNrRnJhbWVidWZmZXJTdGF0dXM6IiArIFN0cmluZyhyZWFzb24pOworICAgICAg
ICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIHJlc3VsdCA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOwpAQCAtMTMwMyw2ICsxMzA0LDE1IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAg
IEdDM0RpbnQgdmFsdWU7CiAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihvYmplY3RPclplcm8o
c2hhZGVyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOwogICAg
IHNoYWRlci0+c2V0VmFsaWQodmFsdWUpOworCisgICAgaWYgKG1fc3ludGhlc2l6ZWRFcnJvcnNU
b0NvbnNvbGUgJiYgIXZhbHVlKSB7CisgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxT
dGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKworICAgICAgICBWZWN0b3I8U3RyaW5n
PiBlcnJvcnM7CisgICAgICAgIGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxpdCgiXG4iLCBl
cnJvcnMpOworICAgICAgICBmb3IgKFN0cmluZyYgZXJyb3IgOiBlcnJvcnMpCisgICAgICAgICAg
ICBjYW52YXMoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3Rh
Y2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQpAQCAtNDU3Miw3
ICs0NTgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmb3JjZUxvc3RDb250
ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3QKIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29udGV4dCgpCiB7Ci0gICAgcHJpbnRXYXJuaW5nVG9Db25z
b2xlKCJUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIFdlYkdMIGNvbnRleHRzIG9uIHRoaXMgcGFn
ZSwgdGhlIG9sZGVzdCBjb250ZXh0IHdpbGwgYmUgbG9zdC4iKTsKKyAgICBwcmludFRvQ29uc29s
ZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBj
b250ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIik7
CiAgICAgLy8gVXNpbmcgU3ludGhldGljTG9zdENvbnRleHQgbWVhbnMgdGhlIGRldmVsb3BlciB3
b24ndCBiZSBhYmxlIHRvIGZvcmNlIHRoZSByZXN0b3JhdGlvbgogICAgIC8vIG9mIHRoZSBjb250
ZXh0IGJ5IGNhbGxpbmcgcHJldmVudERlZmF1bHQoKSBpbiBhICJ3ZWJnbGNvbnRleHRsb3N0IiBl
dmVudCBoYW5kbGVyLgogICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRleHQp
OwpAQCAtNDgyOSw3ICs0ODM5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpj
aGVja1RleHR1cmVDb21wbGV0ZW5lc3MoY29uc3QgY2hhciogZnVuY3Rpb25OYW0KICAgICAgICAg
ICAgIFN0cmluZyBtc2coU3RyaW5nKCJ0ZXh0dXJlIGJvdW5kIHRvIHRleHR1cmUgdW5pdCAiKSAr
IFN0cmluZzo6bnVtYmVyKGJhZFRleHR1cmUpCiAgICAgICAgICAgICAgICAgKyAiIGlzIG5vdCBy
ZW5kZXJhYmxlLiBJdCBtYXliZSBub24tcG93ZXItb2YtMiBhbmQgaGF2ZSBpbmNvbXBhdGlibGUg
dGV4dHVyZSBmaWx0ZXJpbmcgb3IgaXMgbm90ICd0ZXh0dXJlIGNvbXBsZXRlJywiCiAgICAgICAg
ICAgICAgICAgKyAiIG9yIGl0IGlzIGEgZmxvYXQvaGFsZi1mbG9hdCB0eXBlIHdpdGggbGluZWFy
IGZpbHRlcmluZyBhbmQgd2l0aG91dCB0aGUgcmVsZXZhbnQgZmxvYXQvaGFsZi1mbG9hdCBsaW5l
YXIgZXh0ZW5zaW9uIGVuYWJsZWQuIik7Ci0gICAgICAgICAgICBwcmludEdMV2FybmluZ1RvQ29u
c29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHByaW50
VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIFN0cmluZyhmdW5jdGlv
bk5hbWUpICsgIjogIiArIG1zZyk7CiAgICAgICAgICAgICB0ZXgyRCA9IG1fYmxhY2tUZXh0dXJl
MkQuZ2V0KCk7CiAgICAgICAgICAgICB0ZXhDdWJlTWFwID0gbV9ibGFja1RleHR1cmVDdWJlTWFw
LmdldCgpOwogICAgICAgICB9IGVsc2UgewpAQCAtNTIwMCwyMSArNTIxMCwyMSBAQCBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlU3RlbmNpbEZ1bmMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQwogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpwcmludEdMRXJyb3JUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fbnVtR0xFcnJvcnNUb0Nv
bnNvbGVBbGxvd2VkKQorICAgIGlmICghbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLS1tX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZDsKLSAg
ICBwcmludFdhcm5pbmdUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOwogCi0gICAgaWYgKCFtX251
bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZCkKLSAgICAgICAgcHJpbnRXYXJuaW5nVG9Db25zb2xl
KCJXZWJHTDogdG9vIG1hbnkgZXJyb3JzLCBubyBtb3JlIGVycm9ycyB3aWxsIGJlIHJlcG9ydGVk
IHRvIHRoZSBjb25zb2xlIGZvciB0aGlzIGNvbnRleHQuIik7Ci19CisgICAgLy8gRXJyb3IgbWVz
c2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28gc2hvdyBzdGFjayB0cmFj
ZXMgZm9yIHRoZW0uCisgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZlbDo6RXJyb3IpIHsKKyAg
ICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50
U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlKTsKIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmlu
dFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGNhbnZhcygp
LmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOworICAgIGNhbnZhcygpLmRvY3VtZW50KCku
YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOwogfQogCiBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQmxlbmRGdW5jRmFjdG9ycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHNyYywgR0MzRGVudW0gZHN0KQpAQCAtNTU5NSw3
ICs1NjA1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVD
b250ZXh0KCkKICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJC
OgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRleHQgaXMgbm90IHJlc3RvcmVkIGlmIHRo
aXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNz
IHJlc2V0LgotICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIldBUk5JTkc6IFdlYkdMIGNv
bnRlbnQgb24gdGhlIHBhZ2UgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3Qg
cmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7CisgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIldBUk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgY2F1c2Vk
IHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3QgcmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6SU5OT0NFTlRfQ09OVEVY
VF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSBy
ZXN0b3JlZC4KQEAgLTU2MDYsNyArNTYxNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIHJlc2V0IGFuZCBhc2sgdGhl
bSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5uaW5nCiAgICAgICAgIC8vIHRoZSBj
b250ZW50LiBPbmx5IGlmIHRoZXkgc2F5ICJ5ZXMiIHNob3VsZCB3ZSBzdGFydAogICAgICAgICAv
LyBhdHRlbXB0aW5nIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCi0gICAgICAgIHByaW50V2Fybmlu
Z1RvQ29uc29sZSgiV0FSTklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldCIpOworICAgICAgICBwcmludFRvQ29u
c29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRo
ZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0Iik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTcyOCwyMSArNTczOCwxMiBAQCBuYW1lc3BhY2Ug
ewogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzeW50aGVzaXplR0xFcnJvcihHQzNE
ZW51bSBlcnJvciwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlw
dGlvbiwgQ29uc29sZURpc3BsYXlQcmVmZXJlbmNlIGRpc3BsYXkpCiB7CiAgICAgaWYgKG1fc3lu
dGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUgJiYgZGlzcGxheSA9PSBEaXNwbGF5SW5Db25zb2xlKSB7
Ci0gICAgICBTdHJpbmcgc3RyID0gU3RyaW5nKCJXZWJHTDogIikgKyBHZXRFcnJvclN0cmluZyhl
cnJvcikgKyAgIjogIiArIFN0cmluZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmluZyhkZXNj
cmlwdGlvbik7Ci0gICAgICBwcmludEdMRXJyb3JUb0NvbnNvbGUoc3RyKTsKKyAgICAgIFN0cmlu
ZyBzdHIgPSAiV2ViR0w6ICIgKyBHZXRFcnJvclN0cmluZyhlcnJvcikgKyAgIjogIiArIFN0cmlu
ZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmluZyhkZXNjcmlwdGlvbik7CisgICAgICBwcmlu
dFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBzdHIpOwogICAgIH0KICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKIH0KIAotCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnByaW50R0xXYXJuaW5nVG9Db25zb2xlKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCi17Ci0gICAgaWYgKG1fc3ludGhlc2l6ZWRF
cnJvcnNUb0NvbnNvbGUpIHsKLSAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZygiV2ViR0w6ICIp
ICsgU3RyaW5nKGZ1bmN0aW9uTmFtZSkgKyAiOiAiICsgU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAg
ICAgICAgcHJpbnRHTEVycm9yVG9Db25zb2xlKHN0cik7Ci0gICAgfQotfQotCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmFwcGx5U3RlbmNpbFRlc3QoKQogewogICAgIGJvb2wgaGF2
ZVN0ZW5jaWxCdWZmZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzZTNlZjlmZTMwNC4uOTIx
NjZmZTdhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTU2OCw3ICs1NjgsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZDsKIAogICAgIGJvb2wgbV9zeW50aGVz
aXplZEVycm9yc1RvQ29uc29sZSB7IHRydWUgfTsKLSAgICBpbnQgbV9udW1HTEVycm9yc1RvQ29u
c29sZUFsbG93ZWQ7CiAKICAgICAvLyBBIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjYW4gYmUgY3Jl
YXRlZCBpbiBhIHN0YXRlIHdoZXJlIGl0IGFwcGVhcnMgYXMKICAgICAvLyBhIHZhbGlkIGFuZCBh
Y3RpdmUgY29udGV4dCwgYnV0IHdpbGwgbm90IGV4ZWN1dGUgYW55IGltcG9ydGFudCBvcGVyYXRp
b25zCkBAIC03NDMsMTMgKzc0Miw4IEBAIHByb3RlY3RlZDoKICAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIHRleFBhcmFtZXRlcmYgYW5kIHRleFBhcmFtZXRlcmkuCiAgICAgdm9pZCB0ZXhQYXJh
bWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtaSwg
R0MzRGludCBwYXJhbWYsIGJvb2wgaXNGbG9hdCk7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dG8gcHJpbnQgR0wgZXJyb3JzIHRvIGNvbnNvbGUuCi0gICAgdm9pZCBwcmludEdMRXJyb3JUb0Nv
bnNvbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwcmludEdMV2FybmluZ1RvQ29uc29sZShj
b25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogcmVhc29uKTsKLQotICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBwcmludCB3YXJuaW5ncyB0byBjb25zb2xlLiBDdXJyZW50bHkKLSAgICAv
LyB1c2VkIG9ubHkgdG8gd2FybiBhYm91dCB1c2Ugb2Ygb2Jzb2xldGUgZnVuY3Rpb25zLgotICAg
IHZvaWQgcHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYpOworICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBwcmludCBlcnJvcnMgYW5nICB3YXJuaW5ncyB0byBjb25zb2xlLgorICAg
IHZvaWQgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBmcmFt
ZWJ1ZmZlciBmdW5jdGlvbnMuCiAgICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYgcGFyYW1ldGVy
cyBhcmUgaWxsZWdhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAK
aW5kZXggMjA5M2U3MzU2MzkuLjcxZjQxNDJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTA1LDYgKzEwNSwxOCBAQCBzdGF0aWMgdm9pZCBnZXRQ
YXJzZXJMb2NhdGlvbkZvckNvbnNvbGVNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgU3RyaW5n
JiB1cmwsCiAgICAgY29sdW1uID0gcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKTsKIH0K
IAordm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBjb25zb2xlTWVzc2FnZSkKK3sKKyAgICBpZiAoY29u
c29sZU1lc3NhZ2UtPnNvdXJjZSgpICE9IE1lc3NhZ2VTb3VyY2U6OkNTUyAmJiAhbV9wYWdlLnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkpIHsKKyAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgp
LmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UtPnNvdXJjZSgpLCBjb25zb2xlTWVz
c2FnZS0+bGV2ZWwoKSwgY29uc29sZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2Ut
PmxpbmUoKSwgY29uc29sZU1lc3NhZ2UtPmNvbHVtbigpLCBjb25zb2xlTWVzc2FnZS0+dXJsKCkp
OworCisgICAgICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0
ZW1Db25zb2xlRW5hYmxlZCgpIHx8IHNob3VsZFByaW50RXhjZXB0aW9ucygpKQorICAgICAgICAg
ICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBjb25zb2xlTWVzc2FnZS0+bGV2ZWwoKSwgY29uc29s
ZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2UtPnVybCgpLCBjb25zb2xlTWVzc2Fn
ZS0+bGluZSgpLCBjb25zb2xlTWVzc2FnZS0+Y29sdW1uKCkpOworICAgIH0KKworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUo
Y29uc29sZU1lc3NhZ2UpKTsKK30KKwogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBTdHJpbmcgdXJsOwpAQCAtMTMyLDI0ICsxNDQsNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbgogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3Vn
Z2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCi0gICAgU3Ry
aW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNz
YWdlLT5saW5lKCk7Ci0gICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gbWVzc2FnZS0+Y29sdW1u
KCk7Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
bV9wYWdlLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKLQotICAgIGlmIChzb3VyY2UgPT0gTWVzc2FnZVNv
dXJjZTo6Q1NTKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHVybCk7Ci0KLSAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygp
LmxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKCkgJiYgIXNob3VsZFByaW50
RXhjZXB0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDb25zb2xlQ2xpZW50Ojpwcmlu
dENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwor
ICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5oCmluZGV4IDVlNDRmMjgyY2QxLi4zMmZiNTcyYjEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaApAQCAtMzIsNiArMzIsMTEgQEAK
ICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yeworY2xhc3MgQ29uc29sZU1lc3NhZ2U7CitjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRl
OwogfQpAQCAtNTMsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbXV0ZSgpOwog
ICAgIHN0YXRpYyB2b2lkIHVubXV0ZSgpOwogCisgICAgdm9pZCBhZGRNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKTsKICAgICB2b2lkIGFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1
bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiA9IG51bGxwdHIs
IEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIgPSAwKTsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4m
Jik7CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCwg
RG9jdW1lbnQqID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKaW5kZXggYTZjYTQwMzYxOWIuLjI2ZmViNmFkZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNDbG9zaW5nKCkgeyByZXR1cm4gbV9jbG9zaW5nOyB9CiAKLSAgICB2b2lk
IGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPiYmKTsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIAogICAgIENyeXB0byYgY3J5cHRvKCk7
CiAK
</data>
<flag name="commit-queue"
          id="334201"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313307</attachid>
            <date>2017-06-19 09:51:19 -0700</date>
            <delta_ts>2017-06-19 11:00:17 -0700</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>143236.diff</filename>
            <type>text/plain</type>
            <size>20751</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZmE5MWExYTIzZi4uOGRlMzg4NTY4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNy0wNi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVj
a1RleHR1cmVDb21wbGV0ZW5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludEdMRXJyb3JUb0NvbnNv
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50R0xXYXJuaW5nVG9Db25zb2xlKTogRGVsZXRl
ZC4KKyAgICAgICAgVW5pZnkgY29uc29sZSBsb2dnaW5nIGhlbHBlciBmdW5jdGlvbnMgdG8gYWxs
IGZvbGxvdyB0aGUgc2FtZSBwYXRoLiAgQWRkaXRpb25hbGx5LCBlcnJvcnMKKyAgICAgICAgbm93
IGdlbmVyYXRlIHN0YWNrIHRyYWNlcy4gIFNoYWRlciBjb21waWxhdGlvbiBlcnJvcnMgYXJlIG5v
dyBsb2dnZWQgYXMgd2VsbC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQ29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpBZGRDb25zb2xlTWVzc2FnZVRh
c2s6OkFkZENvbnNvbGVNZXNzYWdlVGFzayk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNs
aWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgQWRkIG5ldyBwYXRoIGZvciBsb2dnaW5n
IHRvIHRoZSBjb25zb2xlIHRoYXQgYWNjZXB0cyBhIENvbnNvbGVNZXNzYWdlLgorCiAyMDE3LTA2
LTE2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdXBwb3J0IGxpc3RpbmcgV2ViR0wyIGFuZCBXZWJHUFUgY29udGV4dHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDI5ZDI3M2VkODdkLi5lOGVlYzQxZmNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVz
b2x2ZXIuaCIKICNpbmNsdWRlICJYUGF0aFJlc3VsdC5oIgogI2luY2x1ZGUgPGN0aW1lPgorI2lu
Y2x1ZGUgPGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU1MTUsNiArNTUxNiwxNyBAQCB2b2lkIERvY3Vt
ZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmIGRuc1ByZWZl
dGNoQ29udHJvbCkKICAgICBtX2hhdmVFeHBsaWNpdGx5RGlzYWJsZWRETlNQcmVmZXRjaCA9IHRy
dWU7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmIGNvbnNvbGVNZXNzYWdlKQoreworICAgIGlm
ICghaXNDb250ZXh0VGhyZWFkKCkpIHsKKyAgICAgICAgcG9zdFRhc2soQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrKFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y29u
c29sZSgpLmFkZE1lc3NhZ2UoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOworfQorCiB2b2lkIERv
Y3VtZW50OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAppbmRleCA2ZGYxMTg2ZmRhOS4uZTdkMDhjYTRjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xMjQ0LDYgKzEyNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREaXNhYmxlZEZpZWxk
c2V0RWxlbWVudCgpIHsgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCsrOyB9CiAgICAg
dm9pZCByZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgQVNTRVJUKG1fZGlzYWJsZWRG
aWVsZHNldEVsZW1lbnRzQ291bnQpOyBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50LS07
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIg
PSAwKSBmaW5hbDsKIAogICAgIFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuICpTZWN1cml0eUNvbnRleHQ6OnNlY3VyaXR5T3JpZ2luKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDcwNTUzNWMwM2NiLi4y
OGE1NjM5NWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC00Niw2ICs0Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7CiB9
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBT
Y3JpcHRDYWxsU3RhY2s7CiB9CiAKQEAgLTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIEpTQzo6RXhjZXB0
aW9uKiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBDYWNoZWRTY3JpcHQq
ID0gbnVsbHB0cik7CiAgICAgdm9pZCByZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Byb21pc2UmLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRD
YWxsU3RhY2s+JiYpOwogCisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSA9IDA7CiAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApID0gMDsKIApAQCAtMjI0
LDYgKzIyNiwxMyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1l
c3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKKyAgICAgICAgQWRkQ29uc29s
ZU1lc3NhZ2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYm
IGNvbnNvbGVNZXNzYWdlKQorICAgICAgICAgICAgOiBUYXNrKFsmY29uc29sZU1lc3NhZ2VdKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKTsKKyAgICAgICAgICAg
IH0pCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayhNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgICAgICA6IFRhc2soW3NvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVs
LCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYTJiMDNhZjJhYWEuLjFkMWI4MGM0YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNTIsNyArNTIsOSBAQAogI2luY2x1ZGUgIkhUTUxWaWRl
b0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0
YS5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKQEAgLTg5LDcgKzkxLDkgQEAKICNpbmNsdWRlICJXZWJHTFNoYWRlclByZWNpc2lvbkZv
cm1hdC5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9y
bUxvY2F0aW9uLmgiCi0KKyNpbmNsdWRlIDxpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaD4KKyNp
bmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMu
aD4KICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9VaW50MzJBcnJheS5oPgpAQCAtMTAxLDcgKzEwNSw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNlY29uZHNCZXR3ZWVuUmVzdG9yZUF0dGVtcHRz
IHsgMV9zIH07Ci1jb25zdCBpbnQgbWF4R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlID0gMjU2Owog
c3RhdGljIGNvbnN0IFNlY29uZHMgY2hlY2tDb250ZXh0TG9zc0hhbmRsaW5nRGVsYXkgeyAzX3Mg
fTsKIAogbmFtZXNwYWNlIHsKQEAgLTM0NCw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBv
bkVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAobV9jb250ZXh0LT5tX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xl
KQotICAgICAgICAgICAgbV9jb250ZXh0LT5wcmludEdMRXJyb3JUb0NvbnNvbGUobWVzc2FnZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJHTFJlbmRlcmluZ0NvbnRleHRF
cnJvck1lc3NhZ2VDYWxsYmFjaygpIHsgfQogcHJpdmF0ZToKQEAgLTQ2NCw3ICs0NjcsNiBAQCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxD
YW52YXNFbGVtZW50JiBwYXNzZWRDYQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRU
aW1lcigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dExv
c3RFdmVudCkKICAgICAsIG1fcmVzdG9yZVRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRyaWJ1
dGVzKQotICAgICwgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQobWF4R0xFcnJvcnNBbGxv
d2VkVG9Db25zb2xlKQogICAgICwgbV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKHRydWUpCiAg
ICAgLCBtX2NoZWNrRm9yQ29udGV4dExvc3NIYW5kbGluZ1RpbWVyKCp0aGlzLCAmV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tGb3JDb250ZXh0TG9zc0hhbmRsaW5nKQogewpAQCAtNDc5
LDcgKzQ4MSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQmIHBhc3NlZENhCiAgICAgLCBtX3Jlc3RvcmVUaW1l
cigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQp
CiAgICAgLCBtX2dlbmVyYXRlZEltYWdlQ2FjaGUoNCkKICAgICAsIG1fYXR0cmlidXRlcyhhdHRy
aWJ1dGVzKQotICAgICwgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQobWF4R0xFcnJvcnNB
bGxvd2VkVG9Db25zb2xlKQogICAgICwgbV9jaGVja0ZvckNvbnRleHRMb3NzSGFuZGxpbmdUaW1l
cigqdGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRm9yQ29udGV4dExvc3NI
YW5kbGluZykKIHsKICAgICBtX2NvbnRleHRHcm91cCA9IFdlYkdMQ29udGV4dEdyb3VwOjpjcmVh
dGUoKTsKQEAgLTU0OSw3ICs1NTAsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX3N0ZW5jaWxGdW5jTWFzayA9IDB4RkZGRkZG
RkY7CiAgICAgbV9zdGVuY2lsRnVuY01hc2tCYWNrID0gMHhGRkZGRkZGRjsKICAgICBtX2xheWVy
Q2xlYXJlZCA9IGZhbHNlOwotICAgIG1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkID0gbWF4
R0xFcnJvcnNBbGxvd2VkVG9Db25zb2xlOwogICAgIAogICAgIG1fY2xlYXJDb2xvclswXSA9IG1f
Y2xlYXJDb2xvclsxXSA9IG1fY2xlYXJDb2xvclsyXSA9IG1fY2xlYXJDb2xvclszXSA9IDA7CiAg
ICAgbV9zY2lzc29yRW5hYmxlZCA9IGZhbHNlOwpAQCAtMTI0Miw3ICsxMjQyLDggQEAgR0MzRGVu
dW0gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpCiAgICAgY29uc3QgY2hhciogcmVhc29uID0gImZyYW1lYnVmZmVyIGluY29t
cGxldGUiOwogICAgIEdDM0RlbnVtIHJlc3VsdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5jaGVj
a1N0YXR1cygmcmVhc29uKTsKICAgICBpZiAocmVzdWx0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBwcmludEdMV2FybmluZ1RvQ29uc29sZSgi
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyIsIHJlYXNvbik7CisgICAgICAgIFN0cmluZyBzdHIgPSAi
V2ViR0w6IGNoZWNrRnJhbWVidWZmZXJTdGF0dXM6IiArIFN0cmluZyhyZWFzb24pOworICAgICAg
ICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHN0cik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIHJlc3VsdCA9IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOwpAQCAtMTMwMyw2ICsxMzA0LDE1IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAg
IEdDM0RpbnQgdmFsdWU7CiAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihvYmplY3RPclplcm8o
c2hhZGVyKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVTLCAmdmFsdWUpOwogICAg
IHNoYWRlci0+c2V0VmFsaWQodmFsdWUpOworCisgICAgaWYgKG1fc3ludGhlc2l6ZWRFcnJvcnNU
b0NvbnNvbGUgJiYgIXZhbHVlKSB7CisgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxT
dGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrOjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKworICAgICAgICBWZWN0b3I8U3RyaW5n
PiBlcnJvcnM7CisgICAgICAgIGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxpdCgiXG4iLCBl
cnJvcnMpOworICAgICAgICBmb3IgKFN0cmluZyYgZXJyb3IgOiBlcnJvcnMpCisgICAgICAgICAg
ICBjYW52YXMoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3Rh
Y2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQpAQCAtNDU3Miw3
ICs0NTgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmb3JjZUxvc3RDb250
ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3QKIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpyZWN5Y2xlQ29udGV4dCgpCiB7Ci0gICAgcHJpbnRXYXJuaW5nVG9Db25z
b2xlKCJUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIFdlYkdMIGNvbnRleHRzIG9uIHRoaXMgcGFn
ZSwgdGhlIG9sZGVzdCBjb250ZXh0IHdpbGwgYmUgbG9zdC4iKTsKKyAgICBwcmludFRvQ29uc29s
ZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBj
b250ZXh0cyBvbiB0aGlzIHBhZ2UsIHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIik7
CiAgICAgLy8gVXNpbmcgU3ludGhldGljTG9zdENvbnRleHQgbWVhbnMgdGhlIGRldmVsb3BlciB3
b24ndCBiZSBhYmxlIHRvIGZvcmNlIHRoZSByZXN0b3JhdGlvbgogICAgIC8vIG9mIHRoZSBjb250
ZXh0IGJ5IGNhbGxpbmcgcHJldmVudERlZmF1bHQoKSBpbiBhICJ3ZWJnbGNvbnRleHRsb3N0IiBl
dmVudCBoYW5kbGVyLgogICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRleHQp
OwpAQCAtNDgyOSw3ICs0ODM5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpj
aGVja1RleHR1cmVDb21wbGV0ZW5lc3MoY29uc3QgY2hhciogZnVuY3Rpb25OYW0KICAgICAgICAg
ICAgIFN0cmluZyBtc2coU3RyaW5nKCJ0ZXh0dXJlIGJvdW5kIHRvIHRleHR1cmUgdW5pdCAiKSAr
IFN0cmluZzo6bnVtYmVyKGJhZFRleHR1cmUpCiAgICAgICAgICAgICAgICAgKyAiIGlzIG5vdCBy
ZW5kZXJhYmxlLiBJdCBtYXliZSBub24tcG93ZXItb2YtMiBhbmQgaGF2ZSBpbmNvbXBhdGlibGUg
dGV4dHVyZSBmaWx0ZXJpbmcgb3IgaXMgbm90ICd0ZXh0dXJlIGNvbXBsZXRlJywiCiAgICAgICAg
ICAgICAgICAgKyAiIG9yIGl0IGlzIGEgZmxvYXQvaGFsZi1mbG9hdCB0eXBlIHdpdGggbGluZWFy
IGZpbHRlcmluZyBhbmQgd2l0aG91dCB0aGUgcmVsZXZhbnQgZmxvYXQvaGFsZi1mbG9hdCBsaW5l
YXIgZXh0ZW5zaW9uIGVuYWJsZWQuIik7Ci0gICAgICAgICAgICBwcmludEdMV2FybmluZ1RvQ29u
c29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHByaW50
VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIFN0cmluZyhmdW5jdGlv
bk5hbWUpICsgIjogIiArIG1zZyk7CiAgICAgICAgICAgICB0ZXgyRCA9IG1fYmxhY2tUZXh0dXJl
MkQuZ2V0KCk7CiAgICAgICAgICAgICB0ZXhDdWJlTWFwID0gbV9ibGFja1RleHR1cmVDdWJlTWFw
LmdldCgpOwogICAgICAgICB9IGVsc2UgewpAQCAtNTIwMCwyMSArNTIxMCwyMSBAQCBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlU3RlbmNpbEZ1bmMoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQwogICAgIH0KIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpwcmludEdMRXJyb3JUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fbnVtR0xFcnJvcnNUb0Nv
bnNvbGVBbGxvd2VkKQorICAgIGlmICghbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLS1tX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZDsKLSAg
ICBwcmludFdhcm5pbmdUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlOwogCi0gICAgaWYgKCFtX251
bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZCkKLSAgICAgICAgcHJpbnRXYXJuaW5nVG9Db25zb2xl
KCJXZWJHTDogdG9vIG1hbnkgZXJyb3JzLCBubyBtb3JlIGVycm9ycyB3aWxsIGJlIHJlcG9ydGVk
IHRvIHRoZSBjb25zb2xlIGZvciB0aGlzIGNvbnRleHQuIik7Ci19CisgICAgLy8gRXJyb3IgbWVz
c2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28gc2hvdyBzdGFjayB0cmFj
ZXMgZm9yIHRoZW0uCisgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZlbDo6RXJyb3IpIHsKKyAg
ICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50
U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlKTsKIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmlu
dFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGNhbnZhcygp
LmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpOworICAgIGNhbnZhcygpLmRvY3VtZW50KCku
YWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOwogfQogCiBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlQmxlbmRGdW5jRmFjdG9ycyhjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHNyYywgR0MzRGVudW0gZHN0KQpAQCAtNTU5NSw3
ICs1NjA1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVD
b250ZXh0KCkKICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6R1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJC
OgogICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIGNvbnRleHQgaXMgbm90IHJlc3RvcmVkIGlmIHRo
aXMgY29udGV4dCB3YXMKICAgICAgICAgLy8gZ3VpbHR5IG9mIGNhdXNpbmcgdGhlIGdyYXBoaWNz
IHJlc2V0LgotICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIldBUk5JTkc6IFdlYkdMIGNv
bnRlbnQgb24gdGhlIHBhZ2UgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3Qg
cmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7CisgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIldBUk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgY2F1c2Vk
IHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0OyBub3QgcmVzdG9yaW5nIHRoZSBjb250ZXh0Iik7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6SU5OT0NFTlRfQ09OVEVY
VF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIEFsd2F5cyBhbGxvdyB0aGUgY29udGV4dCB0byBiZSBy
ZXN0b3JlZC4KQEAgLTU2MDYsNyArNTYxNiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgICAgIC8vIHJlc2V0IGFuZCBhc2sgdGhl
bSB3aGV0aGVyIHRoZXkgd2FudCB0byBjb250aW51ZSBydW5uaW5nCiAgICAgICAgIC8vIHRoZSBj
b250ZW50LiBPbmx5IGlmIHRoZXkgc2F5ICJ5ZXMiIHNob3VsZCB3ZSBzdGFydAogICAgICAgICAv
LyBhdHRlbXB0aW5nIHRvIHJlc3RvcmUgdGhlIGNvbnRleHQuCi0gICAgICAgIHByaW50V2Fybmlu
Z1RvQ29uc29sZSgiV0FSTklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZl
IGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldCIpOworICAgICAgICBwcmludFRvQ29u
c29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRo
ZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJkIHRvIHJlc2V0Iik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTcyOCwyMSArNTczOCwxMiBAQCBuYW1lc3BhY2Ug
ewogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzeW50aGVzaXplR0xFcnJvcihHQzNE
ZW51bSBlcnJvciwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlw
dGlvbiwgQ29uc29sZURpc3BsYXlQcmVmZXJlbmNlIGRpc3BsYXkpCiB7CiAgICAgaWYgKG1fc3lu
dGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUgJiYgZGlzcGxheSA9PSBEaXNwbGF5SW5Db25zb2xlKSB7
Ci0gICAgICBTdHJpbmcgc3RyID0gU3RyaW5nKCJXZWJHTDogIikgKyBHZXRFcnJvclN0cmluZyhl
cnJvcikgKyAgIjogIiArIFN0cmluZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmluZyhkZXNj
cmlwdGlvbik7Ci0gICAgICBwcmludEdMRXJyb3JUb0NvbnNvbGUoc3RyKTsKKyAgICAgIFN0cmlu
ZyBzdHIgPSAiV2ViR0w6ICIgKyBHZXRFcnJvclN0cmluZyhlcnJvcikgKyAgIjogIiArIFN0cmlu
ZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmluZyhkZXNjcmlwdGlvbik7CisgICAgICBwcmlu
dFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBzdHIpOwogICAgIH0KICAgICBtX2NvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKIH0KIAotCi12b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnByaW50R0xXYXJuaW5nVG9Db25zb2xlKGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCi17Ci0gICAgaWYgKG1fc3ludGhlc2l6ZWRF
cnJvcnNUb0NvbnNvbGUpIHsKLSAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZygiV2ViR0w6ICIp
ICsgU3RyaW5nKGZ1bmN0aW9uTmFtZSkgKyAiOiAiICsgU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAg
ICAgICAgcHJpbnRHTEVycm9yVG9Db25zb2xlKHN0cik7Ci0gICAgfQotfQotCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmFwcGx5U3RlbmNpbFRlc3QoKQogewogICAgIGJvb2wgaGF2
ZVN0ZW5jaWxCdWZmZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAzZTNlZjlmZTMwNC4uOTIx
NjZmZTdhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTU2OCw3ICs1NjgsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZDsKIAogICAgIGJvb2wgbV9zeW50aGVz
aXplZEVycm9yc1RvQ29uc29sZSB7IHRydWUgfTsKLSAgICBpbnQgbV9udW1HTEVycm9yc1RvQ29u
c29sZUFsbG93ZWQ7CiAKICAgICAvLyBBIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjYW4gYmUgY3Jl
YXRlZCBpbiBhIHN0YXRlIHdoZXJlIGl0IGFwcGVhcnMgYXMKICAgICAvLyBhIHZhbGlkIGFuZCBh
Y3RpdmUgY29udGV4dCwgYnV0IHdpbGwgbm90IGV4ZWN1dGUgYW55IGltcG9ydGFudCBvcGVyYXRp
b25zCkBAIC03NDMsMTMgKzc0Miw4IEBAIHByb3RlY3RlZDoKICAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gZm9yIHRleFBhcmFtZXRlcmYgYW5kIHRleFBhcmFtZXRlcmkuCiAgICAgdm9pZCB0ZXhQYXJh
bWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtaSwg
R0MzRGludCBwYXJhbWYsIGJvb2wgaXNGbG9hdCk7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dG8gcHJpbnQgR0wgZXJyb3JzIHRvIGNvbnNvbGUuCi0gICAgdm9pZCBwcmludEdMRXJyb3JUb0Nv
bnNvbGUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwcmludEdMV2FybmluZ1RvQ29uc29sZShj
b25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogcmVhc29uKTsKLQotICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBwcmludCB3YXJuaW5ncyB0byBjb25zb2xlLiBDdXJyZW50bHkKLSAgICAv
LyB1c2VkIG9ubHkgdG8gd2FybiBhYm91dCB1c2Ugb2Ygb2Jzb2xldGUgZnVuY3Rpb25zLgotICAg
IHZvaWQgcHJpbnRXYXJuaW5nVG9Db25zb2xlKGNvbnN0IFN0cmluZyYpOworICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byBwcmludCBlcnJvcnMgYW5nICB3YXJuaW5ncyB0byBjb25zb2xlLgorICAg
IHZvaWQgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBmcmFt
ZWJ1ZmZlciBmdW5jdGlvbnMuCiAgICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYgcGFyYW1ldGVy
cyBhcmUgaWxsZWdhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAK
aW5kZXggMjA5M2U3MzU2MzkuLjcxZjQxNDJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTA1LDYgKzEwNSwxOCBAQCBzdGF0aWMgdm9pZCBnZXRQ
YXJzZXJMb2NhdGlvbkZvckNvbnNvbGVNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgU3RyaW5n
JiB1cmwsCiAgICAgY29sdW1uID0gcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKTsKIH0K
IAordm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJiBjb25zb2xlTWVzc2FnZSkKK3sKKyAgICBpZiAoY29u
c29sZU1lc3NhZ2UtPnNvdXJjZSgpICE9IE1lc3NhZ2VTb3VyY2U6OkNTUyAmJiAhbV9wYWdlLnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkpIHsKKyAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgp
LmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UtPnNvdXJjZSgpLCBjb25zb2xlTWVz
c2FnZS0+bGV2ZWwoKSwgY29uc29sZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2Ut
PmxpbmUoKSwgY29uc29sZU1lc3NhZ2UtPmNvbHVtbigpLCBjb25zb2xlTWVzc2FnZS0+dXJsKCkp
OworCisgICAgICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0
ZW1Db25zb2xlRW5hYmxlZCgpIHx8IHNob3VsZFByaW50RXhjZXB0aW9ucygpKQorICAgICAgICAg
ICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBjb25zb2xlTWVzc2FnZS0+bGV2ZWwoKSwgY29uc29s
ZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2UtPnVybCgpLCBjb25zb2xlTWVzc2Fn
ZS0+bGluZSgpLCBjb25zb2xlTWVzc2FnZS0+Y29sdW1uKCkpOworICAgIH0KKworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUo
Y29uc29sZU1lc3NhZ2UpKTsKK30KKwogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBTdHJpbmcgdXJsOwpAQCAtMTMyLDI0ICsxNDQsNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbgogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3Vn
Z2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCi0gICAgU3Ry
aW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNz
YWdlLT5saW5lKCk7Ci0gICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gbWVzc2FnZS0+Y29sdW1u
KCk7Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
bV9wYWdlLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKLQotICAgIGlmIChzb3VyY2UgPT0gTWVzc2FnZVNv
dXJjZTo6Q1NTKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHVybCk7Ci0KLSAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygp
LmxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKCkgJiYgIXNob3VsZFByaW50
RXhjZXB0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDb25zb2xlQ2xpZW50Ojpwcmlu
dENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwor
ICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5oCmluZGV4IDVlNDRmMjgyY2QxLi4zMmZiNTcyYjEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaApAQCAtMzIsNiArMzIsMTEgQEAK
ICNpbmNsdWRlIDxydW50aW1lL0NvbnNvbGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCituYW1lc3BhY2UgSW5zcGVjdG9yeworY2xhc3MgQ29uc29sZU1lc3NhZ2U7CitjbGFz
cyBTY3JpcHRDYWxsU3RhY2s7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRl
OwogfQpAQCAtNTMsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbXV0ZSgpOwog
ICAgIHN0YXRpYyB2b2lkIHVubXV0ZSgpOwogCisgICAgdm9pZCBhZGRNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKTsKICAgICB2b2lkIGFkZE1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1
bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiA9IG51bGxwdHIs
IEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIgPSAwKTsKICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4m
Jik7CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCwg
RG9jdW1lbnQqID0gbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmgKaW5kZXggYTZjYTQwMzYxOWIuLjI2ZmViNmFkZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNDbG9zaW5nKCkgeyByZXR1cm4gbV9jbG9zaW5nOyB9CiAKLSAgICB2b2lk
IGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPiYmKTsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiYmKSBmaW5hbDsKIAogICAgIENyeXB0byYgY3J5cHRvKCk7
CiAK
</data>
<flag name="commit-queue"
          id="334203"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313310</attachid>
            <date>2017-06-19 11:00:17 -0700</date>
            <delta_ts>2017-06-20 01:05:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>143236.diff</filename>
            <type>text/plain</type>
            <size>24607</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMmY0Nzk0Y2YzNy4uOWU0NzMwMTZhYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0wNi0xOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIGNvbnNvbGUgbWVzc2FnZXMgZm9yIFdlYkdMIHNoYWRlciBjb21w
aWxlIGFuZCBwcm9ncmFtIGxpbmsgZXJyb3JzL3dhcm5pbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMyMzYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIwMzUyMTQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlvbi5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1jb21waWxlLWxvZ2dpbmctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29t
cGlsZS1sb2dnaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTE2ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgY2FudmFz
IGNvbnRlbnQgdmlldyBhbmQgZGV0YWlscyBzaWRlYmFyIHBhbmVsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9u
Lmh0bWwKaW5kZXggMjBjZmQzNTVhYTMuLjBjNDVlNTk3OWFkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlv
bi5odG1sCkBAIC00LDYgKzQsOSBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogCXRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChmYWxzZSk7CisK
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJteUNhbnZhcyIpOwogICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJn
bCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNv
bXBpbGUtbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uY2MyZGMzNWM5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IFdlYkdMOiBF
UlJPUjogMDoyOiAnYXR0cmlidXRlJyA6ICBzdXBwb3J0ZWQgaW4gdmVydGV4IHNoYWRlcnMgb25s
eSAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOTogV2ViR0w6IEVSUk9SOiAwOjI6ICcnIDogTm8g
cHJlY2lzaW9uIHNwZWNpZmllZCBmb3IgKGZsb2F0KQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5
OiBXZWJHTDogRVJST1I6IDA6NDogJ2dsX1Bvc2l0aW9uJyA6IHVuZGVjbGFyZWQgaWRlbnRpZmll
cgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBXZWJHTDogRVJST1I6IDA6NDogJz0nIDogZGlt
ZW5zaW9uIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IFdlYkdMOiBFUlJPUjog
MDo0OiAnYXNzaWduJyA6IGNhbm5vdCBjb252ZXJ0IGZyb20gJ2F0dHJpYnV0ZSA0LWNvbXBvbmVu
dCB2ZWN0b3Igb2YgZmxvYXQnIHRvICdmbG9hdCcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOTog
V2ViR0w6IEVSUk9SOiAwOjc6ICdGUkFHTUVOVF9TSEFERVInIDogc3ludGF4IGVycm9yCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjk6IFdlYkdMOiBFUlJPUjogMDozOiAnZ2xfRnJhZ0NvbG9yJyA6
IHVuZGVjbGFyZWQgaWRlbnRpZmllcgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBXZWJHTDog
RVJST1I6IDA6MzogJz0nIDogZGltZW5zaW9uIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjk6IFdlYkdMOiBFUlJPUjogMDozOiAnYXNzaWduJyA6IGNhbm5vdCBjb252ZXJ0IGZyb20g
J2NvbnN0IDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCcgdG8gJ2Zsb2F0JworQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDI5OiBXZWJHTDogRVJST1I6IDA6NjogJ1ZFUlRFWF9TSEFERVInIDogc3lu
dGF4IGVycm9yCitUZXN0cyB0aGF0IFdlYkdMIHNoYWRlciBjb21waWxlIGVycm9ycy93YXJuaW5n
cyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNvbXBpbGUtbG9nZ2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNvbXBpbGUtbG9nZ2luZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZTA4ZjExNmYwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1jb21waWxlLWxvZ2dpbmcu
aHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxib2R5PgorPHA+VGVzdHMg
dGhhdCBXZWJHTCBzaGFkZXIgY29tcGlsZSBlcnJvcnMvd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0
aGUgY29uc29sZS48L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpCisKK2xldCBnbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpLmdldENvbnRleHQoIndlYmdsIik7CisKK2xldCBmcmFnbWVudFNoYWRlciA9IGds
LmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworZ2wuc2hhZGVyU291cmNlKGZyYWdt
ZW50U2hhZGVyLCBgCithdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworfQorCitGUkFHTUVOVF9TSEFERVIKK2ApOworZ2wu
Y29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisKK2xldCB2ZXJ0ZXhTaGFkZXIgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CitnbC5zaGFkZXJTb3VyY2UodmVydGV4U2hh
ZGVyLCBgCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwg
MS4wLCAxLjApOworfQorCitWRVJURVhfU0hBREVSCitgKTsKK2dsLmNvbXBpbGVTaGFkZXIodmVy
dGV4U2hhZGVyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZhOTFhMWEy
M2YuLjc5ZmVjOWRhNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMDYtMTkg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBjb25zb2xlIG1lc3NhZ2VzIGZvciBXZWJHTCBzaGFkZXIgY29tcGlsZSBhbmQgcHJv
Z3JhbSBsaW5rIGVycm9ycy93YXJuaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDM1MjE0
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLmh0bWwKKworICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6
ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlY3ljbGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrVGV4dHVyZUNvbXBsZXRlbmVzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29s
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJl
c3RvcmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnByaW50R0xFcnJvclRvQ29uc29sZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFdhcm5pbmdUb0NvbnNvbGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cHJpbnRHTFdhcm5pbmdUb0NvbnNvbGUpOiBEZWxldGVkLgorICAgICAgICBVbmlmeSBjb25zb2xl
IGxvZ2dpbmcgaGVscGVyIGZ1bmN0aW9ucyB0byBhbGwgZm9sbG93IHRoZSBzYW1lIHBhdGguICBB
ZGRpdGlvbmFsbHksIGVycm9ycworICAgICAgICBub3cgZ2VuZXJhdGUgc3RhY2sgdHJhY2VzLiAg
U2hhZGVyIGNvbXBpbGF0aW9uIGVycm9ycyBhcmUgbm93IGxvZ2dlZCBhcyB3ZWxsLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OkFkZENvbnNvbGVNZXNzYWdlVGFzazo6QWRkQ29uc29sZU1lc3NhZ2VUYXNr
KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVu
dDo6YWRkTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgor
ICAgICAgICBBZGQgbmV3IHBhdGggZm9yIGxvZ2dpbmcgdG8gdGhlIGNvbnNvbGUgdGhhdCBhY2Nl
cHRzIGEgQ29uc29sZU1lc3NhZ2UuCisKIDIwMTctMDYtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgbGlzdGluZyBX
ZWJHTDIgYW5kIFdlYkdQVSBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMjlk
MjczZWQ4N2QuLmU4ZWVjNDFmY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE5Niw2
ICsxOTYsNyBAQAogI2luY2x1ZGUgIlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRo
UmVzdWx0LmgiCiAjaW5jbHVkZSA8Y3RpbWU+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpA
QCAtNTUxNSw2ICs1NTE2LDE3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5TUHJlZmV0Y2hDb250
cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYgZG5zUHJlZmV0Y2hDb250cm9sKQogICAgIG1faGF2ZUV4
cGxpY2l0bHlEaXNhYmxlZEROU1ByZWZldGNoID0gdHJ1ZTsKIH0KIAordm9pZCBEb2N1bWVudDo6
YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+JiYgY29uc29sZU1lc3NhZ2UpCit7CisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soV1RGTW92ZShjb25zb2xlTWVz
c2FnZSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChQYWdlKiBwYWdlID0g
dGhpcy0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jb25zb2xlKCkuYWRkTWVzc2FnZShXVEZNb3Zl
KGNvbnNvbGVNZXNzYWdlKSk7Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlz
Q29udGV4dFRocmVhZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDZkZjExODZmZGE5Li5l
N2QwOGNhNGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyNDQsNiArMTI0NCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50KCkgeyBtX2Rpc2FibGVk
RmllbGRzZXRFbGVtZW50c0NvdW50Kys7IH0KICAgICB2b2lkIHJlbW92ZURpc2FibGVkRmllbGRz
ZXRFbGVtZW50KCkgeyBBU1NFUlQobV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCk7IG1f
ZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQtLTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4mJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwogCiAgICAgU2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKlNlY3VyaXR5Q29udGV4
dDo6c2VjdXJpdHlPcmlnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKaW5kZXggNzA1NTM1YzAzY2IuLjI4YTU2Mzk1ZjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7
CitjbGFzcyBDb25zb2xlTWVzc2FnZTsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIH0KIApAQCAt
OTgsNiArOTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgSlNDOjpFeGNlcHRpb24qLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYsIENhY2hlZFNjcmlwdCogPSBudWxscHRyKTsKICAgICB2b2lkIHJl
cG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTUHJv
bWlzZSYsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+JiYpID0gMDsKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBK
U0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
ID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyID0gMCkgPSAwOwogCkBAIC0yMjQsNiArMjI2LDEzIEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7
CiAgICAgcHVibGljOgorICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgY29uc29sZU1lc3NhZ2UpCisgICAgICAg
ICAgICA6IFRhc2soWyZjb25zb2xlTWVzc2FnZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgeworICAgICAgICAgICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92
ZShjb25zb2xlTWVzc2FnZSkpOworICAgICAgICAgICAgfSkKKyAgICAgICAgeworICAgICAgICB9
CisKICAgICAgICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAgIDog
VGFzayhbc291cmNlLCBsZXZlbCwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0
LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAppbmRleCBhMmIwM2FmMmFhYS4uNTRhYmI2NmExYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC01
Miw3ICs1Miw5IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIkpTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtODksNyArOTEsOSBAQAog
I2luY2x1ZGUgIldlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2ViR0xU
ZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKLQorI2luY2x1ZGUg
PGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaD4KKyNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlw
ZWRBcnJheUlubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL1VpbnQzMkFycmF5Lmg+CkBAIC0x
MDEsNyArMTA1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29u
ZHMgc2Vjb25kc0JldHdlZW5SZXN0b3JlQXR0ZW1wdHMgeyAxX3MgfTsKLWNvbnN0IGludCBtYXhH
TEVycm9yc0FsbG93ZWRUb0NvbnNvbGUgPSAyNTY7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBjaGVj
a0NvbnRleHRMb3NzSGFuZGxpbmdEZWxheSB7IDNfcyB9OwogCiBuYW1lc3BhY2UgewpAQCAtMzQ0
LDcgKzM0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9uRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgR0MzRGludCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX2NvbnRl
eHQtPm1fc3ludGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUpCi0gICAgICAgICAgICBtX2NvbnRleHQt
PnByaW50R0xFcnJvclRvQ29uc29sZShtZXNzYWdlKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+
cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSk7CiAgICAgfQogICAg
IHZpcnR1YWwgfldlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrKCkgeyB9
CiBwcml2YXRlOgpAQCAtNDY0LDcgKzQ2Nyw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQmIHBhc3NlZENhCiAg
ICAgLCBtX2Rpc3BhdGNoQ29udGV4dExvc3RFdmVudFRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50KQogICAgICwgbV9yZXN0b3Jl
VGltZXIoKnRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250
ZXh0KQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBtX251bUdMRXJyb3Jz
VG9Db25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUpCiAgICAgLCBtX2lz
UGVuZGluZ1BvbGljeVJlc29sdXRpb24odHJ1ZSkKICAgICAsIG1fY2hlY2tGb3JDb250ZXh0TG9z
c0hhbmRsaW5nVGltZXIoKnRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjaGVja0Zv
ckNvbnRleHRMb3NzSGFuZGxpbmcpCiB7CkBAIC00NzksNyArNDgxLDYgQEAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShIVE1MQ2FudmFzRWxlbWVu
dCYgcGFzc2VkQ2EKICAgICAsIG1fcmVzdG9yZVRpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCkKICAgICAsIG1fZ2VuZXJhdGVkSW1hZ2VD
YWNoZSg0KQogICAgICwgbV9hdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgLCBtX251bUdMRXJy
b3JzVG9Db25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUpCiAgICAgLCBt
X2NoZWNrRm9yQ29udGV4dExvc3NIYW5kbGluZ1RpbWVyKCp0aGlzLCAmV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y2hlY2tGb3JDb250ZXh0TG9zc0hhbmRsaW5nKQogewogICAgIG1fY29udGV4
dEdyb3VwID0gV2ViR0xDb250ZXh0R3JvdXA6OmNyZWF0ZSgpOwpAQCAtNTQ5LDcgKzU1MCw2IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQog
ICAgIG1fc3RlbmNpbEZ1bmNNYXNrID0gMHhGRkZGRkZGRjsKICAgICBtX3N0ZW5jaWxGdW5jTWFz
a0JhY2sgPSAweEZGRkZGRkZGOwogICAgIG1fbGF5ZXJDbGVhcmVkID0gZmFsc2U7Ci0gICAgbV9u
dW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQgPSBtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGU7
CiAgICAgCiAgICAgbV9jbGVhckNvbG9yWzBdID0gbV9jbGVhckNvbG9yWzFdID0gbV9jbGVhckNv
bG9yWzJdID0gbV9jbGVhckNvbG9yWzNdID0gMDsKICAgICBtX3NjaXNzb3JFbmFibGVkID0gZmFs
c2U7CkBAIC0xMjQyLDcgKzEyNDIsOCBAQCBHQzNEZW51bSBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKICAgICBjb25zdCBj
aGFyKiByZWFzb24gPSAiZnJhbWVidWZmZXIgaW5jb21wbGV0ZSI7CiAgICAgR0MzRGVudW0gcmVz
dWx0ID0gbV9mcmFtZWJ1ZmZlckJpbmRpbmctPmNoZWNrU3RhdHVzKCZyZWFzb24pOwogICAgIGlm
IChyZXN1bHQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0g
ICAgICAgIHByaW50R0xXYXJuaW5nVG9Db25zb2xlKCJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIiwg
cmVhc29uKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICJXZWJHTDogY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1czoiICsgU3RyaW5nKHJlYXNvbik7CisgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgc3RyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAg
cmVzdWx0ID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CkBAIC0x
MzAzLDYgKzEzMDQsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxl
U2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiAgICAgR0MzRGludCB2YWx1ZTsKICAgICBtX2Nv
bnRleHQtPmdldFNoYWRlcml2KG9iamVjdE9yWmVybyhzaGFkZXIpLCBHcmFwaGljc0NvbnRleHQz
RDo6Q09NUElMRV9TVEFUVVMsICZ2YWx1ZSk7CiAgICAgc2hhZGVyLT5zZXRWYWxpZCh2YWx1ZSk7
CisKKyAgICBpZiAobV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSAmJiAhdmFsdWUpIHsKKyAg
ICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50
U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0Nh
cHR1cmUpOworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGVycm9yczsKKyAgICAgICAgZ2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCJcbiIsIGVycm9ycyk7CisgICAgICAgIGZvciAoU3Ry
aW5nJiBlcnJvciA6IGVycm9ycykKKyAgICAgICAgICAgIGNhbnZhcygpLmRvY3VtZW50KCkuYWRk
Q29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAg
IH0KIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21wcmVzc2VkVGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBB
cnJheUJ1ZmZlclZpZXcmIGRhdGEpCkBAIC00NTcyLDcgKzQ1ODIsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmZvcmNlTG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TG9zdAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlY3ljbGVDb250
ZXh0KCkKIHsKLSAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIlRoZXJlIGFyZSB0b28gbWFueSBh
Y3RpdmUgV2ViR0wgY29udGV4dHMgb24gdGhpcyBwYWdlLCB0aGUgb2xkZXN0IGNvbnRleHQgd2ls
bCBiZSBsb3N0LiIpOworICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJU
aGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIFdlYkdMIGNvbnRleHRzIG9uIHRoaXMgcGFnZSwgdGhl
IG9sZGVzdCBjb250ZXh0IHdpbGwgYmUgbG9zdC4iKTsKICAgICAvLyBVc2luZyBTeW50aGV0aWNM
b3N0Q29udGV4dCBtZWFucyB0aGUgZGV2ZWxvcGVyIHdvbid0IGJlIGFibGUgdG8gZm9yY2UgdGhl
IHJlc3RvcmF0aW9uCiAgICAgLy8gb2YgdGhlIGNvbnRleHQgYnkgY2FsbGluZyBwcmV2ZW50RGVm
YXVsdCgpIGluIGEgIndlYmdsY29udGV4dGxvc3QiIGV2ZW50IGhhbmRsZXIuCiAgICAgZm9yY2VM
b3N0Q29udGV4dChTeW50aGV0aWNMb3N0Q29udGV4dCk7CkBAIC00ODI5LDcgKzQ4MzksNyBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrVGV4dHVyZUNvbXBsZXRlbmVzcyhj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbQogICAgICAgICAgICAgU3RyaW5nIG1zZyhTdHJpbmcoInRl
eHR1cmUgYm91bmQgdG8gdGV4dHVyZSB1bml0ICIpICsgU3RyaW5nOjpudW1iZXIoYmFkVGV4dHVy
ZSkKICAgICAgICAgICAgICAgICArICIgaXMgbm90IHJlbmRlcmFibGUuIEl0IG1heWJlIG5vbi1w
b3dlci1vZi0yIGFuZCBoYXZlIGluY29tcGF0aWJsZSB0ZXh0dXJlIGZpbHRlcmluZyBvciBpcyBu
b3QgJ3RleHR1cmUgY29tcGxldGUnLCIKICAgICAgICAgICAgICAgICArICIgb3IgaXQgaXMgYSBm
bG9hdC9oYWxmLWZsb2F0IHR5cGUgd2l0aCBsaW5lYXIgZmlsdGVyaW5nIGFuZCB3aXRob3V0IHRo
ZSByZWxldmFudCBmbG9hdC9oYWxmLWZsb2F0IGxpbmVhciBleHRlbnNpb24gZW5hYmxlZC4iKTsK
LSAgICAgICAgICAgIHByaW50R0xXYXJuaW5nVG9Db25zb2xlKGZ1bmN0aW9uTmFtZSwgbXNnLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpF
cnJvciwgIldlYkdMOiAiICsgU3RyaW5nKGZ1bmN0aW9uTmFtZSkgKyAiOiAiICsgbXNnKTsKICAg
ICAgICAgICAgIHRleDJEID0gbV9ibGFja1RleHR1cmUyRC5nZXQoKTsKICAgICAgICAgICAgIHRl
eEN1YmVNYXAgPSBtX2JsYWNrVGV4dHVyZUN1YmVNYXAuZ2V0KCk7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC01MjAwLDIxICs1MjEwLDIxIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVTdGVuY2lsRnVuYyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDCiAgICAgfQog
fQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50R0xFcnJvclRvQ29uc29s
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIGlmICghbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQpCisgICAgaWYgKCFt
X3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlKQogICAgICAgICByZXR1cm47CiAKLSAgICAtLW1f
bnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkOwotICAgIHByaW50V2FybmluZ1RvQ29uc29sZSht
ZXNzYWdlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4g
Y29uc29sZU1lc3NhZ2U7CiAKLSAgICBpZiAoIW1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2Vk
KQotICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIldlYkdMOiB0b28gbWFueSBlcnJvcnMs
IG5vIG1vcmUgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoaXMg
Y29udGV4dC4iKTsKLX0KKyAgICAvLyBFcnJvciBtZXNzYWdlcyBjYW4gb2NjdXIgZHVyaW5nIGZ1
bmN0aW9uIGNhbGxzLCBzbyBzaG93IHN0YWNrIHRyYWNlcyBmb3IgdGhlbS4KKyAgICBpZiAobGV2
ZWwgPT0gTWVzc2FnZUxldmVsOjpFcnJvcikgeworICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAgICAgIGNvbnNvbGVN
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBX
VEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29uc29sZU1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOwogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50V2FybmluZ1RvQ29uc29sZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgY2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVz
c2FnZSk7CisgICAgY2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KGNvbnNvbGVNZXNzYWdlKSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVu
dW0gc3JjLCBHQzNEZW51bSBkc3QpCkBAIC01NTk1LDcgKzU2MDUsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpHVUlMVFlfQ09OVEVYVF9SRVNFVF9BUkI6CiAgICAgICAgIC8vIFRoZSByZW5kZXJp
bmcgY29udGV4dCBpcyBub3QgcmVzdG9yZWQgaWYgdGhpcyBjb250ZXh0IHdhcwogICAgICAgICAv
LyBndWlsdHkgb2YgY2F1c2luZyB0aGUgZ3JhcGhpY3MgcmVzZXQuCi0gICAgICAgIHByaW50V2Fy
bmluZ1RvQ29uc29sZSgiV0FSTklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQg
dGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQ7IG5vdCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsK
KyAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FSTklORzog
V2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVz
ZXQ7IG5vdCByZXN0b3JpbmcgdGhlIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8g
QWx3YXlzIGFsbG93IHRoZSBjb250ZXh0IHRvIGJlIHJlc3RvcmVkLgpAQCAtNTYwNiw3ICs1NjE2
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0
KCkKICAgICAgICAgLy8gcmVzZXQgYW5kIGFzayB0aGVtIHdoZXRoZXIgdGhleSB3YW50IHRvIGNv
bnRpbnVlIHJ1bm5pbmcKICAgICAgICAgLy8gdGhlIGNvbnRlbnQuIE9ubHkgaWYgdGhleSBzYXkg
InllcyIgc2hvdWxkIHdlIHN0YXJ0CiAgICAgICAgIC8vIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSB0
aGUgY29udGV4dC4KLSAgICAgICAgcHJpbnRXYXJuaW5nVG9Db25zb2xlKCJXQVJOSU5HOiBXZWJH
TCBjb250ZW50IG9uIHRoZSBwYWdlIG1pZ2h0IGhhdmUgY2F1c2VkIHRoZSBncmFwaGljcyBjYXJk
IHRvIHJlc2V0Iik7CisgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgIldBUk5JTkc6IFdlYkdMIGNvbnRlbnQgb24gdGhlIHBhZ2UgbWlnaHQgaGF2ZSBjYXVzZWQg
dGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVzZXQiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC01NzI4LDIxICs1NzM4LDEyIEBAIG5hbWVzcGFjZSB7CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9yLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBDb25zb2xlRGlzcGxheVByZWZl
cmVuY2UgZGlzcGxheSkKIHsKICAgICBpZiAobV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSAm
JiBkaXNwbGF5ID09IERpc3BsYXlJbkNvbnNvbGUpIHsKLSAgICAgIFN0cmluZyBzdHIgPSBTdHJp
bmcoIldlYkdMOiAiKSArIEdldEVycm9yU3RyaW5nKGVycm9yKSArICAiOiAiICsgU3RyaW5nKGZ1
bmN0aW9uTmFtZSkgKyAiOiAiICsgU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAgICAgIHByaW50R0xF
cnJvclRvQ29uc29sZShzdHIpOworICAgICAgICBTdHJpbmcgc3RyID0gIldlYkdMOiAiICsgR2V0
RXJyb3JTdHJpbmcoZXJyb3IpICsgICI6ICIgKyBTdHJpbmcoZnVuY3Rpb25OYW1lKSArICI6ICIg
KyBTdHJpbmcoZGVzY3JpcHRpb24pOworICAgICAgICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2
ZWw6OkVycm9yLCBzdHIpOwogICAgIH0KICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KGVycm9yKTsKIH0KIAotCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50R0xX
YXJuaW5nVG9Db25zb2xlKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZGVz
Y3JpcHRpb24pCi17Ci0gICAgaWYgKG1fc3ludGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUpIHsKLSAg
ICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZygiV2ViR0w6ICIpICsgU3RyaW5nKGZ1bmN0aW9uTmFt
ZSkgKyAiOiAiICsgU3RyaW5nKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgcHJpbnRHTEVycm9yVG9D
b25zb2xlKHN0cik7Ci0gICAgfQotfQotCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmFwcGx5U3RlbmNpbFRlc3QoKQogewogICAgIGJvb2wgaGF2ZVN0ZW5jaWxCdWZmZXIgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaAppbmRleCAzZTNlZjlmZTMwNC4uOTIxNjZmZTdhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKQEAgLTU2OCw3ICs1NjgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzUm9idXN0bmVz
c0VYVFN1cHBvcnRlZDsKIAogICAgIGJvb2wgbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSB7
IHRydWUgfTsKLSAgICBpbnQgbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQ7CiAKICAgICAv
LyBBIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBjYW4gYmUgY3JlYXRlZCBpbiBhIHN0YXRlIHdoZXJl
IGl0IGFwcGVhcnMgYXMKICAgICAvLyBhIHZhbGlkIGFuZCBhY3RpdmUgY29udGV4dCwgYnV0IHdp
bGwgbm90IGV4ZWN1dGUgYW55IGltcG9ydGFudCBvcGVyYXRpb25zCkBAIC03NDMsMTMgKzc0Miw4
IEBAIHByb3RlY3RlZDoKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHRleFBhcmFtZXRlcmYg
YW5kIHRleFBhcmFtZXRlcmkuCiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHBhcmFtaSwgR0MzRGludCBwYXJhbWYsIGJvb2wg
aXNGbG9hdCk7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcHJpbnQgR0wgZXJyb3JzIHRv
IGNvbnNvbGUuCi0gICAgdm9pZCBwcmludEdMRXJyb3JUb0NvbnNvbGUoY29uc3QgU3RyaW5nJik7
Ci0gICAgdm9pZCBwcmludEdMV2FybmluZ1RvQ29uc29sZShjb25zdCBjaGFyKiBmdW5jdGlvbiwg
Y29uc3QgY2hhciogcmVhc29uKTsKLQotICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBwcmludCB3
YXJuaW5ncyB0byBjb25zb2xlLiBDdXJyZW50bHkKLSAgICAvLyB1c2VkIG9ubHkgdG8gd2FybiBh
Ym91dCB1c2Ugb2Ygb2Jzb2xldGUgZnVuY3Rpb25zLgotICAgIHZvaWQgcHJpbnRXYXJuaW5nVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYpOworICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBwcmludCBl
cnJvcnMgYW5nICB3YXJuaW5ncyB0byBjb25zb2xlLgorICAgIHZvaWQgcHJpbnRUb0NvbnNvbGUo
TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBmcmFtZWJ1ZmZlciBmdW5jdGlvbnMuCiAg
ICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYgcGFyYW1ldGVycyBhcmUgaWxsZWdhbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMjA5M2U3MzU2MzkuLjcx
ZjQxNDJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApA
QCAtMTA1LDYgKzEwNSwxOCBAQCBzdGF0aWMgdm9pZCBnZXRQYXJzZXJMb2NhdGlvbkZvckNvbnNv
bGVNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgU3RyaW5nJiB1cmwsCiAgICAgY29sdW1uID0g
cG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKTsKIH0KIAordm9pZCBQYWdlQ29uc29sZUNs
aWVudDo6YWRkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4mJiBjb25zb2xlTWVzc2FnZSkKK3sKKyAgICBpZiAoY29uc29sZU1lc3NhZ2UtPnNvdXJjZSgp
ICE9IE1lc3NhZ2VTb3VyY2U6OkNTUyAmJiAhbV9wYWdlLnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkp
IHsKKyAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmFkZE1lc3NhZ2VUb0NvbnNvbGUo
Y29uc29sZU1lc3NhZ2UtPnNvdXJjZSgpLCBjb25zb2xlTWVzc2FnZS0+bGV2ZWwoKSwgY29uc29s
ZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2UtPmxpbmUoKSwgY29uc29sZU1lc3Nh
Z2UtPmNvbHVtbigpLCBjb25zb2xlTWVzc2FnZS0+dXJsKCkpOworCisgICAgICAgIGlmIChtX3Bh
Z2Uuc2V0dGluZ3MoKS5sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCgpIHx8
IHNob3VsZFByaW50RXhjZXB0aW9ucygpKQorICAgICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJp
bnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
TG9nLCBjb25zb2xlTWVzc2FnZS0+bGV2ZWwoKSwgY29uc29sZU1lc3NhZ2UtPm1lc3NhZ2UoKSwg
Y29uc29sZU1lc3NhZ2UtPnVybCgpLCBjb25zb2xlTWVzc2FnZS0+bGluZSgpLCBjb25zb2xlTWVz
c2FnZS0+Y29sdW1uKCkpOworICAgIH0KKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUoY29uc29sZU1lc3NhZ2UpKTsKK30K
Kwogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBTdHJpbmcg
dXJsOwpAQCAtMTMyLDI0ICsxNDQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogICAgIGVs
c2UKICAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1
Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBz
dGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCi0gICAgU3RyaW5nIHVybCA9IG1lc3NhZ2UtPnVy
bCgpOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7Ci0gICAgdW5z
aWduZWQgY29sdW1uTnVtYmVyID0gbWVzc2FnZS0+Y29sdW1uKCk7Ci0KLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUobV9wYWdlLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKLQotICAgIGlmIChzb3VyY2UgPT0gTWVzc2FnZVNvdXJjZTo6Q1NTKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5hZGRNZXNzYWdlVG9Db25z
b2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHVybCk7Ci0KLSAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmxvZ3NQYWdlTWVzc2FnZXNUb1N5
c3RlbUNvbnNvbGVFbmFibGVkKCkgJiYgIXNob3VsZFByaW50RXhjZXB0aW9ucygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIGFkZE1lc3NhZ2UoV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5o
CmluZGV4IDVlNDRmMjgyY2QxLi41MmEyNWE0YzQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbnNvbGVDbGllbnQuaApAQCAtMzIsNiArMzIsMTEgQEAKICNpbmNsdWRlIDxydW50aW1lL0Nv
bnNvbGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIENvbnNvbGVNZXNzYWdlOworY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwor
fQorCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KQEAgLTUzLDYgKzU4LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG11dGUoKTsKICAgICBzdGF0aWMgdm9pZCB1bm11
dGUoKTsKIAorICAgIHZvaWQgYWRkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4mJik7CiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYgPSBudWxscHRyLCBKU0M6OkV4ZWNTdGF0ZSogPSBu
dWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAgICAgdm9pZCBh
ZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpOwogICAgIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDAsIERvY3VtZW50KiA9IG51bGxwdHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGE2Y2E0
MDM2MTliLi4yNmZlYjZhZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2xvc2lu
ZygpIHsgcmV0dXJuIG1fY2xvc2luZzsgfQogCi0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJik7CisgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4mJikgZmluYWw7CiAKICAgICBDcnlwdG8mIGNyeXB0bygpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313381</attachid>
            <date>2017-06-20 01:05:51 -0700</date>
            <delta_ts>2017-06-20 11:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>143236.diff</filename>
            <type>text/plain</type>
            <size>25306</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZWM4ZGVkYjljMi4uZGM1NzQ0YjI3OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxNy0wNi0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogYWRkIGNvbnNvbGUgbWVzc2FnZXMgZm9yIFdlYkdMIHNoYWRlciBjb21w
aWxlIGFuZCBwcm9ncmFtIGxpbmsgZXJyb3JzL3dhcm5pbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMyMzYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIwMzUyMTQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlvbi5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1jb21waWxlLWxvZ2dpbmctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29t
cGlsZS1sb2dnaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTE5ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjcmVhdGUgY2FudmFz
IGNvbnRlbnQgdmlldyBhbmQgZGV0YWlscyBzaWRlYmFyIHBhbmVsCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9u
Lmh0bWwKaW5kZXggMjBjZmQzNTVhYTMuLjBjNDVlNTk3OWFkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlv
bi5odG1sCkBAIC00LDYgKzQsOSBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogCXRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCitpZiAod2luZG93LmludGVybmFscykKKyAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldFdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZChmYWxzZSk7CisK
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJteUNhbnZhcyIpOwogICAgIHZhciBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJn
bCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNv
bXBpbGUtbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uY2MyZGMzNWM5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IFdlYkdMOiBF
UlJPUjogMDoyOiAnYXR0cmlidXRlJyA6ICBzdXBwb3J0ZWQgaW4gdmVydGV4IHNoYWRlcnMgb25s
eSAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOTogV2ViR0w6IEVSUk9SOiAwOjI6ICcnIDogTm8g
cHJlY2lzaW9uIHNwZWNpZmllZCBmb3IgKGZsb2F0KQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5
OiBXZWJHTDogRVJST1I6IDA6NDogJ2dsX1Bvc2l0aW9uJyA6IHVuZGVjbGFyZWQgaWRlbnRpZmll
cgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE5OiBXZWJHTDogRVJST1I6IDA6NDogJz0nIDogZGlt
ZW5zaW9uIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTk6IFdlYkdMOiBFUlJPUjog
MDo0OiAnYXNzaWduJyA6IGNhbm5vdCBjb252ZXJ0IGZyb20gJ2F0dHJpYnV0ZSA0LWNvbXBvbmVu
dCB2ZWN0b3Igb2YgZmxvYXQnIHRvICdmbG9hdCcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOTog
V2ViR0w6IEVSUk9SOiAwOjc6ICdGUkFHTUVOVF9TSEFERVInIDogc3ludGF4IGVycm9yCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjk6IFdlYkdMOiBFUlJPUjogMDozOiAnZ2xfRnJhZ0NvbG9yJyA6
IHVuZGVjbGFyZWQgaWRlbnRpZmllcgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI5OiBXZWJHTDog
RVJST1I6IDA6MzogJz0nIDogZGltZW5zaW9uIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjk6IFdlYkdMOiBFUlJPUjogMDozOiAnYXNzaWduJyA6IGNhbm5vdCBjb252ZXJ0IGZyb20g
J2NvbnN0IDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCcgdG8gJ2Zsb2F0JworQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDI5OiBXZWJHTDogRVJST1I6IDA6NjogJ1ZFUlRFWF9TSEFERVInIDogc3lu
dGF4IGVycm9yCitUZXN0cyB0aGF0IFdlYkdMIHNoYWRlciBjb21waWxlIGVycm9ycy93YXJuaW5n
cyBhcmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNvbXBpbGUtbG9nZ2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvc2hhZGVyLWNvbXBpbGUtbG9nZ2luZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZTA4ZjExNmYwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NoYWRlci1jb21waWxlLWxvZ2dpbmcu
aHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxib2R5PgorPHA+VGVzdHMg
dGhhdCBXZWJHTCBzaGFkZXIgY29tcGlsZSBlcnJvcnMvd2FybmluZ3MgYXJlIGxvZ2dlZCB0byB0
aGUgY29uc29sZS48L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpCisKK2xldCBnbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpLmdldENvbnRleHQoIndlYmdsIik7CisKK2xldCBmcmFnbWVudFNoYWRlciA9IGds
LmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVOVF9TSEFERVIpOworZ2wuc2hhZGVyU291cmNlKGZyYWdt
ZW50U2hhZGVyLCBgCithdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKK3ZvaWQgbWFpbigpIHsKKyAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOworfQorCitGUkFHTUVOVF9TSEFERVIKK2ApOworZ2wu
Y29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisKK2xldCB2ZXJ0ZXhTaGFkZXIgPSBnbC5j
cmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7CitnbC5zaGFkZXJTb3VyY2UodmVydGV4U2hh
ZGVyLCBgCit2b2lkIG1haW4oKSB7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwg
MS4wLCAxLjApOworfQorCitWRVJURVhfU0hBREVSCitgKTsKK2dsLmNvbXBpbGVTaGFkZXIodmVy
dGV4U2hhZGVyKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNhM2EwOTM3
MzguLjAyY2E2MjE0N2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTctMDYtMjAg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBjb25zb2xlIG1lc3NhZ2VzIGZvciBXZWJHTCBzaGFkZXIgY29tcGlsZSBhbmQgcHJv
Z3JhbSBsaW5rIGVycm9ycy93YXJuaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMDM1MjE0
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy93ZWJnbC9zaGFkZXItY29tcGlsZS1sb2dnaW5nLmh0bWwKKworICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWN5Y2xl
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpj
aGVja1RleHR1cmVDb21wbGV0ZW5lc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludEdMRXJyb3JUb0Nv
bnNvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50R0xXYXJuaW5nVG9Db25zb2xlKTogRGVs
ZXRlZC4KKyAgICAgICAgVW5pZnkgY29uc29sZSBsb2dnaW5nIGhlbHBlciBmdW5jdGlvbnMgdG8g
YWxsIGZvbGxvdyB0aGUgc2FtZSBwYXRoLiBBZGRpdGlvbmFsbHksIGVycm9ycworICAgICAgICBu
b3cgZ2VuZXJhdGUgc3RhY2sgdHJhY2VzLiBTaGFkZXIgY29tcGlsYXRpb24gZXJyb3JzIGFyZSBu
b3cgbG9nZ2VkIGFzIHdlbGwuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZENvbnNv
bGVNZXNzYWdlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6QWRkQ29uc29sZU1lc3NhZ2VU
YXNrOjpBZGRDb25zb2xlTWVzc2FnZVRhc2spOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVD
bGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgIEFkZCBuZXcgcGF0aCBmb3IgbG9nZ2lu
ZyB0byB0aGUgY29uc29sZSB0aGF0IGFjY2VwdHMgYSBDb25zb2xlTWVzc2FnZS4KKwogMjAxNy0w
Ni0xOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogY3JlYXRlIGNhbnZhcyBjb250ZW50IHZpZXcgYW5kIGRldGFpbHMgc2lkZWJhciBw
YW5lbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjYzZTM3ZmEzZTguLjlhMDk4NzljOWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE5Nyw2ICsxOTcsNyBAQAogI2luY2x1ZGUg
IlhQYXRoTlNSZXNvbHZlci5oIgogI2luY2x1ZGUgIlhQYXRoUmVzdWx0LmgiCiAjaW5jbHVkZSA8
Y3RpbWU+CisjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8
aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTU0NSw2ICs1NTQ2LDE3IEBA
IHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgZG5zUHJlZmV0Y2hDb250cm9sKQogICAgIG1faGF2ZUV4cGxpY2l0bHlEaXNhYmxlZEROU1By
ZWZldGNoID0gdHJ1ZTsKIH0KIAordm9pZCBEb2N1bWVudDo6YWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYgY29uc29sZU1lc3NhZ2Up
Cit7CisgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgeworICAgICAgICBwb3N0VGFzayhBZGRD
b25zb2xlTWVzc2FnZVRhc2soV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAg
ICBwYWdlLT5jb25zb2xlKCkuYWRkTWVzc2FnZShXVEZNb3ZlKGNvbnNvbGVNZXNzYWdlKSk7Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDI4OGM5NTYxYzBlLi5mZTJkOTRhNzhmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTEyNTUsNiArMTI1NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRE
aXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3Vu
dCsrOyB9CiAgICAgdm9pZCByZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgQVNTRVJU
KG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQpOyBtX2Rpc2FibGVkRmllbGRzZXRFbGVt
ZW50c0NvdW50LS07IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ29uc29sZU1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+JiYpIGZpbmFsOwor
CisgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRDb25zb2xlTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXBy
ZWNhdGVkLgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVN
ZXNzYWdlIHRoZW1zZWx2ZXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIGZpbmFsOwogCiAgICAgU2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKlNlY3VyaXR5Q29udGV4
dDo6c2VjdXJpdHlPcmlnaW4oKTsgfQpAQCAtMTQwMiw2ICsxNDA2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAg
dm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgor
ICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRo
ZW1zZWx2ZXMuCiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWdu
ZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBmaW5hbDsKIAogICAgIFNlY29uZHMgbWluaW11bURP
TVRpbWVySW50ZXJ2YWwoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDcwNTUzNWMwM2NiLi44MmM1OTQ3YjIzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC00Niw2ICs0Niw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgeworY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiB9
CiAKQEAgLTk4LDYgKzk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBKU0M6OkV4Y2VwdGlvbiosIFJlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiwgQ2FjaGVkU2NyaXB0KiA9IG51bGxwdHIpOwogICAg
IHZvaWQgcmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNQcm9taXNlJiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKTsKIAor
ICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4mJikgPSAwOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRD
b25zb2xlTWVzc2FnZSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuCisgICAgLy8gQ2FsbGVycyBz
aG91bGQgdHJ5IHRvIGNyZWF0ZSB0aGUgQ29uc29sZU1lc3NhZ2UgdGhlbXNlbHZlcy4KICAgICB2
b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgPSAwOwogCkBA
IC0yMjQsNiArMjI5LDEzIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25z
b2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMgVGFzayB7CiAgICAgcHVibGljOgorICAgICAgICBBZGRD
b25zb2xlTWVzc2FnZVRhc2soc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+JiYgY29uc29sZU1lc3NhZ2UpCisgICAgICAgICAgICA6IFRhc2soWyZjb25zb2xlTWVzc2Fn
ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGNv
bnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOworICAgICAg
ICAgICAgfSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAgIDogVGFzayhbc291cmNlLCBsZXZlbCwgbWVzc2Fn
ZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2UpOwpAQCAtMjM3LDYgKzI0OSw4IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIC8vIFRoZSBmb2xs
b3dpbmcgYWRkTWVzc2FnZSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorICAgIC8vIENhbGxlcnMg
c2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNvbGVNZXNzYWdlIHRoZW1zZWx2ZXMuCiAgICAg
dmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllciA9IDApID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9nRXhjZXB0aW9uVG9D
b25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNj
cmlwdENhbGxTdGFjaz4mJikgPSAwOwogICAgIGJvb2wgZGlzcGF0Y2hFcnJvckV2ZW50KGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIEpTQzo6RXhjZXB0aW9uKiwgQ2FjaGVkU2NyaXB0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCmluZGV4IGEyYjAzYWYyYWFhLi5mNzg1YzhjNzU1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTUyLDcgKzUyLDkgQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisj
aW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC04
OSw3ICs5MSw5IEBACiAjaW5jbHVkZSAiV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCIKICNp
bmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5o
IgotCisjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg+CisjaW5jbHVkZSA8aW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgorI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2tGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDMy
QXJyYXkuaD4KQEAgLTM0NCw3ICszNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvbkVycm9yTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdDM0RpbnQpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBpZiAobV9jb250ZXh0LT5tX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlKQotICAgICAg
ICAgICAgbV9jb250ZXh0LT5wcmludEdMRXJyb3JUb0NvbnNvbGUobWVzc2FnZSk7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3Nh
Z2UpOwogICAgIH0KICAgICB2aXJ0dWFsIH5XZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3Nh
Z2VDYWxsYmFjaygpIHsgfQogcHJpdmF0ZToKQEAgLTEyNDIsNyArMTI0Niw4IEBAIEdDM0RlbnVt
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVu
dW0gdGFyZ2V0KQogICAgIGNvbnN0IGNoYXIqIHJlYXNvbiA9ICJmcmFtZWJ1ZmZlciBpbmNvbXBs
ZXRlIjsKICAgICBHQzNEZW51bSByZXN1bHQgPSBtX2ZyYW1lYnVmZmVyQmluZGluZy0+Y2hlY2tT
dGF0dXMoJnJlYXNvbik7CiAgICAgaWYgKHJlc3VsdCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKLSAgICAgICAgcHJpbnRHTFdhcm5pbmdUb0NvbnNvbGUoImNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMiLCByZWFzb24pOworICAgICAgICBTdHJpbmcgc3RyID0gIldl
YkdMOiBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzOiIgKyBTdHJpbmcocmVhc29uKTsKKyAgICAgICAg
cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBzdHIpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICByZXN1bHQgPSBtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXModGFyZ2V0KTsKQEAgLTEzMDMsNiArMTMwOCwxNSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAgICBH
QzNEaW50IHZhbHVlOwogICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYob2JqZWN0T3JaZXJvKHNo
YWRlciksIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKICAgICBz
aGFkZXItPnNldFZhbGlkKHZhbHVlKTsKKworICAgIGlmIChtX3N5bnRoZXNpemVkRXJyb3JzVG9D
b25zb2xlICYmICF2YWx1ZSkgeworICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3Rh
Y2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
azo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXJyb3JzOworICAgICAgICBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQoIlxuIiwgZXJy
b3JzKTsKKyAgICAgICAgZm9yIChTdHJpbmcmIGVycm9yIDogZXJyb3JzKQorICAgICAgICAgICAg
Y2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNr
VHJhY2UuY29weVJlZigpKSk7CisgICAgfQogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyYgZGF0YSkKQEAgLTQ1NzIsNyAr
NDU4Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Zm9yY2VMb3N0Q29udGV4
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cmVjeWNsZUNvbnRleHQoKQogewotICAgIHByaW50V2FybmluZ1RvQ29uc29s
ZSgiVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBXZWJHTCBjb250ZXh0cyBvbiB0aGlzIHBhZ2Us
IHRoZSBvbGRlc3QgY29udGV4dCB3aWxsIGJlIGxvc3QuIik7CisgICAgcHJpbnRUb0NvbnNvbGUo
TWVzc2FnZUxldmVsOjpFcnJvciwgIlRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgV2ViR0wgY29u
dGV4dHMgb24gdGhpcyBwYWdlLCB0aGUgb2xkZXN0IGNvbnRleHQgd2lsbCBiZSBsb3N0LiIpOwog
ICAgIC8vIFVzaW5nIFN5bnRoZXRpY0xvc3RDb250ZXh0IG1lYW5zIHRoZSBkZXZlbG9wZXIgd29u
J3QgYmUgYWJsZSB0byBmb3JjZSB0aGUgcmVzdG9yYXRpb24KICAgICAvLyBvZiB0aGUgY29udGV4
dCBieSBjYWxsaW5nIHByZXZlbnREZWZhdWx0KCkgaW4gYSAid2ViZ2xjb250ZXh0bG9zdCIgZXZl
bnQgaGFuZGxlci4KICAgICBmb3JjZUxvc3RDb250ZXh0KFN5bnRoZXRpY0xvc3RDb250ZXh0KTsK
QEAgLTQ4MjksNyArNDg0Myw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hl
Y2tUZXh0dXJlQ29tcGxldGVuZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtCiAgICAgICAgICAg
ICBTdHJpbmcgbXNnKFN0cmluZygidGV4dHVyZSBib3VuZCB0byB0ZXh0dXJlIHVuaXQgIikgKyBT
dHJpbmc6Om51bWJlcihiYWRUZXh0dXJlKQogICAgICAgICAgICAgICAgICsgIiBpcyBub3QgcmVu
ZGVyYWJsZS4gSXQgbWF5YmUgbm9uLXBvd2VyLW9mLTIgYW5kIGhhdmUgaW5jb21wYXRpYmxlIHRl
eHR1cmUgZmlsdGVyaW5nIG9yIGlzIG5vdCAndGV4dHVyZSBjb21wbGV0ZScsIgogICAgICAgICAg
ICAgICAgICsgIiBvciBpdCBpcyBhIGZsb2F0L2hhbGYtZmxvYXQgdHlwZSB3aXRoIGxpbmVhciBm
aWx0ZXJpbmcgYW5kIHdpdGhvdXQgdGhlIHJlbGV2YW50IGZsb2F0L2hhbGYtZmxvYXQgbGluZWFy
IGV4dGVuc2lvbiBlbmFibGVkLiIpOwotICAgICAgICAgICAgcHJpbnRHTFdhcm5pbmdUb0NvbnNv
bGUoZnVuY3Rpb25OYW1lLCBtc2cudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBwcmludFRv
Q29uc29sZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBTdHJpbmcoZnVuY3Rpb25O
YW1lKSArICI6ICIgKyBtc2cpOwogICAgICAgICAgICAgdGV4MkQgPSBtX2JsYWNrVGV4dHVyZTJE
LmdldCgpOwogICAgICAgICAgICAgdGV4Q3ViZU1hcCA9IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcC5n
ZXQoKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTUyMDAsMjEgKzUyMTQsMjUgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVN0ZW5jaWxGdW5jKGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgR0MKICAgICB9CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6cHJpbnRHTEVycm9yVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX251bUdMRXJyb3JzVG9Db25z
b2xlQWxsb3dlZCkKKyAgICBpZiAoIW1fc3ludGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUgfHwgIW1f
bnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICAtLW1f
bnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkOwotICAgIHByaW50V2FybmluZ1RvQ29uc29sZSht
ZXNzYWdlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4g
Y29uc29sZU1lc3NhZ2U7CiAKLSAgICBpZiAoIW1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2Vk
KQotICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIldlYkdMOiB0b28gbWFueSBlcnJvcnMs
IG5vIG1vcmUgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoaXMg
Y29udGV4dC4iKTsKLX0KKyAgICAvLyBFcnJvciBtZXNzYWdlcyBjYW4gb2NjdXIgZHVyaW5nIGZ1
bmN0aW9uIGNhbGxzLCBzbyBzaG93IHN0YWNrIHRyYWNlcyBmb3IgdGhlbS4KKyAgICBpZiAobGV2
ZWwgPT0gTWVzc2FnZUxldmVsOjpFcnJvcikgeworICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3Jp
cHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhKU01haW5UaHJlYWRFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpLCBJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CisgICAgICAgIGNvbnNvbGVN
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBX
VEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29uc29sZU1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOwogCi12b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50V2FybmluZ1RvQ29uc29sZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgY2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVz
c2FnZSk7CisgICAgY2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KGNvbnNvbGVNZXNzYWdlKSk7CisKKyAgICAtLW1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2Vk
OworICAgIGlmICghbV9udW1HTEVycm9yc1RvQ29uc29sZUFsbG93ZWQpCisgICAgICAgIHByaW50
VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIldlYkdMOiB0b28gbWFueSBlcnJvcnMs
IG5vIG1vcmUgZXJyb3JzIHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIGNvbnNvbGUgZm9yIHRoaXMg
Y29udGV4dC4iKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0
ZUJsZW5kRnVuY0ZhY3RvcnMoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBzcmMs
IEdDM0RlbnVtIGRzdCkKQEAgLTU1OTUsNyArNTYxMyw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCgpCiAgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkdVSUxUWV9DT05URVhUX1JFU0VUX0FSQjoKICAgICAgICAgLy8gVGhlIHJlbmRlcmluZyBjb250
ZXh0IGlzIG5vdCByZXN0b3JlZCBpZiB0aGlzIGNvbnRleHQgd2FzCiAgICAgICAgIC8vIGd1aWx0
eSBvZiBjYXVzaW5nIHRoZSBncmFwaGljcyByZXNldC4KLSAgICAgICAgcHJpbnRXYXJuaW5nVG9D
b25zb2xlKCJXQVJOSU5HOiBXZWJHTCBjb250ZW50IG9uIHRoZSBwYWdlIGNhdXNlZCB0aGUgZ3Jh
cGhpY3MgY2FyZCB0byByZXNldDsgbm90IHJlc3RvcmluZyB0aGUgY29udGV4dCIpOworICAgICAg
ICBwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJXQVJOSU5HOiBXZWJHTCBj
b250ZW50IG9uIHRoZSBwYWdlIGNhdXNlZCB0aGUgZ3JhcGhpY3MgY2FyZCB0byByZXNldDsgbm90
IHJlc3RvcmluZyB0aGUgY29udGV4dCIpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OklOTk9DRU5UX0NPTlRFWFRfUkVTRVRfQVJCOgogICAgICAgICAvLyBBbHdheXMg
YWxsb3cgdGhlIGNvbnRleHQgdG8gYmUgcmVzdG9yZWQuCkBAIC01NjA2LDcgKzU2MjQsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAg
ICAgICAvLyByZXNldCBhbmQgYXNrIHRoZW0gd2hldGhlciB0aGV5IHdhbnQgdG8gY29udGludWUg
cnVubmluZwogICAgICAgICAvLyB0aGUgY29udGVudC4gT25seSBpZiB0aGV5IHNheSAieWVzIiBz
aG91bGQgd2Ugc3RhcnQKICAgICAgICAgLy8gYXR0ZW1wdGluZyB0byByZXN0b3JlIHRoZSBjb250
ZXh0LgotICAgICAgICBwcmludFdhcm5pbmdUb0NvbnNvbGUoIldBUk5JTkc6IFdlYkdMIGNvbnRl
bnQgb24gdGhlIHBhZ2UgbWlnaHQgaGF2ZSBjYXVzZWQgdGhlIGdyYXBoaWNzIGNhcmQgdG8gcmVz
ZXQiKTsKKyAgICAgICAgcHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiV0FS
TklORzogV2ViR0wgY29udGVudCBvbiB0aGUgcGFnZSBtaWdodCBoYXZlIGNhdXNlZCB0aGUgZ3Jh
cGhpY3MgY2FyZCB0byByZXNldCIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTU3Mjgs
MjEgKzU3NDYsMTIgQEAgbmFtZXNwYWNlIHsKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIENvbnNvbGVEaXNwbGF5UHJlZmVyZW5jZSBk
aXNwbGF5KQogewogICAgIGlmIChtX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlICYmIGRpc3Bs
YXkgPT0gRGlzcGxheUluQ29uc29sZSkgewotICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZygiV2Vi
R0w6ICIpICsgR2V0RXJyb3JTdHJpbmcoZXJyb3IpICsgICI6ICIgKyBTdHJpbmcoZnVuY3Rpb25O
YW1lKSArICI6ICIgKyBTdHJpbmcoZGVzY3JpcHRpb24pOwotICAgICAgcHJpbnRHTEVycm9yVG9D
b25zb2xlKHN0cik7CisgICAgICAgIFN0cmluZyBzdHIgPSAiV2ViR0w6ICIgKyBHZXRFcnJvclN0
cmluZyhlcnJvcikgKyAgIjogIiArIFN0cmluZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmlu
ZyhkZXNjcmlwdGlvbik7CisgICAgICAgIHByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIHN0cik7CiAgICAgfQogICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3Ip
OwogfQogCi0KLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRHTFdhcm5pbmdU
b0NvbnNvbGUoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlv
bikKLXsKLSAgICBpZiAobV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSkgewotICAgICAgICBT
dHJpbmcgc3RyID0gU3RyaW5nKCJXZWJHTDogIikgKyBTdHJpbmcoZnVuY3Rpb25OYW1lKSArICI6
ICIgKyBTdHJpbmcoZGVzY3JpcHRpb24pOwotICAgICAgICBwcmludEdMRXJyb3JUb0NvbnNvbGUo
c3RyKTsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YXBwbHlT
dGVuY2lsVGVzdCgpCiB7CiAgICAgYm9vbCBoYXZlU3RlbmNpbEJ1ZmZlciA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCmluZGV4IDNlM2VmOWZlMzA0Li43ZWY5ZGU5MDAzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
NzQzLDEzICs3NDMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0
ZXhQYXJhbWV0ZXJmIGFuZCB0ZXhQYXJhbWV0ZXJpLgogICAgIHZvaWQgdGV4UGFyYW1ldGVyKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCBwYXJhbWksIEdDM0RpbnQg
cGFyYW1mLCBib29sIGlzRmxvYXQpOwogCi0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHByaW50
IEdMIGVycm9ycyB0byBjb25zb2xlLgotICAgIHZvaWQgcHJpbnRHTEVycm9yVG9Db25zb2xlKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgcHJpbnRHTFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgY2hh
ciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIHJlYXNvbik7Ci0KLSAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gcHJpbnQgd2FybmluZ3MgdG8gY29uc29sZS4gQ3VycmVudGx5Ci0gICAgLy8gdXNlZCBv
bmx5IHRvIHdhcm4gYWJvdXQgdXNlIG9mIG9ic29sZXRlIGZ1bmN0aW9ucy4KLSAgICB2b2lkIHBy
aW50V2FybmluZ1RvQ29uc29sZShjb25zdCBTdHJpbmcmKTsKKyAgICAvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gcHJpbnQgZXJyb3JzIGFuZCB3YXJuaW5ncyB0byBjb25zb2xlLgorICAgIHZvaWQgcHJp
bnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIEhlbHBl
ciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzIGZvciBmcmFtZWJ1ZmZlciBm
dW5jdGlvbnMuCiAgICAgLy8gR2VuZXJhdGUgR0wgZXJyb3IgaWYgcGFyYW1ldGVycyBhcmUgaWxs
ZWdhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMjA5
M2U3MzU2MzkuLjcxZjQxNDJjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmNwcApAQCAtMTA1LDYgKzEwNSwxOCBAQCBzdGF0aWMgdm9pZCBnZXRQYXJzZXJMb2Nh
dGlvbkZvckNvbnNvbGVNZXNzYWdlKERvY3VtZW50KiBkb2N1bWVudCwgU3RyaW5nJiB1cmwsCiAg
ICAgY29sdW1uID0gcG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKTsKIH0KIAordm9pZCBQ
YWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4mJiBjb25zb2xlTWVzc2FnZSkKK3sKKyAgICBpZiAoY29uc29sZU1lc3Nh
Z2UtPnNvdXJjZSgpICE9IE1lc3NhZ2VTb3VyY2U6OkNTUyAmJiAhbV9wYWdlLnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpIHsKKyAgICAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UtPnNvdXJjZSgpLCBjb25zb2xlTWVzc2FnZS0+bGV2
ZWwoKSwgY29uc29sZU1lc3NhZ2UtPm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2UtPmxpbmUoKSwg
Y29uc29sZU1lc3NhZ2UtPmNvbHVtbigpLCBjb25zb2xlTWVzc2FnZS0+dXJsKCkpOworCisgICAg
ICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xl
RW5hYmxlZCgpIHx8IHNob3VsZFByaW50RXhjZXB0aW9ucygpKQorICAgICAgICAgICAgQ29uc29s
ZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6TG9nLCBjb25zb2xlTWVzc2FnZS0+bGV2ZWwoKSwgY29uc29sZU1lc3NhZ2Ut
Pm1lc3NhZ2UoKSwgY29uc29sZU1lc3NhZ2UtPnVybCgpLCBjb25zb2xlTWVzc2FnZS0+bGluZSgp
LCBjb25zb2xlTWVzc2FnZS0+Y29sdW1uKCkpOworICAgIH0KKworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUoY29uc29sZU1l
c3NhZ2UpKTsKK30KKwogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBTdHJpbmcgdXJsOwpAQCAtMTMyLDI0ICsxNDQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xp
ZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbgogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29s
dW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCi0gICAgU3RyaW5nIHVybCA9
IG1lc3NhZ2UtPnVybCgpOwotICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5l
KCk7Ci0gICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gbWVzc2FnZS0+Y29sdW1uKCk7Ci0KLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUobV9wYWdlLCBX
VEZNb3ZlKG1lc3NhZ2UpKTsKLQotICAgIGlmIChzb3VyY2UgPT0gTWVzc2FnZVNvdXJjZTo6Q1NT
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5hZGRN
ZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHVybCk7Ci0KLSAgICBpZiAoIW1fcGFnZS5zZXR0aW5ncygpLmxvZ3NQYWdl
TWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKCkgJiYgIXNob3VsZFByaW50RXhjZXB0aW9u
cygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVs
LCBtZXNzYWdlVGV4dCwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIGFkZE1l
c3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5oCmluZGV4IDVlNDRmMjgyY2QxLi4xZDQ0ZTU5MTc5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRl
IDxydW50aW1lL0NvbnNvbGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIENvbnNvbGVNZXNzYWdlOworfQorCiBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KQEAgLTUzLDYgKzU3LDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBtdXRlKCk7CiAgICAgc3RhdGljIHZvaWQgdW5tdXRlKCk7CiAKKyAg
ICB2b2lkIGFkZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+JiYpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBhZGRNZXNzYWdlIGZ1bmN0aW9uIGFyZSBk
ZXByZWNhdGVkLgorICAgIC8vIENhbGxlcnMgc2hvdWxkIHRyeSB0byBjcmVhdGUgdGhlIENvbnNv
bGVNZXNzYWdlIHRoZW1zZWx2ZXMuCiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYgPSBudWxscHRyLCBKU0M6OkV4ZWNTdGF0ZSog
PSBudWxscHRyLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCk7CiAgICAgdm9p
ZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpOwogICAgIHZvaWQgYWRk
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDAsIERvY3VtZW50KiA9IG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGE2
Y2E0MDM2MTliLi45MjZlMzFmZWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQ2xv
c2luZygpIHsgcmV0dXJuIG1fY2xvc2luZzsgfQogCi0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4mJik7CisgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4mJikgZmluYWw7CiAKICAgICBDcnlwdG8mIGNyeXB0bygpOwogCkBAIC0xMjEsNiArMTIx
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVm
KCk7IH0KIAogICAgIHZvaWQgbG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJikgZmluYWw7
CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIGFkZE1lc3NhZ2UgYW5kIGFkZENvbnNvbGVNZXNzYWdl
IGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZC4KKyAgICAvLyBDYWxsZXJzIHNob3VsZCB0cnkgdG8g
Y3JlYXRlIHRoZSBDb25zb2xlTWVzc2FnZSB0aGVtc2VsdmVzLgogICAgIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVt
bk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpIGZpbmFsOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>